← all demos
openapi = 3.0.4
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 [https://swagger.io](https://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 = https://swagger.io/terms/
  contact
    email = apiteam@swagger.io
  license
    name = Apache 2.0
    url = https://www.apache.org/licenses/LICENSE-2.0.html
  version = 1.0.27
externalDocs
  description = Find out more about Swagger
  url = https://swagger.io
servers[]
  url = /api/v3
tags[]
  name = pet
  description = Everything about your Pets
  externalDocs
    description = Find out more
    url = https://swagger.io
tags[]
  name = store
  description = Access to Petstore orders
  externalDocs
    description = Find out more about our store
    url = https://swagger.io
tags[]
  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 Pet
          "application/xml"
            schema : ref Pet
          "application/x-www-form-urlencoded"
            schema : ref Pet
        required = true
      responses
        "200"
          description = Successful operation
          content
            "application/json"
              schema : ref Pet
            "application/xml"
              schema : ref Pet
        "400"
          description = Invalid ID supplied
        "404"
          description = Pet not found
        "422"
          description = Validation exception
        default
          description = Unexpected error
      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 Pet
          "application/xml"
            schema : ref Pet
          "application/x-www-form-urlencoded"
            schema : ref Pet
        required = true
      responses
        "200"
          description = Successful operation
          content
            "application/json"
              schema : ref Pet
            "application/xml"
              schema : ref Pet
        "400"
          description = Invalid input
        "422"
          description = Validation exception
        default
          description = Unexpected error
      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 = true
        schema : enum [available, pending, sold]
          default = available
      responses
        "200"
          description = successful operation
          content
            "application/json"
              schema : ref Pet[]
            "application/xml"
              schema : ref Pet[]
        "400"
          description = Invalid status value
        default
          description = Unexpected error
      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 = true
        schema : string[]
      responses
        "200"
          description = successful operation
          content
            "application/json"
              schema : ref Pet[]
            "application/xml"
              schema : ref Pet[]
        "400"
          description = Invalid tag value
        default
          description = Unexpected error
      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 : integer int64
      responses
        "200"
          description = successful operation
          content
            "application/json"
              schema : ref Pet
            "application/xml"
              schema : ref Pet
        "400"
          description = Invalid ID supplied
        "404"
          description = Pet not found
        default
          description = Unexpected error
      security[]
        api_key = []
      security[]
        petstore_auth = [write:pets, read:pets]
    post
      tags = [pet]
      summary = Updates a pet in the store with form data.
      description = Updates a pet resource based on the form data.
      operationId = updatePetWithForm
      parameters[]
        name = petId
        in = path
        description = ID of pet that needs to be updated
        required = true
        schema : integer int64
      parameters[]
        name = name
        in = query
        description = Name of pet that needs to be updated
        schema : string
      parameters[]
        name = status
        in = query
        description = Status of pet that needs to be updated
        schema : string
      responses
        "200"
          description = successful operation
          content
            "application/json"
              schema : ref Pet
            "application/xml"
              schema : ref Pet
        "400"
          description = Invalid input
        default
          description = Unexpected error
      security[]
        petstore_auth = [write:pets, read:pets]
    delete
      tags = [pet]
      summary = Deletes a pet.
      description = Delete a pet.
      operationId = deletePet
      parameters[]
        name = api_key
        in = header
        description = ""
        required = false
        schema : string
      parameters[]
        name = petId
        in = path
        description = Pet id to delete
        required = true
        schema : integer int64
      responses
        "200"
          description = Pet deleted
        "400"
          description = Invalid pet value
        default
          description = Unexpected error
      security[]
        petstore_auth = [write:pets, read:pets]
  "/pet/{petId}/uploadImage"
    post
      tags = [pet]
      summary = Uploads an image.
      description = Upload image of the pet.
      operationId = uploadFile
      parameters[]
        name = petId
        in = path
        description = ID of pet to update
        required = true
        schema : integer int64
      parameters[]
        name = additionalMetadata
        in = query
        description = Additional Metadata
        required = false
        schema : string
      requestBody
        content
          "application/octet-stream"
            schema : string binary
      responses
        "200"
          description = successful operation
          content
            "application/json"
              schema : ref ApiResponse
        "400"
          description = No file uploaded
        "404"
          description = Pet not found
        default
          description = Unexpected error
      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 : object
                additionalProperties : integer int32
        default
          description = Unexpected error
      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 Order
          "application/xml"
            schema : ref Order
          "application/x-www-form-urlencoded"
            schema : ref Order
      responses
        "200"
          description = successful operation
          content
            "application/json"
              schema : ref Order
        "400"
          description = Invalid input
        "422"
          description = Validation exception
        default
          description = Unexpected error
  "/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 : integer int64
      responses
        "200"
          description = successful operation
          content
            "application/json"
              schema : ref Order
            "application/xml"
              schema : ref Order
        "400"
          description = Invalid ID supplied
        "404"
          description = Order not found
        default
          description = Unexpected error
    delete
      tags = [store]
      summary = Delete purchase order by identifier.
      description = For valid response try integer IDs with value < 1000. Anything above 1000 or non-integers will generate API errors.
      operationId = deleteOrder
      parameters[]
        name = orderId
        in = path
        description = ID of the order that needs to be deleted
        required = true
        schema : integer int64
      responses
        "200"
          description = order deleted
        "400"
          description = Invalid ID supplied
        "404"
          description = Order not found
        default
          description = Unexpected error
  "/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 User
          "application/xml"
            schema : ref User
          "application/x-www-form-urlencoded"
            schema : ref User
      responses
        "200"
          description = successful operation
          content
            "application/json"
              schema : ref User
            "application/xml"
              schema : ref User
        default
          description = Unexpected error
  "/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 : ref User[]
      responses
        "200"
          description = Successful operation
          content
            "application/json"
              schema : ref User
            "application/xml"
              schema : ref User
        default
          description = Unexpected error
  "/user/login"
    get
      tags = [user]
      summary = Logs user into the system.
      description = Log into the system.
      operationId = loginUser
      parameters[]
        name = username
        in = query
        description = The user name for login
        required = false
        schema : string
      parameters[]
        name = password
        in = query
        description = The password for login in clear text
        required = false
        schema : string
      responses
        "200"
          description = successful operation
          headers
            X-Rate-Limit
              description = calls per hour allowed by the user
              schema : integer int32
            X-Expires-After
              description = date in UTC when token expires
              schema : string date-time
          content
            "application/xml"
              schema : string
            "application/json"
              schema : string
        "400"
          description = Invalid username/password supplied
        default
          description = Unexpected error
  "/user/logout"
    get
      tags = [user]
      summary = Logs out current logged in user session.
      description = Log user out of the system.
      operationId = logoutUser
      parameters = []
      responses
        "200"
          description = successful operation
        default
          description = Unexpected error
  "/user/{username}"
    get
      tags = [user]
      summary = Get user by user name.
      description = Get user detail based on username.
      operationId = getUserByName
      parameters[]
        name = username
        in = path
        description = The name that needs to be fetched. Use user1 for testing
        required = true
        schema : string
      responses
        "200"
          description = successful operation
          content
            "application/json"
              schema : ref User
            "application/xml"
              schema : ref User
        "400"
          description = Invalid username supplied
        "404"
          description = User not found
        default
          description = Unexpected error
    put
      tags = [user]
      summary = Update user resource.
      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 : string
      requestBody
        description = Update an existent user in the store
        content
          "application/json"
            schema : ref User
          "application/xml"
            schema : ref User
          "application/x-www-form-urlencoded"
            schema : ref User
      responses
        "200"
          description = successful operation
        "400"
          description = bad request
        "404"
          description = user not found
        default
          description = Unexpected error
    delete
      tags = [user]
      summary = Delete user resource.
      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 : string
      responses
        "200"
          description = User deleted
        "400"
          description = Invalid username supplied
        "404"
          description = User not found
        default
          description = Unexpected error
components
  schemas
    Order : object
      id : integer int64
        example = 10
      petId : integer int64
        example = 198772
      quantity : integer int32
        example = 7
      shipDate : string date-time
      status : enum [placed, approved, delivered]
        description = Order Status
        example = approved
      complete : boolean
      xml
        name = order
    Category : object
      id : integer int64
        example = 1
      name : string
        example = Dogs
      xml
        name = category
    User : object
      id : integer int64
        example = 10
      username : string
        example = theUser
      firstName : string
        example = John
      lastName : string
        example = James
      email : string
        example = john@email.com
      password : string
        example = "12345"
      phone : string
        example = "12345"
      userStatus : integer int32
        description = User Status
        example = 1
      xml
        name = user
    Tag : object
      id : integer int64
      name : string
      xml
        name = tag
    Pet : object
      id : integer int64
        example = 10
      name! : string
        example = doggie
      category : ref Category
      photoUrls! : string[]
        items : string
          xml
            name = photoUrl
        xml
          wrapped = true
      tags : ref Tag[]
        xml
          wrapped = true
      status : enum [available, pending, sold]
        description = pet status in the store
      xml
        name = pet
    ApiResponse : object
      code : integer int32
      type : string
      message : string
      xml
        name = ##default
  requestBodies
    Pet
      description = Pet object that needs to be added to the store
      content
        "application/json"
          schema : ref Pet
        "application/xml"
          schema : ref Pet
    UserArray
      description = List of user object
      content
        "application/json"
          schema : ref 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