openapi: 3.0.0 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 externalDocs: description: Find out more about Swagger url: http://swagger.io 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: $ref: '#/components/requestBodies/Pet' responses: 400: description: Invalid ID supplied 404: description: Pet not found 405: description: Validation exception security: - petstore_auth: - write:pets - read:pets post: tags: - pet summary: Add a new pet to the store operationId: addPet requestBody: $ref: '#/components/requestBodies/Pet' responses: 405: description: Invalid input security: - petstore_auth: - write:pets - read:pets /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 enum: - available - pending - sold default: available 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 security: - petstore_auth: - write:pets - read:pets /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 deprecated: true security: - petstore_auth: - write:pets - read:pets /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 style: simple explode: false 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 404: description: Pet not found 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 style: simple explode: false schema: type: integer format: int64 requestBody: content: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/body' responses: 405: description: Invalid input security: - petstore_auth: - write:pets - read:pets delete: tags: - pet summary: Deletes a pet operationId: deletePet parameters: - name: api_key in: header required: false style: simple explode: false schema: type: string - name: petId in: path description: Pet id to delete required: true style: simple explode: false schema: type: integer format: int64 responses: 400: description: Invalid pet value 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 style: simple explode: false schema: type: integer format: int64 requestBody: content: multipart/form-data: schema: $ref: '#/components/schemas/body_1' 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: application/json: 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 /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 generated exceptions operationId: getOrderById parameters: - name: order_id in: path description: ID of pet that needs to be fetched required: true style: simple explode: false 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 404: description: Order not found 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 style: simple explode: false schema: type: string responses: 400: description: Invalid ID supplied 404: description: Order not found /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: application/json: schema: $ref: '#/components/schemas/User' required: true responses: default: description: successful operation /user/createWithArray: post: tags: - user summary: Creates list of users with given input array operationId: createUsersWithArrayInput requestBody: $ref: '#/components/requestBodies/UserArray' responses: default: description: successful operation /user/createWithList: post: tags: - user summary: Creates list of users with given input array operationId: createUsersWithListInput requestBody: $ref: '#/components/requestBodies/UserArray' responses: default: description: successful operation /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 style: form explode: true schema: type: string - name: password in: query description: The password for login in clear text required: true style: form explode: true schema: type: string responses: 200: description: successful operation headers: X-Rate-Limit: description: calls per hour allowed by the user style: simple explode: false schema: type: integer format: int32 X-Expires-After: description: date in UTC when toekn expires style: simple explode: false schema: type: string format: date-time content: application/xml: schema: type: string application/json: schema: type: string 400: description: Invalid username/password supplied /user/logout: get: tags: - user summary: Logs out current logged in user session operationId: logoutUser responses: default: description: successful operation /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 style: simple explode: false 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 404: description: User not found 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 style: simple explode: false schema: type: string requestBody: description: Updated user object content: application/json: schema: $ref: '#/components/schemas/User' required: true responses: 400: description: Invalid user supplied 404: description: User not found 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 style: simple explode: false schema: type: string responses: 400: description: Invalid username supplied 404: description: User not found /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: $ref: '#/components/requestBodies/Client' responses: 200: description: successful operation content: application/json: schema: $ref: '#/components/schemas/Client' security: - api_key_query: [] /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) required: false style: simple explode: true schema: type: array items: type: string enum: - '>' - $ default: $ - name: enum_header_string in: header description: Header parameter enum test (string) required: false style: simple explode: false schema: type: string enum: - _abc - -efg - (xyz) default: -efg - name: enum_query_string_array in: query description: Query parameter enum test (string array) required: false style: form explode: true schema: type: array items: type: string enum: - '>' - $ default: $ - name: enum_query_string in: query description: Query parameter enum test (string) required: false style: form explode: true schema: type: string enum: - _abc - -efg - (xyz) default: -efg - name: enum_query_integer in: query description: Query parameter enum test (double) required: false style: form explode: true schema: type: integer format: int32 enum: - 1 - -2 - name: enum_query_double in: query description: Query parameter enum test (double) required: false style: form explode: true schema: type: number format: double enum: - 1.1 - -1.2 requestBody: content: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/body_2' responses: 400: description: Invalid request 404: description: Not found 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: $ref: '#/components/schemas/body_3' responses: 400: description: Invalid username supplied 404: description: User not found security: - http_basic_test: [] patch: tags: - fake summary: To test "client" model description: To test "client" model operationId: testClientModel requestBody: $ref: '#/components/requestBodies/Client' responses: 200: description: successful operation content: application/json: schema: $ref: '#/components/schemas/Client' /fake/outer/number: post: tags: - fake description: Test serialization of outer number types operationId: fakeOuterNumberSerialize requestBody: description: Input number as post body content: application/json: schema: $ref: '#/components/schemas/OuterNumber' responses: 200: description: Output number content: '*/*': schema: $ref: '#/components/schemas/OuterNumber' /fake/outer/string: post: tags: - fake description: Test serialization of outer string types operationId: fakeOuterStringSerialize requestBody: description: Input string as post body content: application/json: schema: $ref: '#/components/schemas/OuterString' responses: 200: description: Output string content: '*/*': schema: $ref: '#/components/schemas/OuterString' /fake/outer/boolean: post: tags: - fake description: Test serialization of outer boolean types operationId: fakeOuterBooleanSerialize requestBody: description: Input boolean as post body content: application/json: schema: $ref: '#/components/schemas/OuterBoolean' responses: 200: description: Output boolean content: '*/*': schema: $ref: '#/components/schemas/OuterBoolean' /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: application/json: schema: $ref: '#/components/schemas/OuterComposite' responses: 200: description: Output composite content: '*/*': schema: $ref: '#/components/schemas/OuterComposite' /fake/jsonFormData: get: tags: - fake summary: test json serialization of form data operationId: testJsonFormData requestBody: content: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/body_4' responses: 200: description: successful operation /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 /another-fake/dummy: patch: tags: - $another-fake? summary: To test special tags description: To test special tags operationId: test_special_tags requestBody: $ref: '#/components/requestBodies/Client' responses: 200: description: successful operation content: application/json: schema: $ref: '#/components/schemas/Client' 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 example: petId: 6 quantity: 1 id: 0 shipDate: 2000-01-23T04:56:07.000+00:00 complete: false status: placed xml: name: Order Category: type: object properties: id: type: integer format: int64 name: type: string example: name: name id: 6 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 example: firstName: firstName lastName: lastName password: password userStatus: 6 phone: phone id: 0 email: email username: username xml: name: User Tag: type: object properties: id: type: integer format: int64 name: type: string example: name: name id: 1 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 example: photoUrls: - photoUrls - photoUrls name: doggie id: 0 category: name: name id: 6 tags: - name: name id: 1 - name: name id: 1 status: available xml: name: Pet ApiResponse: type: object properties: code: type: integer format: int32 type: type: string message: type: string example: code: 0 type: type message: message Return: properties: return: type: integer format: int32 description: Model for testing reserved words xml: name: Return Name: required: - name properties: name: type: integer format: int32 snake_case: type: integer format: int32 readOnly: true property: type: string 123Number: type: integer format: int32 readOnly: true description: Model for testing model name same as property name xml: name: Name 200_response: properties: name: type: integer format: int32 class: type: string description: Model for testing model name starting with number xml: name: Name ClassModel: 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: 100 minimum: 10 type: integer format: int32 int32: maximum: 200 minimum: 20 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: type: string byte: 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 password: maxLength: 64 minLength: 10 type: string format: password EnumClass: type: string enum: - _abc - -efg - (xyz) default: -efg 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_property: type: object additionalProperties: type: string map_of_map_property: type: object additionalProperties: type: object additionalProperties: type: string 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 example: client: client 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 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' example: {} OuterNumber: type: number OuterString: type: string OuterBoolean: type: boolean _special_model.name_: properties: $special[property.name]: type: integer format: int64 xml: name: $special[model.name] body: type: object properties: name: type: string description: Updated name of the pet status: type: string description: Updated status of the pet body_1: type: object properties: additionalMetadata: type: string description: Additional data to pass to server file: type: string description: file to upload format: binary body_2: type: object properties: enum_form_string_array: type: array description: Form parameter enum test (string array) items: type: string enum: - '>' - $ default: $ enum_form_string: type: string description: Form parameter enum test (string) enum: - _abc - -efg - (xyz) default: -efg body_3: required: - byte - double - number - pattern_without_delimiter type: object 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: type: string description: None pattern_without_delimiter: 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 body_4: required: - param - param2 type: object properties: param: type: string description: field1 param2: type: string description: field2 requestBodies: UserArray: description: List of user object content: application/json: schema: type: array items: $ref: '#/components/schemas/User' required: true Client: description: client model content: application/json: schema: $ref: '#/components/schemas/Client' required: true Pet: 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 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