{
    "title": "A JSON Schema for Swagger 2.0 API.",
    "id": "http://swagger.io/v2/schema.json#",
    "$schema": "http://json-schema.org/draft-04/schema#",
    "type": "object",
    "required": [
        "swagger",
        "info",
        "paths"
    ],
    "additionalProperties": false,
    "patternProperties": {
        "^x-": {
            "$ref": "#/definitions/vendorExtension"
        }
    },
    "properties": {
        "swagger": {
            "type": "string",
            "enum": [
                "2.0"
            ],
            "description": "The Swagger version of this document."
        },
        "info": {
            "$ref": "#/definitions/info"
        },
        "host": {
            "type": "string",
            "pattern": "^[^{}/ :\\\\]+(?::\\d+)?$",
            "description": "The host (name or ip) of the API. Example: 'swagger.io'"
        },
        "basePath": {
            "type": "string",
            "pattern": "^/",
            "description": "The base path to the API. Example: '/api'."
        },
        "schemes": {
            "$ref": "#/definitions/schemesList"
        },
        "consumes": {
            "description": "A list of MIME types accepted by the API.",
            "allOf": [
                {
                    "$ref": "#/definitions/mediaTypeList"
                }
            ]
        },
        "produces": {
            "description": "A list of MIME types the API can produce.",
            "allOf": [
                {
                    "$ref": "#/definitions/mediaTypeList"
                }
            ]
        },
        "paths": {
            "$ref": "#/definitions/paths"
        },
        "definitions": {
            "$ref": "#/definitions/definitions"
        },
        "parameters": {
            "$ref": "#/definitions/parameterDefinitions"
        },
        "responses": {
            "$ref": "#/definitions/responseDefinitions"
        },
        "security": {
            "$ref": "#/definitions/security"
        },
        "securityDefinitions": {
            "$ref": "#/definitions/securityDefinitions"
        },
        "tags": {
            "type": "array",
            "items": {
                "$ref": "#/definitions/tag"
            },
            "uniqueItems": true
        },
        "externalDocs": {
            "$ref": "#/definitions/externalDocs"
        }
    },
    "definitions": {
        "info": {
            "type": "object",
            "description": "General information about the API.",
            "required": [
                "version",
                "title"
            ],
            "additionalProperties": false,
            "patternProperties": {
                "^x-": {
                    "$ref": "#/definitions/vendorExtension"
                }
            },
            "properties": {
                "title": {
                    "type": "string",
                    "description": "A unique and precise title of the API."
                },
                "version": {
                    "type": "string",
                    "description": "A semantic version number of the API."
                },
                "description": {
                    "type": "string",
                    "description": "A longer description of the API. Should be different from the title.  GitHub Flavored Markdown is allowed."
                },
                "termsOfService": {
                    "type": "string",
                    "description": "The terms of service for the API."
                },
                "contact": {
                    "$ref": "#/definitions/contact"
                },
                "license": {
                    "$ref": "#/definitions/license"
                }
            }
        },
        "contact": {
            "type": "object",
            "description": "Contact information for the owners of the API.",
            "additionalProperties": false,
            "properties": {
                "name": {
                    "type": "string",
                    "description": "The identifying name of the contact person/organization."
                },
                "url": {
                    "type": "string",
                    "description": "The URL pointing to the contact information.",
                    "format": "uri"
                },
                "email": {
                    "type": "string",
                    "description": "The email address of the contact person/organization.",
                    "format": "email"
                }
            },
            "patternProperties": {
                "^x-": {
                    "$ref": "#/definitions/vendorExtension"
                }
            }
        },
        "license": {
            "type": "object",
            "required": [
                "name"
            ],
            "additionalProperties": false,
            "properties": {
                "name": {
                    "type": "string",
                    "description": "The name of the license type. It's encouraged to use an OSI compatible license."
                },
                "url": {
                    "type": "string",
                    "description": "The URL pointing to the license.",
                    "format": "uri"
                }
            },
            "patternProperties": {
                "^x-": {
                    "$ref": "#/definitions/vendorExtension"
                }
            }
        },
        "paths": {
            "type": "object",
            "description": "Relative paths to the individual endpoints. They must be relative to the 'basePath'.",
            "patternProperties": {
                "^x-": {
                    "$ref": "#/definitions/vendorExtension"
                },
                "^/": {
                    "$ref": "#/definitions/pathItem"
                }
            },
            "additionalProperties": false
        },
        "definitions": {
            "type": "object",
            "additionalProperties": {
                "$ref": "#/definitions/schema"
            },
            "description": "One or more JSON objects describing the schemas being consumed and produced by the API."
        },
        "parameterDefinitions": {
            "type": "object",
            "additionalProperties": {
                "$ref": "#/definitions/parameter"
            },
            "description": "One or more JSON representations for parameters"
        },
        "responseDefinitions": {
            "type": "object",
            "additionalProperties": {
                "$ref": "#/definitions/response"
            },
            "description": "One or more JSON representations for responses"
        },
        "externalDocs": {
            "type": "object",
            "additionalProperties": false,
            "description": "information about external documentation",
            "required": [
                "url"
            ],
            "properties": {
                "description": {
                    "type": "string"
                },
                "url": {
                    "type": "string",
                    "format": "uri"
                }
            },
            "patternProperties": {
                "^x-": {
                    "$ref": "#/definitions/vendorExtension"
                }
            }
        },
        "examples": {
            "type": "object",
            "additionalProperties": true
        },
        "mimeType": {
            "type": "string",
            "description": "The MIME type of the HTTP message."
        },
        "operation": {
            "type": "object",
            "required": [
                "responses"
            ],
            "additionalProperties": false,
            "patternProperties": {
                "^x-": {
                    "$ref": "#/definitions/vendorExtension"
                }
            },
            "properties": {
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "uniqueItems": true
                },
                "summary": {
                    "type": "string",
                    "description": "A brief summary of the operation."
                },
                "description": {
                    "type": "string",
                    "description": "A longer description of the operation, GitHub Flavored Markdown is allowed."
                },
                "externalDocs": {
                    "$ref": "#/definitions/externalDocs"
                },
                "operationId": {
                    "type": "string",
                    "description": "A unique identifier of the operation."
                },
                "produces": {
                    "description": "A list of MIME types the API can produce.",
                    "allOf": [
                        {
                            "$ref": "#/definitions/mediaTypeList"
                        }
                    ]
                },
                "consumes": {
                    "description": "A list of MIME types the API can consume.",
                    "allOf": [
                        {
                            "$ref": "#/definitions/mediaTypeList"
                        }
                    ]
                },
                "parameters": {
                    "$ref": "#/definitions/parametersList"
                },
                "responses": {
                    "$ref": "#/definitions/responses"
                },
                "schemes": {
                    "$ref": "#/definitions/schemesList"
                },
                "deprecated": {
                    "type": "boolean",
                    "default": false
                },
                "security": {
                    "$ref": "#/definitions/security"
                }
            }
        },
        "pathItem": {
            "type": "object",
            "additionalProperties": false,
            "patternProperties": {
                "^x-": {
                    "$ref": "#/definitions/vendorExtension"
                }
            },
            "properties": {
                "$ref": {
                    "type": "string"
                },
                "get": {
                    "$ref": "#/definitions/operation"
                },
                "put": {
                    "$ref": "#/definitions/operation"
                },
                "post": {
                    "$ref": "#/definitions/operation"
                },
                "delete": {
                    "$ref": "#/definitions/operation"
                },
                "options": {
                    "$ref": "#/definitions/operation"
                },
                "head": {
                    "$ref": "#/definitions/operation"
                },
                "patch": {
                    "$ref": "#/definitions/operation"
                },
                "parameters": {
                    "$ref": "#/definitions/parametersList"
                }
            }
        },
        "responses": {
            "type": "object",
            "description": "Response objects names can either be any valid HTTP status code or 'default'.",
            "minProperties": 1,
            "additionalProperties": false,
            "patternProperties": {
                "^([0-9]{3})$|^(default)$": {
                    "$ref": "#/definitions/responseValue"
                },
                "^x-": {
                    "$ref": "#/definitions/vendorExtension"
                }
            },
            "not": {
                "type": "object",
                "additionalProperties": false,
                "patternProperties": {
                    "^x-": {
                        "$ref": "#/definitions/vendorExtension"
                    }
                }
            }
        },
        "responseValue": {
            "oneOf": [
                {
                    "$ref": "#/definitions/response"
                },
                {
                    "$ref": "#/definitions/jsonReference"
                }
            ]
        },
        "response": {
            "type": "object",
            "required": [
                "description"
            ],
            "properties": {
                "description": {
                    "type": "string"
                },
                "schema": {
                    "oneOf": [
                        {
                            "$ref": "#/definitions/schema"
                        },
                        {
                            "$ref": "#/definitions/fileSchema"
                        }
                    ]
                },
                "headers": {
                    "$ref": "#/definitions/headers"
                },
                "examples": {
                    "$ref": "#/definitions/examples"
                }
            },
            "additionalProperties": false,
            "patternProperties": {
                "^x-": {
                    "$ref": "#/definitions/vendorExtension"
                }
            }
        },
        "headers": {
            "type": "object",
            "additionalProperties": {
                "$ref": "#/definitions/header"
            }
        },
        "header": {
            "type": "object",
            "additionalProperties": false,
            "required": [
                "type"
            ],
            "properties": {
                "type": {
                    "type": "string",
                    "enum": [
                        "string",
                        "number",
                        "integer",
                        "boolean",
                        "array"
                    ]
                },
                "format": {
                    "type": "string"
                },
                "items": {
                    "$ref": "#/definitions/primitivesItems"
                },
                "collectionFormat": {
                    "$ref": "#/definitions/collectionFormat"
                },
                "default": {
                    "$ref": "#/definitions/default"
                },
                "maximum": {
                    "$ref": "#/definitions/maximum"
                },
                "exclusiveMaximum": {
                    "$ref": "#/definitions/exclusiveMaximum"
                },
                "minimum": {
                    "$ref": "#/definitions/minimum"
                },
                "exclusiveMinimum": {
                    "$ref": "#/definitions/exclusiveMinimum"
                },
                "maxLength": {
                    "$ref": "#/definitions/maxLength"
                },
                "minLength": {
                    "$ref": "#/definitions/minLength"
                },
                "pattern": {
                    "$ref": "#/definitions/pattern"
                },
                "maxItems": {
                    "$ref": "#/definitions/maxItems"
                },
                "minItems": {
                    "$ref": "#/definitions/minItems"
                },
                "uniqueItems": {
                    "$ref": "#/definitions/uniqueItems"
                },
                "enum": {
                    "$ref": "#/definitions/enum"
                },
                "multipleOf": {
                    "$ref": "#/definitions/multipleOf"
                },
                "description": {
                    "type": "string"
                }
            },
            "patternProperties": {
                "^x-": {
                    "$ref": "#/definitions/vendorExtension"
                }
            }
        },
        "vendorExtension": {
            "description": "Any property starting with x- is valid.",
            "additionalProperties": true,
            "additionalItems": true
        },
        "bodyParameter": {
            "type": "object",
            "required": [
                "name",
                "in",
                "schema"
            ],
            "patternProperties": {
                "^x-": {
                    "$ref": "#/definitions/vendorExtension"
                }
            },
            "properties": {
                "description": {
                    "type": "string",
                    "description": "A brief description of the parameter. This could contain examples of use.  GitHub Flavored Markdown is allowed."
                },
                "name": {
                    "type": "string",
                    "description": "The name of the parameter."
                },
                "in": {
                    "type": "string",
                    "description": "Determines the location of the parameter.",
                    "enum": [
                        "body"
                    ]
                },
                "required": {
                    "type": "boolean",
                    "description": "Determines whether or not this parameter is required or optional.",
                    "default": false
                },
                "schema": {
                    "$ref": "#/definitions/schema"
                }
            },
            "additionalProperties": false
        },
        "headerParameterSubSchema": {
            "additionalProperties": false,
            "patternProperties": {
                "^x-": {
                    "$ref": "#/definitions/vendorExtension"
                }
            },
            "properties": {
                "required": {
                    "type": "boolean",
                    "description": "Determines whether or not this parameter is required or optional.",
                    "default": false
                },
                "in": {
                    "type": "string",
                    "description": "Determines the location of the parameter.",
                    "enum": [
                        "header"
                    ]
                },
                "description": {
                    "type": "string",
                    "description": "A brief description of the parameter. This could contain examples of use.  GitHub Flavored Markdown is allowed."
                },
                "name": {
                    "type": "string",
                    "description": "The name of the parameter."
                },
                "type": {
                    "type": "string",
                    "enum": [
                        "string",
                        "number",
                        "boolean",
                        "integer",
                        "array"
                    ]
                },
                "format": {
                    "type": "string"
                },
                "items": {
                    "$ref": "#/definitions/primitivesItems"
                },
                "collectionFormat": {
                    "$ref": "#/definitions/collectionFormat"
                },
                "default": {
                    "$ref": "#/definitions/default"
                },
                "maximum": {
                    "$ref": "#/definitions/maximum"
                },
                "exclusiveMaximum": {
                    "$ref": "#/definitions/exclusiveMaximum"
                },
                "minimum": {
                    "$ref": "#/definitions/minimum"
                },
                "exclusiveMinimum": {
                    "$ref": "#/definitions/exclusiveMinimum"
                },
                "maxLength": {
                    "$ref": "#/definitions/maxLength"
                },
                "minLength": {
                    "$ref": "#/definitions/minLength"
                },
                "pattern": {
                    "$ref": "#/definitions/pattern"
                },
                "maxItems": {
                    "$ref": "#/definitions/maxItems"
                },
                "minItems": {
                    "$ref": "#/definitions/minItems"
                },
                "uniqueItems": {
                    "$ref": "#/definitions/uniqueItems"
                },
                "enum": {
                    "$ref": "#/definitions/enum"
                },
                "multipleOf": {
                    "$ref": "#/definitions/multipleOf"
                }
            }
        },
        "queryParameterSubSchema": {
            "additionalProperties": false,
            "patternProperties": {
                "^x-": {
                    "$ref": "#/definitions/vendorExtension"
                }
            },
            "properties": {
                "required": {
                    "type": "boolean",
                    "description": "Determines whether or not this parameter is required or optional.",
                    "default": false
                },
                "in": {
                    "type": "string",
                    "description": "Determines the location of the parameter.",
                    "enum": [
                        "query"
                    ]
                },
                "description": {
                    "type": "string",
                    "description": "A brief description of the parameter. This could contain examples of use.  GitHub Flavored Markdown is allowed."
                },
                "name": {
                    "type": "string",
                    "description": "The name of the parameter."
                },
                "allowEmptyValue": {
                    "type": "boolean",
                    "default": false,
                    "description": "allows sending a parameter by name only or with an empty value."
                },
                "type": {
                    "type": "string",
                    "enum": [
                        "string",
                        "number",
                        "boolean",
                        "integer",
                        "array"
                    ]
                },
                "format": {
                    "type": "string"
                },
                "items": {
                    "$ref": "#/definitions/primitivesItems"
                },
                "collectionFormat": {
                    "$ref": "#/definitions/collectionFormatWithMulti"
                },
                "default": {
                    "$ref": "#/definitions/default"
                },
                "maximum": {
                    "$ref": "#/definitions/maximum"
                },
                "exclusiveMaximum": {
                    "$ref": "#/definitions/exclusiveMaximum"
                },
                "minimum": {
                    "$ref": "#/definitions/minimum"
                },
                "exclusiveMinimum": {
                    "$ref": "#/definitions/exclusiveMinimum"
                },
                "maxLength": {
                    "$ref": "#/definitions/maxLength"
                },
                "minLength": {
                    "$ref": "#/definitions/minLength"
                },
                "pattern": {
                    "$ref": "#/definitions/pattern"
                },
                "maxItems": {
                    "$ref": "#/definitions/maxItems"
                },
                "minItems": {
                    "$ref": "#/definitions/minItems"
                },
                "uniqueItems": {
                    "$ref": "#/definitions/uniqueItems"
                },
                "enum": {
                    "$ref": "#/definitions/enum"
                },
                "multipleOf": {
                    "$ref": "#/definitions/multipleOf"
                }
            }
        },
        "formDataParameterSubSchema": {
            "additionalProperties": false,
            "patternProperties": {
                "^x-": {
                    "$ref": "#/definitions/vendorExtension"
                }
            },
            "properties": {
                "required": {
                    "type": "boolean",
                    "description": "Determines whether or not this parameter is required or optional.",
                    "default": false
                },
                "in": {
                    "type": "string",
                    "description": "Determines the location of the parameter.",
                    "enum": [
                        "formData"
                    ]
                },
                "description": {
                    "type": "string",
                    "description": "A brief description of the parameter. This could contain examples of use.  GitHub Flavored Markdown is allowed."
                },
                "name": {
                    "type": "string",
                    "description": "The name of the parameter."
                },
                "allowEmptyValue": {
                    "type": "boolean",
                    "default": false,
                    "description": "allows sending a parameter by name only or with an empty value."
                },
                "type": {
                    "type": "string",
                    "enum": [
                        "string",
                        "number",
                        "boolean",
                        "integer",
                        "array",
                        "file"
                    ]
                },
                "format": {
                    "type": "string"
                },
                "items": {
                    "$ref": "#/definitions/primitivesItems"
                },
                "collectionFormat": {
                    "$ref": "#/definitions/collectionFormatWithMulti"
                },
                "default": {
                    "$ref": "#/definitions/default"
                },
                "maximum": {
                    "$ref": "#/definitions/maximum"
                },
                "exclusiveMaximum": {
                    "$ref": "#/definitions/exclusiveMaximum"
                },
                "minimum": {
                    "$ref": "#/definitions/minimum"
                },
                "exclusiveMinimum": {
                    "$ref": "#/definitions/exclusiveMinimum"
                },
                "maxLength": {
                    "$ref": "#/definitions/maxLength"
                },
                "minLength": {
                    "$ref": "#/definitions/minLength"
                },
                "pattern": {
                    "$ref": "#/definitions/pattern"
                },
                "maxItems": {
                    "$ref": "#/definitions/maxItems"
                },
                "minItems": {
                    "$ref": "#/definitions/minItems"
                },
                "uniqueItems": {
                    "$ref": "#/definitions/uniqueItems"
                },
                "enum": {
                    "$ref": "#/definitions/enum"
                },
                "multipleOf": {
                    "$ref": "#/definitions/multipleOf"
                }
            }
        },
        "pathParameterSubSchema": {
            "additionalProperties": false,
            "patternProperties": {
                "^x-": {
                    "$ref": "#/definitions/vendorExtension"
                }
            },
            "required": [
                "required"
            ],
            "properties": {
                "required": {
                    "type": "boolean",
                    "enum": [
                        true
                    ],
                    "description": "Determines whether or not this parameter is required or optional."
                },
                "in": {
                    "type": "string",
                    "description": "Determines the location of the parameter.",
                    "enum": [
                        "path"
                    ]
                },
                "description": {
                    "type": "string",
                    "description": "A brief description of the parameter. This could contain examples of use.  GitHub Flavored Markdown is allowed."
                },
                "name": {
                    "type": "string",
                    "description": "The name of the parameter."
                },
                "type": {
                    "type": "string",
                    "enum": [
                        "string",
                        "number",
                        "boolean",
                        "integer",
                        "array"
                    ]
                },
                "format": {
                    "type": "string"
                },
                "items": {
                    "$ref": "#/definitions/primitivesItems"
                },
                "collectionFormat": {
                    "$ref": "#/definitions/collectionFormat"
                },
                "default": {
                    "$ref": "#/definitions/default"
                },
                "maximum": {
                    "$ref": "#/definitions/maximum"
                },
                "exclusiveMaximum": {
                    "$ref": "#/definitions/exclusiveMaximum"
                },
                "minimum": {
                    "$ref": "#/definitions/minimum"
                },
                "exclusiveMinimum": {
                    "$ref": "#/definitions/exclusiveMinimum"
                },
                "maxLength": {
                    "$ref": "#/definitions/maxLength"
                },
                "minLength": {
                    "$ref": "#/definitions/minLength"
                },
                "pattern": {
                    "$ref": "#/definitions/pattern"
                },
                "maxItems": {
                    "$ref": "#/definitions/maxItems"
                },
                "minItems": {
                    "$ref": "#/definitions/minItems"
                },
                "uniqueItems": {
                    "$ref": "#/definitions/uniqueItems"
                },
                "enum": {
                    "$ref": "#/definitions/enum"
                },
                "multipleOf": {
                    "$ref": "#/definitions/multipleOf"
                }
            }
        },
        "nonBodyParameter": {
            "type": "object",
            "required": [
                "name",
                "in",
                "type"
            ],
            "oneOf": [
                {
                    "$ref": "#/definitions/headerParameterSubSchema"
                },
                {
                    "$ref": "#/definitions/formDataParameterSubSchema"
                },
                {
                    "$ref": "#/definitions/queryParameterSubSchema"
                },
                {
                    "$ref": "#/definitions/pathParameterSubSchema"
                }
            ]
        },
        "parameter": {
            "oneOf": [
                {
                    "$ref": "#/definitions/bodyParameter"
                },
                {
                    "$ref": "#/definitions/nonBodyParameter"
                }
            ]
        },
        "schema": {
            "type": "object",
            "description": "A deterministic version of a JSON Schema object.",
            "patternProperties": {
                "^x-": {
                    "$ref": "#/definitions/vendorExtension"
                }
            },
            "properties": {
                "$ref": {
                    "type": "string"
                },
                "format": {
                    "type": "string"
                },
                "title": {
                    "$ref": "http://json-schema.org/draft-04/schema#/properties/title"
                },
                "description": {
                    "$ref": "http://json-schema.org/draft-04/schema#/properties/description"
                },
                "default": {
                    "$ref": "http://json-schema.org/draft-04/schema#/properties/default"
                },
                "multipleOf": {
                    "$ref": "http://json-schema.org/draft-04/schema#/properties/multipleOf"
                },
                "maximum": {
                    "$ref": "http://json-schema.org/draft-04/schema#/properties/maximum"
                },
                "exclusiveMaximum": {
                    "$ref": "http://json-schema.org/draft-04/schema#/properties/exclusiveMaximum"
                },
                "minimum": {
                    "$ref": "http://json-schema.org/draft-04/schema#/properties/minimum"
                },
                "exclusiveMinimum": {
                    "$ref": "http://json-schema.org/draft-04/schema#/properties/exclusiveMinimum"
                },
                "maxLength": {
                    "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveInteger"
                },
                "minLength": {
                    "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveIntegerDefault0"
                },
                "pattern": {
                    "$ref": "http://json-schema.org/draft-04/schema#/properties/pattern"
                },
                "maxItems": {
                    "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveInteger"
                },
                "minItems": {
                    "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveIntegerDefault0"
                },
                "uniqueItems": {
                    "$ref": "http://json-schema.org/draft-04/schema#/properties/uniqueItems"
                },
                "maxProperties": {
                    "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveInteger"
                },
                "minProperties": {
                    "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveIntegerDefault0"
                },
                "required": {
                    "$ref": "http://json-schema.org/draft-04/schema#/definitions/stringArray"
                },
                "enum": {
                    "$ref": "http://json-schema.org/draft-04/schema#/properties/enum"
                },
                "additionalProperties": {
                    "anyOf": [
                        {
                            "$ref": "#/definitions/schema"
                        },
                        {
                            "type": "boolean"
                        }
                    ],
                    "default": {}
                },
                "type": {
                    "$ref": "http://json-schema.org/draft-04/schema#/properties/type"
                },
                "items": {
                    "anyOf": [
                        {
                            "$ref": "#/definitions/schema"
                        },
                        {
                            "type": "array",
                            "minItems": 1,
                            "items": {
                                "$ref": "#/definitions/schema"
                            }
                        }
                    ],
                    "default": {}
                },
                "allOf": {
                    "type": "array",
                    "minItems": 1,
                    "items": {
                        "$ref": "#/definitions/schema"
                    }
                },
                "properties": {
                    "type": "object",
                    "additionalProperties": {
                        "$ref": "#/definitions/schema"
                    },
                    "default": {}
                },
                "discriminator": {
                    "type": "string"
                },
                "readOnly": {
                    "type": "boolean",
                    "default": false
                },
                "xml": {
                    "$ref": "#/definitions/xml"
                },
                "externalDocs": {
                    "$ref": "#/definitions/externalDocs"
                },
                "example": {}
            },
            "additionalProperties": false
        },
        "fileSchema": {
            "type": "object",
            "description": "A deterministic version of a JSON Schema object.",
            "patternProperties": {
                "^x-": {
                    "$ref": "#/definitions/vendorExtension"
                }
            },
            "required": [
                "type"
            ],
            "properties": {
                "format": {
                    "type": "string"
                },
                "title": {
                    "$ref": "http://json-schema.org/draft-04/schema#/properties/title"
                },
                "description": {
                    "$ref": "http://json-schema.org/draft-04/schema#/properties/description"
                },
                "default": {
                    "$ref": "http://json-schema.org/draft-04/schema#/properties/default"
                },
                "required": {
                    "$ref": "http://json-schema.org/draft-04/schema#/definitions/stringArray"
                },
                "type": {
                    "type": "string",
                    "enum": [
                        "file"
                    ]
                },
                "readOnly": {
                    "type": "boolean",
                    "default": false
                },
                "externalDocs": {
                    "$ref": "#/definitions/externalDocs"
                },
                "example": {}
            },
            "additionalProperties": false
        },
        "primitivesItems": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "type": {
                    "type": "string",
                    "enum": [
                        "string",
                        "number",
                        "integer",
                        "boolean",
                        "array"
                    ]
                },
                "format": {
                    "type": "string"
                },
                "items": {
                    "$ref": "#/definitions/primitivesItems"
                },
                "collectionFormat": {
                    "$ref": "#/definitions/collectionFormat"
                },
                "default": {
                    "$ref": "#/definitions/default"
                },
                "maximum": {
                    "$ref": "#/definitions/maximum"
                },
                "exclusiveMaximum": {
                    "$ref": "#/definitions/exclusiveMaximum"
                },
                "minimum": {
                    "$ref": "#/definitions/minimum"
                },
                "exclusiveMinimum": {
                    "$ref": "#/definitions/exclusiveMinimum"
                },
                "maxLength": {
                    "$ref": "#/definitions/maxLength"
                },
                "minLength": {
                    "$ref": "#/definitions/minLength"
                },
                "pattern": {
                    "$ref": "#/definitions/pattern"
                },
                "maxItems": {
                    "$ref": "#/definitions/maxItems"
                },
                "minItems": {
                    "$ref": "#/definitions/minItems"
                },
                "uniqueItems": {
                    "$ref": "#/definitions/uniqueItems"
                },
                "enum": {
                    "$ref": "#/definitions/enum"
                },
                "multipleOf": {
                    "$ref": "#/definitions/multipleOf"
                }
            },
            "patternProperties": {
                "^x-": {
                    "$ref": "#/definitions/vendorExtension"
                }
            }
        },
        "security": {
            "type": "array",
            "items": {
                "$ref": "#/definitions/securityRequirement"
            },
            "uniqueItems": true
        },
        "securityRequirement": {
            "type": "object",
            "additionalProperties": {
                "type": "array",
                "items": {
                    "type": "string"
                },
                "uniqueItems": true
            }
        },
        "xml": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "name": {
                    "type": "string"
                },
                "namespace": {
                    "type": "string"
                },
                "prefix": {
                    "type": "string"
                },
                "attribute": {
                    "type": "boolean",
                    "default": false
                },
                "wrapped": {
                    "type": "boolean",
                    "default": false
                }
            },
            "patternProperties": {
                "^x-": {
                    "$ref": "#/definitions/vendorExtension"
                }
            }
        },
        "tag": {
            "type": "object",
            "additionalProperties": false,
            "required": [
                "name"
            ],
            "properties": {
                "name": {
                    "type": "string"
                },
                "description": {
                    "type": "string"
                },
                "externalDocs": {
                    "$ref": "#/definitions/externalDocs"
                }
            },
            "patternProperties": {
                "^x-": {
                    "$ref": "#/definitions/vendorExtension"
                }
            }
        },
        "securityDefinitions": {
            "type": "object",
            "additionalProperties": {
                "oneOf": [
                    {
                        "$ref": "#/definitions/basicAuthenticationSecurity"
                    },
                    {
                        "$ref": "#/definitions/apiKeySecurity"
                    },
                    {
                        "$ref": "#/definitions/oauth2ImplicitSecurity"
                    },
                    {
                        "$ref": "#/definitions/oauth2PasswordSecurity"
                    },
                    {
                        "$ref": "#/definitions/oauth2ApplicationSecurity"
                    },
                    {
                        "$ref": "#/definitions/oauth2AccessCodeSecurity"
                    }
                ]
            }
        },
        "basicAuthenticationSecurity": {
            "type": "object",
            "additionalProperties": false,
            "required": [
                "type"
            ],
            "properties": {
                "type": {
                    "type": "string",
                    "enum": [
                        "basic"
                    ]
                },
                "description": {
                    "type": "string"
                }
            },
            "patternProperties": {
                "^x-": {
                    "$ref": "#/definitions/vendorExtension"
                }
            }
        },
        "apiKeySecurity": {
            "type": "object",
            "additionalProperties": false,
            "required": [
                "type",
                "name",
                "in"
            ],
            "properties": {
                "type": {
                    "type": "string",
                    "enum": [
                        "apiKey"
                    ]
                },
                "name": {
                    "type": "string"
                },
                "in": {
                    "type": "string",
                    "enum": [
                        "header",
                        "query"
                    ]
                },
                "description": {
                    "type": "string"
                }
            },
            "patternProperties": {
                "^x-": {
                    "$ref": "#/definitions/vendorExtension"
                }
            }
        },
        "oauth2ImplicitSecurity": {
            "type": "object",
            "additionalProperties": false,
            "required": [
                "type",
                "flow",
                "authorizationUrl"
            ],
            "properties": {
                "type": {
                    "type": "string",
                    "enum": [
                        "oauth2"
                    ]
                },
                "flow": {
                    "type": "string",
                    "enum": [
                        "implicit"
                    ]
                },
                "scopes": {
                    "$ref": "#/definitions/oauth2Scopes"
                },
                "authorizationUrl": {
                    "type": "string",
                    "format": "uri"
                },
                "description": {
                    "type": "string"
                }
            },
            "patternProperties": {
                "^x-": {
                    "$ref": "#/definitions/vendorExtension"
                }
            }
        },
        "oauth2PasswordSecurity": {
            "type": "object",
            "additionalProperties": false,
            "required": [
                "type",
                "flow",
                "tokenUrl"
            ],
            "properties": {
                "type": {
                    "type": "string",
                    "enum": [
                        "oauth2"
                    ]
                },
                "flow": {
                    "type": "string",
                    "enum": [
                        "password"
                    ]
                },
                "scopes": {
                    "$ref": "#/definitions/oauth2Scopes"
                },
                "tokenUrl": {
                    "type": "string",
                    "format": "uri"
                },
                "description": {
                    "type": "string"
                }
            },
            "patternProperties": {
                "^x-": {
                    "$ref": "#/definitions/vendorExtension"
                }
            }
        },
        "oauth2ApplicationSecurity": {
            "type": "object",
            "additionalProperties": false,
            "required": [
                "type",
                "flow",
                "tokenUrl"
            ],
            "properties": {
                "type": {
                    "type": "string",
                    "enum": [
                        "oauth2"
                    ]
                },
                "flow": {
                    "type": "string",
                    "enum": [
                        "application"
                    ]
                },
                "scopes": {
                    "$ref": "#/definitions/oauth2Scopes"
                },
                "tokenUrl": {
                    "type": "string",
                    "format": "uri"
                },
                "description": {
                    "type": "string"
                }
            },
            "patternProperties": {
                "^x-": {
                    "$ref": "#/definitions/vendorExtension"
                }
            }
        },
        "oauth2AccessCodeSecurity": {
            "type": "object",
            "additionalProperties": false,
            "required": [
                "type",
                "flow",
                "authorizationUrl",
                "tokenUrl"
            ],
            "properties": {
                "type": {
                    "type": "string",
                    "enum": [
                        "oauth2"
                    ]
                },
                "flow": {
                    "type": "string",
                    "enum": [
                        "accessCode"
                    ]
                },
                "scopes": {
                    "$ref": "#/definitions/oauth2Scopes"
                },
                "authorizationUrl": {
                    "type": "string",
                    "format": "uri"
                },
                "tokenUrl": {
                    "type": "string",
                    "format": "uri"
                },
                "description": {
                    "type": "string"
                }
            },
            "patternProperties": {
                "^x-": {
                    "$ref": "#/definitions/vendorExtension"
                }
            }
        },
        "oauth2Scopes": {
            "type": "object",
            "additionalProperties": {
                "type": "string"
            }
        },
        "mediaTypeList": {
            "type": "array",
            "items": {
                "$ref": "#/definitions/mimeType"
            },
            "uniqueItems": true
        },
        "parametersList": {
            "type": "array",
            "description": "The parameters needed to send a valid API call.",
            "additionalItems": false,
            "items": {
                "oneOf": [
                    {
                        "$ref": "#/definitions/parameter"
                    },
                    {
                        "$ref": "#/definitions/jsonReference"
                    }
                ]
            },
            "uniqueItems": true
        },
        "schemesList": {
            "type": "array",
            "description": "The transfer protocol of the API.",
            "items": {
                "type": "string",
                "enum": [
                    "http",
                    "https",
                    "ws",
                    "wss"
                ]
            },
            "uniqueItems": true
        },
        "collectionFormat": {
            "type": "string",
            "enum": [
                "csv",
                "ssv",
                "tsv",
                "pipes"
            ],
            "default": "csv"
        },
        "collectionFormatWithMulti": {
            "type": "string",
            "enum": [
                "csv",
                "ssv",
                "tsv",
                "pipes",
                "multi"
            ],
            "default": "csv"
        },
        "title": {
            "$ref": "http://json-schema.org/draft-04/schema#/properties/title"
        },
        "description": {
            "$ref": "http://json-schema.org/draft-04/schema#/properties/description"
        },
        "default": {
            "$ref": "http://json-schema.org/draft-04/schema#/properties/default"
        },
        "multipleOf": {
            "$ref": "http://json-schema.org/draft-04/schema#/properties/multipleOf"
        },
        "maximum": {
            "$ref": "http://json-schema.org/draft-04/schema#/properties/maximum"
        },
        "exclusiveMaximum": {
            "$ref": "http://json-schema.org/draft-04/schema#/properties/exclusiveMaximum"
        },
        "minimum": {
            "$ref": "http://json-schema.org/draft-04/schema#/properties/minimum"
        },
        "exclusiveMinimum": {
            "$ref": "http://json-schema.org/draft-04/schema#/properties/exclusiveMinimum"
        },
        "maxLength": {
            "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveInteger"
        },
        "minLength": {
            "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveIntegerDefault0"
        },
        "pattern": {
            "$ref": "http://json-schema.org/draft-04/schema#/properties/pattern"
        },
        "maxItems": {
            "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveInteger"
        },
        "minItems": {
            "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveIntegerDefault0"
        },
        "uniqueItems": {
            "$ref": "http://json-schema.org/draft-04/schema#/properties/uniqueItems"
        },
        "enum": {
            "$ref": "http://json-schema.org/draft-04/schema#/properties/enum"
        },
        "jsonReference": {
            "type": "object",
            "required": [
                "$ref"
            ],
            "additionalProperties": false,
            "properties": {
                "$ref": {
                    "type": "string"
                }
            }
        }
    }
}
