---
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"
    ### disabled, see 
    ### test/unit/plugins/json-schema-validator/test-documents/tag-object-uniqueness.yaml 
    # 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
    errorMessage:
      additionalProperties: "should only have path names that start with `/`"
  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.
        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
      minProperties: 1
      additionalProperties: false
      patternProperties:
        "^x-":
          $ref: "#/definitions/vendorExtension"
    errorMessage:
      minProperties: "should define at least one response"
      not: "should define at least one response, in addition to any vendor extension (`x-*`) fields"
      additionalProperties: "should only have three-digit status codes, `default`, and vendor extensions (`x-*`) as properties"
  responseValue:
    switch:
    - if:
        required: [$ref]
      then:
        $ref: "#/definitions/jsonReference"
    - then:
        $ref: "#/definitions/response"
  response:
    type: object
    required:
    - description
    properties:
      description:
        type: string
      schema:
        switch:
        - if:
            required: [$ref]
          then:
            $ref: "#/definitions/jsonReference"
        - if: 
            required: [type]
            properties: { type: { enum: [file] } }
          then:
            $ref: "#/definitions/fileSchema"
        - then: 
            allOf:
            - $ref: "#/definitions/schema"
            - properties:
                type:
                  enum: [array, boolean, integer, number, object, string, file]
      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:
    type: object
    required:
    - name
    - in
    - type
    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:
    type: object
    required:
    - name
    - in
    - type
    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:
    type: object
    required:
    - name
    - in
    - type
    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:
    type: object
    additionalProperties: false
    patternProperties:
      "^x-":
        $ref: "#/definitions/vendorExtension"
    required:
    - name
    - in
    - type
    - 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"
  parameter:
    switch:
    - if:
        required: [in]
        properties: { in: { enum: [body] } }
      then: { $ref: "#/definitions/bodyParameter" }
    - if:
        required: [in]
        properties: { in: { enum: [header] } }
      then: { $ref: "#/definitions/headerParameterSubSchema" }
    - if:
        required: [in]
        properties: { in: { enum: [formData] } }
      then: { $ref: "#/definitions/formDataParameterSubSchema" }
    - if:
        required: [in]
        properties: { in: { enum: [query] } }
      then: { $ref: "#/definitions/queryParameterSubSchema" }
    - if:
        required: [in]
        properties: { in: { enum: [path] } }
      then: { $ref: "#/definitions/pathParameterSubSchema" }
    - then:
        type: object
        required: [in]
        properties:
          in:
            enum: [body, header, formData, query, path]
  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:
        switch:
        - if: 
            type: object
          then:
            $ref: "#/definitions/schema"
        - then:
            type: boolean
            errorMessage:
              type: "should be either a Schema Object or a boolean value"
        default: {}
      type:
        $ref: http://json-schema.org/draft-04/schema#/properties/type
      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:
      switch:
      - if:
          required: [type]
          properties: { type: { enum: [basic] } }
        then: { $ref: "#/definitions/basicAuthenticationSecurity" }
      - if:
          required: [type]
          properties: { type: { enum: [apiKey] } }
        then: { $ref: "#/definitions/apiKeySecurity" }
      - if:
          required: [type]
          properties: { type: { enum: [oauth2] } }
        then:
          switch:
          - if:
              required: [flow]
              properties: { flow: { enum: [implicit] } }
            then: { $ref: "#/definitions/oauth2ImplicitSecurity" }
          - if:
              required: [flow]
              properties: { flow: { enum: [password] } }
            then: { $ref: "#/definitions/oauth2PasswordSecurity" }
          - if:
              required: [flow]
              properties: { flow: { enum: [application] } }
            then: { $ref: "#/definitions/oauth2ApplicationSecurity" }
          - if:
              required: [flow]
              properties: { flow: { enum: [accessCode] } }
            then: { $ref: "#/definitions/oauth2AccessCodeSecurity" }
          - then: 
              required: [flow]
              properties:
                flow:
                  enum: [implicit, password, application, accessCode]
      - then: 
          required: [type]
          properties:
            type:
              enum: [basic, apiKey, oauth2]
  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
        errorMessage:
          format: should be an absolute 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
        errorMessage:
          format: should be an absolute 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
        errorMessage:
          format: should be an absolute 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
        errorMessage:
          format: should be an absolute URI
      tokenUrl:
        type: string
        format: uri
        errorMessage:
          format: should be an absolute 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:
      switch:
      - if:
          required: [$ref]
        then:
          $ref: "#/definitions/jsonReference"
      - then:
          $ref: "#/definitions/parameter"
    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

