openapi: 3.0.1 info: title: Swagger 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: " \' termsOfService: http://swagger.io/terms/ contact: email: apiteam@swagger.io 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 externalDocs: description: Find out more url: http://swagger.io - name: store description: Access to Petstore orders - name: user description: Operations about user externalDocs: description: Find out more about our store url: http://swagger.io 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: 400: description: Invalid ID supplied content: {} 404: description: Pet not found content: {} 405: description: Validation exception content: {} security: - petstore_auth: - write:pets - read:pets 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: 405: description: Invalid input content: {} 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 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 content: {} 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 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 /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: 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: {} /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 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: {} /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: {} /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: {} /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: {} 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: [] /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) schema: type: array items: type: string enum: - '>' - $ default: $ - name: enum_header_string in: header description: Header parameter enum test (string) schema: type: string enum: - _abc - -efg - (xyz) default: -efg - name: enum_query_string_array in: query description: Query parameter enum test (string array) explode: false schema: type: array items: type: string enum: - '>' - $ default: $ - name: enum_query_string in: query description: Query parameter enum test (string) schema: type: string enum: - _abc - -efg - (xyz) default: -efg - 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 enum: - '>' - $ default: $ enum_form_string: type: string description: Form parameter enum test (string) enum: - _abc - -efg - (xyz) default: -efg 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 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: [] 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' /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' /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' /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' /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' /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: {} /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: {} /another-fake/dummy: patch: tags: - $another-fake? summary: To test special tags description: To test special tags operationId: 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' components: schemas: 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 OuterNumber: type: number ArrayOfNumberOnly: type: object properties: ArrayNumber: type: array items: type: number 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 MixedPropertiesAndAdditionalPropertiesClass: type: object properties: uuid: type: string format: uuid dateTime: type: string format: date-time map: type: object additionalProperties: $ref: '#/components/schemas/Animal' ApiResponse: type: object properties: code: type: integer format: int32 type: type: string message: type: string example: code: 0 type: type message: message 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 EnumClass: type: string enum: - _abc - -efg - (xyz) default: -efg List: type: object properties: 123-list: type: string NumberOnly: type: object properties: JustNumber: type: number 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 Client: type: object properties: client: type: string example: client: client Dog: allOf: - $ref: '#/components/schemas/Animal' - type: object properties: breed: type: string 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' 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 AdditionalPropertiesClass: type: object properties: map_property: type: object additionalProperties: type: string map_of_map_property: type: object additionalProperties: type: object additionalProperties: 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 ReadOnlyFirst: type: object properties: bar: type: string readOnly: true baz: type: string ArrayOfArrayOfNumberOnly: type: object properties: ArrayArrayNumber: type: array items: type: array items: type: number OuterEnum: type: string enum: - placed - approved - delivered 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' OuterComposite: type: object properties: my_number: $ref: '#/components/schemas/OuterNumber' my_string: $ref: '#/components/schemas/OuterString' my_boolean: $ref: '#/components/schemas/OuterBoolean' example: {} 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 password: maxLength: 64 minLength: 10 type: string format: password EnumArrays: type: object properties: just_symbol: type: string enum: - '>=' - $ array_enum: type: array items: type: string enum: - fish - crab OuterString: type: string ClassModel: type: object properties: _class: type: string description: Model for testing model with "_class" property OuterBoolean: type: boolean x-codegen-body-parameter-name: boolean_post_body Animal: required: - className type: object properties: className: type: string color: type: string default: red discriminator: propertyName: className Cat: allOf: - $ref: '#/components/schemas/Animal' - type: object properties: declawed: type: boolean 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 Tag: type: object properties: id: type: integer format: int64 name: type: string example: name: name id: 1 xml: name: Tag AnimalFarm: type: array items: $ref: '#/components/schemas/Animal' 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 hasOnlyReadOnly: type: object properties: bar: type: string readOnly: true foo: type: string readOnly: 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 http_basic_test: type: http scheme: basic api_key: type: apiKey name: api_key in: header api_key_query: type: apiKey name: api_key_query in: query