github.com/solo-io/cue@v0.4.7/encoding/openapi/testdata/oneof-resolve.json (about) 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 }