cuelang.org/go@v0.10.1/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  }