{ "type": "array", "items": { "type": "object", "properties": { "base": { "type": "object" }, "types": { "type": "array", "minItems": 1, "items": { "type": "string", "enum": ["AppStarted", "AppActivated"] } } }, "required": [ "base", "types", "custom" ], "allOf": [ { "if": { "properties": { "types": { "contains": { "const": "AppStarted" }}}}, "then": { "properties": { "custom": { "$ref": "#/definitions/AppStarted" }}} }, { "if": { "properties": { "types": { "contains": { "const": "AppActivated" }}}}, "then": { "properties": { "custom": { "$ref": "#/definitions/AppActivated" }}} } ] }, "definitions": { "AppActivated": { "type": "object", "properties": { "id": { "type": "number" } }, "required": ["id"] }, "AppStarted": { "type": "string" } } }