I want to use a schema to validate a request object. One of the values in the map determines which other fields are valid.
For example, these would all be valid:
{ :name "jane" :type :dog :barking true }
{ :name "alan" :type :bird :cheeping true }
{ :name "bert" :type :fish :swimming true }
Some fields are common. But others depend upon the value of :type
.
For example, this would be invalid:
{ :name "phil" :type :bird :barking false }
How can such schema be expressed?
I'm happy to use either clj-schema or Prismatic schema.