{ | |
"openapi": "3.0.0", | |
"info": { | |
"title": "test", | |
"version": "v1" | |
}, | |
"paths": {}, | |
"components": { | |
"schemas": { | |
"Embed": { | |
"type": "object", | |
"properties": { | |
"a": { | |
"type": "integer" | |
}, | |
"d": { | |
"type": "object", | |
"properties": { | |
"b": { | |
"type": "integer" | |
} | |
} | |
}, | |
"e": { | |
"type": "integer" | |
}, | |
"b": { | |
"type": "object", | |
"properties": { | |
"b": { | |
"type": "integer" | |
} | |
} | |
}, | |
"c": { | |
"type": "integer" | |
} | |
}, | |
"allOf": [ | |
{ | |
"oneOf": [ | |
{ | |
"not": { | |
"anyOf": [ | |
{ | |
"required": [ | |
"b" | |
] | |
}, | |
{ | |
"required": [ | |
"c" | |
] | |
} | |
] | |
} | |
}, | |
{ | |
"required": [ | |
"b" | |
] | |
}, | |
{ | |
"required": [ | |
"c" | |
] | |
} | |
] | |
}, | |
{ | |
"oneOf": [ | |
{ | |
"not": { | |
"anyOf": [ | |
{ | |
"required": [ | |
"d" | |
] | |
}, | |
{ | |
"required": [ | |
"e" | |
] | |
} | |
] | |
} | |
}, | |
{ | |
"required": [ | |
"d" | |
] | |
}, | |
{ | |
"required": [ | |
"e" | |
] | |
} | |
] | |
} | |
] | |
}, | |
"Embed.T": { | |
"type": "object", | |
"properties": { | |
"b": { | |
"type": "integer" | |
} | |
} | |
}, | |
"Foo": { | |
"type": "object", | |
"required": [ | |
"include", | |
"exclude", | |
"count" | |
], | |
"properties": { | |
"include": { | |
"type": "object", | |
"properties": { | |
"shared": { | |
"type": "integer" | |
}, | |
"shared2": { | |
"type": "integer" | |
}, | |
"count": { | |
"type": "integer" | |
}, | |
"amount": { | |
"type": "integer" | |
}, | |
"exact": { | |
"type": "string" | |
}, | |
"regex": { | |
"type": "string" | |
} | |
}, | |
"allOf": [ | |
{ | |
"required": [ | |
"shared" | |
], | |
"oneOf": [ | |
{ | |
"not": { | |
"anyOf": [ | |
{ | |
"required": [ | |
"exact" | |
] | |
}, | |
{ | |
"required": [ | |
"regex" | |
] | |
} | |
] | |
} | |
}, | |
{ | |
"required": [ | |
"exact" | |
] | |
}, | |
{ | |
"required": [ | |
"regex" | |
] | |
} | |
] | |
}, | |
{ | |
"oneOf": [ | |
{ | |
"not": { | |
"anyOf": [ | |
{ | |
"required": [ | |
"count" | |
] | |
}, | |
{ | |
"required": [ | |
"amount" | |
] | |
} | |
] | |
} | |
}, | |
{ | |
"required": [ | |
"count" | |
] | |
}, | |
{ | |
"required": [ | |
"amount" | |
] | |
} | |
], | |
"required": [ | |
"shared2" | |
] | |
} | |
] | |
}, | |
"exclude": { | |
"type": "array", | |
"items": { | |
"type": "object", | |
"properties": { | |
"shared": { | |
"type": "integer" | |
}, | |
"shared2": { | |
"type": "integer" | |
}, | |
"count": { | |
"type": "integer" | |
}, | |
"amount": { | |
"type": "integer" | |
}, | |
"exact": { | |
"type": "string" | |
}, | |
"regex": { | |
"type": "string" | |
} | |
}, | |
"allOf": [ | |
{ | |
"required": [ | |
"shared" | |
], | |
"oneOf": [ | |
{ | |
"not": { | |
"anyOf": [ | |
{ | |
"required": [ | |
"exact" | |
] | |
}, | |
{ | |
"required": [ | |
"regex" | |
] | |
} | |
] | |
} | |
}, | |
{ | |
"required": [ | |
"exact" | |
] | |
}, | |
{ | |
"required": [ | |
"regex" | |
] | |
} | |
] | |
}, | |
{ | |
"oneOf": [ | |
{ | |
"not": { | |
"anyOf": [ | |
{ | |
"required": [ | |
"count" | |
] | |
}, | |
{ | |
"required": [ | |
"amount" | |
] | |
} | |
] | |
} | |
}, | |
{ | |
"required": [ | |
"count" | |
] | |
}, | |
{ | |
"required": [ | |
"amount" | |
] | |
} | |
], | |
"required": [ | |
"shared2" | |
] | |
} | |
] | |
} | |
}, | |
"count": { | |
"type": "integer" | |
} | |
} | |
}, | |
"Incompatible": { | |
"type": "object", | |
"properties": { | |
"shared": { | |
"type": "integer" | |
}, | |
"extra1": { | |
"type": "integer" | |
}, | |
"extra2": { | |
"type": "integer" | |
} | |
}, | |
"oneOf": [ | |
{ | |
"allOf": [ | |
{ | |
"required": [ | |
"shared" | |
] | |
}, | |
{ | |
"not": { | |
"anyOf": [ | |
{ | |
"required": [ | |
"shared", | |
"extra1" | |
] | |
}, | |
{ | |
"required": [ | |
"shared", | |
"extra2" | |
] | |
} | |
] | |
} | |
} | |
] | |
}, | |
{ | |
"required": [ | |
"shared", | |
"extra1" | |
] | |
}, | |
{ | |
"required": [ | |
"shared", | |
"extra2" | |
] | |
} | |
] | |
}, | |
"MyInt": { | |
"type": "integer" | |
}, | |
"T": { | |
"description": "This should be dedupped.", | |
"type": "object", | |
"properties": { | |
"shared": { | |
"type": "integer" | |
}, | |
"shared2": { | |
"type": "integer" | |
}, | |
"count": { | |
"type": "integer" | |
}, | |
"amount": { | |
"type": "integer" | |
}, | |
"exact": { | |
"type": "string" | |
}, | |
"regex": { | |
"type": "string" | |
} | |
}, | |
"allOf": [ | |
{ | |
"required": [ | |
"shared" | |
], | |
"oneOf": [ | |
{ | |
"not": { | |
"anyOf": [ | |
{ | |
"required": [ | |
"exact" | |
] | |
}, | |
{ | |
"required": [ | |
"regex" | |
] | |
} | |
] | |
} | |
}, | |
{ | |
"required": [ | |
"exact" | |
] | |
}, | |
{ | |
"required": [ | |
"regex" | |
] | |
} | |
] | |
}, | |
{ | |
"oneOf": [ | |
{ | |
"not": { | |
"anyOf": [ | |
{ | |
"required": [ | |
"count" | |
] | |
}, | |
{ | |
"required": [ | |
"amount" | |
] | |
} | |
] | |
} | |
}, | |
{ | |
"required": [ | |
"count" | |
] | |
}, | |
{ | |
"required": [ | |
"amount" | |
] | |
} | |
], | |
"required": [ | |
"shared2" | |
] | |
} | |
] | |
}, | |
"WithMap": { | |
"type": "object", | |
"properties": { | |
"shared": {}, | |
"extra": { | |
"type": "integer" | |
} | |
}, | |
"oneOf": [ | |
{ | |
"allOf": [ | |
{ | |
"required": [ | |
"shared" | |
] | |
}, | |
{ | |
"not": { | |
"anyOf": [ | |
{ | |
"required": [ | |
"shared", | |
"extra" | |
] | |
} | |
] | |
} | |
} | |
] | |
}, | |
{ | |
"allOf": [ | |
{ | |
"required": [ | |
"shared", | |
"extra" | |
] | |
}, | |
{ | |
"not": { | |
"anyOf": [ | |
{ | |
"required": [ | |
"shared" | |
] | |
} | |
] | |
} | |
} | |
] | |
}, | |
{ | |
"required": [ | |
"shared", | |
"extra" | |
] | |
} | |
] | |
} | |
} | |
} | |
} |