<!--
  WADL sample was donated by @hiveship (Maelig Nantel) as part of:
  https://github.com/lucybot/api-spec-converter/issues/72
 -->
<application xmlns="http://wadl.dev.java.net/2009/02"
    xmlns:xi="http://www.w3.org/2001/XInclude"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xsi:schemaLocation="http://wadl.dev.java.net/2009/02 http://www.w3.org/Submission/wadl/wadl.xsd"
    xmlns:ns="http://www.namespace.com/rest/1"
    xmlns:zzz="http://www.namespace.com/elements/1" >

    <grammars>
         <include href="../dictionary/elements_v1.xsd"/> 
    </grammars>
    
    <resources base="http://localhost:8080/resources/v1/">
        <doc>This service used the standard HTTP error codes while operating:
        </doc>
        <doc>- 200: OK </doc>
        <doc>- 204: method successfully executed but no content returned (as
            for a update/delete)
        </doc>
        <doc>- 400: bad request - check your parameters</doc>
        <doc>- 401: bad credentials</doc>
        <doc>- 403: not authorized to do this request </doc>
        <doc>- 404: object not found </doc>
        <doc>- 500: internal server error while executing the request</doc>

        <resource path="/foo1" id="Foo1Resource">
            <doc></doc>
            <method name="GET" id="getFoo1">
                <doc>- 200: OK </doc>
                <doc>- 204: method successfully executed but no content found with
                    token</doc>
                <doc>- 400: bad request - check your parameters</doc>
                <request>
                    <param name="param1" type="xs:string" style="query" required="true">
                        <doc>a param</doc>
                    </param>
                    <representation mediaType="application/xml" />
                    <representation mediaType="application/json" />
                </request>
                <response status="200">
                    <representation mediaType="application/xml" element="zzz:media" href="elements_v1/media.xsd"/>
                    <representation mediaType="application/json" element="zzz:media" href="elements_v1/media.xsd"/>
                </response>
                <response status="204 401 403">
                    <representation mediaType="application/xml" element="zzz:Exception" href="Exception.xsd"/>
                    <representation mediaType="application/json" element="zzz:Exception" href="Exception.xsd"/>
                </response>
            </method>
        </resource>

        <resource path="/sessions" id="SessionResource">
            <doc></doc>
            <method name="POST" id="createSession">
                <doc>create session</doc>
                <doc>- 201: session created</doc>
                <request>
                    <representation mediaType="application/xml">
                        <param name="param2" type="xs:string" style="query" required="true">
                            <doc>a param</doc>
                        </param>
                    </representation>
                    <representation mediaType="application/json">
                        <param name="param22" type="xs:string" style="query" required="true">
                            <doc>a param</doc>
                        </param>
                    </representation>
                </request>
                <response status="201">
                    <param name="location" style="header" type="xs:anyURI"
                        required="true" />
                    <representation mediaType="application/xml" />
                    <representation mediaType="application/json" />
                </response>
                <response status="401">
                    <representation mediaType="application/xml" element="zzz:Exception" href="Exception.xsd"/>
                    <representation mediaType="application/json" element="zzz:Exception" href="Exception.xsd"/>
                </response>
            </method>

            <resource path="/{sessionId}" >
                <resource path="/events">
                    <param name="sessionId" type="xs:string" style="template"
                        required="true">
                        <doc>session id</doc>
                    </param>
                    <param name="lastEventId" type="xs:int" style="query"
                        required="true">
                        <doc>last event received, start with 0</doc>
                    </param>
                    <method name="GET" id="getMediasAndEvents">
                        <doc>Get events list starting from lastEventId. A session has to
                            be created before</doc>
                        <doc>- 200: OK </doc>
                        <doc>- 204: method successfully executed but no event found</doc>
                        <doc>- 400: bad request - check your parameters</doc>
                        <request>
                            <representation mediaType="application/xml" />
                            <representation mediaType="application/json" />
                        </request>
                        <response status="200">
                            <representation mediaType="application/xml" element="zzz:CustomType1" href="elements_v1/CustomType1.xsd"/>
                            <representation mediaType="application/json" element="zzz:CustomType1" href="elements_v1/CustomType1.xsd"/>
                        </response>
                        <response status="204 401 403">
                            <representation mediaType="application/xml" element="zzz:Exception" href="Exception.xsd"/>
                            <representation mediaType="application/json" element="zzz:Exception" href="Exception.xsd"/>
                        </response>
                    </method>
                </resource>
                <resource path="/event1">
                    <param name="sessionId" type="xs:string" style="template"
                        required="true">
                        <doc>session id</doc>
                    </param>
                    <method name="POST" id="event1Started">
                        <doc>To notify that event1 is started</doc>
                        <doc>- 204 : ok</doc>
                        <request>
                            <representation mediaType="application/xml" />
                            <representation mediaType="application/json" />
                        </request>
                        <response status="201">
                            <representation mediaType="application/xml" />
                            <representation mediaType="application/json" />
                        </response>
                        <response status="400 401 403">
                            <representation mediaType="application/xml" element="zzz:Exception" href="Exception.xsd"/>
                            <representation mediaType="application/json" element="zzz:Exception" href="Exception.xsd"/>
                        </response>
                    </method>

                    <method name="DELETE" id="event1Stopped">
                        <doc>To notify that event1 is stopped</doc>
                        <doc>- 204 : ok</doc>
                        <request>
                            <representation mediaType="application/xml" />
                            <representation mediaType="application/json" />
                        </request>
                        <response status="204">
                            <representation mediaType="application/xml" />
                            <representation mediaType="application/json" />
                        </response>
                        <response status="400 401 403">
                            <representation mediaType="application/xml" element="zzz:Exception" href="Exception.xsd"/>
                            <representation mediaType="application/json" element="zzz:Exception" href="Exception.xsd"/>
                        </response>
                    </method>
                </resource>
                <resource path="history">
                    <param name="sessionId" type="xs:string" style="template"
                        required="true">
                        <doc>session id</doc>
                    </param>
                    <method name="GET" id="getSHistory">
                        <doc>Get session history</doc>
                        <doc>- 200: OK </doc>
                        <doc>- 204: method successfully executed but no history found</doc>
                        <doc>- 400: bad request - check your parameters</doc>
                        <request>
                            <representation mediaType="application/xml" />
                            <representation mediaType="application/json" />
                        </request>
                        <response status="200">
                            <representation mediaType="application/pdf" />
                        </response>
                        <response status="204 401 403">
                            <representation mediaType="application/xml" element="zzz:Exception" href="Exception.xsd"/>
                            <representation mediaType="application/json" element="zzz:Exception" href="Exception.xsd"/>
                        </response>
                    </method>
                </resource>
                
            </resource>

        </resource>

        <resource path="/sessions/{sessionId}/type1/{CustomType2}"
            id="SessionMediaResource">
            <param name="sessionId" style="template" type="xs:string"
                required="true" />
            <param name="CustomType2" style="template" type="xs:string"
                required="true" />
            <method name="PUT" id="event2">
                <doc>Event 2</doc>
                <doc>- 201: ok</doc>
                <request>
                    <representation mediaType="application/xml" element="zzz:data" href="elements_v1/data.xsd"/>
                    <representation mediaType="application/json" element="zzz:data" href="elements_v1/data.xsd"/>
                </request>
                <response status="201">
                    <representation mediaType="application/xml" />
                    <representation mediaType="application/json" />
                </response>
                <response status="400 401 403">
                    <representation mediaType="application/xml" element="zzz:Exception" href="Exception.xsd"/>
                    <representation mediaType="application/json" element="zzz:Exception" href="Exception.xsd"/>
                </response>
            </method>

            <method name="DELETE" id="stopEvent2">
                <doc>Stop event 2</doc>
                <doc>- 204: ok</doc>
                <request>
                    <representation mediaType="application/xml" />
                    <representation mediaType="application/json" />
                </request>
                <response status="204">
                    <representation mediaType="application/xml" />
                    <representation mediaType="application/json" />
                </response>
                <response status="400 401 403">
                    <representation mediaType="application/xml" element="zzz:Exception" href="Exception.xsd"/>
                    <representation mediaType="application/json" element="zzz:Exception" href="Exception.xsd"/>
                </response>
            </method>
        </resource>

    </resources>
</application>
