<?xml version="1.0" encoding="UTF-8" ?>
<definitions name="cdx" targetNamespace="http://www.ExchangeNetwork.net/schema/v1.0/node.wsdl"
      xmlns:tns="http://www.ExchangeNetwork.net/schema/v1.0/node.wsdl"
      xmlns:xsd="http://www.w3.org/2001/XMLSchema"
      xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
      xmlns:typens="http://www.ExchangeNetwork.net/schema/v1.0/node.xsd"
      xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
      xmlns:dime="http://schemas.xmlsoap.org/ws/2002/04/dime/wsdl/"
      xmlns="http://schemas.xmlsoap.org/wsdl/">
	<types>
		<schema targetNamespace="http://www.ExchangeNetwork.net/schema/v1.0/node.xsd" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" elementFormDefault="qualified">
			<complexType name="NodeDocument">
				<sequence>
					<element name="name" type="xsd:string" default="Your document name"/>
					<element name="type" type="xsd:string"/>
					<element name="content" type="xsd:base64Binary"/>
				</sequence>
			</complexType>
			<complexType name="ArrayOfstring">
				<complexContent>
					<restriction base="SOAP-ENC:Array">
						<attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="string[]"/>
					</restriction>
				</complexContent>
			</complexType>
			<complexType name="ArrayofDoc">
				<complexContent>
					<restriction base="SOAP-ENC:Array">
						<attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="typens:NodeDocument[]"/>
					</restriction>
				</complexContent>
			</complexType>
			<complexType name="QueryResult">
				<sequence>
					<any/>
				</sequence>
			</complexType>
		</schema>
	</types>
	<message name="Authenticate">
		<part name="userId" type="xsd:string"/>
		<part name="credential" type="xsd:string"/>
		<part name="authenticationMethod" type="xsd:string"/>
	</message>
	<message name="AuthenticateResponse">
		<part name="return" type="xsd:string"/>
	</message>
	<message name="Query">
		<part name="securityToken" type="xsd:string"/>
		<part name="request" type="xsd:string"/>
		<part name="rowId" type="xsd:integer"/>
		<part name="maxRows" type="xsd:integer"/>
		<part name="parameters" type="typens:ArrayOfstring"/>
	</message>
	<message name="QueryResponse">
		<part name="return" type="typens:QueryResult"/>
	</message>
	<message name="Solicit">
		<part name="securityToken" type="xsd:string"/>
		<part name="returnURL" type="xsd:string"/>
		<part name="request" type="xsd:string"/>
		<part name="parameters" type="typens:ArrayOfstring"/>
	</message>
	<message name="SolicitResponse">
		<part name="return" type="xsd:string"/>
	</message>
	<message name="Execute">
		<part name="securityToken" type="xsd:string"/>
		<part name="request" type="xsd:string"/>
		<part name="parameters" type="typens:ArrayOfstring"/>
	</message>
	<message name="ExecuteResponse">
		<part name="return" type="xsd:string"/>
	</message>
	<message name="Submit">
		<part name="securityToken" type="xsd:string"/>
		<part name="transactionId" type="xsd:string"/>
		<part name="dataflow" type="xsd:string"/>
		<part name="documents" type="typens:ArrayofDoc"/>
	</message>
	<message name="SubmitResponse">
		<part name="return" type="xsd:string"/>
	</message>
	<message name="GetStatus">
		<part name="securityToken" type="xsd:string"/>
		<part name="transactionId" type="xsd:string"/>
	</message>
	<message name="GetStatusResponse">
		<part name="return" type="xsd:string"/>
	</message>
	<message name="Download">
		<part name="securityToken" type="xsd:string"/>
		<part name="transactionId" type="xsd:string"/>
		<part name="dataflow" type="xsd:string"/>
		<part name="documents" type="typens:ArrayofDoc"/>
	</message>
	<message name="DownloadResponse">
		<part name="documents" type="typens:ArrayofDoc"/>
	</message>
	<message name="Notify">
		<part name="securityToken" type="xsd:string"/>
		<part name="nodeAddress" type='xsd:string'/>
		<part name="dataflow" type="xsd:string"/>
		<part name="documents" type="typens:ArrayofDoc"/>
	</message>
	<message name="NotifyResponse">
		<part name="return" type="xsd:string"/>
	</message>
	<message name="NodePing">
		<part name="Hello" type="xsd:string"/>
	</message>
	<message name="NodePingResponse">
		<part name="return" type="xsd:string"/>
	</message>
	<message name="GetServices">
		<part name="securityToken" type="xsd:string"/>
		<part name="serviceType" type="xsd:string"/>
	</message>
	<message name="GetServicesResponse">
		<part name="return" type="typens:ArrayOfstring"/>
	</message>
	<portType name="NetworkNodePortType">
		<operation name="Authenticate" parameterOrder="userId credential authenticationMethod">
			<documentation>User authentication method, must be called initially</documentation>
			<input message="tns:Authenticate"/>
			<output message="tns:AuthenticateResponse"/>
		</operation>
		<operation name="Submit" parameterOrder="securityToken transactionId dataflow documents">
			<documentation>Submit one or more documents to the node.</documentation>
			<input message="tns:Submit"/>
			<output message="tns:SubmitResponse"/>
		</operation>
		<operation name="GetStatus" parameterOrder="securityToken transactionId">
			<documentation>Check the status of a transaction</documentation>
			<input message="tns:GetStatus"/>
			<output message="tns:GetStatusResponse"/>
		</operation>
		<operation name="Notify" parameterOrder="securityToken nodeAddress dataflow documents">
			<documentation>Notify document availability, network events, submission statuses</documentation>
			<input message="tns:Notify"/>
			<output message="tns:NotifyResponse"/>
		</operation>
		<operation name="Download" parameterOrder="securityToken transactionId dataflow documents">
			<documentation>Download one or more documents from the node</documentation>
			<input message="tns:Download"/>
			<output message="tns:DownloadResponse"/>
		</operation>
		<operation name="Query" parameterOrder="securityToken request rowId maxRows parameters">
			<documentation>Execute an SQL query</documentation>
			<input message="tns:Query"/>
			<output message="tns:QueryResponse"/>
		</operation>
		<operation name="Solicit" parameterOrder="securityToken returnURL request parameters">
			<documentation>Solicit an SQL query</documentation>
			<input message="tns:Solicit"/>
			<output message="tns:SolicitResponse"/>
		</operation>
		<operation name="Execute" parameterOrder="securityToken request parameters">
			<documentation>Execute an SQL statement (DML)</documentation>
			<input message="tns:Execute"/>
			<output message="tns:ExecuteResponse"/>
		</operation>
		<operation name="NodePing" parameterOrder="Hello">
			<documentation>Check the status of the service</documentation>
			<input message="tns:NodePing"/>
			<output message="tns:NodePingResponse"/>
		</operation>
		<operation name="GetServices" parameterOrder="securityToken serviceType">
			<documentation>Query services offered by the node</documentation>
			<input message="tns:GetServices"/>
			<output message="tns:GetServicesResponse"/>
		</operation>
	</portType>
	<binding name="NetworkNodeBinding" type="tns:NetworkNodePortType">
		<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
		<operation name="Authenticate">
			<soap:operation soapAction="" />
			<input>
				<soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://www.ExchangeNetwork.net/schema/v1.0/node.xsd"/>
			</input>
			<output>
				<soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://www.ExchangeNetwork.net/schema/v1.0/node.xsd"/>
			</output>
		</operation>
		<operation name="Submit">
      		    	<soap:operation soapAction="" />
      			<input>
				<dime:message layout="http://schemas.xmlsoap.org/ws/2002/04/dime/closed-layout"	wsdl:required="true"/>
				<soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://www.ExchangeNetwork.net/schema/v1.0/node.xsd"/>
			</input>
			<output>
				<soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://www.ExchangeNetwork.net/schema/v1.0/node.xsd"/>
			</output>
		</operation>
		<operation name="GetStatus">
			<soap:operation soapAction="" />
			<input>
				<soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://www.ExchangeNetwork.net/schema/v1.0/node.xsd"/>
			</input>
			<output>
				<soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://www.ExchangeNetwork.net/schema/v1.0/node.xsd"/>
			</output>
		</operation>
		<operation name="Download">
			<soap:operation soapAction="" />
			<input>
				<soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://www.ExchangeNetwork.net/schema/v1.0/node.xsd"/>
			</input>
			<output>
				<dime:message layout="http://schemas.xmlsoap.org/ws/2002/04/dime/closed-layout"	wsdl:required="true"/>
				<soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://www.ExchangeNetwork.net/schema/v1.0/node.xsd"/>
			</output>
		</operation>
		<operation name="Notify">
			<soap:operation soapAction="" />
			<input>
				<soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://www.ExchangeNetwork.net/schema/v1.0/node.xsd"/>
			</input>
			<output>
				<soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://www.ExchangeNetwork.net/schema/v1.0/node.xsd"/>
			</output>
		</operation>
		<operation name="Query">
			<soap:operation soapAction="" />
			<input>
				<soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://www.ExchangeNetwork.net/schema/v1.0/node.xsd"/>
			</input>
			<output>
				<soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://www.ExchangeNetwork.net/schema/v1.0/node.xsd"/>
			</output>
		</operation>
		<operation name="Solicit">
			<soap:operation soapAction="" />
			<input>
				<soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://www.ExchangeNetwork.net/schema/v1.0/node.xsd"/>
			</input>
			<output>
				<soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://www.ExchangeNetwork.net/schema/v1.0/node.xsd"/>
			</output>
		</operation>
		<operation name="Execute">
			<soap:operation soapAction="" />
			<input>
				<soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://www.ExchangeNetwork.net/schema/v1.0/node.xsd"/>
			</input>
			<output>
				<soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://www.ExchangeNetwork.net/schema/v1.0/node.xsd"/>
			</output>
		</operation>
		<operation name="NodePing">
			<soap:operation soapAction="" />
			<input>
				<soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://www.ExchangeNetwork.net/schema/v1.0/node.xsd"/>
			</input>
			<output>
				<soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://www.ExchangeNetwork.net/schema/v1.0/node.xsd"/>
			</output>
		</operation>
		<operation name="GetServices">
			<soap:operation soapAction="" />
			<input>
				<soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://www.ExchangeNetwork.net/schema/v1.0/node.xsd"/>
			</input>
			<output>
				<soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://www.ExchangeNetwork.net/schema/v1.0/node.xsd"/>
			</output>
		</operation>
	</binding>
	<service name="NetworkNode">
		<documentation>A set of services for the National Environmental Information Exchange Network (NEIEN)</documentation>
		<port name="NetworkNodePortType" binding="tns:NetworkNodeBinding">
        
			<soap:address location="https://www.epacdxnode.net/cdx/services/NetworkNodePortType_V10"/>
		</port>
	</service>
</definitions>
