Last active
November 18, 2022 16:43
-
-
Save sethmlarson/61a3aa464e43e0e7851abc2f22541a96 to your computer and use it in GitHub Desktop.
OpenAPI 3.1 JSON schema with $schema
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"$id": "https://spec.openapis.org/oas/3.1/schema/2022-10-07", | |
"$schema": "https://json-schema.org/draft/2020-12/schema", | |
"description": "The description of OpenAPI v3.1.x documents without schema validation, as defined by https://spec.openapis.org/oas/v3.1.0", | |
"type": "object", | |
"properties": { | |
"$schema": { | |
"type": "string" | |
}, | |
"openapi": { | |
"type": "string", | |
"pattern": "^3\\.1\\.\\d+(-.+)?$" | |
}, | |
"info": { | |
"$ref": "#/$defs/info" | |
}, | |
"jsonSchemaDialect": { | |
"type": "string", | |
"format": "uri", | |
"default": "https://spec.openapis.org/oas/3.1/dialect/base" | |
}, | |
"servers": { | |
"type": "array", | |
"items": { | |
"$ref": "#/$defs/server" | |
}, | |
"default": [ | |
{ | |
"url": "/" | |
} | |
] | |
}, | |
"paths": { | |
"$ref": "#/$defs/paths" | |
}, | |
"webhooks": { | |
"type": "object", | |
"additionalProperties": { | |
"$ref": "#/$defs/path-item-or-reference" | |
} | |
}, | |
"components": { | |
"$ref": "#/$defs/components" | |
}, | |
"security": { | |
"type": "array", | |
"items": { | |
"$ref": "#/$defs/security-requirement" | |
} | |
}, | |
"tags": { | |
"type": "array", | |
"items": { | |
"$ref": "#/$defs/tag" | |
} | |
}, | |
"externalDocs": { | |
"$ref": "#/$defs/external-documentation" | |
} | |
}, | |
"required": [ | |
"openapi", | |
"info", | |
"$schema" | |
], | |
"anyOf": [ | |
{ | |
"required": [ | |
"paths" | |
] | |
}, | |
{ | |
"required": [ | |
"components" | |
] | |
}, | |
{ | |
"required": [ | |
"webhooks" | |
] | |
} | |
], | |
"$ref": "#/$defs/specification-extensions", | |
"unevaluatedProperties": false, | |
"$defs": { | |
"info": { | |
"$comment": "https://spec.openapis.org/oas/v3.1.0#info-object", | |
"type": "object", | |
"properties": { | |
"title": { | |
"type": "string" | |
}, | |
"summary": { | |
"type": "string" | |
}, | |
"description": { | |
"type": "string" | |
}, | |
"termsOfService": { | |
"type": "string", | |
"format": "uri" | |
}, | |
"contact": { | |
"$ref": "#/$defs/contact" | |
}, | |
"license": { | |
"$ref": "#/$defs/license" | |
}, | |
"version": { | |
"type": "string" | |
} | |
}, | |
"required": [ | |
"title", | |
"version" | |
], | |
"$ref": "#/$defs/specification-extensions", | |
"unevaluatedProperties": false | |
}, | |
"contact": { | |
"$comment": "https://spec.openapis.org/oas/v3.1.0#contact-object", | |
"type": "object", | |
"properties": { | |
"name": { | |
"type": "string" | |
}, | |
"url": { | |
"type": "string", | |
"format": "uri" | |
}, | |
"email": { | |
"type": "string", | |
"format": "email" | |
} | |
}, | |
"$ref": "#/$defs/specification-extensions", | |
"unevaluatedProperties": false | |
}, | |
"license": { | |
"$comment": "https://spec.openapis.org/oas/v3.1.0#license-object", | |
"type": "object", | |
"properties": { | |
"name": { | |
"type": "string" | |
}, | |
"identifier": { | |
"type": "string" | |
}, | |
"url": { | |
"type": "string", | |
"format": "uri" | |
} | |
}, | |
"required": [ | |
"name" | |
], | |
"dependentSchemas": { | |
"identifier": { | |
"not": { | |
"required": [ | |
"url" | |
] | |
} | |
} | |
}, | |
"$ref": "#/$defs/specification-extensions", | |
"unevaluatedProperties": false | |
}, | |
"server": { | |
"$comment": "https://spec.openapis.org/oas/v3.1.0#server-object", | |
"type": "object", | |
"properties": { | |
"url": { | |
"type": "string", | |
"format": "uri-reference" | |
}, | |
"description": { | |
"type": "string" | |
}, | |
"variables": { | |
"type": "object", | |
"additionalProperties": { | |
"$ref": "#/$defs/server-variable" | |
} | |
} | |
}, | |
"required": [ | |
"url" | |
], | |
"$ref": "#/$defs/specification-extensions", | |
"unevaluatedProperties": false | |
}, | |
"server-variable": { | |
"$comment": "https://spec.openapis.org/oas/v3.1.0#server-variable-object", | |
"type": "object", | |
"properties": { | |
"enum": { | |
"type": "array", | |
"items": { | |
"type": "string" | |
}, | |
"minItems": 1 | |
}, | |
"default": { | |
"type": "string" | |
}, | |
"description": { | |
"type": "string" | |
} | |
}, | |
"required": [ | |
"default" | |
], | |
"$ref": "#/$defs/specification-extensions", | |
"unevaluatedProperties": false | |
}, | |
"components": { | |
"$comment": "https://spec.openapis.org/oas/v3.1.0#components-object", | |
"type": "object", | |
"properties": { | |
"schemas": { | |
"type": "object", | |
"additionalProperties": { | |
"$dynamicRef": "#meta" | |
} | |
}, | |
"responses": { | |
"type": "object", | |
"additionalProperties": { | |
"$ref": "#/$defs/response-or-reference" | |
} | |
}, | |
"parameters": { | |
"type": "object", | |
"additionalProperties": { | |
"$ref": "#/$defs/parameter-or-reference" | |
} | |
}, | |
"examples": { | |
"type": "object", | |
"additionalProperties": { | |
"$ref": "#/$defs/example-or-reference" | |
} | |
}, | |
"requestBodies": { | |
"type": "object", | |
"additionalProperties": { | |
"$ref": "#/$defs/request-body-or-reference" | |
} | |
}, | |
"headers": { | |
"type": "object", | |
"additionalProperties": { | |
"$ref": "#/$defs/header-or-reference" | |
} | |
}, | |
"securitySchemes": { | |
"type": "object", | |
"additionalProperties": { | |
"$ref": "#/$defs/security-scheme-or-reference" | |
} | |
}, | |
"links": { | |
"type": "object", | |
"additionalProperties": { | |
"$ref": "#/$defs/link-or-reference" | |
} | |
}, | |
"callbacks": { | |
"type": "object", | |
"additionalProperties": { | |
"$ref": "#/$defs/callbacks-or-reference" | |
} | |
}, | |
"pathItems": { | |
"type": "object", | |
"additionalProperties": { | |
"$ref": "#/$defs/path-item-or-reference" | |
} | |
} | |
}, | |
"patternProperties": { | |
"^(schemas|responses|parameters|examples|requestBodies|headers|securitySchemes|links|callbacks|pathItems)$": { | |
"$comment": "Enumerating all of the property names in the regex above is necessary for unevaluatedProperties to work as expected", | |
"propertyNames": { | |
"pattern": "^[a-zA-Z0-9._-]+$" | |
} | |
} | |
}, | |
"$ref": "#/$defs/specification-extensions", | |
"unevaluatedProperties": false | |
}, | |
"paths": { | |
"$comment": "https://spec.openapis.org/oas/v3.1.0#paths-object", | |
"type": "object", | |
"additionalProperties": { | |
"$ref": "#/$defs/path-item" | |
}, | |
"$ref": "#/$defs/specification-extensions", | |
"unevaluatedProperties": false | |
}, | |
"path-item": { | |
"$comment": "https://spec.openapis.org/oas/v3.1.0#path-item-object", | |
"type": "object", | |
"properties": { | |
"summary": { | |
"type": "string" | |
}, | |
"description": { | |
"type": "string" | |
}, | |
"servers": { | |
"type": "array", | |
"items": { | |
"$ref": "#/$defs/server" | |
} | |
}, | |
"parameters": { | |
"type": "array", | |
"items": { | |
"$ref": "#/$defs/parameter-or-reference" | |
} | |
}, | |
"get": { | |
"$ref": "#/$defs/operation" | |
}, | |
"put": { | |
"$ref": "#/$defs/operation" | |
}, | |
"post": { | |
"$ref": "#/$defs/operation" | |
}, | |
"delete": { | |
"$ref": "#/$defs/operation" | |
}, | |
"options": { | |
"$ref": "#/$defs/operation" | |
}, | |
"head": { | |
"$ref": "#/$defs/operation" | |
}, | |
"patch": { | |
"$ref": "#/$defs/operation" | |
}, | |
"trace": { | |
"$ref": "#/$defs/operation" | |
} | |
}, | |
"$ref": "#/$defs/specification-extensions", | |
"unevaluatedProperties": false | |
}, | |
"path-item-or-reference": { | |
"if": { | |
"type": "object", | |
"required": [ | |
"$ref" | |
] | |
}, | |
"then": { | |
"$ref": "#/$defs/reference" | |
}, | |
"else": { | |
"$ref": "#/$defs/path-item" | |
} | |
}, | |
"operation": { | |
"$comment": "https://spec.openapis.org/oas/v3.1.0#operation-object", | |
"type": "object", | |
"properties": { | |
"tags": { | |
"type": "array", | |
"items": { | |
"type": "string" | |
} | |
}, | |
"summary": { | |
"type": "string" | |
}, | |
"description": { | |
"type": "string" | |
}, | |
"externalDocs": { | |
"$ref": "#/$defs/external-documentation" | |
}, | |
"operationId": { | |
"type": "string" | |
}, | |
"parameters": { | |
"type": "array", | |
"items": { | |
"$ref": "#/$defs/parameter-or-reference" | |
} | |
}, | |
"requestBody": { | |
"$ref": "#/$defs/request-body-or-reference" | |
}, | |
"responses": { | |
"$ref": "#/$defs/responses" | |
}, | |
"callbacks": { | |
"type": "object", | |
"additionalProperties": { | |
"$ref": "#/$defs/callbacks-or-reference" | |
} | |
}, | |
"deprecated": { | |
"default": false, | |
"type": "boolean" | |
}, | |
"security": { | |
"type": "array", | |
"items": { | |
"$ref": "#/$defs/security-requirement" | |
} | |
}, | |
"servers": { | |
"type": "array", | |
"items": { | |
"$ref": "#/$defs/server" | |
} | |
} | |
}, | |
"$ref": "#/$defs/specification-extensions", | |
"unevaluatedProperties": false | |
}, | |
"external-documentation": { | |
"$comment": "https://spec.openapis.org/oas/v3.1.0#external-documentation-object", | |
"type": "object", | |
"properties": { | |
"description": { | |
"type": "string" | |
}, | |
"url": { | |
"type": "string", | |
"format": "uri" | |
} | |
}, | |
"required": [ | |
"url" | |
], | |
"$ref": "#/$defs/specification-extensions", | |
"unevaluatedProperties": false | |
}, | |
"parameter": { | |
"$comment": "https://spec.openapis.org/oas/v3.1.0#parameter-object", | |
"type": "object", | |
"properties": { | |
"name": { | |
"type": "string" | |
}, | |
"in": { | |
"enum": [ | |
"query", | |
"header", | |
"path", | |
"cookie" | |
] | |
}, | |
"description": { | |
"type": "string" | |
}, | |
"required": { | |
"default": false, | |
"type": "boolean" | |
}, | |
"deprecated": { | |
"default": false, | |
"type": "boolean" | |
}, | |
"schema": { | |
"$dynamicRef": "#meta" | |
}, | |
"content": { | |
"$ref": "#/$defs/content", | |
"minProperties": 1, | |
"maxProperties": 1 | |
} | |
}, | |
"required": [ | |
"name", | |
"in" | |
], | |
"oneOf": [ | |
{ | |
"required": [ | |
"schema" | |
] | |
}, | |
{ | |
"required": [ | |
"content" | |
] | |
} | |
], | |
"if": { | |
"properties": { | |
"in": { | |
"const": "query" | |
} | |
}, | |
"required": [ | |
"in" | |
] | |
}, | |
"then": { | |
"properties": { | |
"allowEmptyValue": { | |
"default": false, | |
"type": "boolean" | |
} | |
} | |
}, | |
"dependentSchemas": { | |
"schema": { | |
"properties": { | |
"style": { | |
"type": "string" | |
}, | |
"explode": { | |
"type": "boolean" | |
} | |
}, | |
"allOf": [ | |
{ | |
"$ref": "#/$defs/examples" | |
}, | |
{ | |
"$ref": "#/$defs/parameter/dependentSchemas/schema/$defs/styles-for-path" | |
}, | |
{ | |
"$ref": "#/$defs/parameter/dependentSchemas/schema/$defs/styles-for-header" | |
}, | |
{ | |
"$ref": "#/$defs/parameter/dependentSchemas/schema/$defs/styles-for-query" | |
}, | |
{ | |
"$ref": "#/$defs/parameter/dependentSchemas/schema/$defs/styles-for-cookie" | |
}, | |
{ | |
"$ref": "#/$defs/parameter/dependentSchemas/schema/$defs/styles-for-form" | |
} | |
], | |
"$defs": { | |
"styles-for-path": { | |
"if": { | |
"properties": { | |
"in": { | |
"const": "path" | |
} | |
}, | |
"required": [ | |
"in" | |
] | |
}, | |
"then": { | |
"properties": { | |
"name": { | |
"pattern": "[^/#?]+$" | |
}, | |
"style": { | |
"default": "simple", | |
"enum": [ | |
"matrix", | |
"label", | |
"simple" | |
] | |
}, | |
"required": { | |
"const": true | |
} | |
}, | |
"required": [ | |
"required" | |
] | |
} | |
}, | |
"styles-for-header": { | |
"if": { | |
"properties": { | |
"in": { | |
"const": "header" | |
} | |
}, | |
"required": [ | |
"in" | |
] | |
}, | |
"then": { | |
"properties": { | |
"style": { | |
"default": "simple", | |
"const": "simple" | |
} | |
} | |
} | |
}, | |
"styles-for-query": { | |
"if": { | |
"properties": { | |
"in": { | |
"const": "query" | |
} | |
}, | |
"required": [ | |
"in" | |
] | |
}, | |
"then": { | |
"properties": { | |
"style": { | |
"default": "form", | |
"enum": [ | |
"form", | |
"spaceDelimited", | |
"pipeDelimited", | |
"deepObject" | |
] | |
}, | |
"allowReserved": { | |
"default": false, | |
"type": "boolean" | |
} | |
} | |
} | |
}, | |
"styles-for-cookie": { | |
"if": { | |
"properties": { | |
"in": { | |
"const": "cookie" | |
} | |
}, | |
"required": [ | |
"in" | |
] | |
}, | |
"then": { | |
"properties": { | |
"style": { | |
"default": "form", | |
"const": "form" | |
} | |
} | |
} | |
}, | |
"styles-for-form": { | |
"if": { | |
"properties": { | |
"style": { | |
"const": "form" | |
} | |
}, | |
"required": [ | |
"style" | |
] | |
}, | |
"then": { | |
"properties": { | |
"explode": { | |
"default": true | |
} | |
} | |
}, | |
"else": { | |
"properties": { | |
"explode": { | |
"default": false | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"$ref": "#/$defs/specification-extensions", | |
"unevaluatedProperties": false | |
}, | |
"parameter-or-reference": { | |
"if": { | |
"type": "object", | |
"required": [ | |
"$ref" | |
] | |
}, | |
"then": { | |
"$ref": "#/$defs/reference" | |
}, | |
"else": { | |
"$ref": "#/$defs/parameter" | |
} | |
}, | |
"request-body": { | |
"$comment": "https://spec.openapis.org/oas/v3.1.0#request-body-object", | |
"type": "object", | |
"properties": { | |
"description": { | |
"type": "string" | |
}, | |
"content": { | |
"$ref": "#/$defs/content" | |
}, | |
"required": { | |
"default": false, | |
"type": "boolean" | |
} | |
}, | |
"required": [ | |
"content" | |
], | |
"$ref": "#/$defs/specification-extensions", | |
"unevaluatedProperties": false | |
}, | |
"request-body-or-reference": { | |
"if": { | |
"type": "object", | |
"required": [ | |
"$ref" | |
] | |
}, | |
"then": { | |
"$ref": "#/$defs/reference" | |
}, | |
"else": { | |
"$ref": "#/$defs/request-body" | |
} | |
}, | |
"content": { | |
"$comment": "https://spec.openapis.org/oas/v3.1.0#fixed-fields-10", | |
"type": "object", | |
"additionalProperties": { | |
"$ref": "#/$defs/media-type" | |
}, | |
"propertyNames": { | |
"format": "media-range" | |
} | |
}, | |
"media-type": { | |
"$comment": "https://spec.openapis.org/oas/v3.1.0#media-type-object", | |
"type": "object", | |
"properties": { | |
"schema": { | |
"$dynamicRef": "#meta" | |
}, | |
"encoding": { | |
"type": "object", | |
"additionalProperties": { | |
"$ref": "#/$defs/encoding" | |
} | |
} | |
}, | |
"allOf": [ | |
{ | |
"$ref": "#/$defs/specification-extensions" | |
}, | |
{ | |
"$ref": "#/$defs/examples" | |
} | |
], | |
"unevaluatedProperties": false | |
}, | |
"encoding": { | |
"$comment": "https://spec.openapis.org/oas/v3.1.0#encoding-object", | |
"type": "object", | |
"properties": { | |
"contentType": { | |
"type": "string", | |
"format": "media-range" | |
}, | |
"headers": { | |
"type": "object", | |
"additionalProperties": { | |
"$ref": "#/$defs/header-or-reference" | |
} | |
}, | |
"style": { | |
"default": "form", | |
"enum": [ | |
"form", | |
"spaceDelimited", | |
"pipeDelimited", | |
"deepObject" | |
] | |
}, | |
"explode": { | |
"type": "boolean" | |
}, | |
"allowReserved": { | |
"default": false, | |
"type": "boolean" | |
} | |
}, | |
"allOf": [ | |
{ | |
"$ref": "#/$defs/specification-extensions" | |
}, | |
{ | |
"$ref": "#/$defs/encoding/$defs/explode-default" | |
} | |
], | |
"unevaluatedProperties": false, | |
"$defs": { | |
"explode-default": { | |
"if": { | |
"properties": { | |
"style": { | |
"const": "form" | |
} | |
}, | |
"required": [ | |
"style" | |
] | |
}, | |
"then": { | |
"properties": { | |
"explode": { | |
"default": true | |
} | |
} | |
}, | |
"else": { | |
"properties": { | |
"explode": { | |
"default": false | |
} | |
} | |
} | |
} | |
} | |
}, | |
"responses": { | |
"$comment": "https://spec.openapis.org/oas/v3.1.0#responses-object", | |
"type": "object", | |
"properties": { | |
"default": { | |
"$ref": "#/$defs/response-or-reference" | |
} | |
}, | |
"patternProperties": { | |
"^[1-5](?:[0-9]{2}|XX)$": { | |
"$ref": "#/$defs/response-or-reference" | |
} | |
}, | |
"minProperties": 1, | |
"$ref": "#/$defs/specification-extensions", | |
"unevaluatedProperties": false | |
}, | |
"response": { | |
"$comment": "https://spec.openapis.org/oas/v3.1.0#response-object", | |
"type": "object", | |
"properties": { | |
"description": { | |
"type": "string" | |
}, | |
"headers": { | |
"type": "object", | |
"additionalProperties": { | |
"$ref": "#/$defs/header-or-reference" | |
} | |
}, | |
"content": { | |
"$ref": "#/$defs/content" | |
}, | |
"links": { | |
"type": "object", | |
"additionalProperties": { | |
"$ref": "#/$defs/link-or-reference" | |
} | |
} | |
}, | |
"required": [ | |
"description" | |
], | |
"$ref": "#/$defs/specification-extensions", | |
"unevaluatedProperties": false | |
}, | |
"response-or-reference": { | |
"if": { | |
"type": "object", | |
"required": [ | |
"$ref" | |
] | |
}, | |
"then": { | |
"$ref": "#/$defs/reference" | |
}, | |
"else": { | |
"$ref": "#/$defs/response" | |
} | |
}, | |
"callbacks": { | |
"$comment": "https://spec.openapis.org/oas/v3.1.0#callback-object", | |
"type": "object", | |
"$ref": "#/$defs/specification-extensions", | |
"additionalProperties": { | |
"$ref": "#/$defs/path-item-or-reference" | |
} | |
}, | |
"callbacks-or-reference": { | |
"if": { | |
"type": "object", | |
"required": [ | |
"$ref" | |
] | |
}, | |
"then": { | |
"$ref": "#/$defs/reference" | |
}, | |
"else": { | |
"$ref": "#/$defs/callbacks" | |
} | |
}, | |
"example": { | |
"$comment": "https://spec.openapis.org/oas/v3.1.0#example-object", | |
"type": "object", | |
"properties": { | |
"summary": { | |
"type": "string" | |
}, | |
"description": { | |
"type": "string" | |
}, | |
"value": true, | |
"externalValue": { | |
"type": "string", | |
"format": "uri" | |
} | |
}, | |
"not": { | |
"required": [ | |
"value", | |
"externalValue" | |
] | |
}, | |
"$ref": "#/$defs/specification-extensions", | |
"unevaluatedProperties": false | |
}, | |
"example-or-reference": { | |
"if": { | |
"type": "object", | |
"required": [ | |
"$ref" | |
] | |
}, | |
"then": { | |
"$ref": "#/$defs/reference" | |
}, | |
"else": { | |
"$ref": "#/$defs/example" | |
} | |
}, | |
"link": { | |
"$comment": "https://spec.openapis.org/oas/v3.1.0#link-object", | |
"type": "object", | |
"properties": { | |
"operationRef": { | |
"type": "string", | |
"format": "uri-reference" | |
}, | |
"operationId": { | |
"type": "string" | |
}, | |
"parameters": { | |
"$ref": "#/$defs/map-of-strings" | |
}, | |
"requestBody": true, | |
"description": { | |
"type": "string" | |
}, | |
"body": { | |
"$ref": "#/$defs/server" | |
} | |
}, | |
"oneOf": [ | |
{ | |
"required": [ | |
"operationRef" | |
] | |
}, | |
{ | |
"required": [ | |
"operationId" | |
] | |
} | |
], | |
"$ref": "#/$defs/specification-extensions", | |
"unevaluatedProperties": false | |
}, | |
"link-or-reference": { | |
"if": { | |
"type": "object", | |
"required": [ | |
"$ref" | |
] | |
}, | |
"then": { | |
"$ref": "#/$defs/reference" | |
}, | |
"else": { | |
"$ref": "#/$defs/link" | |
} | |
}, | |
"header": { | |
"$comment": "https://spec.openapis.org/oas/v3.1.0#header-object", | |
"type": "object", | |
"properties": { | |
"description": { | |
"type": "string" | |
}, | |
"required": { | |
"default": false, | |
"type": "boolean" | |
}, | |
"deprecated": { | |
"default": false, | |
"type": "boolean" | |
}, | |
"schema": { | |
"$dynamicRef": "#meta" | |
}, | |
"content": { | |
"$ref": "#/$defs/content", | |
"minProperties": 1, | |
"maxProperties": 1 | |
} | |
}, | |
"oneOf": [ | |
{ | |
"required": [ | |
"schema" | |
] | |
}, | |
{ | |
"required": [ | |
"content" | |
] | |
} | |
], | |
"dependentSchemas": { | |
"schema": { | |
"properties": { | |
"style": { | |
"default": "simple", | |
"const": "simple" | |
}, | |
"explode": { | |
"default": false, | |
"type": "boolean" | |
} | |
}, | |
"$ref": "#/$defs/examples" | |
} | |
}, | |
"$ref": "#/$defs/specification-extensions", | |
"unevaluatedProperties": false | |
}, | |
"header-or-reference": { | |
"if": { | |
"type": "object", | |
"required": [ | |
"$ref" | |
] | |
}, | |
"then": { | |
"$ref": "#/$defs/reference" | |
}, | |
"else": { | |
"$ref": "#/$defs/header" | |
} | |
}, | |
"tag": { | |
"$comment": "https://spec.openapis.org/oas/v3.1.0#tag-object", | |
"type": "object", | |
"properties": { | |
"name": { | |
"type": "string" | |
}, | |
"description": { | |
"type": "string" | |
}, | |
"externalDocs": { | |
"$ref": "#/$defs/external-documentation" | |
} | |
}, | |
"required": [ | |
"name" | |
], | |
"$ref": "#/$defs/specification-extensions", | |
"unevaluatedProperties": false | |
}, | |
"reference": { | |
"$comment": "https://spec.openapis.org/oas/v3.1.0#reference-object", | |
"type": "object", | |
"properties": { | |
"$ref": { | |
"type": "string", | |
"format": "uri-reference" | |
}, | |
"summary": { | |
"type": "string" | |
}, | |
"description": { | |
"type": "string" | |
} | |
}, | |
"unevaluatedProperties": false | |
}, | |
"schema": { | |
"$comment": "https://spec.openapis.org/oas/v3.1.0#schema-object", | |
"$dynamicAnchor": "meta", | |
"type": [ | |
"object", | |
"boolean" | |
] | |
}, | |
"security-scheme": { | |
"$comment": "https://spec.openapis.org/oas/v3.1.0#security-scheme-object", | |
"type": "object", | |
"properties": { | |
"type": { | |
"enum": [ | |
"apiKey", | |
"http", | |
"mutualTLS", | |
"oauth2", | |
"openIdConnect" | |
] | |
}, | |
"description": { | |
"type": "string" | |
} | |
}, | |
"required": [ | |
"type" | |
], | |
"allOf": [ | |
{ | |
"$ref": "#/$defs/specification-extensions" | |
}, | |
{ | |
"$ref": "#/$defs/security-scheme/$defs/type-apikey" | |
}, | |
{ | |
"$ref": "#/$defs/security-scheme/$defs/type-http" | |
}, | |
{ | |
"$ref": "#/$defs/security-scheme/$defs/type-http-bearer" | |
}, | |
{ | |
"$ref": "#/$defs/security-scheme/$defs/type-oauth2" | |
}, | |
{ | |
"$ref": "#/$defs/security-scheme/$defs/type-oidc" | |
} | |
], | |
"unevaluatedProperties": false, | |
"$defs": { | |
"type-apikey": { | |
"if": { | |
"properties": { | |
"type": { | |
"const": "apiKey" | |
} | |
}, | |
"required": [ | |
"type" | |
] | |
}, | |
"then": { | |
"properties": { | |
"name": { | |
"type": "string" | |
}, | |
"in": { | |
"enum": [ | |
"query", | |
"header", | |
"cookie" | |
] | |
} | |
}, | |
"required": [ | |
"name", | |
"in" | |
] | |
} | |
}, | |
"type-http": { | |
"if": { | |
"properties": { | |
"type": { | |
"const": "http" | |
} | |
}, | |
"required": [ | |
"type" | |
] | |
}, | |
"then": { | |
"properties": { | |
"scheme": { | |
"type": "string" | |
} | |
}, | |
"required": [ | |
"scheme" | |
] | |
} | |
}, | |
"type-http-bearer": { | |
"if": { | |
"properties": { | |
"type": { | |
"const": "http" | |
}, | |
"scheme": { | |
"type": "string", | |
"pattern": "^[Bb][Ee][Aa][Rr][Ee][Rr]$" | |
} | |
}, | |
"required": [ | |
"type", | |
"scheme" | |
] | |
}, | |
"then": { | |
"properties": { | |
"bearerFormat": { | |
"type": "string" | |
} | |
} | |
} | |
}, | |
"type-oauth2": { | |
"if": { | |
"properties": { | |
"type": { | |
"const": "oauth2" | |
} | |
}, | |
"required": [ | |
"type" | |
] | |
}, | |
"then": { | |
"properties": { | |
"flows": { | |
"$ref": "#/$defs/oauth-flows" | |
} | |
}, | |
"required": [ | |
"flows" | |
] | |
} | |
}, | |
"type-oidc": { | |
"if": { | |
"properties": { | |
"type": { | |
"const": "openIdConnect" | |
} | |
}, | |
"required": [ | |
"type" | |
] | |
}, | |
"then": { | |
"properties": { | |
"openIdConnectUrl": { | |
"type": "string", | |
"format": "uri" | |
} | |
}, | |
"required": [ | |
"openIdConnectUrl" | |
] | |
} | |
} | |
} | |
}, | |
"security-scheme-or-reference": { | |
"if": { | |
"type": "object", | |
"required": [ | |
"$ref" | |
] | |
}, | |
"then": { | |
"$ref": "#/$defs/reference" | |
}, | |
"else": { | |
"$ref": "#/$defs/security-scheme" | |
} | |
}, | |
"oauth-flows": { | |
"type": "object", | |
"properties": { | |
"implicit": { | |
"$ref": "#/$defs/oauth-flows/$defs/implicit" | |
}, | |
"password": { | |
"$ref": "#/$defs/oauth-flows/$defs/password" | |
}, | |
"clientCredentials": { | |
"$ref": "#/$defs/oauth-flows/$defs/client-credentials" | |
}, | |
"authorizationCode": { | |
"$ref": "#/$defs/oauth-flows/$defs/authorization-code" | |
} | |
}, | |
"$ref": "#/$defs/specification-extensions", | |
"unevaluatedProperties": false, | |
"$defs": { | |
"implicit": { | |
"type": "object", | |
"properties": { | |
"authorizationUrl": { | |
"type": "string", | |
"format": "uri" | |
}, | |
"refreshUrl": { | |
"type": "string", | |
"format": "uri" | |
}, | |
"scopes": { | |
"$ref": "#/$defs/map-of-strings" | |
} | |
}, | |
"required": [ | |
"authorizationUrl", | |
"scopes" | |
], | |
"$ref": "#/$defs/specification-extensions", | |
"unevaluatedProperties": false | |
}, | |
"password": { | |
"type": "object", | |
"properties": { | |
"tokenUrl": { | |
"type": "string", | |
"format": "uri" | |
}, | |
"refreshUrl": { | |
"type": "string", | |
"format": "uri" | |
}, | |
"scopes": { | |
"$ref": "#/$defs/map-of-strings" | |
} | |
}, | |
"required": [ | |
"tokenUrl", | |
"scopes" | |
], | |
"$ref": "#/$defs/specification-extensions", | |
"unevaluatedProperties": false | |
}, | |
"client-credentials": { | |
"type": "object", | |
"properties": { | |
"tokenUrl": { | |
"type": "string", | |
"format": "uri" | |
}, | |
"refreshUrl": { | |
"type": "string", | |
"format": "uri" | |
}, | |
"scopes": { | |
"$ref": "#/$defs/map-of-strings" | |
} | |
}, | |
"required": [ | |
"tokenUrl", | |
"scopes" | |
], | |
"$ref": "#/$defs/specification-extensions", | |
"unevaluatedProperties": false | |
}, | |
"authorization-code": { | |
"type": "object", | |
"properties": { | |
"authorizationUrl": { | |
"type": "string", | |
"format": "uri" | |
}, | |
"tokenUrl": { | |
"type": "string", | |
"format": "uri" | |
}, | |
"refreshUrl": { | |
"type": "string", | |
"format": "uri" | |
}, | |
"scopes": { | |
"$ref": "#/$defs/map-of-strings" | |
} | |
}, | |
"required": [ | |
"authorizationUrl", | |
"tokenUrl", | |
"scopes" | |
], | |
"$ref": "#/$defs/specification-extensions", | |
"unevaluatedProperties": false | |
} | |
} | |
}, | |
"security-requirement": { | |
"$comment": "https://spec.openapis.org/oas/v3.1.0#security-requirement-object", | |
"type": "object", | |
"additionalProperties": { | |
"type": "array", | |
"items": { | |
"type": "string" | |
} | |
} | |
}, | |
"specification-extensions": { | |
"$comment": "https://spec.openapis.org/oas/v3.1.0#specification-extensions", | |
"patternProperties": { | |
"^x-": true | |
} | |
}, | |
"examples": { | |
"properties": { | |
"example": true, | |
"examples": { | |
"type": "object", | |
"additionalProperties": { | |
"$ref": "#/$defs/example-or-reference" | |
} | |
} | |
} | |
}, | |
"map-of-strings": { | |
"type": "object", | |
"additionalProperties": { | |
"type": "string" | |
} | |
} | |
} | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment