1{
2 "openapi": "3.0.0",
3 "info": {
4 "title": "OpenAPI title.",
5 "version": "v1alpha1"
6 },
7 "paths": {},
8 "components": {
9 "schemas": {
10 "Embed": {
11 "type": "object",
12 "properties": {
13 "a": {
14 "type": "integer"
15 }
16 },
17 "allOf": [
18 {
19 "oneOf": [
20 {
21 "not": {
22 "anyOf": [
23 {
24 "required": [
25 "b"
26 ],
27 "properties": {
28 "b": {
29 "$ref": "#/components/schemas/Embed.T"
30 }
31 }
32 },
33 {
34 "required": [
35 "c"
36 ],
37 "properties": {
38 "c": {
39 "type": "integer"
40 }
41 }
42 }
43 ]
44 }
45 },
46 {
47 "required": [
48 "b"
49 ],
50 "properties": {
51 "b": {
52 "$ref": "#/components/schemas/Embed.T"
53 }
54 }
55 },
56 {
57 "required": [
58 "c"
59 ],
60 "properties": {
61 "c": {
62 "type": "integer"
63 }
64 }
65 }
66 ]
67 },
68 {
69 "oneOf": [
70 {
71 "not": {
72 "anyOf": [
73 {
74 "required": [
75 "d"
76 ],
77 "properties": {
78 "d": {
79 "$ref": "#/components/schemas/Embed.T"
80 }
81 }
82 },
83 {
84 "required": [
85 "e"
86 ],
87 "properties": {
88 "e": {
89 "type": "integer"
90 }
91 }
92 }
93 ]
94 }
95 },
96 {
97 "required": [
98 "d"
99 ],
100 "properties": {
101 "d": {
102 "$ref": "#/components/schemas/Embed.T"
103 }
104 }
105 },
106 {
107 "required": [
108 "e"
109 ],
110 "properties": {
111 "e": {
112 "type": "integer"
113 }
114 }
115 }
116 ]
117 }
118 ]
119 },
120 "Embed.T": {
121 "type": "object",
122 "properties": {
123 "b": {
124 "type": "integer"
125 }
126 }
127 },
128 "Foo": {
129 "type": "object",
130 "required": [
131 "include",
132 "exclude",
133 "count"
134 ],
135 "properties": {
136 "include": {
137 "$ref": "#/components/schemas/T"
138 },
139 "exclude": {
140 "type": "array",
141 "items": {
142 "$ref": "#/components/schemas/T"
143 }
144 },
145 "count": {
146 "$ref": "#/components/schemas/MyInt"
147 }
148 }
149 },
150 "Incompatible": {
151 "type": "object",
152 "oneOf": [
153 {
154 "allOf": [
155 {
156 "required": [
157 "shared"
158 ],
159 "properties": {
160 "shared": {
161 "type": "integer"
162 }
163 }
164 },
165 {
166 "not": {
167 "anyOf": [
168 {
169 "required": [
170 "shared",
171 "extra1"
172 ],
173 "properties": {
174 "shared": {
175 "type": "integer"
176 },
177 "extra1": {
178 "type": "integer"
179 }
180 }
181 },
182 {
183 "required": [
184 "shared",
185 "extra2"
186 ],
187 "properties": {
188 "shared": {
189 "type": "integer"
190 },
191 "extra2": {
192 "type": "integer"
193 }
194 }
195 }
196 ]
197 }
198 }
199 ]
200 },
201 {
202 "required": [
203 "shared",
204 "extra1"
205 ],
206 "properties": {
207 "shared": {
208 "type": "integer"
209 },
210 "extra1": {
211 "type": "integer"
212 }
213 }
214 },
215 {
216 "required": [
217 "shared",
218 "extra2"
219 ],
220 "properties": {
221 "shared": {
222 "type": "integer"
223 },
224 "extra2": {
225 "type": "integer"
226 }
227 }
228 }
229 ]
230 },
231 "MyInt": {
232 "type": "integer"
233 },
234 "T": {
235 "description": "This should be dedupped.",
236 "type": "object",
237 "properties": {
238 "shared": {
239 "type": "integer"
240 },
241 "shared2": {
242 "type": "integer"
243 }
244 },
245 "allOf": [
246 {
247 "required": [
248 "shared"
249 ],
250 "oneOf": [
251 {
252 "not": {
253 "anyOf": [
254 {
255 "required": [
256 "exact"
257 ],
258 "properties": {
259 "exact": {
260 "type": "string"
261 }
262 }
263 },
264 {
265 "required": [
266 "regex"
267 ],
268 "properties": {
269 "regex": {
270 "type": "string"
271 }
272 }
273 }
274 ]
275 }
276 },
277 {
278 "required": [
279 "exact"
280 ],
281 "properties": {
282 "exact": {
283 "type": "string"
284 }
285 }
286 },
287 {
288 "required": [
289 "regex"
290 ],
291 "properties": {
292 "regex": {
293 "type": "string"
294 }
295 }
296 }
297 ]
298 },
299 {
300 "oneOf": [
301 {
302 "not": {
303 "anyOf": [
304 {
305 "required": [
306 "count"
307 ],
308 "properties": {
309 "count": {
310 "type": "integer"
311 }
312 }
313 },
314 {
315 "required": [
316 "amount"
317 ],
318 "properties": {
319 "amount": {
320 "type": "integer"
321 }
322 }
323 }
324 ]
325 }
326 },
327 {
328 "required": [
329 "count"
330 ],
331 "properties": {
332 "count": {
333 "type": "integer"
334 }
335 }
336 },
337 {
338 "required": [
339 "amount"
340 ],
341 "properties": {
342 "amount": {
343 "type": "integer"
344 }
345 }
346 }
347 ],
348 "required": [
349 "shared2"
350 ]
351 }
352 ]
353 },
354 "WithMap": {
355 "type": "object",
356 "oneOf": [
357 {
358 "allOf": [
359 {
360 "required": [
361 "shared"
362 ],
363 "properties": {
364 "shared": {
365 "type": "object",
366 "additionalProperties": {
367 "type": "integer"
368 }
369 }
370 }
371 },
372 {
373 "not": {
374 "anyOf": [
375 {
376 "required": [
377 "shared",
378 "extra"
379 ],
380 "properties": {
381 "shared": {
382 "type": "object",
383 "additionalProperties": {
384 "type": "integer"
385 }
386 },
387 "extra": {
388 "type": "integer"
389 }
390 }
391 }
392 ]
393 }
394 }
395 ]
396 },
397 {
398 "allOf": [
399 {
400 "required": [
401 "shared",
402 "extra"
403 ],
404 "properties": {
405 "shared": {
406 "type": "object",
407 "additionalProperties": {
408 "type": "integer"
409 }
410 },
411 "extra": {
412 "type": "integer"
413 }
414 }
415 },
416 {
417 "not": {
418 "anyOf": [
419 {
420 "required": [
421 "shared"
422 ],
423 "properties": {
424 "shared": {
425 "type": "object",
426 "additionalProperties": {
427 "type": "integer"
428 }
429 }
430 }
431 }
432 ]
433 }
434 }
435 ]
436 },
437 {
438 "required": [
439 "shared",
440 "extra"
441 ],
442 "properties": {
443 "shared": {
444 "type": "string"
445 },
446 "extra": {
447 "type": "integer"
448 }
449 }
450 }
451 ]
452 }
453 }
454 }
455}
View as plain text