cuelang.org/go@v0.13.0/encoding/openapi/testdata/openapi-norefs.txtar (about)

     1  #ExpandReferences
     2  -- in.cue --
     3  // An OpenAPI testing package.
     4  package openapi
     5  
     6  $version: "v1beta2"
     7  
     8  info: {
     9  	contact: url:  "https://cuelang.org"
    10  	contact: name: "John Doe"
    11  }
    12  
    13  // MyMessage is my message.
    14  #MyMessage: {
    15  	port?: #Port & {} @protobuf(1)
    16  
    17  	foo: #Int32 & >10 & <1000 & int32 @protobuf(2)
    18  
    19  	bar: [...string] @protobuf(3)
    20  }
    21  
    22  #MyMessage: {
    23  	// Field a.
    24  	a: 1
    25  } | {
    26  	b: string //2: crash
    27  }
    28  
    29  #YourMessage: ({a: number} | {b: string} | {b: number}) & {a?: string}
    30  
    31  #YourMessage2: ({a: number} | {b: number}) &
    32  	({c: number} | {d: number}) &
    33  	({e: number} | {f: number})
    34  
    35  #Msg2: {b: number} | {a: string}
    36  
    37  #Int32: int32
    38  
    39  #Enum: "foo" | "bar" | "baz"
    40  
    41  #List: [...number] | *[1, 2, 3]
    42  
    43  #DefaultStruct: #Port | *{port: 1}
    44  
    45  #Port: {
    46  	port: int
    47  
    48  	obj: [...int]
    49  }
    50  
    51  -- out/TestGenerateOpenAPI/out.json --
    52  {
    53     "openapi": "3.0.0",
    54     "info": {
    55        "contact": {
    56           "url": "https://cuelang.org",
    57           "name": "John Doe"
    58        },
    59        "title": "An OpenAPI testing package.",
    60        "version": "v1beta2"
    61     },
    62     "paths": {},
    63     "components": {
    64        "schemas": {
    65           "DefaultStruct": {
    66              "type": "object",
    67              "properties": {
    68                 "port": {},
    69                 "obj": {
    70                    "type": "array",
    71                    "items": {
    72                       "type": "integer"
    73                    }
    74                 }
    75              },
    76              "default": {
    77                 "port": 1
    78              },
    79              "oneOf": [
    80                 {
    81                    "required": [
    82                       "port",
    83                       "obj"
    84                    ]
    85                 },
    86                 {
    87                    "required": [
    88                       "port"
    89                    ]
    90                 }
    91              ]
    92           },
    93           "Enum": {
    94              "type": "string",
    95              "enum": [
    96                 "foo",
    97                 "bar",
    98                 "baz"
    99              ]
   100           },
   101           "Int32": {
   102              "type": "integer",
   103              "format": "int32"
   104           },
   105           "List": {
   106              "type": "array",
   107              "items": {
   108                 "type": "number"
   109              },
   110              "default": [
   111                 1,
   112                 2,
   113                 3
   114              ]
   115           },
   116           "Msg2": {
   117              "type": "object",
   118              "properties": {
   119                 "b": {
   120                    "type": "number"
   121                 },
   122                 "a": {
   123                    "type": "string"
   124                 }
   125              },
   126              "oneOf": [
   127                 {
   128                    "required": [
   129                       "b"
   130                    ]
   131                 },
   132                 {
   133                    "required": [
   134                       "a"
   135                    ]
   136                 }
   137              ]
   138           },
   139           "MyMessage": {
   140              "description": "MyMessage is my message.",
   141              "type": "object",
   142              "required": [
   143                 "foo",
   144                 "bar"
   145              ],
   146              "properties": {
   147                 "port": {
   148                    "type": "object",
   149                    "required": [
   150                       "port",
   151                       "obj"
   152                    ],
   153                    "properties": {
   154                       "port": {
   155                          "type": "integer"
   156                       },
   157                       "obj": {
   158                          "type": "array",
   159                          "items": {
   160                             "type": "integer"
   161                          }
   162                       }
   163                    }
   164                 },
   165                 "foo": {
   166                    "type": "integer",
   167                    "minimum": 10,
   168                    "exclusiveMinimum": true,
   169                    "maximum": 1000,
   170                    "exclusiveMaximum": true
   171                 },
   172                 "bar": {
   173                    "type": "array",
   174                    "items": {
   175                       "type": "string"
   176                    }
   177                 },
   178                 "a": {
   179                    "description": "Field a.",
   180                    "type": "integer",
   181                    "enum": [
   182                       1
   183                    ]
   184                 },
   185                 "b": {
   186                    "type": "string"
   187                 }
   188              },
   189              "oneOf": [
   190                 {
   191                    "required": [
   192                       "a"
   193                    ]
   194                 },
   195                 {
   196                    "required": [
   197                       "b"
   198                    ]
   199                 }
   200              ]
   201           },
   202           "Port": {
   203              "type": "object",
   204              "required": [
   205                 "port",
   206                 "obj"
   207              ],
   208              "properties": {
   209                 "port": {
   210                    "type": "integer"
   211                 },
   212                 "obj": {
   213                    "type": "array",
   214                    "items": {
   215                       "type": "integer"
   216                    }
   217                 }
   218              }
   219           },
   220           "YourMessage": {
   221              "type": "object",
   222              "properties": {
   223                 "b": {},
   224                 "a": {
   225                    "type": "string"
   226                 }
   227              },
   228              "oneOf": [
   229                 {
   230                    "required": [
   231                       "a"
   232                    ]
   233                 },
   234                 {
   235                    "required": [
   236                       "b"
   237                    ]
   238                 },
   239                 {
   240                    "required": [
   241                       "b"
   242                    ]
   243                 }
   244              ]
   245           },
   246           "YourMessage2": {
   247              "type": "object",
   248              "properties": {
   249                 "a": {
   250                    "type": "number"
   251                 },
   252                 "c": {
   253                    "type": "number"
   254                 },
   255                 "e": {
   256                    "type": "number"
   257                 },
   258                 "f": {
   259                    "type": "number"
   260                 },
   261                 "d": {
   262                    "type": "number"
   263                 },
   264                 "b": {
   265                    "type": "number"
   266                 }
   267              },
   268              "allOf": [
   269                 {
   270                    "oneOf": [
   271                       {
   272                          "required": [
   273                             "a"
   274                          ]
   275                       },
   276                       {
   277                          "required": [
   278                             "b"
   279                          ]
   280                       }
   281                    ]
   282                 },
   283                 {
   284                    "oneOf": [
   285                       {
   286                          "required": [
   287                             "c"
   288                          ]
   289                       },
   290                       {
   291                          "required": [
   292                             "d"
   293                          ]
   294                       }
   295                    ]
   296                 },
   297                 {
   298                    "oneOf": [
   299                       {
   300                          "required": [
   301                             "e"
   302                          ]
   303                       },
   304                       {
   305                          "required": [
   306                             "f"
   307                          ]
   308                       }
   309                    ]
   310                 }
   311              ]
   312           }
   313        }
   314     }
   315  }