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