How to define a JSON schema that requires at least one of many properties How to define a JSON schema that requires at least one of many properties json json

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