{ "type": "object", "additionalProperties": false, "required": [ "name", "age" ], "properties": { "name": { "type": "string" }, "age": { "type": "integer" }, "height": { "type": "number" }, "active": { "type": "boolean" }, "nickname": { "type": [ "string", "null" ] }, "role": { "enum": [ "admin", "user", "guest" ] }, "hobbies": { "type": "array", "items": { "type": "string" } }, "address": { "type": "object", "required": [ "city" ], "additionalProperties": false, "properties": { "city": { "type": "string" }, "zip": { "type": "integer" } } }, "friends": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "name" ], "properties": { "name": { "type": "string" }, "age": { "type": "integer" } } } }, "tree": { "$ref": "#/$defs/Node" }, "nullable_hobbies": { "type": "array", "items": { "type": [ "string", "null" ] } }, "nullable_scores": { "type": "array", "items": { "type": [ "integer", "null" ] } } }, "$defs": { "Node": { "type": "object", "additionalProperties": false, "required": [ "value" ], "properties": { "value": { "type": "integer" }, "next": { "$ref": "#/$defs/Node" }, "children": { "type": "array", "items": { "$ref": "#/$defs/Node" } } } } } }