---
swagger: "2.0"
info:
  description: "This is a sample server Petstore server.  You can find out more about Swagger at <a href=\"http://swagger.wordnik.com\">http://swagger.wordnik.com</a> or on irc.freenode.net, #swagger.  For this sample, you can use the api key \"special-key\" to test the authorization filters"
  version: "1.0.0"
  title: "Swagger Sample App"
  termsOfService: "http://helloreverb.com/terms/"
  contact:
    name: "apiteam@wordnik.com"
  license:
    name: "Apache 2.0"
    url: "http://www.apache.org/licenses/LICENSE-2.0.html"
basePath: "/v2/petstore"
paths:
  /customer/createWithList:
    post:
      tags:
        - "customer"
      summary: "Creates list of customers with given input array"
      description: ""
      operationId: "createCustomersWithListInput"
      produces:
        - "application/json"
        - "application/xml"
      parameters:
        -
          in: "body"
          name: "body"
          description: "List of customer object"
          required: false
          schema:
            $ref: "#/definitions/Customer"
      responses:
        default:
          description: "successful operation"
  /pet:
    put:
      tags:
        - "pet"
      summary: "Update an existing pet"
      description: ""
      operationId: "updatePet"
      consumes:
        - "application/json"
        - "application/xml"
      produces:
        - "application/json"
        - "application/xml"
      parameters:
        -
          in: "body"
          name: "body"
          description: "Pet object that needs to be added to the store"
          required: false
          schema:
            $ref: "#/definitions/Pet"
      responses:
        400:
          description: "Invalid ID supplied"
        404:
          description: "Pet not found"
        405:
          description: "Validation exception"
    post:
      tags:
        - "pet"
      summary: "Add a new pet to the store"
      description: ""
      operationId: "addPet"
      consumes:
        - "application/json"
        - "application/xml"
      produces:
        - "application/json"
        - "application/xml"
      parameters:
        -
          in: "body"
          name: "body"
          description: "Pet object that needs to be added to the store"
          required: false
          schema:
            $ref: "#/definitions/Pet"
      responses:
        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 generated exceptions"
      operationId: "getOrderById"
      produces:
        - "application/json"
        - "application/xml"
      parameters:
        -
          in: "path"
          name: "orderId"
          description: "ID of pet that needs to be fetched"
          required: true
          type: "string"
      responses:
        200:
          description: "successful operation"
          schema:
            $ref: "#/definitions/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"
      produces:
        - "application/json"
        - "application/xml"
      parameters:
        -
          in: "path"
          name: "orderId"
          description: "ID of the order that needs to be deleted"
          required: true
          type: "string"
      responses:
        400:
          description: "Invalid ID supplied"
        404:
          description: "Order not found"
  /customer/createWithArray:
    post:
      tags:
        - "customer"
      summary: "Creates list of customers with given input array"
      description: ""
      operationId: "createCustomersWithArrayInput"
      produces:
        - "application/json"
        - "application/xml"
      parameters:
        -
          in: "body"
          name: "body"
          description: "List of customer object"
          required: false
      responses:
        default:
          description: "successful operation"
  /store/order:
    post:
      tags:
        - "store"
      summary: "Place an order for a pet"
      description: ""
      operationId: "placeOrder"
      produces:
        - "application/json"
        - "application/xml"
      parameters:
        -
          in: "body"
          name: "body"
          description: "order placed for purchasing the pet"
          required: false
          schema:
            $ref: "#/definitions/Order"
      responses:
        200:
          description: "successful operation"
          schema:
            $ref: "#/definitions/Order"
        400:
          description: "Invalid Order"
  /pet/findByStatus:
    get:
      tags:
        - "pet"
      summary: "Finds Pets by status"
      description: "Multiple status values can be provided with comma seperated strings"
      operationId: "findPetsByStatus"
      produces:
        - "application/json"
        - "application/xml"
      parameters:
        -
          in: "query"
          name: "status"
          description: "Status values that need to be considered for filter"
          required: false
          type: "array"
          items:
            type: "string"
          collectionFormat: "jaxrs"
      responses:
        200:
          description: "successful operation"
          schema:
            $ref: "#/definitions/Pet"
        400:
          description: "Invalid status value"
  /customer/{customername}:
    get:
      tags:
        - "customer"
      summary: "Get customer by customer name"
      description: ""
      operationId: "getCustomerByName"
      produces:
        - "application/json"
        - "application/xml"
      parameters:
        -
          in: "path"
          name: "customername"
          description: "The name that needs to be fetched. Use customer1 for testing. "
          required: true
          type: "string"
      responses:
        200:
          description: "successful operation"
          schema:
            $ref: "#/definitions/Customer"
        400:
          description: "Invalid customername supplied"
        404:
          description: "Customer not found"
    put:
      tags:
        - "customer"
      summary: "Updated customer"
      description: "This can only be done by the logged in customer."
      operationId: "updateCustomer"
      produces:
        - "application/json"
        - "application/xml"
      parameters:
        -
          in: "path"
          name: "customername"
          description: "name that need to be deleted"
          required: true
          type: "string"
        -
          in: "body"
          name: "body"
          description: "Updated customer object"
          required: false
          schema:
            $ref: "#/definitions/Customer"
      responses:
        400:
          description: "Invalid customer supplied"
        404:
          description: "Customer not found"
    delete:
      tags:
        - "customer"
      summary: "Delete customer"
      description: "This can only be done by the logged in customer."
      operationId: "deleteCustomer"
      produces:
        - "application/json"
        - "application/xml"
      parameters:
        -
          in: "path"
          name: "customername"
          description: "The name that needs to be deleted"
          required: true
          type: "string"
      responses:
        400:
          description: "Invalid customername supplied"
        404:
          description: "Customer not found"
  /pet/findByTags:
    get:
      tags:
        - "pet"
      summary: "Finds Pets by tags"
      description: "Muliple tags can be provided with comma seperated strings. Use tag1, tag2, tag3 for testing."
      operationId: "findPetsByTags"
      produces:
        - "application/json"
        - "application/xml"
      parameters:
        -
          in: "query"
          name: "tags"
          description: "Tags to filter by"
          required: false
          type: "array"
          items:
            type: "string"
          collectionFormat: "jaxrs"
      responses:
        200:
          description: "successful operation"
          schema:
            $ref: "#/definitions/Pet"
        400:
          description: "Invalid tag value"
  /customer:
    post:
      tags:
        - "customer"
      summary: "Create customer"
      description: "This can only be done by the logged in customer."
      operationId: "createCustomer"
      produces:
        - "application/json"
        - "application/xml"
      parameters:
        -
          in: "body"
          name: "body"
          description: "Created customer object"
          required: false
          schema:
            $ref: "#/definitions/Customer"
      responses:
        default:
          description: "successful operation"
  /customer/logout:
    get:
      tags:
        - "customer"
      summary: "Logs out current logged in customer session"
      description: ""
      operationId: "logoutCustomer"
      produces:
        - "application/json"
        - "application/xml"
      responses:
        default:
          description: "successful operation"
  /customer/login:
    get:
      tags:
        - "customer"
      summary: "Logs customer into the system"
      description: ""
      operationId: "loginCustomer"
      produces:
        - "application/json"
        - "application/xml"
      parameters:
        -
          in: "query"
          name: "customername"
          description: "The customer name for login"
          required: false
          type: "string"
        -
          in: "query"
          name: "password"
          description: "The password for login in clear text"
          required: false
          type: "string"
      responses:
        200:
          description: "successful operation"
          schema:
            type: "string"
        400:
          description: "Invalid customername/password supplied"
  /pet/{petId}:
    get:
      tags:
        - "pet"
      summary: "Find pet by ID"
      description: "Returns a pet when ID < 10.  ID > 10 or nonintegers will simulate API error conditions"
      operationId: "getPetById"
      produces:
        - "application/json"
        - "application/xml"
      parameters:
        -
          in: "path"
          name: "petId"
          description: "ID of pet that needs to be fetched"
          required: true
          type: "integer"
          format: "int64"
      responses:
        200:
          description: "successful operation"
          schema:
            $ref: "#/definitions/Pet"
        400:
          description: "Invalid ID supplied"
        404:
          description: "Pet not found"
definitions:
  Customer:
    properties:
      phone:
        type: "string"
      password:
        type: "string"
      email:
        type: "string"
      lastName:
        type: "string"
      firstName:
        type: "string"
      customername:
        type: "string"
      id:
        type: "integer"
        format: "int64"
      customerStatus:
        type: "integer"
        format: "int32"
        position: 0
  Category:
    properties:
      name:
        type: "string"
      id:
        type: "integer"
        format: "int64"
  Pet:
    enum:
      - "photoUrls"
      - "name"
    properties:
      tags:
        type: "array"
        items:
          $ref: "Tag"
      photoUrls:
        type: "array"
        items:
          type: "string"
      category:
        $ref: "Category"
      id:
        type: "integer"
        format: "int64"
      name:
        type: "string"
        example: "doggie"
        position: 0
      status:
        type: "string"
        position: 0
  Tag:
    properties:
      name:
        type: "string"
      id:
        type: "integer"
        format: "int64"
  Order:
    properties:
      complete:
        type: "boolean"
      shipDate:
        type: "string"
        format: "date-time"
      quantity:
        type: "integer"
        format: "int32"
      petId:
        type: "integer"
        format: "int64"
      id:
        type: "integer"
        format: "int64"
      status:
        type: "string"
        position: 0
