openapi: 3.0.0
info:
  title: 'Swagger Petstore'
  description: 'A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification'
  termsOfService: 'http://swagger.io/terms/'
  contact:
    name: 'Swagger API Team'
    url: 'http://swagger.io'
    email: apiteam@swagger.io
  license:
    name: MIT
    url: 'http://github.com/gruntjs/grunt/blob/master/LICENSE-MIT'
  version: 1.0.0
servers:
  -
    url: petstore.swagger.io
    description: 'API server'
paths:
  /pets:
    get:
      description: 'Returns all pets from the system that the user has access to'
      externalDocs:
        description: 'find more info here'
        url: 'https://swagger.io/about'
      operationId: findPets
      parameters:
        -
          name: tags
          in: query
          description: 'tags to filter by'
          required: false
          style: form
          schema:
            type: array
            items:
              type: string
        -
          name: limit
          in: query
          description: 'maximum number of results to return'
          required: false
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: 'pet response'
          content:
            application/xml:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Pet'
            text/xml:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Pet'
            text/html:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Pet'
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Pet'
        default:
          description: 'unexpected error'
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/ErrorModel'
            text/xml:
              schema:
                $ref: '#/components/schemas/ErrorModel'
            text/html:
              schema:
                $ref: '#/components/schemas/ErrorModel'
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorModel'
    post:
      description: 'Creates a new pet in the store.  Duplicates are allowed'
      operationId: addPet
      requestBody:
        description: 'Pet to add to the store'
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NewPet'
      responses:
        '200':
          description: 'pet response'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Pet'
        default:
          description: 'unexpected error'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorModel'
  '/pets/{id}':
    get:
      description: 'Returns a user based on a single ID, if the user does not have access to the pet'
      operationId: findPetById
      parameters:
        -
          name: id
          in: path
          description: 'ID of pet to fetch'
          required: true
          schema:
            type: integer
            format: int64
      responses:
        '200':
          description: 'pet response'
          content:
            text/html:
              schema:
                $ref: '#/components/schemas/Pet'
            text/xml:
              schema:
                $ref: '#/components/schemas/Pet'
            application/json:
              schema:
                $ref: '#/components/schemas/Pet'
            application/xml:
              schema:
                $ref: '#/components/schemas/Pet'
        default:
          description: 'unexpected error'
          content:
            text/xml:
              schema:
                $ref: '#/components/schemas/ErrorModel'
            text/html:
              schema:
                $ref: '#/components/schemas/ErrorModel'
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorModel'
            application/xml:
              schema:
                $ref: '#/components/schemas/ErrorModel'
    delete:
      description: 'deletes a single pet based on the ID supplied'
      operationId: deletePet
      parameters:
        -
          name: id
          in: path
          description: 'ID of pet to delete'
          required: true
          schema:
            type: integer
            format: int64
      responses:
        '204':
          description: 'pet deleted'
        default:
          description: 'unexpected error'
components:
  schemas:
    ErrorModel:
      required:
        - code
        - message
      properties:
        code:
          type: integer
          format: int32
        message:
          type: string
      type: object
    NewPet:
      required:
        - name
      properties:
        name:
          type: string
        tag:
          type: string
      type: object
    Pet:
      type: object
      allOf:
        -
          $ref: '#/components/schemas/NewPet'
        -
          required:
            - id
          properties:
            id:
              type: integer
              format: int64
          type: object
externalDocs:
  description: 'find more info here'
  url: 'https://swagger.io/about'
