{
    "id": "https://spec.openapis.org/oas/3.0/schema/2019-04-02",
    "$schema": "http://json-schema.org/draft-04/schema#",
    "description": "Validation schema for OpenAPI Specification 3.0.X.",
    "type": "object",
    "required": ["openapi", "info", "paths"],
    "properties": {
        "openapi": {
            "type": "string",
            "pattern": "^3\\.0\\.\\d(-.+)?$"
        },
        "info": {
            "$ref": "#/definitions/Info"
        },
        "externalDocs": {
            "$ref": "#/definitions/ExternalDocumentation"
        },
        "servers": {
            "type": "array",
            "items": {
                "$ref": "#/definitions/Server"
            }
        },
        "security": {
            "type": "array",
            "items": {
                "$ref": "#/definitions/SecurityRequirement"
            }
        },
        "tags": {
            "type": "array",
            "items": {
                "$ref": "#/definitions/Tag"
            },
            "uniqueItems": true
        },
        "paths": {
            "$ref": "#/definitions/Paths"
        },
        "components": {
            "$ref": "#/definitions/Components"
        }
    },
    "patternProperties": {
        "^x-": {}
    },
    "additionalProperties": false,
    "definitions": {
        "Reference": {
            "type": "object",
            "required": ["$ref"],
            "patternProperties": {
                "^\\$ref$": {
                    "type": "string",
                    "format": "uri-reference"
                }
            }
        },
        "Info": {
            "type": "object",
            "required": ["title", "version"],
            "properties": {
                "title": {
                    "type": "string"
                },
                "description": {
                    "type": "string"
                },
                "termsOfService": {
                    "type": "string",
                    "format": "uri-reference"
                },
                "contact": {
                    "$ref": "#/definitions/Contact"
                },
                "license": {
                    "$ref": "#/definitions/License"
                },
                "version": {
                    "type": "string"
                }
            },
            "patternProperties": {
                "^x-": {}
            },
            "additionalProperties": false
        },
        "Contact": {
            "type": "object",
            "properties": {
                "name": {
                    "type": "string"
                },
                "url": {
                    "type": "string",
                    "format": "uri-reference"
                },
                "email": {
                    "type": "string",
                    "format": "email"
                }
            },
            "patternProperties": {
                "^x-": {}
            },
            "additionalProperties": false
        },
        "License": {
            "type": "object",
            "required": ["name"],
            "properties": {
                "name": {
                    "type": "string"
                },
                "url": {
                    "type": "string",
                    "format": "uri-reference"
                }
            },
            "patternProperties": {
                "^x-": {}
            },
            "additionalProperties": false
        },
        "Server": {
            "type": "object",
            "required": ["url"],
            "properties": {
                "url": {
                    "type": "string"
                },
                "description": {
                    "type": "string"
                },
                "variables": {
                    "type": "object",
                    "additionalProperties": {
                        "$ref": "#/definitions/ServerVariable"
                    }
                }
            },
            "patternProperties": {
                "^x-": {}
            },
            "additionalProperties": false
        },
        "ServerVariable": {
            "type": "object",
            "required": ["default"],
            "properties": {
                "enum": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "default": {
                    "type": "string"
                },
                "description": {
                    "type": "string"
                }
            },
            "patternProperties": {
                "^x-": {}
            },
            "additionalProperties": false
        },
        "Components": {
            "type": "object",
            "properties": {
                "schemas": {
                    "type": "object",
                    "patternProperties": {
                        "^[a-zA-Z0-9\\.\\-_]+$": {
                            "oneOf": [
                                {
                                    "$ref": "#/definitions/Schema"
                                },
                                {
                                    "$ref": "#/definitions/Reference"
                                }
                            ]
                        }
                    }
                },
                "responses": {
                    "type": "object",
                    "patternProperties": {
                        "^[a-zA-Z0-9\\.\\-_]+$": {
                            "oneOf": [
                                {
                                    "$ref": "#/definitions/Reference"
                                },
                                {
                                    "$ref": "#/definitions/Response"
                                }
                            ]
                        }
                    }
                },
                "parameters": {
                    "type": "object",
                    "patternProperties": {
                        "^[a-zA-Z0-9\\.\\-_]+$": {
                            "oneOf": [
                                {
                                    "$ref": "#/definitions/Reference"
                                },
                                {
                                    "$ref": "#/definitions/Parameter"
                                }
                            ]
                        }
                    }
                },
                "examples": {
                    "type": "object",
                    "patternProperties": {
                        "^[a-zA-Z0-9\\.\\-_]+$": {
                            "oneOf": [
                                {
                                    "$ref": "#/definitions/Reference"
                                },
                                {
                                    "$ref": "#/definitions/Example"
                                }
                            ]
                        }
                    }
                },
                "requestBodies": {
                    "type": "object",
                    "patternProperties": {
                        "^[a-zA-Z0-9\\.\\-_]+$": {
                            "oneOf": [
                                {
                                    "$ref": "#/definitions/Reference"
                                },
                                {
                                    "$ref": "#/definitions/RequestBody"
                                }
                            ]
                        }
                    }
                },
                "headers": {
                    "type": "object",
                    "patternProperties": {
                        "^[a-zA-Z0-9\\.\\-_]+$": {
                            "oneOf": [
                                {
                                    "$ref": "#/definitions/Reference"
                                },
                                {
                                    "$ref": "#/definitions/Header"
                                }
                            ]
                        }
                    }
                },
                "securitySchemes": {
                    "type": "object",
                    "patternProperties": {
                        "^[a-zA-Z0-9\\.\\-_]+$": {
                            "oneOf": [
                                {
                                    "$ref": "#/definitions/Reference"
                                },
                                {
                                    "$ref": "#/definitions/SecurityScheme"
                                }
                            ]
                        }
                    }
                },
                "links": {
                    "type": "object",
                    "patternProperties": {
                        "^[a-zA-Z0-9\\.\\-_]+$": {
                            "oneOf": [
                                {
                                    "$ref": "#/definitions/Reference"
                                },
                                {
                                    "$ref": "#/definitions/Link"
                                }
                            ]
                        }
                    }
                },
                "callbacks": {
                    "type": "object",
                    "patternProperties": {
                        "^[a-zA-Z0-9\\.\\-_]+$": {
                            "oneOf": [
                                {
                                    "$ref": "#/definitions/Reference"
                                },
                                {
                                    "$ref": "#/definitions/Callback"
                                }
                            ]
                        }
                    }
                }
            },
            "patternProperties": {
                "^x-": {}
            },
            "additionalProperties": false
        },
        "Schema": {
            "type": "object",
            "properties": {
                "title": {
                    "type": "string"
                },
                "multipleOf": {
                    "type": "number",
                    "minimum": 0,
                    "exclusiveMinimum": true
                },
                "maximum": {
                    "type": "number"
                },
                "exclusiveMaximum": {
                    "type": "boolean",
                    "default": false
                },
                "minimum": {
                    "type": "number"
                },
                "exclusiveMinimum": {
                    "type": "boolean",
                    "default": false
                },
                "maxLength": {
                    "type": "integer",
                    "minimum": 0
                },
                "minLength": {
                    "type": "integer",
                    "minimum": 0,
                    "default": 0
                },
                "pattern": {
                    "type": "string",
                    "format": "regex"
                },
                "maxItems": {
                    "type": "integer",
                    "minimum": 0
                },
                "minItems": {
                    "type": "integer",
                    "minimum": 0,
                    "default": 0
                },
                "uniqueItems": {
                    "type": "boolean",
                    "default": false
                },
                "maxProperties": {
                    "type": "integer",
                    "minimum": 0
                },
                "minProperties": {
                    "type": "integer",
                    "minimum": 0,
                    "default": 0
                },
                "required": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "minItems": 1,
                    "uniqueItems": true
                },
                "enum": {
                    "type": "array",
                    "items": {},
                    "minItems": 1,
                    "uniqueItems": false
                },
                "type": {
                    "type": "string",
                    "enum": ["array", "boolean", "integer", "number", "object", "string"]
                },
                "not": {
                    "oneOf": [
                        {
                            "$ref": "#/definitions/Schema"
                        },
                        {
                            "$ref": "#/definitions/Reference"
                        }
                    ]
                },
                "allOf": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "$ref": "#/definitions/Schema"
                            },
                            {
                                "$ref": "#/definitions/Reference"
                            }
                        ]
                    }
                },
                "oneOf": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "$ref": "#/definitions/Schema"
                            },
                            {
                                "$ref": "#/definitions/Reference"
                            }
                        ]
                    }
                },
                "anyOf": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "$ref": "#/definitions/Schema"
                            },
                            {
                                "$ref": "#/definitions/Reference"
                            }
                        ]
                    }
                },
                "items": {
                    "oneOf": [
                        {
                            "$ref": "#/definitions/Schema"
                        },
                        {
                            "$ref": "#/definitions/Reference"
                        }
                    ]
                },
                "properties": {
                    "type": "object",
                    "additionalProperties": {
                        "oneOf": [
                            {
                                "$ref": "#/definitions/Schema"
                            },
                            {
                                "$ref": "#/definitions/Reference"
                            }
                        ]
                    }
                },
                "additionalProperties": {
                    "oneOf": [
                        {
                            "$ref": "#/definitions/Schema"
                        },
                        {
                            "$ref": "#/definitions/Reference"
                        },
                        {
                            "type": "boolean"
                        }
                    ],
                    "default": true
                },
                "description": {
                    "type": "string"
                },
                "format": {
                    "type": "string"
                },
                "default": {},
                "nullable": {
                    "type": "boolean",
                    "default": false
                },
                "discriminator": {
                    "$ref": "#/definitions/Discriminator"
                },
                "readOnly": {
                    "type": "boolean",
                    "default": false
                },
                "writeOnly": {
                    "type": "boolean",
                    "default": false
                },
                "example": {},
                "externalDocs": {
                    "$ref": "#/definitions/ExternalDocumentation"
                },
                "deprecated": {
                    "type": "boolean",
                    "default": false
                },
                "xml": {
                    "$ref": "#/definitions/XML"
                }
            },
            "patternProperties": {
                "^x-": {}
            },
            "additionalProperties": false
        },
        "Discriminator": {
            "type": "object",
            "required": ["propertyName"],
            "properties": {
                "propertyName": {
                    "type": "string"
                },
                "mapping": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    }
                }
            }
        },
        "XML": {
            "type": "object",
            "properties": {
                "name": {
                    "type": "string"
                },
                "namespace": {
                    "type": "string",
                    "format": "uri"
                },
                "prefix": {
                    "type": "string"
                },
                "attribute": {
                    "type": "boolean",
                    "default": false
                },
                "wrapped": {
                    "type": "boolean",
                    "default": false
                }
            },
            "patternProperties": {
                "^x-": {}
            },
            "additionalProperties": false
        },
        "Response": {
            "type": "object",
            "required": ["description"],
            "properties": {
                "description": {
                    "type": "string"
                },
                "headers": {
                    "type": "object",
                    "additionalProperties": {
                        "oneOf": [
                            {
                                "$ref": "#/definitions/Header"
                            },
                            {
                                "$ref": "#/definitions/Reference"
                            }
                        ]
                    }
                },
                "content": {
                    "type": "object",
                    "additionalProperties": {
                        "$ref": "#/definitions/MediaType"
                    }
                },
                "links": {
                    "type": "object",
                    "additionalProperties": {
                        "oneOf": [
                            {
                                "$ref": "#/definitions/Link"
                            },
                            {
                                "$ref": "#/definitions/Reference"
                            }
                        ]
                    }
                }
            },
            "patternProperties": {
                "^x-": {}
            },
            "additionalProperties": false
        },
        "MediaType": {
            "type": "object",
            "properties": {
                "schema": {
                    "oneOf": [
                        {
                            "$ref": "#/definitions/Schema"
                        },
                        {
                            "$ref": "#/definitions/Reference"
                        }
                    ]
                },
                "example": {},
                "examples": {
                    "type": "object",
                    "additionalProperties": {
                        "oneOf": [
                            {
                                "$ref": "#/definitions/Example"
                            },
                            {
                                "$ref": "#/definitions/Reference"
                            }
                        ]
                    }
                },
                "encoding": {
                    "type": "object",
                    "additionalProperties": {
                        "$ref": "#/definitions/Encoding"
                    }
                }
            },
            "patternProperties": {
                "^x-": {}
            },
            "additionalProperties": false,
            "allOf": [
                {
                    "$ref": "#/definitions/ExampleXORExamples"
                }
            ]
        },
        "Example": {
            "type": "object",
            "properties": {
                "summary": {
                    "type": "string"
                },
                "description": {
                    "type": "string"
                },
                "value": {},
                "externalValue": {
                    "type": "string",
                    "format": "uri-reference"
                }
            },
            "patternProperties": {
                "^x-": {}
            },
            "additionalProperties": false
        },
        "Header": {
            "type": "object",
            "properties": {
                "description": {
                    "type": "string"
                },
                "required": {
                    "type": "boolean",
                    "default": false
                },
                "deprecated": {
                    "type": "boolean",
                    "default": false
                },
                "allowEmptyValue": {
                    "type": "boolean",
                    "default": false
                },
                "style": {
                    "type": "string",
                    "enum": ["simple"],
                    "default": "simple"
                },
                "explode": {
                    "type": "boolean"
                },
                "allowReserved": {
                    "type": "boolean",
                    "default": false
                },
                "schema": {
                    "oneOf": [
                        {
                            "$ref": "#/definitions/Schema"
                        },
                        {
                            "$ref": "#/definitions/Reference"
                        }
                    ]
                },
                "content": {
                    "type": "object",
                    "additionalProperties": {
                        "$ref": "#/definitions/MediaType"
                    },
                    "minProperties": 1,
                    "maxProperties": 1
                },
                "example": {},
                "examples": {
                    "type": "object",
                    "additionalProperties": {
                        "oneOf": [
                            {
                                "$ref": "#/definitions/Example"
                            },
                            {
                                "$ref": "#/definitions/Reference"
                            }
                        ]
                    }
                }
            },
            "patternProperties": {
                "^x-": {}
            },
            "additionalProperties": false,
            "allOf": [
                {
                    "$ref": "#/definitions/ExampleXORExamples"
                },
                {
                    "$ref": "#/definitions/SchemaXORContent"
                }
            ]
        },
        "Paths": {
            "type": "object",
            "patternProperties": {
                "^\\/": {
                    "$ref": "#/definitions/PathItem"
                },
                "^x-": {}
            },
            "additionalProperties": false
        },
        "PathItem": {
            "type": "object",
            "properties": {
                "$ref": {
                    "type": "string"
                },
                "summary": {
                    "type": "string"
                },
                "description": {
                    "type": "string"
                },
                "servers": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/Server"
                    }
                },
                "parameters": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "$ref": "#/definitions/Parameter"
                            },
                            {
                                "$ref": "#/definitions/Reference"
                            }
                        ]
                    },
                    "uniqueItems": true
                }
            },
            "patternProperties": {
                "^(get|put|post|delete|options|head|patch|trace)$": {
                    "$ref": "#/definitions/Operation"
                },
                "^x-": {}
            },
            "additionalProperties": false
        },
        "Operation": {
            "type": "object",
            "required": ["responses"],
            "properties": {
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "summary": {
                    "type": "string"
                },
                "description": {
                    "type": "string"
                },
                "externalDocs": {
                    "$ref": "#/definitions/ExternalDocumentation"
                },
                "operationId": {
                    "type": "string"
                },
                "parameters": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "$ref": "#/definitions/Parameter"
                            },
                            {
                                "$ref": "#/definitions/Reference"
                            }
                        ]
                    },
                    "uniqueItems": true
                },
                "requestBody": {
                    "oneOf": [
                        {
                            "$ref": "#/definitions/RequestBody"
                        },
                        {
                            "$ref": "#/definitions/Reference"
                        }
                    ]
                },
                "responses": {
                    "$ref": "#/definitions/Responses"
                },
                "callbacks": {
                    "type": "object",
                    "additionalProperties": {
                        "oneOf": [
                            {
                                "$ref": "#/definitions/Callback"
                            },
                            {
                                "$ref": "#/definitions/Reference"
                            }
                        ]
                    }
                },
                "deprecated": {
                    "type": "boolean",
                    "default": false
                },
                "security": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/SecurityRequirement"
                    }
                },
                "servers": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/Server"
                    }
                }
            },
            "patternProperties": {
                "^x-": {}
            },
            "additionalProperties": false
        },
        "Responses": {
            "type": "object",
            "properties": {
                "default": {
                    "oneOf": [
                        {
                            "$ref": "#/definitions/Response"
                        },
                        {
                            "$ref": "#/definitions/Reference"
                        }
                    ]
                }
            },
            "patternProperties": {
                "^[1-5](?:\\d{2}|XX)$": {
                    "oneOf": [
                        {
                            "$ref": "#/definitions/Response"
                        },
                        {
                            "$ref": "#/definitions/Reference"
                        }
                    ]
                },
                "^x-": {}
            },
            "minProperties": 1,
            "additionalProperties": false
        },
        "SecurityRequirement": {
            "type": "object",
            "additionalProperties": {
                "type": "array",
                "items": {
                    "type": "string"
                }
            }
        },
        "Tag": {
            "type": "object",
            "required": ["name"],
            "properties": {
                "name": {
                    "type": "string"
                },
                "description": {
                    "type": "string"
                },
                "externalDocs": {
                    "$ref": "#/definitions/ExternalDocumentation"
                }
            },
            "patternProperties": {
                "^x-": {}
            },
            "additionalProperties": false
        },
        "ExternalDocumentation": {
            "type": "object",
            "required": ["url"],
            "properties": {
                "description": {
                    "type": "string"
                },
                "url": {
                    "type": "string",
                    "format": "uri-reference"
                }
            },
            "patternProperties": {
                "^x-": {}
            },
            "additionalProperties": false
        },
        "ExampleXORExamples": {
            "description": "Example and examples are mutually exclusive",
            "not": {
                "required": ["example", "examples"]
            }
        },
        "SchemaXORContent": {
            "description": "Schema and content are mutually exclusive, at least one is required",
            "not": {
                "required": ["schema", "content"]
            },
            "oneOf": [
                {
                    "required": ["schema"]
                },
                {
                    "required": ["content"],
                    "description": "Some properties are not allowed if content is present",
                    "allOf": [
                        {
                            "not": {
                                "required": ["style"]
                            }
                        },
                        {
                            "not": {
                                "required": ["explode"]
                            }
                        },
                        {
                            "not": {
                                "required": ["allowReserved"]
                            }
                        },
                        {
                            "not": {
                                "required": ["example"]
                            }
                        },
                        {
                            "not": {
                                "required": ["examples"]
                            }
                        }
                    ]
                }
            ]
        },
        "Parameter": {
            "type": "object",
            "properties": {
                "name": {
                    "type": "string"
                },
                "in": {
                    "type": "string"
                },
                "description": {
                    "type": "string"
                },
                "required": {
                    "type": "boolean",
                    "default": false
                },
                "deprecated": {
                    "type": "boolean",
                    "default": false
                },
                "allowEmptyValue": {
                    "type": "boolean",
                    "default": false
                },
                "style": {
                    "type": "string"
                },
                "explode": {
                    "type": "boolean"
                },
                "allowReserved": {
                    "type": "boolean",
                    "default": false
                },
                "schema": {
                    "oneOf": [
                        {
                            "$ref": "#/definitions/Schema"
                        },
                        {
                            "$ref": "#/definitions/Reference"
                        }
                    ]
                },
                "content": {
                    "type": "object",
                    "additionalProperties": {
                        "$ref": "#/definitions/MediaType"
                    },
                    "minProperties": 1,
                    "maxProperties": 1
                },
                "example": {},
                "examples": {
                    "type": "object",
                    "additionalProperties": {
                        "oneOf": [
                            {
                                "$ref": "#/definitions/Example"
                            },
                            {
                                "$ref": "#/definitions/Reference"
                            }
                        ]
                    }
                }
            },
            "patternProperties": {
                "^x-": {}
            },
            "additionalProperties": false,
            "required": ["name", "in"],
            "allOf": [
                {
                    "$ref": "#/definitions/ExampleXORExamples"
                },
                {
                    "$ref": "#/definitions/SchemaXORContent"
                },
                {
                    "$ref": "#/definitions/ParameterLocation"
                }
            ]
        },
        "ParameterLocation": {
            "description": "Parameter location",
            "oneOf": [
                {
                    "description": "Parameter in path",
                    "required": ["required"],
                    "properties": {
                        "in": {
                            "enum": ["path"]
                        },
                        "style": {
                            "enum": ["matrix", "label", "simple"],
                            "default": "simple"
                        },
                        "required": {
                            "enum": [true]
                        }
                    }
                },
                {
                    "description": "Parameter in query",
                    "properties": {
                        "in": {
                            "enum": ["query"]
                        },
                        "style": {
                            "enum": ["form", "spaceDelimited", "pipeDelimited", "deepObject"],
                            "default": "form"
                        }
                    }
                },
                {
                    "description": "Parameter in header",
                    "properties": {
                        "in": {
                            "enum": ["header"]
                        },
                        "style": {
                            "enum": ["simple"],
                            "default": "simple"
                        }
                    }
                },
                {
                    "description": "Parameter in cookie",
                    "properties": {
                        "in": {
                            "enum": ["cookie"]
                        },
                        "style": {
                            "enum": ["form"],
                            "default": "form"
                        }
                    }
                }
            ]
        },
        "RequestBody": {
            "type": "object",
            "required": ["content"],
            "properties": {
                "description": {
                    "type": "string"
                },
                "content": {
                    "type": "object",
                    "additionalProperties": {
                        "$ref": "#/definitions/MediaType"
                    }
                },
                "required": {
                    "type": "boolean",
                    "default": false
                }
            },
            "patternProperties": {
                "^x-": {}
            },
            "additionalProperties": false
        },
        "SecurityScheme": {
            "oneOf": [
                {
                    "$ref": "#/definitions/APIKeySecurityScheme"
                },
                {
                    "$ref": "#/definitions/HTTPSecurityScheme"
                },
                {
                    "$ref": "#/definitions/OAuth2SecurityScheme"
                },
                {
                    "$ref": "#/definitions/OpenIdConnectSecurityScheme"
                }
            ]
        },
        "APIKeySecurityScheme": {
            "type": "object",
            "required": ["type", "name", "in"],
            "properties": {
                "type": {
                    "type": "string",
                    "enum": ["apiKey"]
                },
                "name": {
                    "type": "string"
                },
                "in": {
                    "type": "string",
                    "enum": ["header", "query", "cookie"]
                },
                "description": {
                    "type": "string"
                }
            },
            "patternProperties": {
                "^x-": {}
            },
            "additionalProperties": false
        },
        "HTTPSecurityScheme": {
            "type": "object",
            "required": ["scheme", "type"],
            "properties": {
                "scheme": {
                    "type": "string"
                },
                "bearerFormat": {
                    "type": "string"
                },
                "description": {
                    "type": "string"
                },
                "type": {
                    "type": "string",
                    "enum": ["http"]
                }
            },
            "patternProperties": {
                "^x-": {}
            },
            "additionalProperties": false,
            "oneOf": [
                {
                    "description": "Bearer",
                    "properties": {
                        "scheme": {
                            "enum": ["bearer"]
                        }
                    }
                },
                {
                    "description": "Non Bearer",
                    "not": {
                        "required": ["bearerFormat"]
                    },
                    "properties": {
                        "scheme": {
                            "not": {
                                "enum": ["bearer"]
                            }
                        }
                    }
                }
            ]
        },
        "OAuth2SecurityScheme": {
            "type": "object",
            "required": ["type", "flows"],
            "properties": {
                "type": {
                    "type": "string",
                    "enum": ["oauth2"]
                },
                "flows": {
                    "$ref": "#/definitions/OAuthFlows"
                },
                "description": {
                    "type": "string"
                }
            },
            "patternProperties": {
                "^x-": {}
            },
            "additionalProperties": false
        },
        "OpenIdConnectSecurityScheme": {
            "type": "object",
            "required": ["type", "openIdConnectUrl"],
            "properties": {
                "type": {
                    "type": "string",
                    "enum": ["openIdConnect"]
                },
                "openIdConnectUrl": {
                    "type": "string",
                    "format": "uri-reference"
                },
                "description": {
                    "type": "string"
                }
            },
            "patternProperties": {
                "^x-": {}
            },
            "additionalProperties": false
        },
        "OAuthFlows": {
            "type": "object",
            "properties": {
                "implicit": {
                    "$ref": "#/definitions/ImplicitOAuthFlow"
                },
                "password": {
                    "$ref": "#/definitions/PasswordOAuthFlow"
                },
                "clientCredentials": {
                    "$ref": "#/definitions/ClientCredentialsFlow"
                },
                "authorizationCode": {
                    "$ref": "#/definitions/AuthorizationCodeOAuthFlow"
                }
            },
            "patternProperties": {
                "^x-": {}
            },
            "additionalProperties": false
        },
        "ImplicitOAuthFlow": {
            "type": "object",
            "required": ["authorizationUrl", "scopes"],
            "properties": {
                "authorizationUrl": {
                    "type": "string",
                    "format": "uri-reference"
                },
                "refreshUrl": {
                    "type": "string",
                    "format": "uri-reference"
                },
                "scopes": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    }
                }
            },
            "patternProperties": {
                "^x-": {}
            },
            "additionalProperties": false
        },
        "PasswordOAuthFlow": {
            "type": "object",
            "required": ["tokenUrl"],
            "properties": {
                "tokenUrl": {
                    "type": "string",
                    "format": "uri-reference"
                },
                "refreshUrl": {
                    "type": "string",
                    "format": "uri-reference"
                },
                "scopes": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    }
                }
            },
            "patternProperties": {
                "^x-": {}
            },
            "additionalProperties": false
        },
        "ClientCredentialsFlow": {
            "type": "object",
            "required": ["tokenUrl"],
            "properties": {
                "tokenUrl": {
                    "type": "string",
                    "format": "uri-reference"
                },
                "refreshUrl": {
                    "type": "string",
                    "format": "uri-reference"
                },
                "scopes": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    }
                }
            },
            "patternProperties": {
                "^x-": {}
            },
            "additionalProperties": false
        },
        "AuthorizationCodeOAuthFlow": {
            "type": "object",
            "required": ["authorizationUrl", "tokenUrl"],
            "properties": {
                "authorizationUrl": {
                    "type": "string",
                    "format": "uri-reference"
                },
                "tokenUrl": {
                    "type": "string",
                    "format": "uri-reference"
                },
                "refreshUrl": {
                    "type": "string",
                    "format": "uri-reference"
                },
                "scopes": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    }
                }
            },
            "patternProperties": {
                "^x-": {}
            },
            "additionalProperties": false
        },
        "Link": {
            "type": "object",
            "properties": {
                "operationId": {
                    "type": "string"
                },
                "operationRef": {
                    "type": "string",
                    "format": "uri-reference"
                },
                "parameters": {
                    "type": "object",
                    "additionalProperties": {}
                },
                "requestBody": {},
                "description": {
                    "type": "string"
                },
                "server": {
                    "$ref": "#/definitions/Server"
                }
            },
            "patternProperties": {
                "^x-": {}
            },
            "additionalProperties": false,
            "not": {
                "description": "Operation Id and Operation Ref are mutually exclusive",
                "required": ["operationId", "operationRef"]
            }
        },
        "Callback": {
            "type": "object",
            "additionalProperties": {
                "$ref": "#/definitions/PathItem"
            },
            "patternProperties": {
                "^x-": {}
            }
        },
        "Encoding": {
            "type": "object",
            "properties": {
                "contentType": {
                    "type": "string"
                },
                "headers": {
                    "type": "object",
                    "additionalProperties": {
                        "$ref": "#/definitions/Header"
                    }
                },
                "style": {
                    "type": "string",
                    "enum": ["form", "spaceDelimited", "pipeDelimited", "deepObject"]
                },
                "explode": {
                    "type": "boolean"
                },
                "allowReserved": {
                    "type": "boolean",
                    "default": false
                }
            },
            "additionalProperties": false
        }
    }
}
