- rest-configuration:
    component: "servlet"
    contextPath: "/foo"
- rest:
    path: "/api/v3"
    put:
    - id: "updatePet"
      path: "/pet"
      consumes: "application/json,application/xml"
      param:
      - description: "Pet object that needs to be added to the store"
        name: "body"
        required: true
        type: "body"
      to: "direct:updatePet"
    - id: "updateUser"
      path: "/user/{username}"
      description: "This can only be done by the logged in user."
      consumes: "*/*"
      param:
      - dataType: "string"
        description: "name that need to be updated"
        name: "username"
        required: true
        type: "path"
      - description: "Updated user object"
        name: "body"
        required: true
        type: "body"
      to: "direct:updateUser"
    post:
    - id: "addPet"
      path: "/pet"
      consumes: "application/json,application/xml"
      param:
      - dataType: "boolean"
        defaultValue: "false"
        description: "Verbose data"
        name: "verbose"
        required: false
        type: "query"
      - description: "Pet object that needs to be added to the store"
        name: "body"
        required: true
        type: "body"
      to: "direct:addPet"
    - id: "updatePetWithForm"
      path: "/pet/{petId}"
      consumes: "application/x-www-form-urlencoded"
      param:
      - dataType: "integer"
        description: "ID of pet that needs to be updated"
        name: "petId"
        required: true
        type: "path"
      - dataType: "string"
        description: "Updated name of the pet"
        name: "name"
        required: true
        type: "formData"
      - dataType: "string"
        description: "Updated status of the pet"
        name: "status"
        required: true
        type: "formData"
      to: "direct:updatePetWithForm"
    - id: "uploadFile"
      path: "/pet/{petId}/uploadImage"
      consumes: "multipart/form-data"
      produces: "application/json"
      param:
      - dataType: "integer"
        description: "ID of pet to update"
        name: "petId"
        required: true
        type: "path"
      - dataType: "string"
        description: "Additional data to pass to server"
        name: "additionalMetadata"
        required: true
        type: "formData"
      - dataType: "string"
        description: "file to upload"
        name: "file"
        required: true
        type: "formData"
      to: "direct:uploadFile"
    - id: "placeOrder"
      path: "/store/order"
      consumes: "*/*"
      produces: "application/xml,application/json"
      param:
      - description: "order placed for purchasing the pet"
        name: "body"
        required: true
        type: "body"
      to: "direct:placeOrder"
    - id: "createUser"
      path: "/user"
      description: "This can only be done by the logged in user."
      consumes: "*/*"
      param:
      - description: "Created user object"
        name: "body"
        required: true
        type: "body"
      to: "direct:createUser"
    - id: "createUsersWithArrayInput"
      path: "/user/createWithArray"
      consumes: "*/*"
      param:
      - description: "List of user object"
        name: "body"
        required: true
        type: "body"
      to: "direct:createUsersWithArrayInput"
    - id: "createUsersWithListInput"
      path: "/user/createWithList"
      consumes: "*/*"
      param:
      - description: "List of user object"
        name: "body"
        required: true
        type: "body"
      to: "direct:createUsersWithListInput"
    get:
    - id: "findPetsByStatus"
      path: "/pet/findByStatus"
      description: "Multiple status values can be provided with comma separated strings"
      produces: "application/xml,application/json"
      param:
      - arrayType: "string"
        collectionFormat: "multi"
        dataType: "array"
        description: "Status values that need to be considered for filter"
        name: "status"
        required: true
        type: "query"
      to: "direct:findPetsByStatus"
    - id: "findPetsByTags"
      path: "/pet/findByTags"
      description: "Muliple tags can be provided with comma separated strings. Use\
        \ tag1, tag2, tag3 for testing."
      produces: "application/xml,application/json"
      param:
      - arrayType: "string"
        collectionFormat: "multi"
        dataType: "array"
        description: "Tags to filter by"
        name: "tags"
        required: true
        type: "query"
      to: "direct:findPetsByTags"
    - id: "getPetById"
      path: "/pet/{petId}"
      description: "Returns a single pet"
      produces: "application/xml,application/json"
      param:
      - dataType: "integer"
        description: "ID of pet to return"
        name: "petId"
        required: true
        type: "path"
      to: "direct:getPetById"
    - id: "getInventory"
      path: "/store/inventory"
      description: "Returns a map of status codes to quantities"
      produces: "application/json"
      to: "direct:getInventory"
    - id: "getOrderById"
      path: "/store/order/{orderId}"
      description: "For valid response try integer IDs with value >= 1 and <= 10.\
        \ Other values will generated exceptions"
      produces: "application/xml,application/json"
      param:
      - dataType: "integer"
        description: "ID of pet that needs to be fetched"
        name: "orderId"
        required: true
        type: "path"
      to: "direct:getOrderById"
    - id: "loginUser"
      path: "/user/login"
      produces: "application/xml,application/json"
      param:
      - dataType: "string"
        description: "The user name for login"
        name: "username"
        required: true
        type: "query"
      - dataType: "string"
        description: "The password for login in clear text"
        name: "password"
        required: true
        type: "query"
      to: "direct:loginUser"
    - id: "logoutUser"
      path: "/user/logout"
      to: "direct:logoutUser"
    - id: "getUserByName"
      path: "/user/{username}"
      produces: "application/xml,application/json"
      param:
      - dataType: "string"
        description: "The name that needs to be fetched. Use user1 for testing. "
        name: "username"
        required: true
        type: "path"
      to: "direct:getUserByName"
    delete:
    - id: "deletePet"
      path: "/pet/{petId}"
      param:
      - dataType: "string"
        name: "api_key"
        required: false
        type: "header"
      - dataType: "integer"
        description: "Pet id to delete"
        name: "petId"
        required: true
        type: "path"
      to: "direct:deletePet"
    - id: "deleteOrder"
      path: "/store/order/{orderId}"
      description: "For valid response try integer IDs with positive integer value.\
        \ Negative or non-integer values will generate API errors"
      param:
      - dataType: "integer"
        description: "ID of the order that needs to be deleted"
        name: "orderId"
        required: true
        type: "path"
      to: "direct:deleteOrder"
    - id: "deleteUser"
      path: "/user/{username}"
      description: "This can only be done by the logged in user."
      param:
      - dataType: "string"
        description: "The name that needs to be deleted"
        name: "username"
        required: true
        type: "path"
      to: "direct:deleteUser"
