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 }