odin-jsonschema

Implementation of JSON schema for Odin
Log | Files | Refs | LICENSE

schema.json (37967B)


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