openapi: 3.0.1
info:
  title: OpenAPI Petstore
  description: 'This spec is mainly for testing Petstore server and contains fake
    endpoints, models. Please do not use this for any other purpose. Special characters:
    " \'
  license:
    name: Apache-2.0
    url: http://www.apache.org/licenses/LICENSE-2.0.html
  version: 1.0.0
servers:
- url: http://petstore.swagger.io:80/v2
tags:
- name: pet
  description: Everything about your Pets
- name: store
  description: Access to Petstore orders
- name: user
  description: Operations about user
paths:
  /pet:
    put:
      tags:
      - pet
      summary: Update an existing pet
      operationId: updatePet
      requestBody:
        description: Pet object that needs to be added to the store
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Pet'
          application/xml:
            schema:
              $ref: '#/components/schemas/Pet'
        required: true
      responses:
        200:
          description: successful operation
          content: {}
        400:
          description: Invalid ID supplied
          content: {}
        404:
          description: Pet not found
          content: {}
        405:
          description: Validation exception
          content: {}
      security:
      - petstore_auth:
        - write:pets
        - read:pets
      x-codegen-request-body-name: body
    post:
      tags:
      - pet
      summary: Add a new pet to the store
      operationId: addPet
      requestBody:
        description: Pet object that needs to be added to the store
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Pet'
          application/xml:
            schema:
              $ref: '#/components/schemas/Pet'
        required: true
      responses:
        200:
          description: successful operation
          content: {}
        405:
          description: Invalid input
          content: {}
      security:
      - petstore_auth:
        - write:pets
        - read:pets
      x-codegen-request-body-name: body
  /pet/findByStatus:
    get:
      tags:
      - pet
      summary: Finds Pets by status
      description: Multiple status values can be provided with comma separated strings
      operationId: findPetsByStatus
      parameters:
      - name: status
        in: query
        description: Status values that need to be considered for filter
        required: true
        style: form
        explode: false
        schema:
          type: array
          items:
            type: string
            default: available
            enum:
            - available
            - pending
            - sold
      responses:
        200:
          description: successful operation
          content:
            application/xml:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Pet'
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Pet'
        400:
          description: Invalid status value
          content: {}
      security:
      - petstore_auth:
        - write:pets
        - read:pets
      x-spring-paginated: true
  /pet/all:
    get:
      tags:
      - pet
      summary: List all pets
      operationId: listAllPets
      responses:
        200:
          description: successful operation
          content:
            application/xml:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Pet'
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Pet'
        400:
          description: Invalid status value
          content: { }
      security:
      - petstore_auth:
        - write:pets
        - read:pets
      x-spring-paginated: true
  /pet/findByTags:
    get:
      tags:
      - pet
      summary: Finds Pets by tags
      description: Multiple tags can be provided with comma separated strings. Use
        tag1, tag2, tag3 for testing.
      operationId: findPetsByTags
      parameters:
      - name: tags
        in: query
        description: Tags to filter by
        required: true
        style: form
        explode: false
        schema:
          type: array
          items:
            type: string
      responses:
        200:
          description: successful operation
          content:
            application/xml:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Pet'
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Pet'
        400:
          description: Invalid tag value
          content: {}
      deprecated: true
      security:
      - petstore_auth:
        - write:pets
        - read:pets
      x-spring-paginated: true
  /pet/{petId}:
    get:
      tags:
      - pet
      summary: Find pet by ID
      description: Returns a single pet
      operationId: getPetById
      parameters:
      - name: petId
        in: path
        description: ID of pet to return
        required: true
        schema:
          type: integer
          format: int64
      responses:
        200:
          description: successful operation
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/Pet'
            application/json:
              schema:
                $ref: '#/components/schemas/Pet'
        400:
          description: Invalid ID supplied
          content: {}
        404:
          description: Pet not found
          content: {}
      security:
      - api_key: []
    post:
      tags:
      - pet
      summary: Updates a pet in the store with form data
      operationId: updatePetWithForm
      parameters:
      - name: petId
        in: path
        description: ID of pet that needs to be updated
        required: true
        schema:
          type: integer
          format: int64
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              properties:
                name:
                  type: string
                  description: Updated name of the pet
                status:
                  type: string
                  description: Updated status of the pet
      responses:
        405:
          description: Invalid input
          content: {}
      security:
      - petstore_auth:
        - write:pets
        - read:pets
    delete:
      tags:
      - pet
      summary: Deletes a pet
      operationId: deletePet
      parameters:
      - name: api_key
        in: header
        schema:
          type: string
      - name: petId
        in: path
        description: Pet id to delete
        required: true
        schema:
          type: integer
          format: int64
      responses:
        200:
          description: successful operation
          content: {}
        400:
          description: Invalid pet value
          content: {}
      security:
      - petstore_auth:
        - write:pets
        - read:pets
  /pet/{petId}/uploadImage:
    post:
      tags:
      - pet
      summary: uploads an image
      operationId: uploadFile
      parameters:
      - name: petId
        in: path
        description: ID of pet to update
        required: true
        schema:
          type: integer
          format: int64
      requestBody:
        content:
          multipart/form-data:
            schema:
              properties:
                additionalMetadata:
                  type: string
                  description: Additional data to pass to server
                file:
                  type: string
                  description: file to upload
                  format: binary
      responses:
        200:
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
      security:
      - petstore_auth:
        - write:pets
        - read:pets
  /store/inventory:
    get:
      tags:
      - store
      summary: Returns pet inventories by status
      description: Returns a map of status codes to quantities
      operationId: getInventory
      responses:
        200:
          description: successful operation
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  type: integer
                  format: int32
      security:
      - api_key: []
  /store/order:
    post:
      tags:
      - store
      summary: Place an order for a pet
      operationId: placeOrder
      requestBody:
        description: order placed for purchasing the pet
        content:
          '*/*':
            schema:
              $ref: '#/components/schemas/Order'
        required: true
      responses:
        200:
          description: successful operation
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/Order'
            application/json:
              schema:
                $ref: '#/components/schemas/Order'
        400:
          description: Invalid Order
          content: {}
      x-codegen-request-body-name: body
  /store/order/{order_id}:
    get:
      tags:
      - store
      summary: Find purchase order by ID
      description: For valid response try integer IDs with value <= 5 or > 10. Other
        values will generate exceptions
      operationId: getOrderById
      parameters:
      - name: order_id
        in: path
        description: ID of pet that needs to be fetched
        required: true
        schema:
          maximum: 5
          minimum: 1
          type: integer
          format: int64
      responses:
        200:
          description: successful operation
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/Order'
            application/json:
              schema:
                $ref: '#/components/schemas/Order'
        400:
          description: Invalid ID supplied
          content: {}
        404:
          description: Order not found
          content: {}
    delete:
      tags:
      - store
      summary: Delete purchase order by ID
      description: For valid response try integer IDs with value < 1000. Anything
        above 1000 or nonintegers will generate API errors
      operationId: deleteOrder
      parameters:
      - name: order_id
        in: path
        description: ID of the order that needs to be deleted
        required: true
        schema:
          type: string
      responses:
        400:
          description: Invalid ID supplied
          content: {}
        404:
          description: Order not found
          content: {}
  /user:
    post:
      tags:
      - user
      summary: Create user
      description: This can only be done by the logged in user.
      operationId: createUser
      requestBody:
        description: Created user object
        content:
          '*/*':
            schema:
              $ref: '#/components/schemas/User'
        required: true
      responses:
        default:
          description: successful operation
          content: {}
      x-codegen-request-body-name: body
  /user/createWithArray:
    post:
      tags:
      - user
      summary: Creates list of users with given input array
      operationId: createUsersWithArrayInput
      requestBody:
        description: List of user object
        content:
          '*/*':
            schema:
              type: array
              items:
                $ref: '#/components/schemas/User'
        required: true
      responses:
        default:
          description: successful operation
          content: {}
      x-codegen-request-body-name: body
  /user/createWithList:
    post:
      tags:
      - user
      summary: Creates list of users with given input array
      operationId: createUsersWithListInput
      requestBody:
        description: List of user object
        content:
          '*/*':
            schema:
              type: array
              items:
                $ref: '#/components/schemas/User'
        required: true
      responses:
        default:
          description: successful operation
          content: {}
      x-codegen-request-body-name: body
  /user/login:
    get:
      tags:
      - user
      summary: Logs user into the system
      operationId: loginUser
      parameters:
      - name: username
        in: query
        description: The user name for login
        required: true
        schema:
          type: string
      - name: password
        in: query
        description: The password for login in clear text
        required: true
        schema:
          type: string
      responses:
        200:
          description: successful operation
          headers:
            X-Rate-Limit:
              description: calls per hour allowed by the user
              schema:
                type: integer
                format: int32
            X-Expires-After:
              description: date in UTC when token expires
              schema:
                type: string
                format: date-time
          content:
            application/xml:
              schema:
                type: string
            application/json:
              schema:
                type: string
        400:
          description: Invalid username/password supplied
          content: {}
  /user/logout:
    get:
      tags:
      - user
      summary: Logs out current logged in user session
      operationId: logoutUser
      responses:
        default:
          description: successful operation
          content: {}
  /user/{username}:
    get:
      tags:
      - user
      summary: Get user by user name
      operationId: getUserByName
      parameters:
      - name: username
        in: path
        description: The name that needs to be fetched. Use user1 for testing.
        required: true
        schema:
          type: string
      responses:
        200:
          description: successful operation
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/User'
            application/json:
              schema:
                $ref: '#/components/schemas/User'
        400:
          description: Invalid username supplied
          content: {}
        404:
          description: User not found
          content: {}
    put:
      tags:
      - user
      summary: Updated user
      description: This can only be done by the logged in user.
      operationId: updateUser
      parameters:
      - name: username
        in: path
        description: name that need to be deleted
        required: true
        schema:
          type: string
      requestBody:
        description: Updated user object
        content:
          '*/*':
            schema:
              $ref: '#/components/schemas/User'
        required: true
      responses:
        400:
          description: Invalid user supplied
          content: {}
        404:
          description: User not found
          content: {}
      x-codegen-request-body-name: body
    delete:
      tags:
      - user
      summary: Delete user
      description: This can only be done by the logged in user.
      operationId: deleteUser
      parameters:
      - name: username
        in: path
        description: The name that needs to be deleted
        required: true
        schema:
          type: string
      responses:
        400:
          description: Invalid username supplied
          content: {}
        404:
          description: User not found
          content: {}
  /fake_classname_test:
    patch:
      tags:
      - fake_classname_tags 123#$%^
      summary: To test class name in snake case
      description: To test class name in snake case
      operationId: testClassname
      requestBody:
        description: client model
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Client'
        required: true
      responses:
        200:
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Client'
      security:
      - api_key_query: []
      x-codegen-request-body-name: body
  /fake:
    get:
      tags:
      - fake
      summary: To test enum parameters
      description: To test enum parameters
      operationId: testEnumParameters
      parameters:
      - name: enum_header_string_array
        in: header
        description: Header parameter enum test (string array)
        style: simple
        explode: false
        schema:
          type: array
          items:
            type: string
            default: $
            enum:
            - '>'
            - $
      - name: enum_header_string
        in: header
        description: Header parameter enum test (string)
        schema:
          type: string
          default: -efg
          enum:
          - _abc
          - -efg
          - (xyz)
      - name: enum_query_string_array
        in: query
        description: Query parameter enum test (string array)
        style: form
        explode: false
        schema:
          type: array
          items:
            type: string
            default: $
            enum:
            - '>'
            - $
      - name: enum_query_string
        in: query
        description: Query parameter enum test (string)
        schema:
          type: string
          default: -efg
          enum:
          - _abc
          - -efg
          - (xyz)
      - name: enum_query_integer
        in: query
        description: Query parameter enum test (double)
        schema:
          type: integer
          format: int32
          enum:
          - 1
          - -2
      - name: enum_query_double
        in: query
        description: Query parameter enum test (double)
        schema:
          type: number
          format: double
          enum:
          - 1.1
          - -1.2
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              properties:
                enum_form_string_array:
                  type: array
                  description: Form parameter enum test (string array)
                  items:
                    type: string
                    default: $
                    enum:
                    - '>'
                    - $
                enum_form_string:
                  type: string
                  description: Form parameter enum test (string)
                  default: -efg
                  enum:
                  - _abc
                  - -efg
                  - (xyz)
      responses:
        400:
          description: Invalid request
          content: {}
        404:
          description: Not found
          content: {}
    post:
      tags:
      - fake
      summary: |
        Fake endpoint for testing various parameters
        假端點
        偽のエンドポイント
        가짜 엔드 포인트
      description: |
        Fake endpoint for testing various parameters
        假端點
        偽のエンドポイント
        가짜 엔드 포인트
      operationId: testEndpointParameters
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              required:
              - byte
              - double
              - number
              - pattern_without_delimiter
              properties:
                integer:
                  maximum: 100
                  minimum: 10
                  type: integer
                  description: None
                  format: int32
                int32:
                  maximum: 200
                  minimum: 20
                  type: integer
                  description: None
                  format: int32
                int64:
                  type: integer
                  description: None
                  format: int64
                number:
                  maximum: 543.2
                  minimum: 32.1
                  type: number
                  description: None
                float:
                  maximum: 987.6
                  type: number
                  description: None
                  format: float
                double:
                  maximum: 123.4
                  minimum: 67.8
                  type: number
                  description: None
                  format: double
                string:
                  pattern: /[a-z]/i
                  type: string
                  description: None
                pattern_without_delimiter:
                  pattern: ^[A-Z].*
                  type: string
                  description: None
                byte:
                  type: string
                  description: None
                  format: byte
                binary:
                  type: string
                  description: None
                  format: binary
                date:
                  type: string
                  description: None
                  format: date
                dateTime:
                  type: string
                  description: None
                  format: date-time
                password:
                  maxLength: 64
                  minLength: 10
                  type: string
                  description: None
                  format: password
                callback:
                  type: string
                  description: None
        required: true
      responses:
        400:
          description: Invalid username supplied
          content: {}
        404:
          description: User not found
          content: {}
      security:
      - http_basic_test: []
    delete:
      tags:
      - fake
      summary: Fake endpoint to test group parameters (optional)
      description: Fake endpoint to test group parameters (optional)
      operationId: testGroupParameters
      parameters:
      - name: required_string_group
        in: query
        description: Required String in group parameters
        required: true
        schema:
          type: integer
      - name: required_boolean_group
        in: header
        description: Required Boolean in group parameters
        required: true
        schema:
          type: boolean
      - name: required_int64_group
        in: query
        description: Required Integer in group parameters
        required: true
        schema:
          type: integer
          format: int64
      - name: string_group
        in: query
        description: String in group parameters
        schema:
          type: integer
      - name: boolean_group
        in: header
        description: Boolean in group parameters
        schema:
          type: boolean
      - name: int64_group
        in: query
        description: Integer in group parameters
        schema:
          type: integer
          format: int64
      responses:
        400:
          description: Something wrong
          content: {}
      x-group-parameters: true
    patch:
      tags:
      - fake
      summary: To test "client" model
      description: To test "client" model
      operationId: testClientModel
      requestBody:
        description: client model
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Client'
        required: true
      responses:
        200:
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Client'
      x-codegen-request-body-name: body
  /fake/outer/number:
    post:
      tags:
      - fake
      description: Test serialization of outer number types
      operationId: fakeOuterNumberSerialize
      requestBody:
        description: Input number as post body
        content:
          '*/*':
            schema:
              $ref: '#/components/schemas/OuterNumber'
        required: false
      responses:
        200:
          description: Output number
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/OuterNumber'
      x-codegen-request-body-name: body
  /fake/outer/string:
    post:
      tags:
      - fake
      description: Test serialization of outer string types
      operationId: fakeOuterStringSerialize
      requestBody:
        description: Input string as post body
        content:
          '*/*':
            schema:
              $ref: '#/components/schemas/OuterString'
        required: false
      responses:
        200:
          description: Output string
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/OuterString'
      x-codegen-request-body-name: body
  /fake/outer/boolean:
    post:
      tags:
      - fake
      description: Test serialization of outer boolean types
      operationId: fakeOuterBooleanSerialize
      requestBody:
        description: Input boolean as post body
        content:
          '*/*':
            schema:
              $ref: '#/components/schemas/OuterBoolean'
        required: false
      responses:
        200:
          description: Output boolean
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/OuterBoolean'
      x-codegen-request-body-name: body
  /fake/outer/composite:
    post:
      tags:
      - fake
      description: Test serialization of object with outer number type
      operationId: fakeOuterCompositeSerialize
      requestBody:
        description: Input composite as post body
        content:
          '*/*':
            schema:
              $ref: '#/components/schemas/OuterComposite'
        required: false
      responses:
        200:
          description: Output composite
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/OuterComposite'
      x-codegen-request-body-name: body
  /fake/jsonFormData:
    get:
      tags:
      - fake
      summary: test json serialization of form data
      operationId: testJsonFormData
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              required:
              - param
              - param2
              properties:
                param:
                  type: string
                  description: field1
                param2:
                  type: string
                  description: field2
        required: true
      responses:
        200:
          description: successful operation
          content: {}
  /fake/inline-additionalProperties:
    post:
      tags:
      - fake
      summary: test inline additionalProperties
      operationId: testInlineAdditionalProperties
      requestBody:
        description: request body
        content:
          application/json:
            schema:
              type: object
              additionalProperties:
                type: string
        required: true
      responses:
        200:
          description: successful operation
          content: {}
      x-codegen-request-body-name: param
  /fake/body-with-query-params:
    put:
      tags:
      - fake
      operationId: testBodyWithQueryParams
      parameters:
      - name: query
        in: query
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/User'
        required: true
      responses:
        200:
          description: Success
          content: {}
      x-codegen-request-body-name: body
  /fake/create_xml_item:
    post:
      tags:
      - fake
      summary: creates an XmlItem
      description: this route creates an XmlItem
      operationId: createXmlItem
      requestBody:
        description: XmlItem Body
        content:
          application/xml:
            schema:
              $ref: '#/components/schemas/XmlItem'
          application/xml; charset=utf-8:
            schema:
              $ref: '#/components/schemas/XmlItem'
          application/xml; charset=utf-16:
            schema:
              $ref: '#/components/schemas/XmlItem'
          text/xml:
            schema:
              $ref: '#/components/schemas/XmlItem'
          text/xml; charset=utf-8:
            schema:
              $ref: '#/components/schemas/XmlItem'
          text/xml; charset=utf-16:
            schema:
              $ref: '#/components/schemas/XmlItem'
        required: true
      responses:
        200:
          description: successful operation
          content: {}
      x-codegen-request-body-name: XmlItem
  /another-fake/dummy:
    patch:
      tags:
      - $another-fake?
      summary: To test special tags
      description: To test special tags and operation ID starting with number
      operationId: 123_test_@#$%_special_tags
      requestBody:
        description: client model
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Client'
        required: true
      responses:
        200:
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Client'
      x-codegen-request-body-name: body
  /fake/body-with-file-schema:
    put:
      tags:
      - fake
      description: For this test, the body for this request much reference a schema
        named `File`.
      operationId: testBodyWithFileSchema
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FileSchemaTestClass'
        required: true
      responses:
        200:
          description: Success
          content: {}
      x-codegen-request-body-name: body
  /fake/test-query-parameters:
    put:
      tags:
      - fake
      description: To test the collection format in query parameters
      operationId: testQueryParameterCollectionFormat
      parameters:
      - name: pipe
        in: query
        required: true
        style: form
        explode: false
        schema:
          type: array
          items:
            type: string
      - name: ioutil
        in: query
        required: true
        schema:
          type: array
          items:
            type: string
      - name: http
        in: query
        required: true
        style: spaceDelimited
        schema:
          type: array
          items:
            type: string
      - name: url
        in: query
        required: true
        style: form
        explode: false
        schema:
          type: array
          items:
            type: string
      - name: context
        in: query
        required: true
        style: form
        explode: true
        schema:
          type: array
          items:
            type: string
      responses:
        200:
          description: Success
          content: {}
  /fake/{petId}/uploadImageWithRequiredFile:
    post:
      tags:
      - pet
      summary: uploads an image (required)
      operationId: uploadFileWithRequiredFile
      parameters:
      - name: petId
        in: path
        description: ID of pet to update
        required: true
        schema:
          type: integer
          format: int64
      requestBody:
        content:
          multipart/form-data:
            schema:
              required:
              - requiredFile
              properties:
                additionalMetadata:
                  type: string
                  description: Additional data to pass to server
                requiredFile:
                  type: string
                  description: file to upload
                  format: binary
        required: true
      responses:
        200:
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
      security:
      - petstore_auth:
        - write:pets
        - read:pets
  /versioning/headers:
    post:
      tags:
      - versioning
      operationId: versioningHeaders
      parameters:
      - name: VersionWithDefaultValue
        in: header
        required: true
        schema:
          type: string
          default: V1
          x-version-param: true
        x-version-param: true
      - name: VersionNoDefaultValue
        in: header
        required: true
        schema:
          type: string
          x-version-param: true
        x-version-param: true
      - name: petId
        in: path
        description: ID of pet to update
        required: true
        schema:
          type: integer
          format: int64
      responses:
        200:
          description: successful operation
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /versioning/query-params:
    post:
      tags:
      - versioning
      operationId: versioningQueryParams
      parameters:
      - name: VersionWithDefaultValue
        in: query
        required: true
        schema:
          type: string
          default: V1
          x-version-param: true
        x-version-param: true
      - name: VersionNoDefaultValue
        in: query
        required: true
        schema:
          type: string
          x-version-param: true
        x-version-param: true
      - name: petId
        in: path
        description: ID of pet to update
        required: true
        schema:
          type: integer
          format: int64
      responses:
        200:
          description: successful operation
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /versioning/mix:
    post:
      tags:
      - versioning
      operationId: versioningMix
      parameters:
      - name: VersionWithDefaultValueQuery
        in: query
        required: true
        schema:
          type: string
          default: V1
          x-version-param: true
        x-version-param: true
      - name: VersionNoDefaultValueQuery
        in: query
        required: true
        schema:
          type: string
          x-version-param: true
        x-version-param: true
      - name: VersionWithDefaultValueHeader
        in: header
        required: true
        schema:
          type: string
          default: V1
          x-version-param: true
        x-version-param: true
      - name: VersionNoDefaultValueHeader
        in: header
        required: true
        schema:
          type: string
          x-version-param: true
        x-version-param: true
      - name: petId
        in: path
        description: ID of pet to update
        required: true
        schema:
          type: integer
          format: int64
      responses:
        200:
          description: successful operation
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiResponse'
components:
  schemas:
    Order:
      type: object
      properties:
        id:
          type: integer
          format: int64
        petId:
          type: integer
          format: int64
        quantity:
          type: integer
          format: int32
        shipDate:
          type: string
          format: date-time
        status:
          type: string
          description: Order Status
          enum:
          - placed
          - approved
          - delivered
        complete:
          type: boolean
          default: false
      xml:
        name: Order
    Category:
      required:
      - name
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
          default: default-name
      xml:
        name: Category
    User:
      type: object
      properties:
        id:
          type: integer
          format: int64
          x-is-unique: true
        username:
          type: string
        firstName:
          type: string
        lastName:
          type: string
        email:
          type: string
        password:
          type: string
        phone:
          type: string
        userStatus:
          type: integer
          description: User Status
          format: int32
      xml:
        name: User
    Tag:
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
      xml:
        name: Tag
    Pet:
      required:
      - name
      - photoUrls
      type: object
      properties:
        id:
          type: integer
          format: int64
          x-is-unique: true
        category:
          $ref: '#/components/schemas/Category'
        name:
          type: string
          example: doggie
        photoUrls:
          type: array
          xml:
            name: photoUrl
            wrapped: true
          items:
            type: string
        tags:
          type: array
          xml:
            name: tag
            wrapped: true
          items:
            $ref: '#/components/schemas/Tag'
        status:
          type: string
          description: pet status in the store
          enum:
          - available
          - pending
          - sold
      xml:
        name: Pet
    ApiResponse:
      type: object
      properties:
        code:
          type: integer
          format: int32
        type:
          type: string
        message:
          type: string
    _special_model_name_:
      type: object
      properties:
        $special[property.name]:
          type: integer
          format: int64
      xml:
        name: $special[model.name]
    Return:
      type: object
      properties:
        return:
          type: integer
          format: int32
      description: Model for testing reserved words
      xml:
        name: Return
    Name:
      required:
      - name
      type: object
      properties:
        name:
          type: integer
          format: int32
        snake_case:
          type: integer
          format: int32
          readOnly: true
        property:
          type: string
        123Number:
          type: integer
          readOnly: true
      description: Model for testing model name same as property name
      xml:
        name: Name
    200_response:
      type: object
      properties:
        name:
          type: integer
          format: int32
        class:
          type: string
      description: Model for testing model name starting with number
      xml:
        name: Name
    ClassModel:
      type: object
      properties:
        _class:
          type: string
      description: Model for testing model with "_class" property
    Dog:
      allOf:
      - $ref: '#/components/schemas/Animal'
      - type: object
        properties:
          breed:
            type: string
    Cat:
      allOf:
      - $ref: '#/components/schemas/Animal'
      - type: object
        properties:
          declawed:
            type: boolean
    Animal:
      required:
      - className
      type: object
      properties:
        className:
          type: string
        color:
          type: string
          default: red
      discriminator:
        propertyName: className
    AnimalFarm:
      type: array
      items:
        $ref: '#/components/schemas/Animal'
    format_test:
      required:
      - byte
      - date
      - number
      - password
      type: object
      properties:
        integer:
          maximum: 1E+2
          minimum: 1E+1
          type: integer
        int32:
          maximum: 2E+2
          minimum: 2E+1
          type: integer
          format: int32
        int64:
          type: integer
          format: int64
        number:
          maximum: 543.2
          minimum: 32.1
          type: number
        float:
          maximum: 987.6
          minimum: 54.3
          type: number
          format: float
        double:
          maximum: 123.4
          minimum: 67.8
          type: number
          format: double
        string:
          pattern: /[a-z]/i
          type: string
        byte:
          pattern: ^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$
          type: string
          format: byte
        binary:
          type: string
          format: binary
        date:
          type: string
          format: date
        dateTime:
          type: string
          format: date-time
        uuid:
          type: string
          format: uuid
          example: 72f98069-206d-4f12-9f12-3d1e525a8e84
        password:
          maxLength: 64
          minLength: 10
          type: string
          format: password
        BigDecimal:
          type: string
          format: number
    EnumClass:
      type: string
      default: -efg
      enum:
      - _abc
      - -efg
      - (xyz)
    Enum_Test:
      required:
      - enum_string_required
      type: object
      properties:
        enum_string:
          type: string
          enum:
          - UPPER
          - lower
          - ""
        enum_string_required:
          type: string
          enum:
          - UPPER
          - lower
          - ""
        enum_integer:
          type: integer
          format: int32
          enum:
          - 1
          - -1
        enum_number:
          type: number
          format: double
          enum:
          - 1.1
          - -1.2
        outerEnum:
          $ref: '#/components/schemas/OuterEnum'
    AdditionalPropertiesClass:
      type: object
      properties:
        map_string:
          type: object
          additionalProperties:
            type: string
        map_number:
          type: object
          additionalProperties:
            type: number
        map_integer:
          type: object
          additionalProperties:
            type: integer
        map_boolean:
          type: object
          additionalProperties:
            type: boolean
        map_array_integer:
          type: object
          additionalProperties:
            type: array
            items:
              type: integer
        map_array_anytype:
          type: object
          additionalProperties:
            type: array
            items:
              type: object
              properties: {}
        map_map_string:
          type: object
          additionalProperties:
            type: object
            additionalProperties:
              type: string
        map_map_anytype:
          type: object
          additionalProperties:
            type: object
            additionalProperties:
              type: object
              properties: {}
        anytype_1:
          type: object
          properties: {}
        anytype_2:
          type: object
        anytype_3:
          type: object
          properties: {}
    AdditionalPropertiesString:
      type: object
      properties:
        name:
          type: string
      additionalProperties:
        type: string
    AdditionalPropertiesInteger:
      type: object
      properties:
        name:
          type: string
      additionalProperties:
        type: integer
    AdditionalPropertiesNumber:
      type: object
      properties:
        name:
          type: string
      additionalProperties:
        type: number
    AdditionalPropertiesBoolean:
      type: object
      properties:
        name:
          type: string
      additionalProperties:
        type: boolean
    AdditionalPropertiesArray:
      type: object
      properties:
        name:
          type: string
      additionalProperties:
        type: array
        items:
          type: object
          properties: {}
    AdditionalPropertiesObject:
      type: object
      properties:
        name:
          type: string
      additionalProperties:
        type: object
        additionalProperties:
          type: object
          properties: {}
    AdditionalPropertiesAnyType:
      type: object
      properties:
        name:
          type: string
      additionalProperties:
        type: object
        properties: {}
    MixedPropertiesAndAdditionalPropertiesClass:
      type: object
      properties:
        uuid:
          type: string
          format: uuid
        dateTime:
          type: string
          format: date-time
        map:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/Animal'
    List:
      type: object
      properties:
        123-list:
          type: string
    Client:
      type: object
      properties:
        client:
          type: string
    ReadOnlyFirst:
      type: object
      properties:
        bar:
          type: string
          readOnly: true
        baz:
          type: string
    hasOnlyReadOnly:
      type: object
      properties:
        bar:
          type: string
          readOnly: true
        foo:
          type: string
          readOnly: true
    Capitalization:
      type: object
      properties:
        smallCamel:
          type: string
        CapitalCamel:
          type: string
        small_Snake:
          type: string
        Capital_Snake:
          type: string
        SCA_ETH_Flow_Points:
          type: string
        ATT_NAME:
          type: string
          description: |
            Name of the pet
    MapTest:
      type: object
      properties:
        map_map_of_string:
          type: object
          additionalProperties:
            type: object
            additionalProperties:
              type: string
        map_of_enum_string:
          type: object
          additionalProperties:
            type: string
            enum:
            - UPPER
            - lower
        direct_map:
          type: object
          additionalProperties:
            type: boolean
        indirect_map:
          $ref: '#/components/schemas/StringBooleanMap'
    ArrayTest:
      type: object
      properties:
        array_of_string:
          type: array
          items:
            type: string
        array_array_of_integer:
          type: array
          items:
            type: array
            items:
              type: integer
              format: int64
        array_array_of_model:
          type: array
          items:
            type: array
            items:
              $ref: '#/components/schemas/ReadOnlyFirst'
    NumberOnly:
      type: object
      properties:
        JustNumber:
          type: number
    ArrayOfNumberOnly:
      type: object
      properties:
        ArrayNumber:
          type: array
          items:
            type: number
    ArrayOfArrayOfNumberOnly:
      type: object
      properties:
        ArrayArrayNumber:
          type: array
          items:
            type: array
            items:
              type: number
    EnumArrays:
      type: object
      properties:
        just_symbol:
          type: string
          enum:
          - '>='
          - $
        array_enum:
          type: array
          items:
            type: string
            enum:
            - fish
            - crab
    OuterEnum:
      type: string
      enum:
      - placed
      - approved
      - delivered
    OuterComposite:
      type: object
      properties:
        my_number:
          $ref: '#/components/schemas/OuterNumber'
        my_string:
          $ref: '#/components/schemas/OuterString'
        my_boolean:
          $ref: '#/components/schemas/OuterBoolean'
    OuterNumber:
      type: number
    OuterString:
      type: string
    OuterBoolean:
      type: boolean
      x-codegen-body-parameter-name: boolean_post_body
    StringBooleanMap:
      type: object
      additionalProperties:
        type: boolean
    FileSchemaTestClass:
      type: object
      properties:
        file:
          $ref: '#/components/schemas/File'
        files:
          type: array
          items:
            $ref: '#/components/schemas/File'
    File:
      type: object
      properties:
        sourceURI:
          type: string
          description: Test capitalization
      description: Must be named `File` for test.
    TypeHolderDefault:
      required:
      - array_item
      - bool_item
      - integer_item
      - number_item
      - string_item
      type: object
      properties:
        string_item:
          type: string
          default: what
        number_item:
          type: number
        integer_item:
          type: integer
        bool_item:
          type: boolean
          default: true
        array_item:
          type: array
          items:
            type: integer
    TypeHolderExample:
      required:
      - array_item
      - bool_item
      - float_item
      - integer_item
      - number_item
      - string_item
      type: object
      properties:
        string_item:
          type: string
          example: what
        number_item:
          type: number
          example: 1.234
        float_item:
          type: number
          format: float
          example: 1.234
        integer_item:
          type: integer
          example: -2
        bool_item:
          type: boolean
          example: true
        array_item:
          type: array
          example:
          - 0
          - 1
          - 2
          - 3
          items:
            type: integer
    XmlItem:
      type: object
      properties:
        attribute_string:
          type: string
          example: string
          xml:
            attribute: true
        attribute_number:
          type: number
          example: 1.234
          xml:
            attribute: true
        attribute_integer:
          type: integer
          example: -2
          xml:
            attribute: true
        attribute_boolean:
          type: boolean
          example: true
          xml:
            attribute: true
        wrapped_array:
          type: array
          xml:
            wrapped: true
          items:
            type: integer
        name_string:
          type: string
          example: string
          xml:
            name: xml_name_string
        name_number:
          type: number
          example: 1.234
          xml:
            name: xml_name_number
        name_integer:
          type: integer
          example: -2
          xml:
            name: xml_name_integer
        name_boolean:
          type: boolean
          example: true
          xml:
            name: xml_name_boolean
        name_array:
          type: array
          items:
            type: integer
            xml:
              name: xml_name_array_item
        name_wrapped_array:
          type: array
          xml:
            name: xml_name_wrapped_array
            wrapped: true
          items:
            type: integer
            xml:
              name: xml_name_wrapped_array_item
        prefix_string:
          type: string
          example: string
          xml:
            prefix: ab
        prefix_number:
          type: number
          example: 1.234
          xml:
            prefix: cd
        prefix_integer:
          type: integer
          example: -2
          xml:
            prefix: ef
        prefix_boolean:
          type: boolean
          example: true
          xml:
            prefix: gh
        prefix_array:
          type: array
          items:
            type: integer
            xml:
              prefix: ij
        prefix_wrapped_array:
          type: array
          xml:
            prefix: kl
            wrapped: true
          items:
            type: integer
            xml:
              prefix: mn
        namespace_string:
          type: string
          example: string
          xml:
            namespace: http://a.com/schema
        namespace_number:
          type: number
          example: 1.234
          xml:
            namespace: http://b.com/schema
        namespace_integer:
          type: integer
          example: -2
          xml:
            namespace: http://c.com/schema
        namespace_boolean:
          type: boolean
          example: true
          xml:
            namespace: http://d.com/schema
        namespace_array:
          type: array
          items:
            type: integer
            xml:
              namespace: http://e.com/schema
        namespace_wrapped_array:
          type: array
          xml:
            namespace: http://f.com/schema
            wrapped: true
          items:
            type: integer
            xml:
              namespace: http://g.com/schema
        prefix_ns_string:
          type: string
          example: string
          xml:
            namespace: http://a.com/schema
            prefix: a
        prefix_ns_number:
          type: number
          example: 1.234
          xml:
            namespace: http://b.com/schema
            prefix: b
        prefix_ns_integer:
          type: integer
          example: -2
          xml:
            namespace: http://c.com/schema
            prefix: c
        prefix_ns_boolean:
          type: boolean
          example: true
          xml:
            namespace: http://d.com/schema
            prefix: d
        prefix_ns_array:
          type: array
          items:
            type: integer
            xml:
              namespace: http://e.com/schema
              prefix: e
        prefix_ns_wrapped_array:
          type: array
          xml:
            namespace: http://f.com/schema
            prefix: f
            wrapped: true
          items:
            type: integer
            xml:
              namespace: http://g.com/schema
              prefix: g
      xml:
        namespace: http://a.com/schema
        prefix: pre
  securitySchemes:
    petstore_auth:
      type: oauth2
      flows:
        implicit:
          authorizationUrl: http://petstore.swagger.io/api/oauth/dialog
          scopes:
            write:pets: modify pets in your account
            read:pets: read your pets
    api_key:
      type: apiKey
      name: api_key
      in: header
    api_key_query:
      type: apiKey
      name: api_key_query
      in: query
    http_basic_test:
      type: http
      scheme: basic
