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