scorpio 0.3.1 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fb674493cc2557d4679ac5eb54e8734251cddd9005410ad6f5a2c5f1db662380
4
- data.tar.gz: 1bd8308607be18331a71be7cd74627b0138aad7b6d575c887ec4f9d05d263e5c
3
+ metadata.gz: f65533b3372858d91ff71a0ec3847179a8f50a1d825e5f77e94632a249692ecc
4
+ data.tar.gz: 7dab437fe9bbe813f2b8a24417d0232fdf39dc861c2723b7f5df74764cf92797
5
5
  SHA512:
6
- metadata.gz: e81ef200e242f7cc3a616e628bf3eaa68029effbeb0c25c7f76d2e0760e7493b2d57a3b04be492c2f674b51453c2d92a015099dbc6ed9d82a3bc478e27bd6630
7
- data.tar.gz: 17f680366d8e6c8ef67d8755a643fdaea7ad9b4fbb4e6d86b3d603df92628fc450353b26f11a86d27b2317d0609bd36f743be22b56c7547630c2b815928f27fb
6
+ metadata.gz: 13c15b82acc7509c807336037993fa6e97bd7308a37e552974ae259b2665230a78a83235d455df485b51c318c76e8f64ed2e4397bcdc24b4ede52b32e58945f2
7
+ data.tar.gz: c25e928331ff2e0a00904c0e7db4fef1fd5d3ed77331acd6e3b2e59905301ef1d958ec3346eca92f98298c8b2a1ef1e3b537eaf874d87e128c933108d31fcea5
@@ -0,0 +1 @@
1
+ --main README.md --markup=markdown {lib}/**/*.rb
@@ -1,3 +1,10 @@
1
+ # v0.4.0
2
+ - Scorpio::OpenAPI v3 classes updated from OAI/OpenAPI-Specification branch oas3-schema
3
+ - any uniquely-named request parameter will have accessors on Request and can be passed as config to #initialize
4
+ - Request#each_page_ur for pagination
5
+ - significantly improved documentation
6
+ - many refactorings, improvements, and fixes
7
+
1
8
  # v0.3.1
2
9
  - miscellaneous minor fixes and improvements
3
10
 
data/README.md CHANGED
@@ -20,9 +20,9 @@ OpenAPI relies on the definition of schemas using the JSON schema specification,
20
20
 
21
21
  Once you have the OpenAPI document describing the service you will consume, you can get started implementing the code that will interact with that service.
22
22
 
23
- [^1] Certain features may be missing, but Scorpio tries to make workarounds easy. Issues and pull requests regarding missing functionality are welcome.
23
+ [^1]: Certain features may be missing, but Scorpio tries to make workarounds easy. Issues and pull requests regarding missing functionality are welcome.
24
24
 
25
- ## Pet Store
25
+ ## Pet Store (using Scorpio::ResourceBase)
26
26
 
27
27
  Let's dive into some code, shall we? If you have learned about OpenAPI, you likely learned using the example of the Pet Store service. This README will use the same service. Its documentation is at http://petstore.swagger.io/ and its OpenAPI 2 specification is at http://petstore.swagger.io/v2/swagger.json (yaml version: http://petstore.swagger.io/v2/swagger.yaml )
28
28
 
@@ -107,6 +107,89 @@ PetStore::Pet.getPetById(petId: 0)
107
107
 
108
108
  Isn't that cool? You get class methods like getPetById, instance methods like updatePet, attribute accessors like #name and #tags, all dynamically generated from the OpenAPI description. You just make a few classes with a line or two of configuration in each.
109
109
 
110
+ ## Pet Store (using Scorpio::OpenAPI classes)
111
+
112
+ You do not have to define resource classes to use Scorpio to call OpenAPI operations - the classes Scorpio uses to represent concepts from OpenAPI can be called directly. Scorpio uses [JSI](https://github.com/notEthan/ur) classes to represent OpenAPI schemes such as the Document and its Operations.
113
+
114
+ We start by instantiating the OpenAPI document. `Scorpio::OpenAPI::Document.from_instance` returns a V2 or V3 OpenAPI Document class instance.
115
+
116
+ ```ruby
117
+ require 'scorpio'
118
+ pet_store_doc = Scorpio::OpenAPI::Document.from_instance(JSON.parse(Faraday.get('http://petstore.swagger.io/v2/swagger.json').body))
119
+ # => #{<Scorpio::OpenAPI::V2::Document fragment="#"> "swagger" => "2.0", ...}
120
+ ```
121
+
122
+ The OpenAPI document holds the JSON that represents it, so to get an Operation you go through the document's paths, just as it is represented in the JSON.
123
+
124
+ ```ruby
125
+ # the store inventory operation will let us see what statuses there are in the store.
126
+ inventory_op = pet_store_doc.paths['/store/inventory']['get']
127
+ # => #{<Scorpio::OpenAPI::V2::Operation fragment="#/paths/~1store~1inventory/get">
128
+ # "summary" => "Returns pet inventories by status",
129
+ # "operationId" => "getInventory",
130
+ # ...
131
+ # }
132
+ ```
133
+
134
+ Alternatively, Scorpio defines a helper `Document#operations` which behaves like an Enumerable of all the Operations in the Document. It can be subscripted with the `operationId`:
135
+
136
+ ```ruby
137
+ inventory_op = pet_store_doc.operations['getInventory']
138
+ # => returns the same inventory_op as above.
139
+ ```
140
+
141
+ Now that we have an operation, we can run requests from it. {Scorpio::OpenAPI::Operation#run} performs the operation by running a request. If the response is an error, a {Scorpio::HTTPError} subclass will be raised. On success, it returns the response body entity, instantiated according to the OpenAPI schema for the operation response, if specified. For more detail on how json-schema instances are represented, see the gem [JSI](https://github.com/notEthan/jsi).
142
+
143
+ ```ruby
144
+ inventory = inventory_op.run
145
+ # => #{<JSI::SchemaClasses["dde3#/paths/~1store~1inventory/get/responses/200/schema"] fragment="#">
146
+ # "unavailable" => 4,
147
+ # "unloved - needs a home" => 1,
148
+ # "available" => 2350,
149
+ # "sold" => 5790,
150
+ # "dog" => 1,
151
+ # }
152
+ ```
153
+
154
+ let's pick a state and find a pet. we'll go through the rest of the example in the ResourceBase section pretty much like it is up there:
155
+
156
+ ```ruby
157
+ # call the operation findPetsByStatus: http://petstore.swagger.io/#/pet/findPetsByStatus
158
+ sold_pets = pet_store_doc.operations['findPetsByStatus'].run(status: 'sold')
159
+ # sold_pets is an array-like collection of JSI instances
160
+
161
+ # compare to getPetById: http://petstore.swagger.io/#/pet/getPetById
162
+ pet1 = sold_pets.detect { |pet| pet.tags.any? }
163
+ pet2 = pet_store_doc.operations['getPetById'].run(petId: pet1['id'])
164
+ # without ResourceBase, pet1 and pet2 are not considered to be the same though [TODO may change in jsi]
165
+
166
+ pet1 == pet2
167
+ # false
168
+
169
+ pet1.tags.map(&:name)
170
+ # note that you have accessors on PetStore::Pet like #tags, and also that
171
+ # tags have accessors for properties 'name' and 'id' from the tags schema
172
+ # (your tag names will be different depending on what's in the pet store)
173
+ # => ["aucune"]
174
+
175
+ # let's name the pet after ourself
176
+ pet1.name = ENV['USER']
177
+
178
+ # store the result in the pet store.
179
+ # updatePet: http://petstore.swagger.io/#/pet/updatePet
180
+ pet_store_doc.operations['updatePet'].run(body_object: pet1)
181
+
182
+ # check that it was saved
183
+ pet_store_doc.operations['getPetById'].run(petId: pet1['id']).name
184
+ # => "ethan" (unless for some reason your name is not Ethan)
185
+
186
+ # here is how errors are handled:
187
+ pet_store_doc.operations['getPetById'].run(petId: 0)
188
+ # raises: Scorpio::HTTPErrors::NotFound404Error
189
+ # Error calling operation getPetById:
190
+ # {"code":1,"type":"error","message":"Pet not found"}
191
+ ```
192
+
110
193
  ### Another Example: Blog
111
194
 
112
195
  For another example of an API that a client interacts with using Scorpio::ResourceBase, Scorpio's tests implement the Blog service. This is defined in test/blog.rb. The service uses ActiveRecord models and Sinatra to make a simple RESTful service.
@@ -133,6 +216,16 @@ When these are set, Scorpio::ResourceBase looks through the API description and
133
216
  - accessors for properties of the model defined as properties of schemas representing the resource in the specification
134
217
  - API method calls on the model class and, where appropriate, on the model instance
135
218
 
219
+ ## Scorpio::Ur
220
+
221
+ If you need a more complete representation of the HTTP request and/or response, Scorpio::OpenAPI::Operation#run_ur or Scorpio::Request#run_ur will return a representation of the request and response defined by the gem [Ur](https://github.com/notEthan/ur). See that link for more detail. Relating to the example above titled "Pet Store (using Scorpio::OpenAPI classes)", this code will return an Ur:
222
+
223
+ ```ruby
224
+ inventory_op = Scorpio::OpenAPI::Document.from_instance(JSON.parse(Faraday.get('http://petstore.swagger.io/v2/swagger.json').body)).paths['/store/inventory']['get']
225
+ inventory_ur = inventory_op.run_ur
226
+ # => #{<Scorpio::Ur fragment="#"> ...}
227
+ ```
228
+
136
229
  ### Scorpio ResourceBase pickle adapter
137
230
 
138
231
  Scorpio provides a pickle adapter to use models with [Pickle](https://rubygems.org/gems/pickle). `require 'scorpio/pickle_adapter'`, ensure that the pickle ORM adapter is enabled, and you should be able to create models as normal with pickle.
@@ -0,0 +1,1495 @@
1
+ type: object
2
+ required:
3
+ - openapi
4
+ - info
5
+ - paths
6
+ properties:
7
+ openapi:
8
+ type: string
9
+ pattern: ^3\.0\.\d(-.+)?$
10
+ info:
11
+ $ref: '#/definitions/Info'
12
+ externalDocs:
13
+ $ref: '#/definitions/ExternalDocumentation'
14
+ servers:
15
+ type: array
16
+ items:
17
+ $ref: '#/definitions/Server'
18
+ security:
19
+ type: array
20
+ items:
21
+ $ref: '#/definitions/SecurityRequirement'
22
+ tags:
23
+ type: array
24
+ items:
25
+ $ref: '#/definitions/Tag'
26
+ uniqueItems: true
27
+ paths:
28
+ $ref: '#/definitions/Paths'
29
+ components:
30
+ $ref: '#/definitions/Components'
31
+ patternProperties:
32
+ '^x-': {}
33
+ additionalProperties: false
34
+ definitions:
35
+ Reference:
36
+ type: object
37
+ required:
38
+ - $ref
39
+ patternProperties:
40
+ '^\$ref$':
41
+ type: string
42
+ format: uri-reference
43
+ Info:
44
+ type: object
45
+ required:
46
+ - title
47
+ - version
48
+ properties:
49
+ title:
50
+ type: string
51
+ description:
52
+ type: string
53
+ termsOfService:
54
+ type: string
55
+ format: uri-reference
56
+ contact:
57
+ $ref: '#/definitions/Contact'
58
+ license:
59
+ $ref: '#/definitions/License'
60
+ version:
61
+ type: string
62
+ patternProperties:
63
+ '^x-': {}
64
+ additionalProperties: false
65
+
66
+
67
+ Contact:
68
+ type: object
69
+ properties:
70
+ name:
71
+ type: string
72
+ url:
73
+ type: string
74
+ format: uri-reference
75
+ email:
76
+ type: string
77
+ format: email
78
+ patternProperties:
79
+ '^x-': {}
80
+ additionalProperties: false
81
+
82
+ License:
83
+ type: object
84
+ required:
85
+ - name
86
+ properties:
87
+ name:
88
+ type: string
89
+ url:
90
+ type: string
91
+ format: uri-reference
92
+ patternProperties:
93
+ '^x-': {}
94
+ additionalProperties: false
95
+
96
+ Server:
97
+ type: object
98
+ required:
99
+ - url
100
+ properties:
101
+ url:
102
+ type: string
103
+ description:
104
+ type: string
105
+ variables:
106
+ type: object
107
+ additionalProperties:
108
+ $ref: '#/definitions/ServerVariable'
109
+ patternProperties:
110
+ '^x-': {}
111
+ additionalProperties: false
112
+
113
+ ServerVariable:
114
+ type: object
115
+ required:
116
+ - default
117
+ properties:
118
+ enum:
119
+ type: array
120
+ items:
121
+ type: string
122
+ default:
123
+ type: string
124
+ description:
125
+ type: string
126
+ patternProperties:
127
+ '^x-': {}
128
+ additionalProperties: false
129
+
130
+ Components:
131
+ type: object
132
+ properties:
133
+ schemas:
134
+ type: object
135
+ patternProperties:
136
+ '^[a-zA-Z0-9\.\-_]+$':
137
+ oneOf:
138
+ - $ref: '#/definitions/Reference'
139
+ - $ref: '#/definitions/Schema'
140
+ responses:
141
+ type: object
142
+ patternProperties:
143
+ '^[a-zA-Z0-9\.\-_]+$':
144
+ oneOf:
145
+ - $ref: '#/definitions/Reference'
146
+ - $ref: '#/definitions/Response'
147
+ parameters:
148
+ type: object
149
+ patternProperties:
150
+ '^[a-zA-Z0-9\.\-_]+$':
151
+ oneOf:
152
+ - $ref: '#/definitions/Reference'
153
+ - $ref: '#/definitions/Parameter'
154
+ examples:
155
+ type: object
156
+ patternProperties:
157
+ '^[a-zA-Z0-9\.\-_]+$':
158
+ oneOf:
159
+ - $ref: '#/definitions/Reference'
160
+ - $ref: '#/definitions/Example'
161
+ requestBodies:
162
+ type: object
163
+ patternProperties:
164
+ '^[a-zA-Z0-9\.\-_]+$':
165
+ oneOf:
166
+ - $ref: '#/definitions/Reference'
167
+ - $ref: '#/definitions/RequestBody'
168
+ headers:
169
+ type: object
170
+ patternProperties:
171
+ '^[a-zA-Z0-9\.\-_]+$':
172
+ oneOf:
173
+ - $ref: '#/definitions/Reference'
174
+ - $ref: '#/definitions/Header'
175
+ securitySchemes:
176
+ type: object
177
+ patternProperties:
178
+ '^[a-zA-Z0-9\.\-_]+$':
179
+ oneOf:
180
+ - $ref: '#/definitions/Reference'
181
+ - $ref: '#/definitions/SecurityScheme'
182
+ links:
183
+ type: object
184
+ patternProperties:
185
+ '^[a-zA-Z0-9\.\-_]+$':
186
+ oneOf:
187
+ - $ref: '#/definitions/Reference'
188
+ - $ref: '#/definitions/Link'
189
+ callbacks:
190
+ type: object
191
+ patternProperties:
192
+ '^[a-zA-Z0-9\.\-_]+$':
193
+ oneOf:
194
+ - $ref: '#/definitions/Reference'
195
+ - $ref: '#/definitions/Callback'
196
+ patternProperties:
197
+ '^x-': {}
198
+ additionalProperties: false
199
+
200
+ Schema:
201
+ type: object
202
+ properties:
203
+ title:
204
+ type: string
205
+ multipleOf:
206
+ type: number
207
+ minimum: 0
208
+ exclusiveMinimum: true
209
+ maximum:
210
+ type: number
211
+ exclusiveMaximum:
212
+ type: boolean
213
+ default: false
214
+ minimum:
215
+ type: number
216
+ exclusiveMinimum:
217
+ type: boolean
218
+ default: false
219
+ maxLength:
220
+ type: integer
221
+ minimum: 0
222
+ minLength:
223
+ type: integer
224
+ minimum: 0
225
+ default: 0
226
+ pattern:
227
+ type: string
228
+ format: regex
229
+ maxItems:
230
+ type: integer
231
+ minimum: 0
232
+ minItems:
233
+ type: integer
234
+ minimum: 0
235
+ default: 0
236
+ uniqueItems:
237
+ type: boolean
238
+ default: false
239
+ maxProperties:
240
+ type: integer
241
+ minimum: 0
242
+ minProperties:
243
+ type: integer
244
+ minimum: 0
245
+ default: 0
246
+ required:
247
+ type: array
248
+ items:
249
+ type: string
250
+ minItems: 1
251
+ uniqueItems: true
252
+ enum:
253
+ type: array
254
+ items: {}
255
+ minItems: 1
256
+ uniqueItems: false
257
+ type:
258
+ type: string
259
+ enum:
260
+ - array
261
+ - boolean
262
+ - integer
263
+ - number
264
+ - object
265
+ - string
266
+ not:
267
+ oneOf:
268
+ - $ref: '#/definitions/Schema'
269
+ - $ref: '#/definitions/Reference'
270
+ allOf:
271
+ type: array
272
+ items:
273
+ oneOf:
274
+ - $ref: '#/definitions/Schema'
275
+ - $ref: '#/definitions/Reference'
276
+ oneOf:
277
+ type: array
278
+ items:
279
+ oneOf:
280
+ - $ref: '#/definitions/Schema'
281
+ - $ref: '#/definitions/Reference'
282
+ anyOf:
283
+ type: array
284
+ items:
285
+ oneOf:
286
+ - $ref: '#/definitions/Schema'
287
+ - $ref: '#/definitions/Reference'
288
+ items:
289
+ oneOf:
290
+ - $ref: '#/definitions/Schema'
291
+ - $ref: '#/definitions/Reference'
292
+ properties:
293
+ type: object
294
+ additionalProperties:
295
+ oneOf:
296
+ - $ref: '#/definitions/Schema'
297
+ - $ref: '#/definitions/Reference'
298
+ additionalProperties:
299
+ oneOf:
300
+ - $ref: '#/definitions/Schema'
301
+ - $ref: '#/definitions/Reference'
302
+ - type: boolean
303
+ default: true
304
+ description:
305
+ type: string
306
+ format:
307
+ type: string
308
+ default: {}
309
+ nullable:
310
+ type: boolean
311
+ default: false
312
+ discriminator:
313
+ $ref: '#/definitions/Discriminator'
314
+ readOnly:
315
+ type: boolean
316
+ default: false
317
+ writeOnly:
318
+ type: boolean
319
+ default: false
320
+ example: {}
321
+ externalDocs:
322
+ $ref: '#/definitions/ExternalDocumentation'
323
+ deprecated:
324
+ type: boolean
325
+ default: false
326
+ xml:
327
+ $ref: '#/definitions/XML'
328
+ patternProperties:
329
+ '^x-': {}
330
+ additionalProperties: false
331
+
332
+ Discriminator:
333
+ type: object
334
+ required:
335
+ - propertyName
336
+ properties:
337
+ propertyName:
338
+ type: string
339
+ mapping:
340
+ type: object
341
+ additionalProperties:
342
+ type: string
343
+
344
+ XML:
345
+ type: object
346
+ properties:
347
+ name:
348
+ type: string
349
+ namespace:
350
+ type: string
351
+ format: uri
352
+ prefix:
353
+ type: string
354
+ attribute:
355
+ type: boolean
356
+ default: false
357
+ wrapped:
358
+ type: boolean
359
+ default: false
360
+ patternProperties:
361
+ '^x-': {}
362
+ additionalProperties: false
363
+
364
+ Response:
365
+ type: object
366
+ required:
367
+ - description
368
+ properties:
369
+ description:
370
+ type: string
371
+ headers:
372
+ type: object
373
+ additionalProperties:
374
+ oneOf:
375
+ - $ref: '#/definitions/Header'
376
+ - $ref: '#/definitions/Reference'
377
+ content:
378
+ type: object
379
+ additionalProperties:
380
+ $ref: '#/definitions/MediaType'
381
+ links:
382
+ type: object
383
+ additionalProperties:
384
+ oneOf:
385
+ - $ref: '#/definitions/Link'
386
+ - $ref: '#/definitions/Reference'
387
+ patternProperties:
388
+ '^x-': {}
389
+ additionalProperties: false
390
+
391
+ MediaType:
392
+ oneOf:
393
+ - $ref: '#/definitions/MediaTypeWithExample'
394
+ - $ref: '#/definitions/MediaTypeWithExamples'
395
+
396
+ MediaTypeWithExample:
397
+ type: object
398
+ properties:
399
+ schema:
400
+ oneOf:
401
+ - $ref: '#/definitions/Schema'
402
+ - $ref: '#/definitions/Reference'
403
+ example: {}
404
+ encoding:
405
+ type: object
406
+ additionalProperties:
407
+ $ref: '#/definitions/Encoding'
408
+ patternProperties:
409
+ '^x-': {}
410
+ additionalProperties: false
411
+
412
+ MediaTypeWithExamples:
413
+ type: object
414
+ required:
415
+ - examples
416
+ properties:
417
+ schema:
418
+ oneOf:
419
+ - $ref: '#/definitions/Schema'
420
+ - $ref: '#/definitions/Reference'
421
+ examples:
422
+ type: object
423
+ additionalProperties:
424
+ oneOf:
425
+ - $ref: '#/definitions/Example'
426
+ - $ref: '#/definitions/Reference'
427
+ encoding:
428
+ type: object
429
+ additionalProperties:
430
+ $ref: '#/definitions/Encoding'
431
+ patternProperties:
432
+ '^x-': {}
433
+ additionalProperties: false
434
+
435
+ Example:
436
+ type: object
437
+ properties:
438
+ summary:
439
+ type: string
440
+ description:
441
+ type: string
442
+ value: {}
443
+ externalValue:
444
+ type: string
445
+ format: uri-reference
446
+ patternProperties:
447
+ '^x-': {}
448
+ additionalProperties: false
449
+
450
+ Header:
451
+ oneOf:
452
+ - $ref: '#/definitions/HeaderWithSchema'
453
+ - $ref: '#/definitions/HeaderWithContent'
454
+
455
+ HeaderWithSchema:
456
+ oneOf:
457
+ - $ref: '#/definitions/HeaderWithSchemaWithExample'
458
+ - $ref: '#/definitions/HeaderWithSchemaWithExamples'
459
+
460
+ HeaderWithSchemaWithExample:
461
+ type: object
462
+ required:
463
+ - schema
464
+ properties:
465
+ description:
466
+ type: string
467
+ required:
468
+ type: boolean
469
+ default: false
470
+ deprecated:
471
+ type: boolean
472
+ default: false
473
+ allowEmptyValue:
474
+ type: boolean
475
+ default: false
476
+ style:
477
+ type: string
478
+ enum:
479
+ - simple
480
+ default: simple
481
+ explode:
482
+ type: boolean
483
+ allowReserved:
484
+ type: boolean
485
+ default: false
486
+ schema:
487
+ oneOf:
488
+ - $ref: '#/definitions/Schema'
489
+ - $ref: '#/definitions/Reference'
490
+ example: {}
491
+ patternProperties:
492
+ '^x-': {}
493
+ additionalProperties: false
494
+
495
+ HeaderWithSchemaWithExamples:
496
+ type: object
497
+ required:
498
+ - schema
499
+ - examples
500
+ properties:
501
+ description:
502
+ type: string
503
+ required:
504
+ type: boolean
505
+ default: false
506
+ deprecated:
507
+ type: boolean
508
+ default: false
509
+ allowEmptyValue:
510
+ type: boolean
511
+ default: false
512
+ style:
513
+ type: string
514
+ enum:
515
+ - simple
516
+ default: simple
517
+ explode:
518
+ type: boolean
519
+ allowReserved:
520
+ type: boolean
521
+ default: false
522
+ schema:
523
+ oneOf:
524
+ - $ref: '#/definitions/Schema'
525
+ - $ref: '#/definitions/Reference'
526
+ examples:
527
+ type: object
528
+ additionalProperties:
529
+ oneOf:
530
+ - $ref: '#/definitions/Example'
531
+ - $ref: '#/definitions/Reference'
532
+ patternProperties:
533
+ '^x-': {}
534
+ additionalProperties: false
535
+
536
+ HeaderWithContent:
537
+ type: object
538
+ required:
539
+ - content
540
+ properties:
541
+ description:
542
+ type: string
543
+ required:
544
+ type: boolean
545
+ default: false
546
+ deprecated:
547
+ type: boolean
548
+ default: false
549
+ allowEmptyValue:
550
+ type: boolean
551
+ default: false
552
+ content:
553
+ type: object
554
+ additionalProperties:
555
+ $ref: '#/definitions/MediaType'
556
+ minProperties: 1
557
+ maxProperties: 1
558
+ patternProperties:
559
+ '^x-': {}
560
+ additionalProperties: false
561
+
562
+ Paths:
563
+ type: object
564
+ patternProperties:
565
+ '^\/':
566
+ $ref: '#/definitions/PathItem'
567
+ '^x-': {}
568
+ additionalProperties: false
569
+
570
+ PathItem:
571
+ type: object
572
+ properties:
573
+ $ref:
574
+ type: string
575
+ summary:
576
+ type: string
577
+ description:
578
+ type: string
579
+ get:
580
+ $ref: '#/definitions/Operation'
581
+ put:
582
+ $ref: '#/definitions/Operation'
583
+ post:
584
+ $ref: '#/definitions/Operation'
585
+ delete:
586
+ $ref: '#/definitions/Operation'
587
+ options:
588
+ $ref: '#/definitions/Operation'
589
+ head:
590
+ $ref: '#/definitions/Operation'
591
+ patch:
592
+ $ref: '#/definitions/Operation'
593
+ trace:
594
+ $ref: '#/definitions/Operation'
595
+ servers:
596
+ type: array
597
+ items:
598
+ $ref: '#/definitions/Server'
599
+ parameters:
600
+ type: array
601
+ items:
602
+ oneOf:
603
+ - $ref: '#/definitions/Parameter'
604
+ - $ref: '#/definitions/Reference'
605
+ uniqueItems: true
606
+ patternProperties:
607
+ '^x-': {}
608
+ additionalProperties: false
609
+
610
+ Operation:
611
+ type: object
612
+ required:
613
+ - responses
614
+ properties:
615
+ tags:
616
+ type: array
617
+ items:
618
+ type: string
619
+ summary:
620
+ type: string
621
+ description:
622
+ type: string
623
+ externalDocs:
624
+ $ref: '#/definitions/ExternalDocumentation'
625
+ operationId:
626
+ type: string
627
+ parameters:
628
+ type: array
629
+ items:
630
+ oneOf:
631
+ - $ref: '#/definitions/Parameter'
632
+ - $ref: '#/definitions/Reference'
633
+ uniqueItems: true
634
+ requestBody:
635
+ oneOf:
636
+ - $ref: '#/definitions/RequestBody'
637
+ - $ref: '#/definitions/Reference'
638
+ responses:
639
+ $ref: '#/definitions/Responses'
640
+ callbacks:
641
+ type: object
642
+ additionalProperties:
643
+ oneOf:
644
+ - $ref: '#/definitions/Callback'
645
+ - $ref: '#/definitions/Reference'
646
+ deprecated:
647
+ type: boolean
648
+ default: false
649
+ security:
650
+ type: array
651
+ items:
652
+ $ref: '#/definitions/SecurityRequirement'
653
+ servers:
654
+ type: array
655
+ items:
656
+ $ref: '#/definitions/Server'
657
+ patternProperties:
658
+ '^x-': {}
659
+ additionalProperties: false
660
+
661
+ Responses:
662
+ type: object
663
+ properties:
664
+ default:
665
+ oneOf:
666
+ - $ref: '#/definitions/Response'
667
+ - $ref: '#/definitions/Reference'
668
+ patternProperties:
669
+ '^[1-5](?:\d{2}|XX)$':
670
+ oneOf:
671
+ - $ref: '#/definitions/Response'
672
+ - $ref: '#/definitions/Reference'
673
+ '^x-': {}
674
+ minProperties: 1
675
+ additionalProperties: false
676
+
677
+
678
+ SecurityRequirement:
679
+ type: object
680
+ additionalProperties:
681
+ type: array
682
+ items:
683
+ type: string
684
+
685
+ Tag:
686
+ type: object
687
+ required:
688
+ - name
689
+ properties:
690
+ name:
691
+ type: string
692
+ description:
693
+ type: string
694
+ externalDocs:
695
+ $ref: '#/definitions/ExternalDocumentation'
696
+ patternProperties:
697
+ '^x-': {}
698
+ additionalProperties: false
699
+
700
+ ExternalDocumentation:
701
+ type: object
702
+ required:
703
+ - url
704
+ properties:
705
+ description:
706
+ type: string
707
+ url:
708
+ type: string
709
+ format: uri-reference
710
+ patternProperties:
711
+ '^x-': {}
712
+ additionalProperties: false
713
+
714
+ Parameter:
715
+ oneOf:
716
+ - $ref: '#/definitions/ParameterWithSchema'
717
+ - $ref: '#/definitions/ParameterWithContent'
718
+
719
+ ParameterWithSchema:
720
+ oneOf:
721
+ - $ref: '#/definitions/ParameterWithSchemaWithExample'
722
+ - $ref: '#/definitions/ParameterWithSchemaWithExamples'
723
+
724
+ ParameterWithSchemaWithExample:
725
+ oneOf:
726
+ - $ref: '#/definitions/ParameterWithSchemaWithExampleInPath'
727
+ - $ref: '#/definitions/ParameterWithSchemaWithExampleInQuery'
728
+ - $ref: '#/definitions/ParameterWithSchemaWithExampleInHeader'
729
+ - $ref: '#/definitions/ParameterWithSchemaWithExampleInCookie'
730
+
731
+ ParameterWithSchemaWithExampleInPath:
732
+ type: object
733
+ required:
734
+ - name
735
+ - in
736
+ - schema
737
+ - required
738
+ properties:
739
+ name:
740
+ type: string
741
+ in:
742
+ type: string
743
+ enum:
744
+ - path
745
+ description:
746
+ type: string
747
+ required:
748
+ type: boolean
749
+ enum:
750
+ - true
751
+ deprecated:
752
+ type: boolean
753
+ default: false
754
+ allowEmptyValue:
755
+ type: boolean
756
+ default: false
757
+ style:
758
+ type: string
759
+ enum:
760
+ - matrix
761
+ - label
762
+ - simple
763
+ default: simple
764
+ explode:
765
+ type: boolean
766
+ allowReserved:
767
+ type: boolean
768
+ default: false
769
+ schema:
770
+ oneOf:
771
+ - $ref: '#/definitions/Schema'
772
+ - $ref: '#/definitions/Reference'
773
+ example: {}
774
+ patternProperties:
775
+ '^x-': {}
776
+ additionalProperties: false
777
+
778
+ ParameterWithSchemaWithExampleInQuery:
779
+ type: object
780
+ required:
781
+ - name
782
+ - in
783
+ - schema
784
+ properties:
785
+ name:
786
+ type: string
787
+ in:
788
+ type: string
789
+ enum:
790
+ - query
791
+ description:
792
+ type: string
793
+ required:
794
+ type: boolean
795
+ default: false
796
+ deprecated:
797
+ type: boolean
798
+ default: false
799
+ allowEmptyValue:
800
+ type: boolean
801
+ default: false
802
+ style:
803
+ type: string
804
+ enum:
805
+ - form
806
+ - spaceDelimited
807
+ - pipeDelimited
808
+ - deepObject
809
+ default: form
810
+ explode:
811
+ type: boolean
812
+ allowReserved:
813
+ type: boolean
814
+ default: false
815
+ schema:
816
+ oneOf:
817
+ - $ref: '#/definitions/Schema'
818
+ - $ref: '#/definitions/Reference'
819
+ example: {}
820
+ patternProperties:
821
+ '^x-': {}
822
+ additionalProperties: false
823
+
824
+ ParameterWithSchemaWithExampleInHeader:
825
+ type: object
826
+ required:
827
+ - name
828
+ - in
829
+ - schema
830
+ properties:
831
+ name:
832
+ type: string
833
+ in:
834
+ type: string
835
+ enum:
836
+ - header
837
+ description:
838
+ type: string
839
+ required:
840
+ type: boolean
841
+ default: false
842
+ deprecated:
843
+ type: boolean
844
+ default: false
845
+ allowEmptyValue:
846
+ type: boolean
847
+ default: false
848
+ style:
849
+ type: string
850
+ enum:
851
+ - simple
852
+ default: simple
853
+ explode:
854
+ type: boolean
855
+ allowReserved:
856
+ type: boolean
857
+ default: false
858
+ schema:
859
+ oneOf:
860
+ - $ref: '#/definitions/Schema'
861
+ - $ref: '#/definitions/Reference'
862
+ example: {}
863
+ patternProperties:
864
+ '^x-': {}
865
+ additionalProperties: false
866
+
867
+ ParameterWithSchemaWithExampleInCookie:
868
+ type: object
869
+ required:
870
+ - name
871
+ - in
872
+ - schema
873
+ properties:
874
+ name:
875
+ type: string
876
+ in:
877
+ type: string
878
+ enum:
879
+ - cookie
880
+ description:
881
+ type: string
882
+ required:
883
+ type: boolean
884
+ default: false
885
+ deprecated:
886
+ type: boolean
887
+ default: false
888
+ allowEmptyValue:
889
+ type: boolean
890
+ default: false
891
+ style:
892
+ type: string
893
+ enum:
894
+ - form
895
+ default: form
896
+ explode:
897
+ type: boolean
898
+ allowReserved:
899
+ type: boolean
900
+ default: false
901
+ schema:
902
+ oneOf:
903
+ - $ref: '#/definitions/Schema'
904
+ - $ref: '#/definitions/Reference'
905
+ example: {}
906
+ patternProperties:
907
+ '^x-': {}
908
+ additionalProperties: false
909
+
910
+ ParameterWithSchemaWithExamples:
911
+ oneOf:
912
+ - $ref: '#/definitions/ParameterWithSchemaWithExamplesInPath'
913
+ - $ref: '#/definitions/ParameterWithSchemaWithExamplesInQuery'
914
+ - $ref: '#/definitions/ParameterWithSchemaWithExamplesInHeader'
915
+ - $ref: '#/definitions/ParameterWithSchemaWithExamplesInCookie'
916
+
917
+ ParameterWithSchemaWithExamplesInPath:
918
+ type: object
919
+ required:
920
+ - name
921
+ - in
922
+ - schema
923
+ - required
924
+ - examples
925
+ properties:
926
+ name:
927
+ type: string
928
+ in:
929
+ type: string
930
+ enum:
931
+ - path
932
+ description:
933
+ type: string
934
+ required:
935
+ type: boolean
936
+ enum:
937
+ - true
938
+ deprecated:
939
+ type: boolean
940
+ default: false
941
+ allowEmptyValue:
942
+ type: boolean
943
+ default: false
944
+ style:
945
+ type: string
946
+ enum:
947
+ - matrix
948
+ - label
949
+ - simple
950
+ default: simple
951
+ explode:
952
+ type: boolean
953
+ allowReserved:
954
+ type: boolean
955
+ default: false
956
+ schema:
957
+ oneOf:
958
+ - $ref: '#/definitions/Schema'
959
+ - $ref: '#/definitions/Reference'
960
+ examples:
961
+ type: object
962
+ additionalProperties:
963
+ oneOf:
964
+ - $ref: '#/definitions/Example'
965
+ - $ref: '#/definitions/Reference'
966
+ patternProperties:
967
+ '^x-': {}
968
+ additionalProperties: false
969
+
970
+ ParameterWithSchemaWithExamplesInQuery:
971
+ type: object
972
+ required:
973
+ - name
974
+ - in
975
+ - schema
976
+ - examples
977
+ properties:
978
+ name:
979
+ type: string
980
+ in:
981
+ type: string
982
+ enum:
983
+ - query
984
+ description:
985
+ type: string
986
+ required:
987
+ type: boolean
988
+ default: false
989
+ deprecated:
990
+ type: boolean
991
+ default: false
992
+ allowEmptyValue:
993
+ type: boolean
994
+ default: false
995
+ style:
996
+ type: string
997
+ enum:
998
+ - form
999
+ - spaceDelimited
1000
+ - pipeDelimited
1001
+ - deepObject
1002
+ default: form
1003
+ explode:
1004
+ type: boolean
1005
+ allowReserved:
1006
+ type: boolean
1007
+ default: false
1008
+ schema:
1009
+ oneOf:
1010
+ - $ref: '#/definitions/Schema'
1011
+ - $ref: '#/definitions/Reference'
1012
+ examples:
1013
+ type: object
1014
+ additionalProperties:
1015
+ oneOf:
1016
+ - $ref: '#/definitions/Example'
1017
+ - $ref: '#/definitions/Reference'
1018
+ patternProperties:
1019
+ '^x-': {}
1020
+ additionalProperties: false
1021
+
1022
+ ParameterWithSchemaWithExamplesInHeader:
1023
+ type: object
1024
+ required:
1025
+ - name
1026
+ - in
1027
+ - schema
1028
+ - examples
1029
+ properties:
1030
+ name:
1031
+ type: string
1032
+ in:
1033
+ type: string
1034
+ enum:
1035
+ - header
1036
+ description:
1037
+ type: string
1038
+ required:
1039
+ type: boolean
1040
+ default: false
1041
+ deprecated:
1042
+ type: boolean
1043
+ default: false
1044
+ allowEmptyValue:
1045
+ type: boolean
1046
+ default: false
1047
+ style:
1048
+ type: string
1049
+ enum:
1050
+ - simple
1051
+ default: simple
1052
+ explode:
1053
+ type: boolean
1054
+ allowReserved:
1055
+ type: boolean
1056
+ default: false
1057
+ schema:
1058
+ oneOf:
1059
+ - $ref: '#/definitions/Schema'
1060
+ - $ref: '#/definitions/Reference'
1061
+ examples:
1062
+ type: object
1063
+ additionalProperties:
1064
+ oneOf:
1065
+ - $ref: '#/definitions/Example'
1066
+ - $ref: '#/definitions/Reference'
1067
+ patternProperties:
1068
+ '^x-': {}
1069
+ additionalProperties: false
1070
+
1071
+ ParameterWithSchemaWithExamplesInCookie:
1072
+ type: object
1073
+ required:
1074
+ - name
1075
+ - in
1076
+ - schema
1077
+ - examples
1078
+ properties:
1079
+ name:
1080
+ type: string
1081
+ in:
1082
+ type: string
1083
+ enum:
1084
+ - cookie
1085
+ description:
1086
+ type: string
1087
+ required:
1088
+ type: boolean
1089
+ default: false
1090
+ deprecated:
1091
+ type: boolean
1092
+ default: false
1093
+ allowEmptyValue:
1094
+ type: boolean
1095
+ default: false
1096
+ style:
1097
+ type: string
1098
+ enum:
1099
+ - form
1100
+ default: form
1101
+ explode:
1102
+ type: boolean
1103
+ allowReserved:
1104
+ type: boolean
1105
+ default: false
1106
+ schema:
1107
+ oneOf:
1108
+ - $ref: '#/definitions/Schema'
1109
+ - $ref: '#/definitions/Reference'
1110
+ examples:
1111
+ type: object
1112
+ additionalProperties:
1113
+ oneOf:
1114
+ - $ref: '#/definitions/Example'
1115
+ - $ref: '#/definitions/Reference'
1116
+ patternProperties:
1117
+ '^x-': {}
1118
+ additionalProperties: false
1119
+
1120
+ ParameterWithContent:
1121
+ oneOf:
1122
+ - $ref: '#/definitions/ParameterWithContentInPath'
1123
+ - $ref: '#/definitions/ParameterWithContentNotInPath'
1124
+
1125
+ ParameterWithContentInPath:
1126
+ type: object
1127
+ required:
1128
+ - name
1129
+ - in
1130
+ - content
1131
+ properties:
1132
+ name:
1133
+ type: string
1134
+ in:
1135
+ type: string
1136
+ enum:
1137
+ - path
1138
+ description:
1139
+ type: string
1140
+ required:
1141
+ type: boolean
1142
+ enum:
1143
+ - true
1144
+ deprecated:
1145
+ type: boolean
1146
+ default: false
1147
+ allowEmptyValue:
1148
+ type: boolean
1149
+ default: false
1150
+ content:
1151
+ type: object
1152
+ additionalProperties:
1153
+ $ref: '#/definitions/MediaType'
1154
+ minProperties: 1
1155
+ maxProperties: 1
1156
+ patternProperties:
1157
+ '^x-': {}
1158
+ additionalProperties: false
1159
+
1160
+ ParameterWithContentNotInPath:
1161
+ type: object
1162
+ required:
1163
+ - name
1164
+ - in
1165
+ - content
1166
+ properties:
1167
+ name:
1168
+ type: string
1169
+ in:
1170
+ type: string
1171
+ enum:
1172
+ - query
1173
+ - header
1174
+ - cookie
1175
+ description:
1176
+ type: string
1177
+ required:
1178
+ type: boolean
1179
+ default: false
1180
+ deprecated:
1181
+ type: boolean
1182
+ default: false
1183
+ allowEmptyValue:
1184
+ type: boolean
1185
+ default: false
1186
+ content:
1187
+ type: object
1188
+ additionalProperties:
1189
+ $ref: '#/definitions/MediaType'
1190
+ minProperties: 1
1191
+ maxProperties: 1
1192
+ patternProperties:
1193
+ '^x-': {}
1194
+ additionalProperties: false
1195
+
1196
+ RequestBody:
1197
+ type: object
1198
+ required:
1199
+ - content
1200
+ properties:
1201
+ description:
1202
+ type: string
1203
+ content:
1204
+ type: object
1205
+ additionalProperties:
1206
+ $ref: '#/definitions/MediaType'
1207
+ required:
1208
+ type: boolean
1209
+ default: false
1210
+ patternProperties:
1211
+ '^x-': {}
1212
+ additionalProperties: false
1213
+
1214
+ SecurityScheme:
1215
+ oneOf:
1216
+ - $ref: '#/definitions/APIKeySecurityScheme'
1217
+ - $ref: '#/definitions/HTTPSecurityScheme'
1218
+ - $ref: '#/definitions/OAuth2SecurityScheme'
1219
+ - $ref: '#/definitions/OpenIdConnectSecurityScheme'
1220
+
1221
+ APIKeySecurityScheme:
1222
+ type: object
1223
+ required:
1224
+ - type
1225
+ - name
1226
+ - in
1227
+ properties:
1228
+ type:
1229
+ type: string
1230
+ enum:
1231
+ - apiKey
1232
+ name:
1233
+ type: string
1234
+ in:
1235
+ type: string
1236
+ enum:
1237
+ - header
1238
+ - query
1239
+ - cookie
1240
+ description:
1241
+ type: string
1242
+ patternProperties:
1243
+ '^x-': {}
1244
+ additionalProperties: false
1245
+
1246
+ HTTPSecurityScheme:
1247
+ oneOf:
1248
+ - $ref: '#/definitions/NonBearerHTTPSecurityScheme'
1249
+ - $ref: '#/definitions/BearerHTTPSecurityScheme'
1250
+
1251
+ NonBearerHTTPSecurityScheme:
1252
+ type: object
1253
+ required:
1254
+ - scheme
1255
+ - type
1256
+ properties:
1257
+ scheme:
1258
+ type: string
1259
+ not:
1260
+ enum:
1261
+ - bearer
1262
+ description:
1263
+ type: string
1264
+ type:
1265
+ type: string
1266
+ enum:
1267
+ - http
1268
+ patternProperties:
1269
+ '^x-': {}
1270
+ additionalProperties: false
1271
+
1272
+ BearerHTTPSecurityScheme:
1273
+ type: object
1274
+ required:
1275
+ - type
1276
+ - scheme
1277
+ properties:
1278
+ scheme:
1279
+ type: string
1280
+ enum:
1281
+ - bearer
1282
+ bearerFormat:
1283
+ type: string
1284
+ type:
1285
+ type: string
1286
+ enum:
1287
+ - http
1288
+ description:
1289
+ type: string
1290
+ patternProperties:
1291
+ '^x-': {}
1292
+ additionalProperties: false
1293
+
1294
+ OAuth2SecurityScheme:
1295
+ type: object
1296
+ required:
1297
+ - type
1298
+ - flows
1299
+ properties:
1300
+ type:
1301
+ type: string
1302
+ enum:
1303
+ - oauth2
1304
+ flows:
1305
+ $ref: '#/definitions/OAuthFlows'
1306
+ description:
1307
+ type: string
1308
+ patternProperties:
1309
+ '^x-': {}
1310
+ additionalProperties: false
1311
+
1312
+ OpenIdConnectSecurityScheme:
1313
+ type: object
1314
+ required:
1315
+ - type
1316
+ - openIdConnectUrl
1317
+ properties:
1318
+ type:
1319
+ type: string
1320
+ enum:
1321
+ - openIdConnect
1322
+ openIdConnectUrl:
1323
+ type: string
1324
+ format: uri-reference
1325
+ description:
1326
+ type: string
1327
+ patternProperties:
1328
+ '^x-': {}
1329
+ additionalProperties: false
1330
+
1331
+ OAuthFlows:
1332
+ type: object
1333
+ properties:
1334
+ implicit:
1335
+ $ref: '#/definitions/ImplicitOAuthFlow'
1336
+ password:
1337
+ $ref: '#/definitions/PasswordOAuthFlow'
1338
+ clientCredentials:
1339
+ $ref: '#/definitions/ClientCredentialsFlow'
1340
+ authorizationCode:
1341
+ $ref: '#/definitions/AuthorizationCodeOAuthFlow'
1342
+ patternProperties:
1343
+ '^x-': {}
1344
+ additionalProperties: false
1345
+
1346
+ ImplicitOAuthFlow:
1347
+ type: object
1348
+ required:
1349
+ - authorizationUrl
1350
+ - scopes
1351
+ properties:
1352
+ authorizationUrl:
1353
+ type: string
1354
+ format: uri-reference
1355
+ refreshUrl:
1356
+ type: string
1357
+ format: uri-reference
1358
+ scopes:
1359
+ type: object
1360
+ additionalProperties:
1361
+ type: string
1362
+ patternProperties:
1363
+ '^x-': {}
1364
+ additionalProperties: false
1365
+
1366
+ PasswordOAuthFlow:
1367
+ type: object
1368
+ required:
1369
+ - tokenUrl
1370
+ properties:
1371
+ tokenUrl:
1372
+ type: string
1373
+ format: uri-reference
1374
+ refreshUrl:
1375
+ type: string
1376
+ format: uri-reference
1377
+ scopes:
1378
+ type: object
1379
+ additionalProperties:
1380
+ type: string
1381
+ patternProperties:
1382
+ '^x-': {}
1383
+ additionalProperties: false
1384
+
1385
+ ClientCredentialsFlow:
1386
+ type: object
1387
+ required:
1388
+ - tokenUrl
1389
+ properties:
1390
+ tokenUrl:
1391
+ type: string
1392
+ format: uri-reference
1393
+ refreshUrl:
1394
+ type: string
1395
+ format: uri-reference
1396
+ scopes:
1397
+ type: object
1398
+ additionalProperties:
1399
+ type: string
1400
+ patternProperties:
1401
+ '^x-': {}
1402
+ additionalProperties: false
1403
+
1404
+ AuthorizationCodeOAuthFlow:
1405
+ type: object
1406
+ required:
1407
+ - authorizationUrl
1408
+ - tokenUrl
1409
+ properties:
1410
+ authorizationUrl:
1411
+ type: string
1412
+ format: uri-reference
1413
+ tokenUrl:
1414
+ type: string
1415
+ format: uri-reference
1416
+ refreshUrl:
1417
+ type: string
1418
+ format: uri-reference
1419
+ scopes:
1420
+ type: object
1421
+ additionalProperties:
1422
+ type: string
1423
+ patternProperties:
1424
+ '^x-': {}
1425
+ additionalProperties: false
1426
+
1427
+ Link:
1428
+ oneOf:
1429
+ - $ref: '#/definitions/LinkWithOperationRef'
1430
+ - $ref: '#/definitions/LinkWithOperationId'
1431
+
1432
+ LinkWithOperationRef:
1433
+ type: object
1434
+ properties:
1435
+ operationRef:
1436
+ type: string
1437
+ format: uri-reference
1438
+ parameters:
1439
+ type: object
1440
+ additionalProperties: {}
1441
+ requestBody: {}
1442
+ description:
1443
+ type: string
1444
+ server:
1445
+ $ref: '#/definitions/Server'
1446
+ patternProperties:
1447
+ '^x-': {}
1448
+ additionalProperties: false
1449
+
1450
+ LinkWithOperationId:
1451
+ type: object
1452
+ properties:
1453
+ operationId:
1454
+ type: string
1455
+ parameters:
1456
+ type: object
1457
+ additionalProperties: {}
1458
+ requestBody: {}
1459
+ description:
1460
+ type: string
1461
+ server:
1462
+ $ref: '#/definitions/Server'
1463
+ patternProperties:
1464
+ '^x-': {}
1465
+ additionalProperties: false
1466
+
1467
+ Callback:
1468
+ type: object
1469
+ additionalProperties:
1470
+ $ref: '#/definitions/PathItem'
1471
+ patternProperties:
1472
+ '^x-': {}
1473
+
1474
+ Encoding:
1475
+ type: object
1476
+ properties:
1477
+ contentType:
1478
+ type: string
1479
+ headers:
1480
+ type: object
1481
+ additionalProperties:
1482
+ $ref: '#/definitions/Header'
1483
+ style:
1484
+ type: string
1485
+ enum:
1486
+ - form
1487
+ - spaceDelimited
1488
+ - pipeDelimited
1489
+ - deepObject
1490
+ explode:
1491
+ type: boolean
1492
+ allowReserved:
1493
+ type: boolean
1494
+ default: false
1495
+ additionalProperties: false