openapi: 3.0.0
info:
  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: https://www.apache.org/licenses/LICENSE-2.0.html
  title: OpenAPI Petstore
  version: 1.0.0
servers:
- description: petstore server
  url: "http://{server}.swagger.io:{port}/v2"
  variables:
    server:
      default: petstore
      enum:
      - petstore
      - qa-petstore
      - dev-petstore
    port:
      default: "80"
      enum:
      - "80"
      - "8080"
- description: The local server
  url: "https://localhost:8080/{version}"
  variables:
    version:
      default: v2
      enum:
      - v1
      - v2
- description: The local server without variables
  url: https://127.0.0.1/no_varaible
tags:
- description: Everything about your Pets
  name: pet
- description: Access to Petstore orders
  name: store
- description: Operations about user
  name: user
paths:
  /foo:
    get:
      responses:
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/_foo_get_default_response'
          description: response
      x-accepts: application/json
  /pet:
    post:
      description: ""
      operationId: addPet
      requestBody:
        $ref: '#/components/requestBodies/Pet'
      responses:
        "200":
          description: Successful operation
        "405":
          description: Invalid input
      security:
      - petstore_auth:
        - write:pets
        - read:pets
      summary: Add a new pet to the store
      tags:
      - pet
      x-content-type: application/json
      x-accepts: application/json
    put:
      description: ""
      operationId: updatePet
      requestBody:
        $ref: '#/components/requestBodies/Pet'
      responses:
        "200":
          description: Successful operation
        "400":
          description: Invalid ID supplied
        "404":
          description: Pet not found
        "405":
          description: Validation exception
      security:
      - petstore_auth:
        - write:pets
        - read:pets
      summary: Update an existing pet
      tags:
      - pet
      x-webclient-blocking: true
      x-content-type: application/json
      x-accepts: application/json
    servers:
    - url: http://petstore.swagger.io/v2
    - url: http://path-server-test.petstore.local/v2
    - description: test server with variables
      url: "http://{server}.swagger.io:{port}/v2"
      variables:
        server:
          default: petstore
          description: target server
          enum:
          - petstore
          - qa-petstore
          - dev-petstore
        port:
          default: "80"
          enum:
          - "80"
          - "8080"
  /pet/findByStatus:
    get:
      description: Multiple status values can be provided with comma separated strings
      operationId: findPetsByStatus
      parameters:
      - deprecated: true
        description: Status values that need to be considered for filter
        explode: false
        in: query
        name: status
        required: true
        schema:
          items:
            default: available
            enum:
            - available
            - pending
            - sold
            type: string
          type: array
        style: form
      responses:
        "200":
          content:
            application/xml:
              schema:
                items:
                  $ref: '#/components/schemas/Pet'
                type: array
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Pet'
                type: array
          description: successful operation
        "400":
          description: Invalid status value
      security:
      - petstore_auth:
        - write:pets
        - read:pets
      summary: Finds Pets by status
      tags:
      - pet
      x-webclient-blocking: true
      x-accepts: application/json
  /pet/findByTags:
    get:
      deprecated: true
      description: "Multiple tags can be provided with comma separated strings. Use\
        \ tag1, tag2, tag3 for testing."
      operationId: findPetsByTags
      parameters:
      - description: Tags to filter by
        explode: false
        in: query
        name: tags
        required: true
        schema:
          items:
            type: string
          type: array
          uniqueItems: true
        style: form
      responses:
        "200":
          content:
            application/xml:
              schema:
                items:
                  $ref: '#/components/schemas/Pet'
                type: array
                uniqueItems: true
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Pet'
                type: array
                uniqueItems: true
          description: successful operation
        "400":
          description: Invalid tag value
      security:
      - petstore_auth:
        - write:pets
        - read:pets
      summary: Finds Pets by tags
      tags:
      - pet
      x-webclient-blocking: true
      x-accepts: application/json
  /pet/{petId}:
    delete:
      description: ""
      operationId: deletePet
      parameters:
      - explode: false
        in: header
        name: api_key
        required: false
        schema:
          type: string
        style: simple
      - description: Pet id to delete
        explode: false
        in: path
        name: petId
        required: true
        schema:
          format: int64
          type: integer
        style: simple
      responses:
        "200":
          description: Successful operation
        "400":
          description: Invalid pet value
      security:
      - petstore_auth:
        - write:pets
        - read:pets
      summary: Deletes a pet
      tags:
      - pet
      x-accepts: application/json
    get:
      description: Returns a single pet
      operationId: getPetById
      parameters:
      - description: ID of pet to return
        explode: false
        in: path
        name: petId
        required: true
        schema:
          format: int64
          type: integer
        style: simple
      responses:
        "200":
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/Pet'
            application/json:
              schema:
                $ref: '#/components/schemas/Pet'
          description: successful operation
        "400":
          description: Invalid ID supplied
        "404":
          description: Pet not found
      security:
      - api_key: []
      summary: Find pet by ID
      tags:
      - pet
      x-webclient-blocking: true
      x-accepts: application/json
    post:
      description: ""
      operationId: updatePetWithForm
      parameters:
      - description: ID of pet that needs to be updated
        explode: false
        in: path
        name: petId
        required: true
        schema:
          format: int64
          type: integer
        style: simple
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/updatePetWithForm_request'
      responses:
        "200":
          description: Successful operation
        "405":
          description: Invalid input
      security:
      - petstore_auth:
        - write:pets
        - read:pets
      summary: Updates a pet in the store with form data
      tags:
      - pet
      x-content-type: application/x-www-form-urlencoded
      x-accepts: application/json
  /pet/{petId}/uploadImage:
    post:
      description: ""
      operationId: uploadFile
      parameters:
      - description: ID of pet to update
        explode: false
        in: path
        name: petId
        required: true
        schema:
          format: int64
          type: integer
        style: simple
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/uploadFile_request'
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
          description: successful operation
      security:
      - petstore_auth:
        - write:pets
        - read:pets
      summary: uploads an image
      tags:
      - pet
      x-content-type: multipart/form-data
      x-accepts: application/json
  /store/inventory:
    get:
      description: Returns a map of status codes to quantities
      operationId: getInventory
      responses:
        "200":
          content:
            application/json:
              schema:
                additionalProperties:
                  format: int32
                  type: integer
                type: object
          description: successful operation
      security:
      - api_key: []
      summary: Returns pet inventories by status
      tags:
      - store
      x-webclient-blocking: false
      x-accepts: application/json
  /store/order:
    post:
      description: ""
      operationId: placeOrder
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Order'
        description: order placed for purchasing the pet
        required: true
      responses:
        "200":
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/Order'
            application/json:
              schema:
                $ref: '#/components/schemas/Order'
          description: successful operation
        "400":
          description: Invalid Order
      summary: Place an order for a pet
      tags:
      - store
      x-content-type: application/json
      x-accepts: application/json
  /store/order/{order_id}:
    delete:
      description: For valid response try integer IDs with value < 1000. Anything
        above 1000 or nonintegers will generate API errors
      operationId: deleteOrder
      parameters:
      - description: ID of the order that needs to be deleted
        explode: false
        in: path
        name: order_id
        required: true
        schema:
          type: string
        style: simple
      responses:
        "400":
          description: Invalid ID supplied
        "404":
          description: Order not found
      summary: Delete purchase order by ID
      tags:
      - store
      x-accepts: application/json
    get:
      description: For valid response try integer IDs with value <= 5 or > 10. Other
        values will generate exceptions
      operationId: getOrderById
      parameters:
      - description: ID of pet that needs to be fetched
        explode: false
        in: path
        name: order_id
        required: true
        schema:
          format: int64
          maximum: 5
          minimum: 1
          type: integer
        style: simple
      responses:
        "200":
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/Order'
            application/json:
              schema:
                $ref: '#/components/schemas/Order'
          description: successful operation
        "400":
          description: Invalid ID supplied
        "404":
          description: Order not found
      summary: Find purchase order by ID
      tags:
      - store
      x-accepts: application/json
  /user:
    post:
      description: This can only be done by the logged in user.
      operationId: createUser
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/User'
        description: Created user object
        required: true
      responses:
        default:
          description: successful operation
      summary: Create user
      tags:
      - user
      x-content-type: application/json
      x-accepts: application/json
  /user/createWithArray:
    post:
      description: ""
      operationId: createUsersWithArrayInput
      requestBody:
        $ref: '#/components/requestBodies/UserArray'
      responses:
        default:
          description: successful operation
      summary: Creates list of users with given input array
      tags:
      - user
      x-content-type: application/json
      x-accepts: application/json
  /user/createWithList:
    post:
      description: ""
      operationId: createUsersWithListInput
      requestBody:
        $ref: '#/components/requestBodies/UserArray'
      responses:
        default:
          description: successful operation
      summary: Creates list of users with given input array
      tags:
      - user
      x-content-type: application/json
      x-accepts: application/json
  /user/login:
    get:
      description: ""
      operationId: loginUser
      parameters:
      - description: The user name for login
        explode: true
        in: query
        name: username
        required: true
        schema:
          type: string
        style: form
      - description: The password for login in clear text
        explode: true
        in: query
        name: password
        required: true
        schema:
          type: string
        style: form
      responses:
        "200":
          content:
            application/xml:
              schema:
                type: string
            application/json:
              schema:
                type: string
          description: successful operation
          headers:
            X-Rate-Limit:
              description: calls per hour allowed by the user
              explode: false
              schema:
                format: int32
                type: integer
              style: simple
            X-Expires-After:
              description: date in UTC when token expires
              explode: false
              schema:
                format: date-time
                type: string
              style: simple
        "400":
          description: Invalid username/password supplied
      summary: Logs user into the system
      tags:
      - user
      x-accepts: application/json
  /user/logout:
    get:
      description: ""
      operationId: logoutUser
      responses:
        default:
          description: successful operation
      summary: Logs out current logged in user session
      tags:
      - user
      x-accepts: application/json
  /user/{username}:
    delete:
      description: This can only be done by the logged in user.
      operationId: deleteUser
      parameters:
      - description: The name that needs to be deleted
        explode: false
        in: path
        name: username
        required: true
        schema:
          type: string
        style: simple
      responses:
        "400":
          description: Invalid username supplied
        "404":
          description: User not found
      summary: Delete user
      tags:
      - user
      x-accepts: application/json
    get:
      description: ""
      operationId: getUserByName
      parameters:
      - description: The name that needs to be fetched. Use user1 for testing.
        explode: false
        in: path
        name: username
        required: true
        schema:
          type: string
        style: simple
      responses:
        "200":
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/User'
            application/json:
              schema:
                $ref: '#/components/schemas/User'
          description: successful operation
        "400":
          description: Invalid username supplied
        "404":
          description: User not found
      summary: Get user by user name
      tags:
      - user
      x-accepts: application/json
    put:
      description: This can only be done by the logged in user.
      operationId: updateUser
      parameters:
      - description: name that need to be deleted
        explode: false
        in: path
        name: username
        required: true
        schema:
          type: string
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/User'
        description: Updated user object
        required: true
      responses:
        "400":
          description: Invalid user supplied
        "404":
          description: User not found
      summary: Updated user
      tags:
      - user
      x-content-type: application/json
      x-accepts: application/json
  /fake_classname_test:
    patch:
      description: To test class name in snake case
      operationId: testClassname
      requestBody:
        $ref: '#/components/requestBodies/Client'
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Client'
          description: successful operation
      security:
      - api_key_query: []
      summary: To test class name in snake case
      tags:
      - fake_classname_tags 123#$%^
      x-content-type: application/json
      x-accepts: application/json
  /fake:
    delete:
      description: Fake endpoint to test group parameters (optional)
      operationId: testGroupParameters
      parameters:
      - description: Required String in group parameters
        explode: true
        in: query
        name: required_string_group
        required: true
        schema:
          type: integer
        style: form
      - description: Required Boolean in group parameters
        explode: false
        in: header
        name: required_boolean_group
        required: true
        schema:
          type: boolean
        style: simple
      - description: Required Integer in group parameters
        explode: true
        in: query
        name: required_int64_group
        required: true
        schema:
          format: int64
          type: integer
        style: form
      - description: String in group parameters
        explode: true
        in: query
        name: string_group
        required: false
        schema:
          type: integer
        style: form
      - description: Boolean in group parameters
        explode: false
        in: header
        name: boolean_group
        required: false
        schema:
          type: boolean
        style: simple
      - description: Integer in group parameters
        explode: true
        in: query
        name: int64_group
        required: false
        schema:
          format: int64
          type: integer
        style: form
      responses:
        "400":
          description: Something wrong
      security:
      - bearer_test: []
      summary: Fake endpoint to test group parameters (optional)
      tags:
      - fake
      x-group-parameters: true
      x-accepts: application/json
    get:
      description: To test enum parameters
      operationId: testEnumParameters
      parameters:
      - description: Header parameter enum test (string array)
        explode: false
        in: header
        name: enum_header_string_array
        required: false
        schema:
          items:
            default: $
            enum:
            - '>'
            - $
            type: string
          type: array
        style: simple
      - description: Header parameter enum test (string)
        explode: false
        in: header
        name: enum_header_string
        required: false
        schema:
          default: -efg
          enum:
          - _abc
          - -efg
          - (xyz)
          type: string
        style: simple
      - description: Query parameter enum test (string array)
        explode: true
        in: query
        name: enum_query_string_array
        required: false
        schema:
          items:
            default: $
            enum:
            - '>'
            - $
            type: string
          type: array
        style: form
      - description: Query parameter enum test (string)
        explode: true
        in: query
        name: enum_query_string
        required: false
        schema:
          default: -efg
          enum:
          - _abc
          - -efg
          - (xyz)
          type: string
        style: form
      - description: Query parameter enum test (double)
        explode: true
        in: query
        name: enum_query_integer
        required: false
        schema:
          enum:
          - 1
          - -2
          format: int32
          type: integer
        style: form
      - description: Query parameter enum test (double)
        explode: true
        in: query
        name: enum_query_double
        required: false
        schema:
          enum:
          - 1.1
          - -1.2
          format: double
          type: number
        style: form
      - explode: true
        in: query
        name: enum_query_model_array
        required: false
        schema:
          items:
            $ref: '#/components/schemas/EnumClass'
          type: array
        style: form
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/testEnumParameters_request'
      responses:
        "400":
          description: Invalid request
        "404":
          description: Not found
      summary: To test enum parameters
      tags:
      - fake
      x-content-type: application/x-www-form-urlencoded
      x-accepts: application/json
    patch:
      description: To test "client" model
      operationId: testClientModel
      requestBody:
        $ref: '#/components/requestBodies/Client'
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Client'
          description: successful operation
      summary: To test "client" model
      tags:
      - fake
      x-content-type: application/json
      x-accepts: application/json
    post:
      description: |
        Fake endpoint for testing various parameters
        假端點
        偽のエンドポイント
        가짜 엔드 포인트
      operationId: testEndpointParameters
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/testEndpointParameters_request'
      responses:
        "400":
          description: Invalid username supplied
        "404":
          description: User not found
      security:
      - http_basic_test: []
      summary: |
        Fake endpoint for testing various parameters
        假端點
        偽のエンドポイント
        가짜 엔드 포인트
      tags:
      - fake
      x-content-type: application/x-www-form-urlencoded
      x-accepts: application/json
  /fake/outer/number:
    post:
      description: Test serialization of outer number types
      operationId: fakeOuterNumberSerialize
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OuterNumber'
        description: Input number as post body
      responses:
        "200":
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/OuterNumber'
          description: Output number
      tags:
      - fake
      x-content-type: application/json
      x-accepts: '*/*'
  /fake/property/enum-int:
    post:
      description: Test serialization of enum (int) properties with examples
      operationId: fakePropertyEnumIntegerSerialize
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OuterObjectWithEnumProperty'
        description: Input enum (int) as post body
        required: true
      responses:
        "200":
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/OuterObjectWithEnumProperty'
          description: Output enum (int)
      tags:
      - fake
      x-content-type: application/json
      x-accepts: '*/*'
  /fake/outer/string:
    post:
      description: Test serialization of outer string types
      operationId: fakeOuterStringSerialize
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OuterString'
        description: Input string as post body
      responses:
        "200":
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/OuterString'
          description: Output string
      tags:
      - fake
      x-content-type: application/json
      x-accepts: '*/*'
  /fake/outer/boolean:
    post:
      description: Test serialization of outer boolean types
      operationId: fakeOuterBooleanSerialize
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OuterBoolean'
        description: Input boolean as post body
      responses:
        "200":
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/OuterBoolean'
          description: Output boolean
      tags:
      - fake
      x-content-type: application/json
      x-accepts: '*/*'
  /fake/outer/composite:
    post:
      description: Test serialization of object with outer number type
      operationId: fakeOuterCompositeSerialize
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OuterComposite'
        description: Input composite as post body
      responses:
        "200":
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/OuterComposite'
          description: Output composite
      tags:
      - fake
      x-content-type: application/json
      x-accepts: '*/*'
  /fake/BigDecimalMap:
    get:
      description: "for Java apache and Java native, test toUrlQueryString for maps\
        \ with BegDecimal keys"
      operationId: fakeBigDecimalMap
      responses:
        "200":
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/fakeBigDecimalMap_200_response'
          description: successful operation
      tags:
      - fake
      x-accepts: '*/*'
  /fake/jsonFormData:
    get:
      description: ""
      operationId: testJsonFormData
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/testJsonFormData_request'
      responses:
        "200":
          description: successful operation
      summary: test json serialization of form data
      tags:
      - fake
      x-content-type: application/x-www-form-urlencoded
      x-accepts: application/json
  /fake/inline-additionalProperties:
    post:
      description: ""
      operationId: testInlineAdditionalProperties
      requestBody:
        content:
          application/json:
            schema:
              additionalProperties:
                type: string
              type: object
        description: request body
        required: true
      responses:
        "200":
          description: successful operation
      summary: test inline additionalProperties
      tags:
      - fake
      x-content-type: application/json
      x-accepts: application/json
  /fake/body-with-query-params:
    put:
      operationId: testBodyWithQueryParams
      parameters:
      - explode: true
        in: query
        name: query
        required: true
        schema:
          type: string
        style: form
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/User'
        required: true
      responses:
        "200":
          description: Success
      tags:
      - fake
      x-content-type: application/json
      x-accepts: application/json
  /another-fake/dummy:
    patch:
      description: To test special tags and operation ID starting with number
      operationId: 123_test_@#$%_special_tags
      requestBody:
        $ref: '#/components/requestBodies/Client'
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Client'
          description: successful operation
      summary: To test special tags
      tags:
      - $another-fake?
      x-content-type: application/json
      x-accepts: application/json
  /fake/body-with-file-schema:
    put:
      description: "For this test, the body for this request must reference a schema\
        \ named `File`."
      operationId: testBodyWithFileSchema
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FileSchemaTestClass'
        required: true
      responses:
        "200":
          description: Success
      tags:
      - fake
      x-content-type: application/json
      x-accepts: application/json
  /fake/body-with-binary:
    put:
      description: "For this test, the body has to be a binary file."
      operationId: testBodyWithBinary
      requestBody:
        content:
          image/png:
            schema:
              format: binary
              nullable: true
              type: string
        description: image to upload
        required: true
      responses:
        "200":
          description: Success
      tags:
      - fake
      x-content-type: image/png
      x-accepts: application/json
  /fake/test-query-parameters:
    put:
      description: To test the collection format in query parameters
      operationId: testQueryParameterCollectionFormat
      parameters:
      - explode: false
        in: query
        name: pipe
        required: true
        schema:
          items:
            type: string
          type: array
        style: pipeDelimited
      - explode: false
        in: query
        name: ioutil
        required: true
        schema:
          items:
            type: string
          type: array
        style: form
      - explode: false
        in: query
        name: http
        required: true
        schema:
          items:
            type: string
          type: array
        style: spaceDelimited
      - explode: false
        in: query
        name: url
        required: true
        schema:
          items:
            type: string
          type: array
        style: form
      - explode: true
        in: query
        name: context
        required: true
        schema:
          items:
            type: string
          type: array
        style: form
      - explode: true
        in: query
        name: language
        required: false
        schema:
          additionalProperties:
            format: string
            type: string
          type: object
        style: form
      - allowEmptyValue: true
        explode: true
        in: query
        name: allowEmpty
        required: true
        schema:
          type: string
        style: form
      responses:
        "200":
          description: Success
      tags:
      - fake
      x-accepts: application/json
  /fake/{petId}/uploadImageWithRequiredFile:
    post:
      description: ""
      operationId: uploadFileWithRequiredFile
      parameters:
      - description: ID of pet to update
        explode: false
        in: path
        name: petId
        required: true
        schema:
          format: int64
          type: integer
        style: simple
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/uploadFileWithRequiredFile_request'
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
          description: successful operation
      security:
      - petstore_auth:
        - write:pets
        - read:pets
      summary: uploads an image (required)
      tags:
      - pet
      x-content-type: multipart/form-data
      x-accepts: application/json
  /fake/health:
    get:
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HealthCheckResult'
          description: The instance started successfully
      summary: Health check endpoint
      tags:
      - fake
      x-accepts: application/json
  /fake/http-signature-test:
    get:
      operationId: fake-http-signature-test
      parameters:
      - description: query parameter
        explode: true
        in: query
        name: query_1
        required: false
        schema:
          type: string
        style: form
      - description: header parameter
        explode: false
        in: header
        name: header_1
        required: false
        schema:
          type: string
        style: simple
      requestBody:
        $ref: '#/components/requestBodies/Pet'
      responses:
        "200":
          description: The instance started successfully
      security:
      - http_signature_test: []
      summary: test http signature authentication
      tags:
      - fake
      x-content-type: application/json
      x-accepts: application/json
components:
  requestBodies:
    UserArray:
      content:
        application/json:
          schema:
            items:
              $ref: '#/components/schemas/User'
            type: array
      description: List of user object
      required: true
    Client:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Client'
      description: client model
      required: true
    Pet:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Pet'
        application/xml:
          schema:
            $ref: '#/components/schemas/Pet'
      description: Pet object that needs to be added to the store
      required: true
  schemas:
    Foo:
      example:
        bar: bar
      properties:
        bar:
          default: bar
          type: string
      type: object
    Bar:
      default: bar
      type: string
    Order:
      example:
        petId: 6
        quantity: 1
        id: 0
        shipDate: 2000-01-23T04:56:07.000+00:00
        complete: false
        status: placed
      properties:
        id:
          format: int64
          type: integer
        petId:
          format: int64
          type: integer
        quantity:
          format: int32
          type: integer
        shipDate:
          format: date-time
          type: string
        status:
          description: Order Status
          enum:
          - placed
          - approved
          - delivered
          type: string
        complete:
          default: false
          type: boolean
      type: object
      xml:
        name: Order
    Category:
      example:
        name: default-name
        id: 6
      properties:
        id:
          format: int64
          type: integer
        name:
          default: default-name
          type: string
      required:
      - name
      type: object
      xml:
        name: Category
    User:
      example:
        firstName: firstName
        lastName: lastName
        password: password
        userStatus: 6
        phone: phone
        id: 0
        email: email
        username: username
      properties:
        id:
          format: int64
          type: integer
          x-is-unique: true
        username:
          type: string
        firstName:
          type: string
        lastName:
          type: string
        email:
          type: string
        password:
          type: string
        phone:
          type: string
        userStatus:
          description: User Status
          format: int32
          type: integer
      type: object
      xml:
        name: User
    Tag:
      example:
        name: name
        id: 1
      properties:
        id:
          format: int64
          type: integer
        name:
          type: string
      type: object
      xml:
        name: Tag
    Pet:
      example:
        photoUrls:
        - photoUrls
        - photoUrls
        name: doggie
        id: 0
        category:
          name: default-name
          id: 6
        tags:
        - name: name
          id: 1
        - name: name
          id: 1
        status: available
      properties:
        id:
          format: int64
          type: integer
          x-is-unique: true
        category:
          $ref: '#/components/schemas/Category'
        name:
          example: doggie
          type: string
        photoUrls:
          items:
            type: string
          type: array
          uniqueItems: true
          xml:
            name: photoUrl
            wrapped: true
        tags:
          items:
            $ref: '#/components/schemas/Tag'
          type: array
          xml:
            name: tag
            wrapped: true
        status:
          description: pet status in the store
          enum:
          - available
          - pending
          - sold
          type: string
      required:
      - name
      - photoUrls
      type: object
      xml:
        name: Pet
    ApiResponse:
      example:
        code: 0
        type: type
        message: message
      properties:
        code:
          format: int32
          type: integer
        type:
          type: string
        message:
          type: string
      type: object
    Return:
      description: Model for testing reserved words
      properties:
        return:
          format: int32
          type: integer
      xml:
        name: Return
    Name:
      description: Model for testing model name same as property name
      properties:
        name:
          format: int32
          type: integer
        snake_case:
          format: int32
          readOnly: true
          type: integer
        property:
          type: string
        "123Number":
          readOnly: true
          type: integer
      required:
      - name
      xml:
        name: Name
    "200_response":
      description: Model for testing model name starting with number
      properties:
        name:
          format: int32
          type: integer
        class:
          type: string
      xml:
        name: Name
    ClassModel:
      description: Model for testing model with "_class" property
      properties:
        _class:
          type: string
    Dog:
      allOf:
      - $ref: '#/components/schemas/Animal'
      - properties:
          breed:
            type: string
        type: object
    Cat:
      allOf:
      - $ref: '#/components/schemas/Animal'
      - properties:
          declawed:
            type: boolean
        type: object
    Animal:
      discriminator:
        mapping:
          DOG: '#/components/schemas/Dog'
          CAT: '#/components/schemas/Cat'
        propertyName: className
      properties:
        className:
          type: string
        color:
          default: red
          type: string
      required:
      - className
      type: object
    AnimalFarm:
      items:
        $ref: '#/components/schemas/Animal'
      type: array
    format_test:
      properties:
        integer:
          maximum: 100
          minimum: 10
          type: integer
        int32:
          format: int32
          maximum: 200
          minimum: 20
          type: integer
        int64:
          format: int64
          type: integer
        number:
          maximum: 543.2
          minimum: 32.1
          type: number
        float:
          format: float
          maximum: 987.6
          minimum: 54.3
          type: number
        double:
          format: double
          maximum: 123.4
          minimum: 67.8
          type: number
        decimal:
          format: number
          type: string
        string:
          pattern: "/[a-z]/i"
          type: string
        byte:
          format: byte
          type: string
        binary:
          format: binary
          type: string
        date:
          format: date
          type: string
        dateTime:
          format: date-time
          type: string
        uuid:
          example: 72f98069-206d-4f12-9f12-3d1e525a8e84
          format: uuid
          type: string
        password:
          format: password
          maxLength: 64
          minLength: 10
          type: string
        pattern_with_digits:
          description: A string that is a 10 digit number. Can have leading zeros.
          pattern: "^\\d{10}$"
          type: string
        pattern_with_digits_and_delimiter:
          description: A string starting with 'image_' (case insensitive) and one
            to three digits following i.e. Image_01.
          pattern: "/^image_\\d{1,3}$/i"
          type: string
      required:
      - byte
      - date
      - number
      - password
      type: object
    EnumClass:
      default: -efg
      enum:
      - _abc
      - -efg
      - (xyz)
      type: string
    Enum_Test:
      properties:
        enum_string:
          enum:
          - UPPER
          - lower
          - ""
          type: string
        enum_string_required:
          enum:
          - UPPER
          - lower
          - ""
          type: string
        enum_integer:
          enum:
          - 1
          - -1
          format: int32
          type: integer
        enum_number:
          enum:
          - 1.1
          - -1.2
          format: double
          type: number
        outerEnum:
          $ref: '#/components/schemas/OuterEnum'
        outerEnumInteger:
          $ref: '#/components/schemas/OuterEnumInteger'
        outerEnumDefaultValue:
          $ref: '#/components/schemas/OuterEnumDefaultValue'
        outerEnumIntegerDefaultValue:
          $ref: '#/components/schemas/OuterEnumIntegerDefaultValue'
      required:
      - enum_string_required
      type: object
    AdditionalPropertiesClass:
      properties:
        map_property:
          additionalProperties:
            type: string
          type: object
        map_of_map_property:
          additionalProperties:
            additionalProperties:
              type: string
            type: object
          type: object
      type: object
    MixedPropertiesAndAdditionalPropertiesClass:
      properties:
        uuid:
          format: uuid
          type: string
        dateTime:
          format: date-time
          type: string
        map:
          additionalProperties:
            $ref: '#/components/schemas/Animal'
          type: object
      type: object
    List:
      properties:
        "123-list":
          type: string
      type: object
    Client:
      example:
        client: client
      properties:
        client:
          type: string
      type: object
    ReadOnlyFirst:
      properties:
        bar:
          readOnly: true
          type: string
        baz:
          type: string
      type: object
    hasOnlyReadOnly:
      properties:
        bar:
          readOnly: true
          type: string
        foo:
          readOnly: true
          type: string
      type: object
    Capitalization:
      properties:
        smallCamel:
          type: string
        CapitalCamel:
          type: string
        small_Snake:
          type: string
        Capital_Snake:
          type: string
        SCA_ETH_Flow_Points:
          type: string
        ATT_NAME:
          description: |
            Name of the pet
          type: string
      type: object
    MapTest:
      properties:
        map_map_of_string:
          additionalProperties:
            additionalProperties:
              type: string
            type: object
          type: object
        map_of_enum_string:
          additionalProperties:
            enum:
            - UPPER
            - lower
            type: string
          type: object
        direct_map:
          additionalProperties:
            type: boolean
          type: object
        indirect_map:
          additionalProperties:
            type: boolean
          type: object
      type: object
    ArrayTest:
      properties:
        array_of_string:
          items:
            type: string
          maxItems: 3
          minItems: 0
          type: array
        array_array_of_integer:
          items:
            items:
              format: int64
              type: integer
            type: array
          type: array
        array_array_of_model:
          items:
            items:
              $ref: '#/components/schemas/ReadOnlyFirst'
            type: array
          type: array
      type: object
    NumberOnly:
      properties:
        JustNumber:
          type: number
      type: object
    ArrayOfNumberOnly:
      properties:
        ArrayNumber:
          items:
            type: number
          type: array
      type: object
    ArrayOfArrayOfNumberOnly:
      properties:
        ArrayArrayNumber:
          items:
            items:
              type: number
            type: array
          type: array
      type: object
    EnumArrays:
      properties:
        just_symbol:
          enum:
          - '>='
          - $
          type: string
        array_enum:
          items:
            enum:
            - fish
            - crab
            type: string
          type: array
      type: object
    OuterEnum:
      enum:
      - placed
      - approved
      - delivered
      nullable: true
      type: string
    OuterEnumInteger:
      enum:
      - 0
      - 1
      - 2
      example: 2
      type: integer
    OuterEnumDefaultValue:
      default: placed
      enum:
      - placed
      - approved
      - delivered
      type: string
    OuterEnumIntegerDefaultValue:
      default: 0
      enum:
      - 0
      - 1
      - 2
      type: integer
    OuterComposite:
      example:
        my_string: my_string
        my_number: 0.8008281904610115
        my_boolean: true
      properties:
        my_number:
          type: number
        my_string:
          type: string
        my_boolean:
          type: boolean
          x-codegen-body-parameter-name: boolean_post_body
      type: object
    OuterNumber:
      type: number
    OuterString:
      type: string
    OuterBoolean:
      type: boolean
      x-codegen-body-parameter-name: boolean_post_body
    StringBooleanMap:
      additionalProperties:
        type: boolean
      type: object
    FileSchemaTestClass:
      example:
        file:
          sourceURI: sourceURI
        files:
        - sourceURI: sourceURI
        - sourceURI: sourceURI
      properties:
        file:
          $ref: '#/components/schemas/File'
        files:
          items:
            $ref: '#/components/schemas/File'
          type: array
      type: object
    File:
      description: Must be named `File` for test.
      example:
        sourceURI: sourceURI
      properties:
        sourceURI:
          description: Test capitalization
          type: string
      type: object
    _special_model.name_:
      properties:
        $special[property.name]:
          format: int64
          type: integer
      xml:
        name: "$special[model.name]"
    HealthCheckResult:
      description: Just a string to inform instance is up and running. Make it nullable
        in hope to get it as pointer in generated model.
      example:
        NullableMessage: NullableMessage
      properties:
        NullableMessage:
          nullable: true
          type: string
      type: object
    NullableClass:
      additionalProperties:
        nullable: true
        type: object
      properties:
        integer_prop:
          nullable: true
          type: integer
        number_prop:
          nullable: true
          type: number
        boolean_prop:
          nullable: true
          type: boolean
        string_prop:
          nullable: true
          type: string
        date_prop:
          format: date
          nullable: true
          type: string
        datetime_prop:
          format: date-time
          nullable: true
          type: string
        array_nullable_prop:
          items:
            type: object
          nullable: true
          type: array
        array_and_items_nullable_prop:
          items:
            nullable: true
            type: object
          nullable: true
          type: array
        array_items_nullable:
          items:
            nullable: true
            type: object
          type: array
        object_nullable_prop:
          additionalProperties:
            type: object
          nullable: true
          type: object
        object_and_items_nullable_prop:
          additionalProperties:
            nullable: true
            type: object
          nullable: true
          type: object
        object_items_nullable:
          additionalProperties:
            nullable: true
            type: object
          type: object
      type: object
    OuterObjectWithEnumProperty:
      example:
        value: 2
      properties:
        value:
          $ref: '#/components/schemas/OuterEnumInteger'
      required:
      - value
      type: object
    DeprecatedObject:
      deprecated: true
      properties:
        name:
          type: string
      type: object
    ObjectWithDeprecatedFields:
      properties:
        uuid:
          type: string
        id:
          deprecated: true
          type: number
        deprecatedRef:
          $ref: '#/components/schemas/DeprecatedObject'
        bars:
          deprecated: true
          items:
            $ref: '#/components/schemas/Bar'
          type: array
      type: object
    AllOfWithSingleRef:
      properties:
        username:
          type: string
        SingleRefType:
          allOf:
          - $ref: '#/components/schemas/SingleRefType'
      type: object
    SingleRefType:
      enum:
      - admin
      - user
      title: SingleRefType
      type: string
    _foo_get_default_response:
      example:
        string:
          bar: bar
      properties:
        string:
          $ref: '#/components/schemas/Foo'
      type: object
    updatePetWithForm_request:
      properties:
        name:
          description: Updated name of the pet
          type: string
        status:
          description: Updated status of the pet
          type: string
      type: object
    uploadFile_request:
      properties:
        additionalMetadata:
          description: Additional data to pass to server
          type: string
        file:
          description: file to upload
          format: binary
          type: string
      type: object
    testEnumParameters_request:
      properties:
        enum_form_string_array:
          description: Form parameter enum test (string array)
          items:
            default: $
            enum:
            - '>'
            - $
            type: string
          type: array
        enum_form_string:
          default: -efg
          description: Form parameter enum test (string)
          enum:
          - _abc
          - -efg
          - (xyz)
          type: string
      type: object
    testEndpointParameters_request:
      properties:
        integer:
          description: None
          maximum: 100
          minimum: 10
          type: integer
        int32:
          description: None
          format: int32
          maximum: 200
          minimum: 20
          type: integer
        int64:
          description: None
          format: int64
          type: integer
        number:
          description: None
          maximum: 543.2
          minimum: 32.1
          type: number
        float:
          description: None
          format: float
          maximum: 987.6
          type: number
        double:
          description: None
          format: double
          maximum: 123.4
          minimum: 67.8
          type: number
        string:
          description: None
          pattern: "/[a-z]/i"
          type: string
        pattern_without_delimiter:
          description: None
          pattern: "^[A-Z].*"
          type: string
        byte:
          description: None
          format: byte
          type: string
        binary:
          description: None
          format: binary
          type: string
        date:
          description: None
          format: date
          type: string
        dateTime:
          description: None
          format: date-time
          type: string
        password:
          description: None
          format: password
          maxLength: 64
          minLength: 10
          type: string
        callback:
          description: None
          type: string
      required:
      - byte
      - double
      - number
      - pattern_without_delimiter
      type: object
    fakeBigDecimalMap_200_response:
      example:
        someId: 0.8008281904610115
        someMap:
          key: 6.027456183070403
      properties:
        someId:
          type: number
        someMap:
          additionalProperties:
            type: number
          type: object
      type: object
    testJsonFormData_request:
      properties:
        param:
          description: field1
          type: string
        param2:
          description: field2
          type: string
      required:
      - param
      - param2
      type: object
    uploadFileWithRequiredFile_request:
      properties:
        additionalMetadata:
          description: Additional data to pass to server
          type: string
        requiredFile:
          description: file to upload
          format: binary
          type: string
      required:
      - requiredFile
      type: object
  securitySchemes:
    petstore_auth:
      flows:
        implicit:
          authorizationUrl: http://petstore.swagger.io/api/oauth/dialog
          scopes:
            write:pets: modify pets in your account
            read:pets: read your pets
      type: oauth2
    api_key:
      in: header
      name: api_key
      type: apiKey
    api_key_query:
      in: query
      name: api_key_query
      type: apiKey
    http_basic_test:
      scheme: basic
      type: http
    bearer_test:
      bearerFormat: JWT
      scheme: bearer
      type: http
    http_signature_test:
      scheme: signature
      type: http
