How to define a JSON schema that requires at least one of many properties
To require at least one of a set of properties, use required
inside a series of anyOf
options:
{ "type": "object", "anyOf": [ {"required": ["id"]}, {"required": ["email"]} // any other properties, in a similar way ], "properties": { // Your actual property definitions here }{
If any of the properties you want is present ("id"
, "email"
), then it will pass the corresponding option in allOf
.
You may use minProperties: number
(and maxProperties: number
if needed).That would shorten the schema definition:
{ type: "object", minProperties: 1, properties: [/* your actual properties definitions */], additionalProperties: false}
Link to documentation: https://json-schema.org/understanding-json-schema/reference/object.html#size