<?xml version="1.0" encoding="UTF-8"?>
<definitions name="projects"
    targetNamespace="http://demo.5pmweb.com/api/wsdl/projects"
        xmlns="http://schemas.xmlsoap.org/wsdl/"
        xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
        xmlns:xsd="http://www.w3.org/2001/XMLSchema"
        xmlns:xsdmy="http://demo.5pmweb.com/api/wsdl/schema.xsd"
        xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
        xmlns:tns="http://demo.5pmweb.com/api/wsdl/projects"
        xmlns:nsc="http://demo.5pmweb.com/api/wsdl/schema"
        xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
        xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/">
    <types>
        <xsd:schema targetNamespace="http://demo.5pmweb.com/api/wsdl/projects" xmlns:tns="http://demo.5pmweb.com/api/wsdl/schema">
            <xsd:import schemaLocation="schema.xsd" namespace="http://demo.5pmweb.com/api/wsdl/schema"/>
        </xsd:schema>
    </types>
    <!-- header message -->
    <message name="header">
        <part name="sessionId" element="nsc:sessionId" />
    </message>


    <!-- Soap operations request/response messages -->
    <message name="addSoapRequest">
        <part name="project" type="nsc:Project"/>
    </message>
    <message name="addSoapResponse">
        <part name="id" type="xsd:integer"/>
    </message>
    <message name="updateSoapRequest">
        <part name="project" type="nsc:Project"/>
    </message>
    <message name="updateSoapResponse">
        <part name="status" type="xsd:boolean"/>
    </message>
    <message name="removeSoapRequest">
        <part name="id" type="xsd:integer"/>
    </message>
    <message name="removeSoapResponse">
        <part name="status" type="xsd:boolean"/>
    </message>
    <message name="getByIdSoapRequest">
        <part name="id" type="xsd:integer"/>
    </message>
    <message name="getByIdSoapResponse">
        <part name="project" type="nsc:Project"/>
    </message>
    <message name="getAllSoapRequest">
    </message>
    <message name="getAllSoapResponse">
        <part name="list" type="nsc:ProjectList"/>
    </message>

    <!-- HttpGet operations request/response messages -->
    <message name="addHttpGetRequest">
        <part name="sessionId" type="xsd:string"/>
        <part name="project" type="nsc:Project"/>
    </message>
    <message name="addHttpGetResponse">
        <part name="id" type="xsd:integer"/>
    </message>
    <message name="updateHttpGetRequest">
        <part name="sessionId" type="xsd:string"/>
        <part name="project" type="nsc:Project"/>
    </message>
    <message name="updateHttpGetResponse">
        <part name="status" type="xsd:boolean"/>
    </message>
    <message name="removeHttpGetRequest">
        <part name="sessionId" type="xsd:string"/>
        <part name="id" type="xsd:integer"/>
    </message>
    <message name="removeHttpGetResponse">
        <part name="status" type="xsd:boolean"/>
    </message>
    <message name="getByIdHttpGetRequest">
        <part name="sessionId" type="xsd:string"/>
        <part name="id" type="xsd:integer"/>
    </message>
    <message name="getByIdHttpGetResponse">
        <part name="project" type="nsc:Project"/>
    </message>
    <message name="getAllHttpGetRequest">
        <part name="sessionId" type="xsd:string"/>
    </message>
    <message name="getAllHttpGetResponse">
        <part name="list" type="nsc:ProjectList"/>
    </message>

    <!-- HttpPost operations request/response messages -->
    <message name="addHttpPostRequest">
        <part name="sessionId" type="xsd:string"/>
        <part name="project" type="nsc:Project"/>
    </message>
    <message name="addHttpPostResponse">
        <part name="id" type="xsd:integer"/>
    </message>
    <message name="updateHttpPostRequest">
        <part name="sessionId" type="xsd:string"/>
        <part name="project" type="nsc:Project"/>
    </message>
    <message name="updateHttpPostResponse">
        <part name="status" type="xsd:boolean"/>
    </message>
    <message name="removeHttpPostRequest">
        <part name="sessionId" type="xsd:string"/>
        <part name="id" type="xsd:integer"/>
    </message>
    <message name="removeHttpPostResponse">
        <part name="status" type="xsd:boolean"/>
    </message>
    <message name="getByIdHttpPostRequest">
        <part name="sessionId" type="xsd:string"/>
        <part name="id" type="xsd:integer"/>
    </message>
    <message name="getByIdHttpPostResponse">
        <part name="project" type="nsc:Project"/>
    </message>
    <message name="getAllHttpPostRequest">
        <part name="sessionId" type="xsd:string"/>
    </message>
    <message name="getAllHttpPostResponse">
        <part name="list" type="nsc:ProjectList"/>
    </message>


    <!-- Soap port type -->
    <portType name="ProjectsSoapPortType">
        <operation name="add">
            <input name="addSoapInput" message="tns:addSoapRequest"/>
            <output name="addSoapOutput" message="tns:addSoapResponse"/>
        </operation>
        <operation name="update">
            <input name="updateSoapInput" message="tns:updateSoapRequest"/>
            <output name="updateSoapOutput" message="tns:updateSoapResponse"/>
        </operation>
        <operation name="remove">
            <input name="removeSoapInput" message="tns:removeSoapRequest"/>
            <output name="removeSoapOutput" message="tns:removeSoapResponse"/>
        </operation>
        <operation name="getById">
            <input name="getByIdSoapInput" message="tns:getByIdSoapRequest"/>
            <output name="getByIdSoapOutput" message="tns:getByIdSoapResponse"/>
        </operation>
        <operation name="getAll">
            <input name="getAllSoapInput" message="tns:getAllSoapRequest"/>
            <output name="getAllSoapOutput" message="tns:getAllSoapResponse"/>
        </operation>
    </portType>

    <!-- HttpGet port type -->
    <portType name="ProjectsHttpGetPortType">
        <operation name="add">
            <input name="addHttpGetInput" message="tns:addHttpGetRequest"/>
            <output name="addHttpGetOutput" message="tns:addHttpGetResponse"/>
        </operation>
        <operation name="update">
            <input name="updateHttpGetInput" message="tns:updateSoapRequest"/>
            <output name="updateHttpGetOutput" message="tns:updateSoapResponse"/>
        </operation>
        <operation name="remove">
            <input name="removeHttpGetInput" message="tns:removeHttpGetRequest"/>
            <output name="removeHttpGetOutput" message="tns:removeHttpGetResponse"/>
        </operation>
        <operation name="getById">
            <input name="getByIdHttpGetInput" message="tns:getByIdHttpGetRequest"/>
            <output name="getByIdHttpGetOutput" message="tns:getByIdHttpGetResponse"/>
        </operation>
        <operation name="getAll">
            <input name="getAllHttpGetInput" message="tns:getAllHttpGetRequest"/>
            <output name="getAllHttpGetOutput" message="tns:getAllHttpGetResponse"/>
        </operation>
    </portType>

    <!-- HttpPost port type -->
    <portType name="ProjectsHttpPostPortType">
        <operation name="add">
            <input name="addHttpPostInput" message="tns:addHttpPostRequest"/>
            <output name="addHttpPostOutput" message="tns:addHttpPostResponse"/>
        </operation>
        <operation name="update">
            <input name="updateHttpPostInput" message="tns:updateHttpPostRequest"/>
            <output name="updateHttpPostOutput" message="tns:updateHttpPostResponse"/>
        </operation>
        <operation name="remove">
            <input name="removeHttpPostInput" message="tns:removeHttpPostRequest"/>
            <output name="removeHttpPostOutput" message="tns:removeHttpPostResponse"/>
        </operation>
        <operation name="getById">
            <input name="getByIdHttpPostInput" message="tns:getByIdHttpPostRequest"/>
            <output name="getByIdHttpPostOutput" message="tns:getByIdHttpPostResponse"/>
        </operation>
        <operation name="getAll">
            <input name="getAllHttpPostInput" message="tns:getAllHttpPostRequest"/>
            <output name="getAllHttpPostOutput" message="tns:getAllHttpPostResponse"/>
        </operation>
    </portType>


    <!-- Soap port type binding -->
    <binding name="ProjectsSoapPortTypeBinding" type="tns:ProjectsSoapPortType">
        <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
        <operation name="add">
            <soap:operation soapAction="http://demo.5pmweb.com/api/dev/service/soap/projects/add"/>
            <input name="addSoapInput">
                <soap:header message="tns:header" part="sessionId" use="literal"/>
                <soap:body use="literal" namespace="http://demo.5pmweb.com/api/wsdl/projects"/>
            </input>
            <output name="addSoapOutput">
                <soap:body use="literal" namespace="http://demo.5pmweb.com/api/wsdl/projects"/>
			</output>
        </operation>
        <operation name="update">
            <soap:operation soapAction="http://demo.5pmweb.com/api/dev/service/soap/projects/update"/>
            <input name="updateSoapInput">
                <soap:header message="tns:header" part="sessionId" use="literal"/>
                <soap:body use="literal" namespace="http://demo.5pmweb.com/api/wsdl/projects"/>
            </input>
            <output name="updateSoapOutput">
                <soap:body use="literal" namespace="http://demo.5pmweb.com/api/wsdl/projects"/>
			</output>
        </operation>
        <operation name="remove">
            <soap:operation soapAction="http://demo.5pmweb.com/api/dev/service/soap/projects/remove"/>
            <input name="removeSoapInput">
                <soap:header message="tns:header" part="sessionId" use="literal"/>
                <soap:body use="literal" namespace="http://demo.5pmweb.com/api/wsdl/projects"/>
            </input>
            <output name="removeSoapOutput">
                <soap:body use="literal" namespace="http://demo.5pmweb.com/api/wsdl/projects"/>
			</output>
        </operation>
        <operation name="getById">
            <soap:operation soapAction="http://demo.5pmweb.com/api/dev/service/soap/projects/getById"/>
            <input name="getByIdSoapInput">
                <soap:header message="tns:header" part="sessionId" use="literal"/>
                <soap:body use="literal" namespace="http://demo.5pmweb.com/api/wsdl/projects"/>
            </input>
            <output name="getByIdSoapOutput">
                <soap:body use="literal" namespace="http://demo.5pmweb.com/api/wsdl/projects"/>
			</output>
        </operation>
        <operation name="getAll">
            <soap:operation soapAction="http://demo.5pmweb.com/api/dev/service/soap/projects/getAll"/>
            <input name="getAllSoapInput">
                <soap:header message="tns:header" part="sessionId" use="literal"/>
                <soap:body use="literal" namespace="http://demo.5pmweb.com/api/wsdl/projects"/>
            </input>
            <output name="getAllSoapOutput">
                <soap:body use="literal" namespace="http://demo.5pmweb.com/api/wsdl/projects"/>
			</output>
        </operation>
    </binding>

    <!-- HttpGet port type binding -->
    <binding name="ProjectsHttpGetPortTypeBinding" type="tns:ProjectsHttpGetPortType">
        <http:binding verb="GET"/>
        <operation name="add">
            <http:operation location="/add" />
            <input name="addHttpGetInput">
                <http:urlEncoded />
            </input>
            <output name="addHttpGetOutput">
                <mime:mimeXml part="response" />
            </output>
        </operation>
        <operation name="update">
            <http:operation location="/update" />
            <input name="updateHttpGetInput">
                <http:urlEncoded />
            </input>
            <output name="updateHttpGetOutput">
                <mime:mimeXml part="response" />
            </output>
        </operation>
        <operation name="remove">
            <http:operation location="/remove" />
            <input name="removeHttpGetInput">
                <http:urlEncoded />
            </input>
            <output name="removeHttpGetOutput">
                <mime:mimeXml part="response" />
            </output>
        </operation>
        <operation name="getById">
            <http:operation location="/getById" />
            <input name="getByIdHttpGetInput">
                <http:urlEncoded />
            </input>
            <output name="getByIdHttpGetOutput">
                <mime:mimeXml part="response" />
            </output>
        </operation>
        <operation name="getAll">
            <http:operation location="/getAll" />
            <input name="getAllHttpGetInput">
                <http:urlEncoded />
            </input>
            <output name="getAllHttpGetOutput">
                <mime:mimeXml part="response" />
            </output>
        </operation>
    </binding>

    <!-- HttpPost port type binding -->
    <binding name="ProjectsHttpPostPortTypeBinding" type="tns:ProjectsHttpPostPortType">
        <http:binding verb="POST"/>
        <operation name="add">
            <http:operation location="/add" />
            <input name="addHttpPostInput">
                <mime:content type="application/x-www-form-urlencoded" />
            </input>
            <output name="addHttpPostOutput">
                <mime:mimeXml part="response" />
            </output>
        </operation>
        <operation name="update">
            <http:operation location="/update" />
            <input name="updateHttpPostInput">
                <mime:content type="application/x-www-form-urlencoded" />
            </input>
            <output name="updateHttpPostOutput">
                <mime:mimeXml part="response" />
            </output>
        </operation>
        <operation name="remove">
            <http:operation location="/remove" />
            <input name="removeHttpPostInput">
                <mime:content type="application/x-www-form-urlencoded" />
            </input>
            <output name="removeHttpPostOutput">
                <mime:mimeXml part="response" />
            </output>
        </operation>
        <operation name="getById">
            <http:operation location="/getById" />
            <input name="getByIdHttpPostInput">
                <mime:content type="application/x-www-form-urlencoded" />
            </input>
            <output name="getByIdHttpPostOutput">
                <mime:mimeXml part="response" />
            </output>
        </operation>
        <operation name="getAll">
            <http:operation location="/getAll" />
            <input name="getAllHttpPostInput">
                <mime:content type="application/x-www-form-urlencoded" />
            </input>
            <output name="getAllHttpPostOutput">
                <mime:mimeXml part="response" />
            </output>
        </operation>
    </binding>


    <!-- projects management service -->
    <service name="ProjectsService">
        <documentation>5pm projects servcie</documentation>
        <port name="ProjectsSoapPort" binding="tns:ProjectsSoapPortTypeBinding">
            <soap:address location="http://demo.5pmweb.com/api/dev/service/soap/projects"/>
        </port>
        <port name="ProjectsHttpGetPort" binding="tns:ProjectsHttpGetPortTypeBinding">
            <http:address location="http://demo.5pmweb.com/api/dev/service/get/projects" />
        </port>
        <port name="ProjectsHttpPostPort" binding="tns:ProjectsHttpPostPortTypeBinding">
            <http:address location="http://demo.5pmweb.com/api/dev/service/post/projects" />
        </port>
    </service>
</definitions>
