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

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