@e22m4u/js-openapi 0.0.5 → 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/README.md +226 -146
  2. package/dist/cjs/index.cjs +2025 -2092
  3. package/package.json +10 -8
  4. package/schema/openapi-3-1/dialect/base.js +21 -0
  5. package/schema/openapi-3-1/meta/base.js +76 -0
  6. package/schema/openapi-3-1/schema-base.js +32 -0
  7. package/schema/openapi-3-1/schema.js +1403 -0
  8. package/src/ajv.js +32 -0
  9. package/src/errors/index.d.ts +1 -1
  10. package/src/errors/index.js +1 -1
  11. package/src/errors/oa-document-object-validation-error.d.ts +6 -0
  12. package/src/errors/oa-document-object-validation-error.js +6 -0
  13. package/src/errors/oa-document-object-validation-error.spec.js +10 -0
  14. package/src/index.d.ts +1 -3
  15. package/src/index.js +1 -3
  16. package/src/json-pointer/resolve-json-pointer.js +1 -1
  17. package/src/json-pointer/unescape-json-pointer.d.ts +1 -2
  18. package/src/oa-document-builder.d.ts +302 -111
  19. package/src/oa-document-builder.js +208 -142
  20. package/src/oa-document-builder.spec.js +1411 -0
  21. package/src/oa-document-object/index.d.ts +1 -1
  22. package/src/oa-document-object/index.js +1 -1
  23. package/src/oa-document-object/validate-oa-document-object.d.ts +18 -0
  24. package/src/oa-document-object/validate-oa-document-object.js +53 -0
  25. package/src/oa-document-object/validate-oa-document-object.spec.js +122 -0
  26. package/src/{oa-document-scope.d.ts → oa-operation-group.d.ts} +7 -7
  27. package/src/{oa-document-scope.js → oa-operation-group.js} +101 -46
  28. package/src/oa-operation-group.spec.js +544 -0
  29. package/src/oa-reference-object/is-oa-reference-object.js +1 -1
  30. package/src/oa-reference-object/is-oa-reference-object.spec.js +1 -1
  31. package/src/oa-reference-object/oa-ref.js +7 -0
  32. package/src/oa-reference-object/resolve-oa-reference-object.js +1 -11
  33. package/src/oa-reference-object/resolve-oa-reference-object.spec.js +0 -10
  34. package/src/oa-specification.d.ts +55 -66
  35. package/src/oa-specification.js +11 -22
  36. package/src/data-type/index.d.ts +0 -1
  37. package/src/data-type/index.js +0 -1
  38. package/src/data-type/infer-openapi-data-type.d.ts +0 -30
  39. package/src/data-type/infer-openapi-data-type.js +0 -38
  40. package/src/data-validation/data-format-validator-map.d.ts +0 -13
  41. package/src/data-validation/data-format-validator-map.js +0 -36
  42. package/src/data-validation/data-format-validator-map.spec.js +0 -39
  43. package/src/data-validation/data-format-validators.d.ts +0 -84
  44. package/src/data-validation/data-format-validators.js +0 -217
  45. package/src/data-validation/index.d.ts +0 -3
  46. package/src/data-validation/index.js +0 -3
  47. package/src/data-validation/validate-data-with-openapi-schema.d.ts +0 -46
  48. package/src/data-validation/validate-data-with-openapi-schema.js +0 -1913
  49. package/src/data-validation/validate-data-with-openapi-schema.spec.js +0 -6953
  50. package/src/errors/oa-data-validation-error.d.ts +0 -6
  51. package/src/errors/oa-data-validation-error.js +0 -6
  52. package/src/errors/oa-data-validation-error.spec.js +0 -17
  53. package/src/oa-document-object/validate-shallow-oa-document.d.ts +0 -10
  54. package/src/oa-document-object/validate-shallow-oa-document.js +0 -209
  55. package/src/oa-document-object/validate-shallow-oa-document.spec.js +0 -362
  56. package/src/utils/count-unicode.d.ts +0 -11
  57. package/src/utils/count-unicode.js +0 -15
  58. package/src/utils/index.d.ts +0 -5
  59. package/src/utils/index.js +0 -5
  60. package/src/utils/join-path.d.ts +0 -6
  61. package/src/utils/join-path.js +0 -36
  62. package/src/utils/join-path.spec.js +0 -104
  63. package/src/utils/normalize-path.d.ts +0 -12
  64. package/src/utils/normalize-path.js +0 -22
  65. package/src/utils/normalize-path.spec.js +0 -56
  66. package/src/utils/to-pascal-case.d.ts +0 -6
  67. package/src/utils/to-pascal-case.js +0 -26
  68. package/src/utils/to-pascal-case.spec.js +0 -15
  69. package/src/utils/to-spaced-json.d.ts +0 -17
  70. package/src/utils/to-spaced-json.js +0 -27
@@ -0,0 +1,1403 @@
1
+ export default {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "description": "The description of OpenAPI v3.1.x Documents without Schema Object validation",
4
+ "type": "object",
5
+ "properties": {
6
+ "openapi": {
7
+ "type": "string",
8
+ "pattern": "^3\\.1\\.\\d+(-.+)?$"
9
+ },
10
+ "info": {
11
+ "$ref": "#/$defs/info"
12
+ },
13
+ "jsonSchemaDialect": {
14
+ "type": "string",
15
+ "format": "uri-reference",
16
+ "default": "https://spec.openapis.org/oas/3.1/dialect/base"
17
+ },
18
+ "servers": {
19
+ "type": "array",
20
+ "items": {
21
+ "$ref": "#/$defs/server"
22
+ },
23
+ "default": [
24
+ {
25
+ "url": "/"
26
+ }
27
+ ]
28
+ },
29
+ "paths": {
30
+ "$ref": "#/$defs/paths"
31
+ },
32
+ "webhooks": {
33
+ "type": "object",
34
+ "additionalProperties": {
35
+ "$ref": "#/$defs/path-item"
36
+ }
37
+ },
38
+ "components": {
39
+ "$ref": "#/$defs/components"
40
+ },
41
+ "security": {
42
+ "type": "array",
43
+ "items": {
44
+ "$ref": "#/$defs/security-requirement"
45
+ }
46
+ },
47
+ "tags": {
48
+ "type": "array",
49
+ "items": {
50
+ "$ref": "#/$defs/tag"
51
+ }
52
+ },
53
+ "externalDocs": {
54
+ "$ref": "#/$defs/external-documentation"
55
+ }
56
+ },
57
+ "required": [
58
+ "openapi",
59
+ "info"
60
+ ],
61
+ "anyOf": [
62
+ {
63
+ "required": [
64
+ "paths"
65
+ ]
66
+ },
67
+ {
68
+ "required": [
69
+ "components"
70
+ ]
71
+ },
72
+ {
73
+ "required": [
74
+ "webhooks"
75
+ ]
76
+ }
77
+ ],
78
+ "$ref": "#/$defs/specification-extensions",
79
+ "unevaluatedProperties": false,
80
+ "$defs": {
81
+ "info": {
82
+ "$comment": "https://spec.openapis.org/oas/v3.1#info-object",
83
+ "type": "object",
84
+ "properties": {
85
+ "title": {
86
+ "type": "string"
87
+ },
88
+ "summary": {
89
+ "type": "string"
90
+ },
91
+ "description": {
92
+ "type": "string"
93
+ },
94
+ "termsOfService": {
95
+ "type": "string",
96
+ "format": "uri-reference"
97
+ },
98
+ "contact": {
99
+ "$ref": "#/$defs/contact"
100
+ },
101
+ "license": {
102
+ "$ref": "#/$defs/license"
103
+ },
104
+ "version": {
105
+ "type": "string"
106
+ }
107
+ },
108
+ "required": [
109
+ "title",
110
+ "version"
111
+ ],
112
+ "$ref": "#/$defs/specification-extensions",
113
+ "unevaluatedProperties": false
114
+ },
115
+ "contact": {
116
+ "$comment": "https://spec.openapis.org/oas/v3.1#contact-object",
117
+ "type": "object",
118
+ "properties": {
119
+ "name": {
120
+ "type": "string"
121
+ },
122
+ "url": {
123
+ "type": "string",
124
+ "format": "uri-reference"
125
+ },
126
+ "email": {
127
+ "type": "string",
128
+ "format": "email"
129
+ }
130
+ },
131
+ "$ref": "#/$defs/specification-extensions",
132
+ "unevaluatedProperties": false
133
+ },
134
+ "license": {
135
+ "$comment": "https://spec.openapis.org/oas/v3.1#license-object",
136
+ "type": "object",
137
+ "properties": {
138
+ "name": {
139
+ "type": "string"
140
+ },
141
+ "identifier": {
142
+ "type": "string"
143
+ },
144
+ "url": {
145
+ "type": "string",
146
+ "format": "uri-reference"
147
+ }
148
+ },
149
+ "required": [
150
+ "name"
151
+ ],
152
+ "dependentSchemas": {
153
+ "identifier": {
154
+ "not": {
155
+ "required": [
156
+ "url"
157
+ ]
158
+ }
159
+ }
160
+ },
161
+ "$ref": "#/$defs/specification-extensions",
162
+ "unevaluatedProperties": false
163
+ },
164
+ "server": {
165
+ "$comment": "https://spec.openapis.org/oas/v3.1#server-object",
166
+ "type": "object",
167
+ "properties": {
168
+ "url": {
169
+ "type": "string"
170
+ },
171
+ "description": {
172
+ "type": "string"
173
+ },
174
+ "variables": {
175
+ "type": "object",
176
+ "additionalProperties": {
177
+ "$ref": "#/$defs/server-variable"
178
+ }
179
+ }
180
+ },
181
+ "required": [
182
+ "url"
183
+ ],
184
+ "$ref": "#/$defs/specification-extensions",
185
+ "unevaluatedProperties": false
186
+ },
187
+ "server-variable": {
188
+ "$comment": "https://spec.openapis.org/oas/v3.1#server-variable-object",
189
+ "type": "object",
190
+ "properties": {
191
+ "enum": {
192
+ "type": "array",
193
+ "items": {
194
+ "type": "string"
195
+ },
196
+ "minItems": 1
197
+ },
198
+ "default": {
199
+ "type": "string"
200
+ },
201
+ "description": {
202
+ "type": "string"
203
+ }
204
+ },
205
+ "required": [
206
+ "default"
207
+ ],
208
+ "$ref": "#/$defs/specification-extensions",
209
+ "unevaluatedProperties": false
210
+ },
211
+ "components": {
212
+ "$comment": "https://spec.openapis.org/oas/v3.1#components-object",
213
+ "type": "object",
214
+ "properties": {
215
+ "schemas": {
216
+ "type": "object",
217
+ "additionalProperties": {
218
+ "$ref": "#/$defs/schema"
219
+ }
220
+ },
221
+ "responses": {
222
+ "type": "object",
223
+ "additionalProperties": {
224
+ "$ref": "#/$defs/response-or-reference"
225
+ }
226
+ },
227
+ "parameters": {
228
+ "type": "object",
229
+ "additionalProperties": {
230
+ "$ref": "#/$defs/parameter-or-reference"
231
+ }
232
+ },
233
+ "examples": {
234
+ "type": "object",
235
+ "additionalProperties": {
236
+ "$ref": "#/$defs/example-or-reference"
237
+ }
238
+ },
239
+ "requestBodies": {
240
+ "type": "object",
241
+ "additionalProperties": {
242
+ "$ref": "#/$defs/request-body-or-reference"
243
+ }
244
+ },
245
+ "headers": {
246
+ "type": "object",
247
+ "additionalProperties": {
248
+ "$ref": "#/$defs/header-or-reference"
249
+ }
250
+ },
251
+ "securitySchemes": {
252
+ "type": "object",
253
+ "additionalProperties": {
254
+ "$ref": "#/$defs/security-scheme-or-reference"
255
+ }
256
+ },
257
+ "links": {
258
+ "type": "object",
259
+ "additionalProperties": {
260
+ "$ref": "#/$defs/link-or-reference"
261
+ }
262
+ },
263
+ "callbacks": {
264
+ "type": "object",
265
+ "additionalProperties": {
266
+ "$ref": "#/$defs/callbacks-or-reference"
267
+ }
268
+ },
269
+ "pathItems": {
270
+ "type": "object",
271
+ "additionalProperties": {
272
+ "$ref": "#/$defs/path-item"
273
+ }
274
+ }
275
+ },
276
+ "patternProperties": {
277
+ "^(schemas|responses|parameters|examples|requestBodies|headers|securitySchemes|links|callbacks|pathItems)$": {
278
+ "$comment": "Enumerating all of the property names in the regex above is necessary for unevaluatedProperties to work as expected",
279
+ "propertyNames": {
280
+ "pattern": "^[a-zA-Z0-9._-]+$"
281
+ }
282
+ }
283
+ },
284
+ "$ref": "#/$defs/specification-extensions",
285
+ "unevaluatedProperties": false
286
+ },
287
+ "paths": {
288
+ "$comment": "https://spec.openapis.org/oas/v3.1#paths-object",
289
+ "type": "object",
290
+ "patternProperties": {
291
+ "^/": {
292
+ "$ref": "#/$defs/path-item"
293
+ }
294
+ },
295
+ "$ref": "#/$defs/specification-extensions",
296
+ "unevaluatedProperties": false
297
+ },
298
+ "path-item": {
299
+ "$comment": "https://spec.openapis.org/oas/v3.1#path-item-object",
300
+ "type": "object",
301
+ "properties": {
302
+ "$ref": {
303
+ "type": "string",
304
+ "format": "uri-reference"
305
+ },
306
+ "summary": {
307
+ "type": "string"
308
+ },
309
+ "description": {
310
+ "type": "string"
311
+ },
312
+ "servers": {
313
+ "type": "array",
314
+ "items": {
315
+ "$ref": "#/$defs/server"
316
+ }
317
+ },
318
+ "parameters": {
319
+ "type": "array",
320
+ "items": {
321
+ "$ref": "#/$defs/parameter-or-reference"
322
+ }
323
+ },
324
+ "get": {
325
+ "$ref": "#/$defs/operation"
326
+ },
327
+ "put": {
328
+ "$ref": "#/$defs/operation"
329
+ },
330
+ "post": {
331
+ "$ref": "#/$defs/operation"
332
+ },
333
+ "delete": {
334
+ "$ref": "#/$defs/operation"
335
+ },
336
+ "options": {
337
+ "$ref": "#/$defs/operation"
338
+ },
339
+ "head": {
340
+ "$ref": "#/$defs/operation"
341
+ },
342
+ "patch": {
343
+ "$ref": "#/$defs/operation"
344
+ },
345
+ "trace": {
346
+ "$ref": "#/$defs/operation"
347
+ }
348
+ },
349
+ "$ref": "#/$defs/specification-extensions",
350
+ "unevaluatedProperties": false
351
+ },
352
+ "operation": {
353
+ "$comment": "https://spec.openapis.org/oas/v3.1#operation-object",
354
+ "type": "object",
355
+ "properties": {
356
+ "tags": {
357
+ "type": "array",
358
+ "items": {
359
+ "type": "string"
360
+ }
361
+ },
362
+ "summary": {
363
+ "type": "string"
364
+ },
365
+ "description": {
366
+ "type": "string"
367
+ },
368
+ "externalDocs": {
369
+ "$ref": "#/$defs/external-documentation"
370
+ },
371
+ "operationId": {
372
+ "type": "string"
373
+ },
374
+ "parameters": {
375
+ "type": "array",
376
+ "items": {
377
+ "$ref": "#/$defs/parameter-or-reference"
378
+ }
379
+ },
380
+ "requestBody": {
381
+ "$ref": "#/$defs/request-body-or-reference"
382
+ },
383
+ "responses": {
384
+ "$ref": "#/$defs/responses"
385
+ },
386
+ "callbacks": {
387
+ "type": "object",
388
+ "additionalProperties": {
389
+ "$ref": "#/$defs/callbacks-or-reference"
390
+ }
391
+ },
392
+ "deprecated": {
393
+ "default": false,
394
+ "type": "boolean"
395
+ },
396
+ "security": {
397
+ "type": "array",
398
+ "items": {
399
+ "$ref": "#/$defs/security-requirement"
400
+ }
401
+ },
402
+ "servers": {
403
+ "type": "array",
404
+ "items": {
405
+ "$ref": "#/$defs/server"
406
+ }
407
+ }
408
+ },
409
+ "$ref": "#/$defs/specification-extensions",
410
+ "unevaluatedProperties": false
411
+ },
412
+ "external-documentation": {
413
+ "$comment": "https://spec.openapis.org/oas/v3.1#external-documentation-object",
414
+ "type": "object",
415
+ "properties": {
416
+ "description": {
417
+ "type": "string"
418
+ },
419
+ "url": {
420
+ "type": "string",
421
+ "format": "uri-reference"
422
+ }
423
+ },
424
+ "required": [
425
+ "url"
426
+ ],
427
+ "$ref": "#/$defs/specification-extensions",
428
+ "unevaluatedProperties": false
429
+ },
430
+ "parameter": {
431
+ "$comment": "https://spec.openapis.org/oas/v3.1#parameter-object",
432
+ "type": "object",
433
+ "properties": {
434
+ "name": {
435
+ "type": "string"
436
+ },
437
+ "in": {
438
+ "enum": [
439
+ "query",
440
+ "header",
441
+ "path",
442
+ "cookie"
443
+ ]
444
+ },
445
+ "description": {
446
+ "type": "string"
447
+ },
448
+ "required": {
449
+ "default": false,
450
+ "type": "boolean"
451
+ },
452
+ "deprecated": {
453
+ "default": false,
454
+ "type": "boolean"
455
+ },
456
+ "schema": {
457
+ "$ref": "#/$defs/schema"
458
+ },
459
+ "content": {
460
+ "$ref": "#/$defs/content",
461
+ "minProperties": 1,
462
+ "maxProperties": 1
463
+ }
464
+ },
465
+ "required": [
466
+ "name",
467
+ "in"
468
+ ],
469
+ "oneOf": [
470
+ {
471
+ "required": [
472
+ "schema"
473
+ ]
474
+ },
475
+ {
476
+ "required": [
477
+ "content"
478
+ ]
479
+ }
480
+ ],
481
+ "if": {
482
+ "properties": {
483
+ "in": {
484
+ "const": "query"
485
+ }
486
+ },
487
+ "required": [
488
+ "in"
489
+ ]
490
+ },
491
+ "then": {
492
+ "properties": {
493
+ "allowEmptyValue": {
494
+ "default": false,
495
+ "type": "boolean"
496
+ }
497
+ }
498
+ },
499
+ "dependentSchemas": {
500
+ "schema": {
501
+ "properties": {
502
+ "style": {
503
+ "type": "string"
504
+ },
505
+ "explode": {
506
+ "type": "boolean"
507
+ }
508
+ },
509
+ "allOf": [
510
+ {
511
+ "$ref": "#/$defs/examples"
512
+ },
513
+ {
514
+ "$ref": "#/$defs/parameter/dependentSchemas/schema/$defs/styles-for-path"
515
+ },
516
+ {
517
+ "$ref": "#/$defs/parameter/dependentSchemas/schema/$defs/styles-for-header"
518
+ },
519
+ {
520
+ "$ref": "#/$defs/parameter/dependentSchemas/schema/$defs/styles-for-query"
521
+ },
522
+ {
523
+ "$ref": "#/$defs/parameter/dependentSchemas/schema/$defs/styles-for-cookie"
524
+ },
525
+ {
526
+ "$ref": "#/$defs/styles-for-form"
527
+ }
528
+ ],
529
+ "$defs": {
530
+ "styles-for-path": {
531
+ "if": {
532
+ "properties": {
533
+ "in": {
534
+ "const": "path"
535
+ }
536
+ },
537
+ "required": [
538
+ "in"
539
+ ]
540
+ },
541
+ "then": {
542
+ "properties": {
543
+ "style": {
544
+ "default": "simple",
545
+ "enum": [
546
+ "matrix",
547
+ "label",
548
+ "simple"
549
+ ]
550
+ },
551
+ "required": {
552
+ "const": true
553
+ }
554
+ },
555
+ "required": [
556
+ "required"
557
+ ]
558
+ }
559
+ },
560
+ "styles-for-header": {
561
+ "if": {
562
+ "properties": {
563
+ "in": {
564
+ "const": "header"
565
+ }
566
+ },
567
+ "required": [
568
+ "in"
569
+ ]
570
+ },
571
+ "then": {
572
+ "properties": {
573
+ "style": {
574
+ "default": "simple",
575
+ "const": "simple"
576
+ }
577
+ }
578
+ }
579
+ },
580
+ "styles-for-query": {
581
+ "if": {
582
+ "properties": {
583
+ "in": {
584
+ "const": "query"
585
+ }
586
+ },
587
+ "required": [
588
+ "in"
589
+ ]
590
+ },
591
+ "then": {
592
+ "properties": {
593
+ "style": {
594
+ "default": "form",
595
+ "enum": [
596
+ "form",
597
+ "spaceDelimited",
598
+ "pipeDelimited",
599
+ "deepObject"
600
+ ]
601
+ },
602
+ "allowReserved": {
603
+ "default": false,
604
+ "type": "boolean"
605
+ }
606
+ }
607
+ }
608
+ },
609
+ "styles-for-cookie": {
610
+ "if": {
611
+ "properties": {
612
+ "in": {
613
+ "const": "cookie"
614
+ }
615
+ },
616
+ "required": [
617
+ "in"
618
+ ]
619
+ },
620
+ "then": {
621
+ "properties": {
622
+ "style": {
623
+ "default": "form",
624
+ "const": "form"
625
+ }
626
+ }
627
+ }
628
+ }
629
+ }
630
+ }
631
+ },
632
+ "$ref": "#/$defs/specification-extensions",
633
+ "unevaluatedProperties": false
634
+ },
635
+ "parameter-or-reference": {
636
+ "if": {
637
+ "type": "object",
638
+ "required": [
639
+ "$ref"
640
+ ]
641
+ },
642
+ "then": {
643
+ "$ref": "#/$defs/reference"
644
+ },
645
+ "else": {
646
+ "$ref": "#/$defs/parameter"
647
+ }
648
+ },
649
+ "request-body": {
650
+ "$comment": "https://spec.openapis.org/oas/v3.1#request-body-object",
651
+ "type": "object",
652
+ "properties": {
653
+ "description": {
654
+ "type": "string"
655
+ },
656
+ "content": {
657
+ "$ref": "#/$defs/content"
658
+ },
659
+ "required": {
660
+ "default": false,
661
+ "type": "boolean"
662
+ }
663
+ },
664
+ "required": [
665
+ "content"
666
+ ],
667
+ "$ref": "#/$defs/specification-extensions",
668
+ "unevaluatedProperties": false
669
+ },
670
+ "request-body-or-reference": {
671
+ "if": {
672
+ "type": "object",
673
+ "required": [
674
+ "$ref"
675
+ ]
676
+ },
677
+ "then": {
678
+ "$ref": "#/$defs/reference"
679
+ },
680
+ "else": {
681
+ "$ref": "#/$defs/request-body"
682
+ }
683
+ },
684
+ "content": {
685
+ "$comment": "https://spec.openapis.org/oas/v3.1#fixed-fields-10",
686
+ "type": "object",
687
+ "additionalProperties": {
688
+ "$ref": "#/$defs/media-type"
689
+ },
690
+ "propertyNames": {
691
+ "format": "media-range"
692
+ }
693
+ },
694
+ "media-type": {
695
+ "$comment": "https://spec.openapis.org/oas/v3.1#media-type-object",
696
+ "type": "object",
697
+ "properties": {
698
+ "schema": {
699
+ "$ref": "#/$defs/schema"
700
+ },
701
+ "encoding": {
702
+ "type": "object",
703
+ "additionalProperties": {
704
+ "$ref": "#/$defs/encoding"
705
+ }
706
+ }
707
+ },
708
+ "allOf": [
709
+ {
710
+ "$ref": "#/$defs/specification-extensions"
711
+ },
712
+ {
713
+ "$ref": "#/$defs/examples"
714
+ }
715
+ ],
716
+ "unevaluatedProperties": false
717
+ },
718
+ "encoding": {
719
+ "$comment": "https://spec.openapis.org/oas/v3.1#encoding-object",
720
+ "type": "object",
721
+ "properties": {
722
+ "contentType": {
723
+ "type": "string",
724
+ "format": "media-range"
725
+ },
726
+ "headers": {
727
+ "type": "object",
728
+ "additionalProperties": {
729
+ "$ref": "#/$defs/header-or-reference"
730
+ }
731
+ },
732
+ "style": {
733
+ "default": "form",
734
+ "enum": [
735
+ "form",
736
+ "spaceDelimited",
737
+ "pipeDelimited",
738
+ "deepObject"
739
+ ]
740
+ },
741
+ "explode": {
742
+ "type": "boolean"
743
+ },
744
+ "allowReserved": {
745
+ "default": false,
746
+ "type": "boolean"
747
+ }
748
+ },
749
+ "allOf": [
750
+ {
751
+ "$ref": "#/$defs/specification-extensions"
752
+ },
753
+ {
754
+ "$ref": "#/$defs/styles-for-form"
755
+ }
756
+ ],
757
+ "unevaluatedProperties": false
758
+ },
759
+ "responses": {
760
+ "$comment": "https://spec.openapis.org/oas/v3.1#responses-object",
761
+ "type": "object",
762
+ "properties": {
763
+ "default": {
764
+ "$ref": "#/$defs/response-or-reference"
765
+ }
766
+ },
767
+ "patternProperties": {
768
+ "^[1-5](?:[0-9]{2}|XX)$": {
769
+ "$ref": "#/$defs/response-or-reference"
770
+ }
771
+ },
772
+ "minProperties": 1,
773
+ "$ref": "#/$defs/specification-extensions",
774
+ "unevaluatedProperties": false,
775
+ "if": {
776
+ "$comment": "either default, or at least one response code property must exist",
777
+ "patternProperties": {
778
+ "^[1-5](?:[0-9]{2}|XX)$": false
779
+ }
780
+ },
781
+ "then": {
782
+ "required": [
783
+ "default"
784
+ ]
785
+ }
786
+ },
787
+ "response": {
788
+ "$comment": "https://spec.openapis.org/oas/v3.1#response-object",
789
+ "type": "object",
790
+ "properties": {
791
+ "description": {
792
+ "type": "string"
793
+ },
794
+ "headers": {
795
+ "type": "object",
796
+ "additionalProperties": {
797
+ "$ref": "#/$defs/header-or-reference"
798
+ }
799
+ },
800
+ "content": {
801
+ "$ref": "#/$defs/content"
802
+ },
803
+ "links": {
804
+ "type": "object",
805
+ "additionalProperties": {
806
+ "$ref": "#/$defs/link-or-reference"
807
+ }
808
+ }
809
+ },
810
+ "required": [
811
+ "description"
812
+ ],
813
+ "$ref": "#/$defs/specification-extensions",
814
+ "unevaluatedProperties": false
815
+ },
816
+ "response-or-reference": {
817
+ "if": {
818
+ "type": "object",
819
+ "required": [
820
+ "$ref"
821
+ ]
822
+ },
823
+ "then": {
824
+ "$ref": "#/$defs/reference"
825
+ },
826
+ "else": {
827
+ "$ref": "#/$defs/response"
828
+ }
829
+ },
830
+ "callbacks": {
831
+ "$comment": "https://spec.openapis.org/oas/v3.1#callback-object",
832
+ "type": "object",
833
+ "$ref": "#/$defs/specification-extensions",
834
+ "additionalProperties": {
835
+ "$ref": "#/$defs/path-item"
836
+ }
837
+ },
838
+ "callbacks-or-reference": {
839
+ "if": {
840
+ "type": "object",
841
+ "required": [
842
+ "$ref"
843
+ ]
844
+ },
845
+ "then": {
846
+ "$ref": "#/$defs/reference"
847
+ },
848
+ "else": {
849
+ "$ref": "#/$defs/callbacks"
850
+ }
851
+ },
852
+ "example": {
853
+ "$comment": "https://spec.openapis.org/oas/v3.1#example-object",
854
+ "type": "object",
855
+ "properties": {
856
+ "summary": {
857
+ "type": "string"
858
+ },
859
+ "description": {
860
+ "type": "string"
861
+ },
862
+ "value": true,
863
+ "externalValue": {
864
+ "type": "string",
865
+ "format": "uri-reference"
866
+ }
867
+ },
868
+ "not": {
869
+ "required": [
870
+ "value",
871
+ "externalValue"
872
+ ]
873
+ },
874
+ "$ref": "#/$defs/specification-extensions",
875
+ "unevaluatedProperties": false
876
+ },
877
+ "example-or-reference": {
878
+ "if": {
879
+ "type": "object",
880
+ "required": [
881
+ "$ref"
882
+ ]
883
+ },
884
+ "then": {
885
+ "$ref": "#/$defs/reference"
886
+ },
887
+ "else": {
888
+ "$ref": "#/$defs/example"
889
+ }
890
+ },
891
+ "link": {
892
+ "$comment": "https://spec.openapis.org/oas/v3.1#link-object",
893
+ "type": "object",
894
+ "properties": {
895
+ "operationRef": {
896
+ "type": "string",
897
+ "format": "uri-reference"
898
+ },
899
+ "operationId": {
900
+ "type": "string"
901
+ },
902
+ "parameters": {
903
+ "$ref": "#/$defs/map-of-strings"
904
+ },
905
+ "requestBody": true,
906
+ "description": {
907
+ "type": "string"
908
+ },
909
+ "server": {
910
+ "$ref": "#/$defs/server"
911
+ }
912
+ },
913
+ "oneOf": [
914
+ {
915
+ "required": [
916
+ "operationRef"
917
+ ]
918
+ },
919
+ {
920
+ "required": [
921
+ "operationId"
922
+ ]
923
+ }
924
+ ],
925
+ "$ref": "#/$defs/specification-extensions",
926
+ "unevaluatedProperties": false
927
+ },
928
+ "link-or-reference": {
929
+ "if": {
930
+ "type": "object",
931
+ "required": [
932
+ "$ref"
933
+ ]
934
+ },
935
+ "then": {
936
+ "$ref": "#/$defs/reference"
937
+ },
938
+ "else": {
939
+ "$ref": "#/$defs/link"
940
+ }
941
+ },
942
+ "header": {
943
+ "$comment": "https://spec.openapis.org/oas/v3.1#header-object",
944
+ "type": "object",
945
+ "properties": {
946
+ "description": {
947
+ "type": "string"
948
+ },
949
+ "required": {
950
+ "default": false,
951
+ "type": "boolean"
952
+ },
953
+ "deprecated": {
954
+ "default": false,
955
+ "type": "boolean"
956
+ },
957
+ "schema": {
958
+ "$ref": "#/$defs/schema"
959
+ },
960
+ "content": {
961
+ "$ref": "#/$defs/content",
962
+ "minProperties": 1,
963
+ "maxProperties": 1
964
+ }
965
+ },
966
+ "oneOf": [
967
+ {
968
+ "required": [
969
+ "schema"
970
+ ]
971
+ },
972
+ {
973
+ "required": [
974
+ "content"
975
+ ]
976
+ }
977
+ ],
978
+ "dependentSchemas": {
979
+ "schema": {
980
+ "properties": {
981
+ "style": {
982
+ "default": "simple",
983
+ "const": "simple"
984
+ },
985
+ "explode": {
986
+ "default": false,
987
+ "type": "boolean"
988
+ }
989
+ },
990
+ "$ref": "#/$defs/examples"
991
+ }
992
+ },
993
+ "$ref": "#/$defs/specification-extensions",
994
+ "unevaluatedProperties": false
995
+ },
996
+ "header-or-reference": {
997
+ "if": {
998
+ "type": "object",
999
+ "required": [
1000
+ "$ref"
1001
+ ]
1002
+ },
1003
+ "then": {
1004
+ "$ref": "#/$defs/reference"
1005
+ },
1006
+ "else": {
1007
+ "$ref": "#/$defs/header"
1008
+ }
1009
+ },
1010
+ "tag": {
1011
+ "$comment": "https://spec.openapis.org/oas/v3.1#tag-object",
1012
+ "type": "object",
1013
+ "properties": {
1014
+ "name": {
1015
+ "type": "string"
1016
+ },
1017
+ "description": {
1018
+ "type": "string"
1019
+ },
1020
+ "externalDocs": {
1021
+ "$ref": "#/$defs/external-documentation"
1022
+ }
1023
+ },
1024
+ "required": [
1025
+ "name"
1026
+ ],
1027
+ "$ref": "#/$defs/specification-extensions",
1028
+ "unevaluatedProperties": false
1029
+ },
1030
+ "reference": {
1031
+ "$comment": "https://spec.openapis.org/oas/v3.1#reference-object",
1032
+ "type": "object",
1033
+ "properties": {
1034
+ "$ref": {
1035
+ "type": "string",
1036
+ "format": "uri-reference"
1037
+ },
1038
+ "summary": {
1039
+ "type": "string"
1040
+ },
1041
+ "description": {
1042
+ "type": "string"
1043
+ }
1044
+ }
1045
+ },
1046
+ "schema": {
1047
+ "$comment": "https://spec.openapis.org/oas/v3.1#schema-object",
1048
+ "$ref":"https://spec.openapis.org/oas/3.1/dialect/base"
1049
+ },
1050
+ "security-scheme": {
1051
+ "$comment": "https://spec.openapis.org/oas/v3.1#security-scheme-object",
1052
+ "type": "object",
1053
+ "properties": {
1054
+ "type": {
1055
+ "enum": [
1056
+ "apiKey",
1057
+ "http",
1058
+ "mutualTLS",
1059
+ "oauth2",
1060
+ "openIdConnect"
1061
+ ]
1062
+ },
1063
+ "description": {
1064
+ "type": "string"
1065
+ }
1066
+ },
1067
+ "required": [
1068
+ "type"
1069
+ ],
1070
+ "allOf": [
1071
+ {
1072
+ "$ref": "#/$defs/specification-extensions"
1073
+ },
1074
+ {
1075
+ "$ref": "#/$defs/security-scheme/$defs/type-apikey"
1076
+ },
1077
+ {
1078
+ "$ref": "#/$defs/security-scheme/$defs/type-http"
1079
+ },
1080
+ {
1081
+ "$ref": "#/$defs/security-scheme/$defs/type-http-bearer"
1082
+ },
1083
+ {
1084
+ "$ref": "#/$defs/security-scheme/$defs/type-oauth2"
1085
+ },
1086
+ {
1087
+ "$ref": "#/$defs/security-scheme/$defs/type-oidc"
1088
+ }
1089
+ ],
1090
+ "unevaluatedProperties": false,
1091
+ "$defs": {
1092
+ "type-apikey": {
1093
+ "if": {
1094
+ "properties": {
1095
+ "type": {
1096
+ "const": "apiKey"
1097
+ }
1098
+ },
1099
+ "required": [
1100
+ "type"
1101
+ ]
1102
+ },
1103
+ "then": {
1104
+ "properties": {
1105
+ "name": {
1106
+ "type": "string"
1107
+ },
1108
+ "in": {
1109
+ "enum": [
1110
+ "query",
1111
+ "header",
1112
+ "cookie"
1113
+ ]
1114
+ }
1115
+ },
1116
+ "required": [
1117
+ "name",
1118
+ "in"
1119
+ ]
1120
+ }
1121
+ },
1122
+ "type-http": {
1123
+ "if": {
1124
+ "properties": {
1125
+ "type": {
1126
+ "const": "http"
1127
+ }
1128
+ },
1129
+ "required": [
1130
+ "type"
1131
+ ]
1132
+ },
1133
+ "then": {
1134
+ "properties": {
1135
+ "scheme": {
1136
+ "type": "string"
1137
+ }
1138
+ },
1139
+ "required": [
1140
+ "scheme"
1141
+ ]
1142
+ }
1143
+ },
1144
+ "type-http-bearer": {
1145
+ "if": {
1146
+ "properties": {
1147
+ "type": {
1148
+ "const": "http"
1149
+ },
1150
+ "scheme": {
1151
+ "type": "string",
1152
+ "pattern": "^[Bb][Ee][Aa][Rr][Ee][Rr]$"
1153
+ }
1154
+ },
1155
+ "required": [
1156
+ "type",
1157
+ "scheme"
1158
+ ]
1159
+ },
1160
+ "then": {
1161
+ "properties": {
1162
+ "bearerFormat": {
1163
+ "type": "string"
1164
+ }
1165
+ }
1166
+ }
1167
+ },
1168
+ "type-oauth2": {
1169
+ "if": {
1170
+ "properties": {
1171
+ "type": {
1172
+ "const": "oauth2"
1173
+ }
1174
+ },
1175
+ "required": [
1176
+ "type"
1177
+ ]
1178
+ },
1179
+ "then": {
1180
+ "properties": {
1181
+ "flows": {
1182
+ "$ref": "#/$defs/oauth-flows"
1183
+ }
1184
+ },
1185
+ "required": [
1186
+ "flows"
1187
+ ]
1188
+ }
1189
+ },
1190
+ "type-oidc": {
1191
+ "if": {
1192
+ "properties": {
1193
+ "type": {
1194
+ "const": "openIdConnect"
1195
+ }
1196
+ },
1197
+ "required": [
1198
+ "type"
1199
+ ]
1200
+ },
1201
+ "then": {
1202
+ "properties": {
1203
+ "openIdConnectUrl": {
1204
+ "type": "string",
1205
+ "format": "uri-reference"
1206
+ }
1207
+ },
1208
+ "required": [
1209
+ "openIdConnectUrl"
1210
+ ]
1211
+ }
1212
+ }
1213
+ }
1214
+ },
1215
+ "security-scheme-or-reference": {
1216
+ "if": {
1217
+ "type": "object",
1218
+ "required": [
1219
+ "$ref"
1220
+ ]
1221
+ },
1222
+ "then": {
1223
+ "$ref": "#/$defs/reference"
1224
+ },
1225
+ "else": {
1226
+ "$ref": "#/$defs/security-scheme"
1227
+ }
1228
+ },
1229
+ "oauth-flows": {
1230
+ "type": "object",
1231
+ "properties": {
1232
+ "implicit": {
1233
+ "$ref": "#/$defs/oauth-flows/$defs/implicit"
1234
+ },
1235
+ "password": {
1236
+ "$ref": "#/$defs/oauth-flows/$defs/password"
1237
+ },
1238
+ "clientCredentials": {
1239
+ "$ref": "#/$defs/oauth-flows/$defs/client-credentials"
1240
+ },
1241
+ "authorizationCode": {
1242
+ "$ref": "#/$defs/oauth-flows/$defs/authorization-code"
1243
+ }
1244
+ },
1245
+ "$ref": "#/$defs/specification-extensions",
1246
+ "unevaluatedProperties": false,
1247
+ "$defs": {
1248
+ "implicit": {
1249
+ "type": "object",
1250
+ "properties": {
1251
+ "authorizationUrl": {
1252
+ "type": "string",
1253
+ "format": "uri-reference"
1254
+ },
1255
+ "refreshUrl": {
1256
+ "type": "string",
1257
+ "format": "uri-reference"
1258
+ },
1259
+ "scopes": {
1260
+ "$ref": "#/$defs/map-of-strings"
1261
+ }
1262
+ },
1263
+ "required": [
1264
+ "authorizationUrl",
1265
+ "scopes"
1266
+ ],
1267
+ "$ref": "#/$defs/specification-extensions",
1268
+ "unevaluatedProperties": false
1269
+ },
1270
+ "password": {
1271
+ "type": "object",
1272
+ "properties": {
1273
+ "tokenUrl": {
1274
+ "type": "string",
1275
+ "format": "uri-reference"
1276
+ },
1277
+ "refreshUrl": {
1278
+ "type": "string",
1279
+ "format": "uri-reference"
1280
+ },
1281
+ "scopes": {
1282
+ "$ref": "#/$defs/map-of-strings"
1283
+ }
1284
+ },
1285
+ "required": [
1286
+ "tokenUrl",
1287
+ "scopes"
1288
+ ],
1289
+ "$ref": "#/$defs/specification-extensions",
1290
+ "unevaluatedProperties": false
1291
+ },
1292
+ "client-credentials": {
1293
+ "type": "object",
1294
+ "properties": {
1295
+ "tokenUrl": {
1296
+ "type": "string",
1297
+ "format": "uri-reference"
1298
+ },
1299
+ "refreshUrl": {
1300
+ "type": "string",
1301
+ "format": "uri-reference"
1302
+ },
1303
+ "scopes": {
1304
+ "$ref": "#/$defs/map-of-strings"
1305
+ }
1306
+ },
1307
+ "required": [
1308
+ "tokenUrl",
1309
+ "scopes"
1310
+ ],
1311
+ "$ref": "#/$defs/specification-extensions",
1312
+ "unevaluatedProperties": false
1313
+ },
1314
+ "authorization-code": {
1315
+ "type": "object",
1316
+ "properties": {
1317
+ "authorizationUrl": {
1318
+ "type": "string",
1319
+ "format": "uri-reference"
1320
+ },
1321
+ "tokenUrl": {
1322
+ "type": "string",
1323
+ "format": "uri-reference"
1324
+ },
1325
+ "refreshUrl": {
1326
+ "type": "string",
1327
+ "format": "uri-reference"
1328
+ },
1329
+ "scopes": {
1330
+ "$ref": "#/$defs/map-of-strings"
1331
+ }
1332
+ },
1333
+ "required": [
1334
+ "authorizationUrl",
1335
+ "tokenUrl",
1336
+ "scopes"
1337
+ ],
1338
+ "$ref": "#/$defs/specification-extensions",
1339
+ "unevaluatedProperties": false
1340
+ }
1341
+ }
1342
+ },
1343
+ "security-requirement": {
1344
+ "$comment": "https://spec.openapis.org/oas/v3.1#security-requirement-object",
1345
+ "type": "object",
1346
+ "additionalProperties": {
1347
+ "type": "array",
1348
+ "items": {
1349
+ "type": "string"
1350
+ }
1351
+ }
1352
+ },
1353
+ "specification-extensions": {
1354
+ "$comment": "https://spec.openapis.org/oas/v3.1#specification-extensions",
1355
+ "patternProperties": {
1356
+ "^x-": true
1357
+ }
1358
+ },
1359
+ "examples": {
1360
+ "properties": {
1361
+ "example": true,
1362
+ "examples": {
1363
+ "type": "object",
1364
+ "additionalProperties": {
1365
+ "$ref": "#/$defs/example-or-reference"
1366
+ }
1367
+ }
1368
+ }
1369
+ },
1370
+ "map-of-strings": {
1371
+ "type": "object",
1372
+ "additionalProperties": {
1373
+ "type": "string"
1374
+ }
1375
+ },
1376
+ "styles-for-form": {
1377
+ "if": {
1378
+ "properties": {
1379
+ "style": {
1380
+ "const": "form"
1381
+ }
1382
+ },
1383
+ "required": [
1384
+ "style"
1385
+ ]
1386
+ },
1387
+ "then": {
1388
+ "properties": {
1389
+ "explode": {
1390
+ "default": true
1391
+ }
1392
+ }
1393
+ },
1394
+ "else": {
1395
+ "properties": {
1396
+ "explode": {
1397
+ "default": false
1398
+ }
1399
+ }
1400
+ }
1401
+ }
1402
+ }
1403
+ };