I would like to know if I can define a JSON schema (draft 4) that requires at least one of many properties possible for an object. I already know of 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 */],
}
Link to documentation: https://json-schema.org/understanding-json-schema/reference/object.html#size
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
.