{ "definitions": { "c1": { "type": "object", "additionalProperties": false, "properties": { "c1": {"type": "object"} } }, "c2": { "type": "string" } }, "type": "object", "properties": { "base": { "type": "object" }, "types": { "type": "array", "minItems": 1, "items": { "type": "string", "enum": ["c1", "c2", "c3"] } }, "custom": { "oneOf": [ { "if": { "properties": { "types": { "type": "array", "contains": {"type":"string", "enum": ["c1"]}}}}, "then": { "$ref": "#/definitions/c1" } }, { "if": { "properties": { "types": { "type": "array", "contains": {"type":"string", "enum": ["c2"]}}}}, "then": { "$ref": "#/definitions/c2" } } ] } }, "required": [ "base", "types", "custom" ] }