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