{
    "title": "A JSON Schema for Swagger 2.0 API.",
    "$id": "http://swagger.io/v2/schema.json#",
    "$schema": "http://json-schema.org/draft-07/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.",
        "$ref": "#/definitions/mediaTypeList"
      },
      "produces": {
        "description": "A list of MIME types the API can produce.",
        "$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 parameters"
      },
      "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.",
            "$ref": "#/definitions/mediaTypeList"
          },
          "consumes": {
            "description": "A list of MIME types the API can consume.",
            "$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-07/schema#/properties/title"
          },
          "description": {
            "$ref": "http://json-schema.org/draft-07/schema#/properties/description"
          },
          "default": {
            "$ref": "http://json-schema.org/draft-07/schema#/properties/default"
          },
          "multipleOf": {
            "$ref": "http://json-schema.org/draft-07/schema#/properties/multipleOf"
          },
          "maximum": {
            "$ref": "http://json-schema.org/draft-07/schema#/properties/maximum"
          },
          "exclusiveMaximum": {
            "$ref": "http://json-schema.org/draft-07/schema#/properties/exclusiveMaximum"
          },
          "minimum": {
            "$ref": "http://json-schema.org/draft-07/schema#/properties/minimum"
          },
          "exclusiveMinimum": {
            "$ref": "http://json-schema.org/draft-07/schema#/properties/exclusiveMinimum"
          },
          "maxLength": {
            "$ref": "http://json-schema.org/draft-07/schema#/definitions/nonNegativeInteger"
          },
          "minLength": {
            "$ref": "http://json-schema.org/draft-07/schema#/definitions/nonNegativeIntegerDefault0"
          },
          "pattern": {
            "$ref": "http://json-schema.org/draft-07/schema#/properties/pattern"
          },
          "maxItems": {
            "$ref": "http://json-schema.org/draft-07/schema#/definitions/nonNegativeInteger"
          },
          "minItems": {
            "$ref": "http://json-schema.org/draft-07/schema#/definitions/nonNegativeIntegerDefault0"
          },
          "uniqueItems": {
            "$ref": "http://json-schema.org/draft-07/schema#/properties/uniqueItems"
          },
          "maxProperties": {
            "$ref": "http://json-schema.org/draft-07/schema#/definitions/nonNegativeInteger"
          },
          "minProperties": {
            "$ref": "http://json-schema.org/draft-07/schema#/definitions/nonNegativeIntegerDefault0"
          },
          "required": {
            "$ref": "http://json-schema.org/draft-07/schema#/definitions/stringArray"
          },
          "enum": {
            "$ref": "http://json-schema.org/draft-07/schema#/properties/enum"
          },
          "additionalProperties": {
            "anyOf": [
              {
                "$ref": "#/definitions/schema"
              },
              {
                "type": "boolean"
              }
            ],
            "default": {}
          },
          "type": {
            "$ref": "http://json-schema.org/draft-07/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-07/schema#/properties/title"
          },
          "description": {
            "$ref": "http://json-schema.org/draft-07/schema#/properties/description"
          },
          "default": {
            "$ref": "http://json-schema.org/draft-07/schema#/properties/default"
          },
          "required": {
            "$ref": "http://json-schema.org/draft-07/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-07/schema#/properties/title"
      },
      "description": {
        "$ref": "http://json-schema.org/draft-07/schema#/properties/description"
      },
      "default": {
        "$ref": "http://json-schema.org/draft-07/schema#/properties/default"
      },
      "multipleOf": {
        "$ref": "http://json-schema.org/draft-07/schema#/properties/multipleOf"
      },
      "maximum": {
        "$ref": "http://json-schema.org/draft-07/schema#/properties/maximum"
      },
      "exclusiveMaximum": {
        "$ref": "http://json-schema.org/draft-07/schema#/properties/exclusiveMaximum"
      },
      "minimum": {
        "$ref": "http://json-schema.org/draft-07/schema#/properties/minimum"
      },
      "exclusiveMinimum": {
        "$ref": "http://json-schema.org/draft-07/schema#/properties/exclusiveMinimum"
      },
      "maxLength": {
        "$ref": "http://json-schema.org/draft-07/schema#/definitions/nonNegativeInteger"
      },
      "minLength": {
        "$ref": "http://json-schema.org/draft-07/schema#/definitions/nonNegativeIntegerDefault0"
      },
      "pattern": {
        "$ref": "http://json-schema.org/draft-07/schema#/properties/pattern"
      },
      "maxItems": {
        "$ref": "http://json-schema.org/draft-07/schema#/definitions/nonNegativeInteger"
      },
      "minItems": {
        "$ref": "http://json-schema.org/draft-07/schema#/definitions/nonNegativeIntegerDefault0"
      },
      "uniqueItems": {
        "$ref": "http://json-schema.org/draft-07/schema#/properties/uniqueItems"
      },
      "enum": {
        "$ref": "http://json-schema.org/draft-07/schema#/properties/enum"
      },
      "jsonReference": {
        "type": "object",
        "required": [
          "$ref"
        ],
        "additionalProperties": false,
        "properties": {
          "$ref": {
            "type": "string"
          }
        }
      }
    }
  }