openapi: 3.0.2 info: title: Swagger Petstore - OpenAPI 3.0 description: |- This is a sample Pet Store Server based on the OpenAPI 3.0 specification. You can find out more about Swagger at [http://swagger.io](http://swagger.io). In the third iteration of the pet store, we've switched to the design first approach! You can now help us improve the API whether it's by making changes to the definition itself or to the code. That way, with time, we can improve the API in general, and expose some of the new features in OAS3. Some useful links: - [The Pet Store repository](https://github.com/swagger-api/swagger-petstore) - [The source API definition for the Pet Store](https://github.com/swagger-api/swagger-petstore/blob/master/src/main/resources/openapi.yaml) 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.18 externalDocs: description: Find out more about Swagger url: http://swagger.io servers: - url: /api/v3 tags: - name: pet description: Everything about your Pets externalDocs: description: Find out more url: http://swagger.io - name: store description: Access to Petstore orders externalDocs: description: Find out more about our store url: http://swagger.io - name: user description: Operations about user paths: /pet: put: tags: - pet summary: Update an existing pet description: Update an existing pet by Id operationId: updatePet requestBody: description: Update an existent pet in the store content: application/json: schema: $ref: "#/components/schemas/Pet" application/xml: schema: $ref: "#/components/schemas/Pet" application/x-www-form-urlencoded: schema: $ref: "#/components/schemas/Pet" required: true 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 "405": description: Validation exception security: - petstore_auth: - write:pets - read:pets post: tags: - pet summary: Add a new pet to the store description: Add a new pet to the store operationId: addPet requestBody: description: Create a new pet in the store content: application/json: schema: $ref: "#/components/schemas/Pet" application/xml: schema: $ref: "#/components/schemas/Pet" application/x-www-form-urlencoded: schema: $ref: "#/components/schemas/Pet" required: true responses: "200": description: Successful operation content: application/xml: schema: $ref: "#/components/schemas/Pet" application/json: schema: $ref: "#/components/schemas/Pet" "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: false explode: true schema: type: string default: available enum: - available - pending - sold responses: "200": description: successful operation content: application/xml: schema: type: array items: $ref: "#/components/schemas/Pet" application/json: schema: type: array items: $ref: "#/components/schemas/Pet" "400": description: Invalid status value 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: false explode: true 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 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 "404": description: Pet not found security: - api_key: [] - petstore_auth: - write:pets - read:pets post: tags: - pet summary: Updates a pet in the store with form data description: "" operationId: updatePetWithForm parameters: - name: petId in: path description: ID of pet that needs to be updated required: true schema: type: integer format: int64 - name: name in: query description: Name of pet that needs to be updated schema: type: string - name: status in: query description: Status of pet that needs to be updated schema: type: string responses: "405": description: Invalid input security: - petstore_auth: - write:pets - read:pets delete: tags: - pet summary: Deletes a pet description: "" operationId: deletePet parameters: - name: api_key in: header description: "" required: false 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 security: - petstore_auth: - write:pets - read:pets /pet/{petId}/uploadImage: post: tags: - pet summary: uploads an image description: "" operationId: uploadFile parameters: - name: petId in: path description: ID of pet to update required: true schema: type: integer format: int64 - name: additionalMetadata in: query description: Additional Metadata required: false schema: type: string requestBody: content: application/octet-stream: schema: type: string 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 description: Place a new order in the store operationId: placeOrder requestBody: content: application/json: schema: $ref: "#/components/schemas/Order" application/xml: schema: $ref: "#/components/schemas/Order" application/x-www-form-urlencoded: schema: $ref: "#/components/schemas/Order" responses: "200": description: successful operation content: application/json: schema: $ref: "#/components/schemas/Order" "405": description: Invalid input /store/order/{orderId}: get: tags: - store summary: Find purchase order by ID description: For valid response try integer IDs with value <= 5 or > 10. Other values will generate exceptions. operationId: getOrderById parameters: - name: orderId in: path description: ID of order that needs to be fetched required: true schema: 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: orderId in: path description: ID of the order that needs to be deleted required: true schema: type: integer format: int64 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" application/xml: schema: $ref: "#/components/schemas/User" application/x-www-form-urlencoded: schema: $ref: "#/components/schemas/User" responses: default: description: successful operation content: application/json: schema: $ref: "#/components/schemas/User" application/xml: schema: $ref: "#/components/schemas/User" /user/createWithList: post: tags: - user summary: Creates list of users with given input array description: Creates list of users with given input array operationId: createUsersWithListInput requestBody: content: application/json: schema: type: array items: $ref: "#/components/schemas/User" responses: "200": description: Successful operation content: application/xml: schema: $ref: "#/components/schemas/User" application/json: schema: $ref: "#/components/schemas/User" default: description: successful operation /user/login: get: tags: - user summary: Logs user into the system description: "" operationId: loginUser parameters: - name: username in: query description: The user name for login required: false schema: type: string - name: password in: query description: The password for login in clear text required: false 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 /user/logout: get: tags: - user summary: Logs out current logged in user session description: "" operationId: logoutUser parameters: [] responses: default: description: successful operation /user/{username}: get: tags: - user summary: Get user by user name description: "" 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 "404": description: User not found put: tags: - user summary: Update user description: This can only be done by the logged in user. operationId: updateUser parameters: - name: username in: path description: name that needs to be updated required: true schema: type: string requestBody: description: Update an existent user in the store content: application/json: schema: $ref: "#/components/schemas/User" application/xml: schema: $ref: "#/components/schemas/User" application/x-www-form-urlencoded: schema: $ref: "#/components/schemas/User" responses: default: description: successful operation 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 "404": description: User not found components: schemas: Order: type: object properties: id: type: object properties: id: type: integer format: int64 example: 10 petId: type: integer format: int64 example: 198772 quantity: type: integer format: int32 example: 7 shipDate: type: string format: date-time status: type: string description: Order Status example: approved enum: - placed - approved - delivered complete: type: boolean xml: name: order petId: type: object properties: id: type: integer format: int64 example: 10 petId: type: integer format: int64 example: 198772 quantity: type: integer format: int32 example: 7 shipDate: type: string format: date-time status: type: string description: Order Status example: approved enum: - placed - approved - delivered complete: type: boolean xml: name: order quantity: type: object properties: id: type: integer format: int64 example: 10 petId: type: integer format: int64 example: 198772 quantity: type: integer format: int32 example: 7 shipDate: type: string format: date-time status: type: string description: Order Status example: approved enum: - placed - approved - delivered complete: type: boolean xml: name: order shipDate: type: object properties: id: type: integer format: int64 example: 10 petId: type: integer format: int64 example: 198772 quantity: type: integer format: int32 example: 7 shipDate: type: string format: date-time status: type: string description: Order Status example: approved enum: - placed - approved - delivered complete: type: boolean xml: name: order status: type: object properties: id: type: integer format: int64 example: 10 petId: type: integer format: int64 example: 198772 quantity: type: integer format: int32 example: 7 shipDate: type: string format: date-time status: type: string description: Order Status example: approved enum: - placed - approved - delivered complete: type: boolean xml: name: order complete: type: object properties: id: type: integer format: int64 example: 10 petId: type: integer format: int64 example: 198772 quantity: type: integer format: int32 example: 7 shipDate: type: string format: date-time status: type: string description: Order Status example: approved enum: - placed - approved - delivered complete: type: boolean xml: name: order xml: name: order Customer: type: object properties: id: type: object properties: id: type: integer format: int64 example: 100000 username: type: string example: fehguy address: type: array xml: name: addresses wrapped: true items: $ref: "#/components/schemas/Address" xml: name: customer username: type: object properties: id: type: integer format: int64 example: 100000 username: type: string example: fehguy address: type: array xml: name: addresses wrapped: true items: $ref: "#/components/schemas/Address" xml: name: customer address: type: object properties: id: type: integer format: int64 example: 100000 username: type: string example: fehguy address: type: array xml: name: addresses wrapped: true items: $ref: "#/components/schemas/Address" xml: name: customer xml: name: customer Address: type: object properties: street: type: object properties: street: type: string example: 437 Lytton city: type: string example: Palo Alto state: type: string example: CA zip: type: string example: "94301" xml: name: address city: type: object properties: street: type: string example: 437 Lytton city: type: string example: Palo Alto state: type: string example: CA zip: type: string example: "94301" xml: name: address state: type: object properties: street: type: string example: 437 Lytton city: type: string example: Palo Alto state: type: string example: CA zip: type: string example: "94301" xml: name: address zip: type: object properties: street: type: string example: 437 Lytton city: type: string example: Palo Alto state: type: string example: CA zip: type: string example: "94301" xml: name: address xml: name: address Category: type: object properties: id: type: object properties: id: type: integer format: int64 example: 1 name: type: string example: Dogs xml: name: category name: type: object properties: id: type: integer format: int64 example: 1 name: type: string example: Dogs xml: name: category xml: name: category User: type: object properties: id: type: object properties: id: type: integer format: int64 example: 10 username: type: string example: theUser firstName: type: string example: John lastName: type: string example: James email: type: string example: john@email.com password: type: string example: "12345" phone: type: string example: "12345" userStatus: type: integer description: User Status format: int32 example: 1 xml: name: user username: type: object properties: id: type: integer format: int64 example: 10 username: type: string example: theUser firstName: type: string example: John lastName: type: string example: James email: type: string example: john@email.com password: type: string example: "12345" phone: type: string example: "12345" userStatus: type: integer description: User Status format: int32 example: 1 xml: name: user firstName: type: object properties: id: type: integer format: int64 example: 10 username: type: string example: theUser firstName: type: string example: John lastName: type: string example: James email: type: string example: john@email.com password: type: string example: "12345" phone: type: string example: "12345" userStatus: type: integer description: User Status format: int32 example: 1 xml: name: user lastName: type: object properties: id: type: integer format: int64 example: 10 username: type: string example: theUser firstName: type: string example: John lastName: type: string example: James email: type: string example: john@email.com password: type: string example: "12345" phone: type: string example: "12345" userStatus: type: integer description: User Status format: int32 example: 1 xml: name: user email: type: object properties: id: type: integer format: int64 example: 10 username: type: string example: theUser firstName: type: string example: John lastName: type: string example: James email: type: string example: john@email.com password: type: string example: "12345" phone: type: string example: "12345" userStatus: type: integer description: User Status format: int32 example: 1 xml: name: user password: type: object properties: id: type: integer format: int64 example: 10 username: type: string example: theUser firstName: type: string example: John lastName: type: string example: James email: type: string example: john@email.com password: type: string example: "12345" phone: type: string example: "12345" userStatus: type: integer description: User Status format: int32 example: 1 xml: name: user phone: type: object properties: id: type: integer format: int64 example: 10 username: type: string example: theUser firstName: type: string example: John lastName: type: string example: James email: type: string example: john@email.com password: type: string example: "12345" phone: type: string example: "12345" userStatus: type: integer description: User Status format: int32 example: 1 xml: name: user userStatus: type: object properties: id: type: integer format: int64 example: 10 username: type: string example: theUser firstName: type: string example: John lastName: type: string example: James email: type: string example: john@email.com password: type: string example: "12345" phone: type: string example: "12345" userStatus: type: integer description: User Status format: int32 example: 1 xml: name: user xml: name: user Tag: type: object properties: id: type: object properties: id: type: integer format: int64 name: type: string xml: name: tag name: type: object properties: id: type: integer format: int64 name: type: string xml: name: tag xml: name: tag Pet: required: - name - photoUrls type: object properties: id: required: - name - photoUrls type: object properties: id: type: integer format: int64 example: 10 name: type: string example: doggie category: $ref: "#/components/schemas/Category" photoUrls: type: array xml: wrapped: true items: type: string xml: name: photoUrl tags: type: array xml: wrapped: true items: $ref: "#/components/schemas/Tag" status: type: string description: pet status in the store enum: - available - pending - sold xml: name: pet name: required: - name - photoUrls type: object properties: id: type: integer format: int64 example: 10 name: type: string example: doggie category: $ref: "#/components/schemas/Category" photoUrls: type: array xml: wrapped: true items: type: string xml: name: photoUrl tags: type: array xml: wrapped: true items: $ref: "#/components/schemas/Tag" status: type: string description: pet status in the store enum: - available - pending - sold xml: name: pet category: required: - name - photoUrls type: object properties: id: type: integer format: int64 example: 10 name: type: string example: doggie category: $ref: "#/components/schemas/Category" photoUrls: type: array xml: wrapped: true items: type: string xml: name: photoUrl tags: type: array xml: wrapped: true items: $ref: "#/components/schemas/Tag" status: type: string description: pet status in the store enum: - available - pending - sold xml: name: pet photoUrls: required: - name - photoUrls type: object properties: id: type: integer format: int64 example: 10 name: type: string example: doggie category: $ref: "#/components/schemas/Category" photoUrls: type: array xml: wrapped: true items: type: string xml: name: photoUrl tags: type: array xml: wrapped: true items: $ref: "#/components/schemas/Tag" status: type: string description: pet status in the store enum: - available - pending - sold xml: name: pet tags: required: - name - photoUrls type: object properties: id: type: integer format: int64 example: 10 name: type: string example: doggie category: $ref: "#/components/schemas/Category" photoUrls: type: array xml: wrapped: true items: type: string xml: name: photoUrl tags: type: array xml: wrapped: true items: $ref: "#/components/schemas/Tag" status: type: string description: pet status in the store enum: - available - pending - sold xml: name: pet status: required: - name - photoUrls type: object properties: id: type: integer format: int64 example: 10 name: type: string example: doggie category: $ref: "#/components/schemas/Category" photoUrls: type: array xml: wrapped: true items: type: string xml: name: photoUrl tags: type: array xml: wrapped: true items: $ref: "#/components/schemas/Tag" status: type: string description: pet status in the store enum: - available - pending - sold xml: name: pet xml: name: pet ApiResponse: type: object properties: code: type: object properties: code: type: integer format: int32 type: type: string message: type: string xml: name: "##default" type: type: object properties: code: type: integer format: int32 type: type: string message: type: string xml: name: "##default" message: type: object properties: code: type: integer format: int32 type: type: string message: type: string xml: name: "##default" xml: name: "##default" requestBodies: 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" UserArray: description: List of user object content: application/json: schema: type: array items: $ref: "#/components/schemas/User" securitySchemes: petstore_auth: type: oauth2 flows: implicit: authorizationUrl: https://petstore3.swagger.io/oauth/authorize scopes: write:pets: modify pets in your account read:pets: read your pets api_key: type: apiKey name: api_key in: header