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