<definitions xmlns="http://schemas.xmlsoap.org/wsdl/"
  xmlns:echo="http://echo.nasa.gov/echo/v9" xmlns:order="http://echo.nasa.gov/v9/order/fulfillment"
  xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:types="http://echo.nasa.gov/v9/order/fulfillment/types"
  xmlns:faults="http://echo.nasa.gov/v9/order/fulfillment/faults" name="OrderFulfillmentDefinitions"
  targetNamespace="http://echo.nasa.gov/v9/order/fulfillment">
  <documentation>
		<p xmlns="">Service offered by data providers who wish to support ordering. A client uses this interface to 
		send user order requests to the provider for fulfillment.</p>
		<p xmlns="">There are three major order operations: submit, cancel, and quote. A provider does not have to 
		support all the operations and can configure which operations are supported using the provider policies on the 
		ECHO API.</p>
		<p xmlns=""><b>Submit:</b> Submit is the minimum operation required to support ordering. After a user assembles 
		an order on the client, the user submits the order to ECHO. ECHO then contacts the provider and submits the order 
		to them.</p>
		<p xmlns=""><b>Quote:</b> Quote is an optional operation that a provider may implement. After a user assembles 
		an order the user may request a quote for the order. ECHO then contacts the provider and requests a quote.
		</p>
		<p xmlns=""><b>Cancel:</b> Cancel is an optional operation that a provider may implement. After a user assembles 
		an order in the client and has submitted the order, the user may request to cancel it. ECHO then contacts 
		the provider and requests a cancellation.</p>
    <p xmlns="">This version of the API was introduced in ECHO 9 and therefore uses the ECHO 9 namespaces. There
    have been no changes to this API for ECHO 10 so there is currently no definition of this API in the ECHO 
    10 namespaces. ECHO 10 will continue to talk to the version 9 definition of this API. However, a new version of 
    this API may be introduced in the future if changes are required.
    </p>
    <p xmlns="">
    <em>Known Issues:</em> The Order Fulfillment messages and types schema does not included the
    attribute <code>elementFormDefault=&quot;qualified&quot;</code> which means that only the
    root element of the message needs to be in a namespace. All of the child elements should not have
    a namespace even though the schema defines a target namespace. This was an oversight in the original
    schema definition, however it cannot be changed now without breaking existing clients. This may 
    be corrected in a future release. An example message is presented below. Refer to the
    <a href="http://www.w3.org/TR/xmlschema-0/#UnqualLocals">XML Schema Part 0: Primer</a> 
    for more information on namespace handling.
    </p>
    <p xmlns="">
    An example SOAP response message required now because of the namespace issue:
    <code><pre>
    &lt;soapenv:Envelope xmlns:soapenv=&quot;http://schemas.xmlsoap.org/soap/envelope/&quot;&gt;
       &lt;soapenv:Header/&gt;
       &lt;soapenv:Body&gt;
          &lt;order:SubmitResponse xmlns:order=&quot;http://echo.nasa.gov/v9/order/fulfillment&quot;&gt;
             &lt;SubmitAcknowledgment&gt;
                &lt;Acceptance&gt;
                   &lt;UpdateMechanism&gt;AUTOMATIC&lt;/UpdateMechanism&gt;
                   &lt;ProviderOrderReceipt&gt;
                      &lt;EstimatedShipDate&gt;2008-06-08T18:18:32.850Z&lt;/EstimatedShipDate&gt;
                      &lt;Pricing&gt;
                         &lt;TotalPrice&gt;100.0&lt;/TotalPrice&gt;
                         &lt;DataPrice&gt;25.0&lt;/DataPrice&gt;
                         &lt;MediaPrice&gt;50.0&lt;/MediaPrice&gt;
                         &lt;ShippingFee&gt;10.0&lt;/ShippingFee&gt;
                         &lt;HandlingFee&gt;15.0&lt;/HandlingFee&gt;
                         &lt;Discount&gt;0.0&lt;/Discount&gt;
                         &lt;QuantityOfMedia&gt;3&lt;/QuantityOfMedia&gt;
                         &lt;AdditionalInformation&gt;No discount is offered right now.&lt;/AdditionalInformation&gt;
                      &lt;/Pricing&gt;
                   &lt;/ProviderOrderReceipt&gt;
                &lt;/Acceptance&gt;
                &lt;StatusInformation&gt;Your order has been accepted. We will ship it ASAP.&lt;/StatusInformation&gt;
                &lt;ProviderTrackingId&gt;1212517112850&lt;/ProviderTrackingId&gt;
             &lt;/SubmitAcknowledgment&gt;
          &lt;/order:SubmitResponse&gt;
       &lt;/soapenv:Body&gt;
    &lt;/soapenv:Envelope&gt;
    </pre></code>
    </p>
    <p xmlns="">
    An example SOAP response message that may be required in the future when the namespace issue is resolved. 
    This message is not currently considered valid even though the schemas have a target namespace defined:
    <code><pre>
    &lt;soapenv:Envelope xmlns:soapenv=&quot;http://schemas.xmlsoap.org/soap/envelope/&quot;&gt;
       &lt;soapenv:Header/&gt;
       &lt;soapenv:Body&gt;
          &lt;order:SubmitResponse xmlns:order=&quot;http://echo.nasa.gov/v9/order/fulfillment&quot; 
                             xmlns:types=&quot;http://echo.nasa.gov/v9/order/fulfillment/types&quot;&gt;
             &lt;order:SubmitAcknowledgment&gt;
                &lt;types:Acceptance&gt;
                   &lt;types:UpdateMechanism&gt;AUTOMATIC&lt;/types:UpdateMechanism&gt;
                   &lt;types:ProviderOrderReceipt&gt;
                      &lt;types:EstimatedShipDate&gt;2008-06-08T18:18:32.850Z&lt;/types:EstimatedShipDate&gt;
                      &lt;types:Pricing&gt;
                         &lt;types:TotalPrice&gt;100.0&lt;/types:TotalPrice&gt;
                         &lt;types:DataPrice&gt;25.0&lt;/types:DataPrice&gt;
                         &lt;types:MediaPrice&gt;50.0&lt;/types:MediaPrice&gt;
                         &lt;types:ShippingFee&gt;10.0&lt;/types:ShippingFee&gt;
                         &lt;types:HandlingFee&gt;15.0&lt;/types:HandlingFee&gt;
                         &lt;types:Discount&gt;0.0&lt;/types:Discount&gt;
                         &lt;types:QuantityOfMedia&gt;3&lt;/types:QuantityOfMedia&gt;
                         &lt;types:AdditionalInformation&gt;No discount is offered right now.&lt;/types:AdditionalInformation&gt;
                      &lt;/types:Pricing&gt;
                   &lt;/types:ProviderOrderReceipt&gt;
                &lt;/types:Acceptance&gt;
                &lt;types:StatusInformation&gt;Your order has been accepted. We will ship it ASAP.&lt;/types:StatusInformation&gt;
                &lt;types:ProviderTrackingId&gt;1212517112850&lt;/types:ProviderTrackingId&gt;
             &lt;/order:SubmitAcknowledgment&gt;
          &lt;/order:SubmitResponse&gt;
       &lt;/soapenv:Body&gt;
    &lt;/soapenv:Envelope&gt;
    </pre></code>
    </p>
	</documentation>
  <types>
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
      targetNamespace="http://echo.nasa.gov/v9/order/fulfillment">
      <xsd:include schemaLocation="OrderFulfillmentMessages.xsd" />
      <xsd:import namespace="http://echo.nasa.gov/v9/order/fulfillment/faults"
        schemaLocation="OrderFulfillmentFaults.xsd" />
    </xsd:schema>
  </types>
  <message name="SubmitRequest">
    <part element="order:Submit" name="parameters" />
  </message>
  <message name="SubmitResponse">
    <part element="order:SubmitResponse" name="parameters" />
  </message>
  <message name="CancelRequest">
    <part element="order:Cancel" name="parameters" />
  </message>
  <message name="CancelResponse">
    <part element="order:CancelResponse" name="parameters" />
  </message>
  <message name="QuoteRequest">
    <part element="order:Quote" name="parameters" />
  </message>
  <message name="QuoteResponse">
    <part element="order:QuoteResponse" name="parameters" />
  </message>
  <message name="UnsupportedOperationFaultMsg">
    <part name="parameters" element="faults:UnsupportedOperationFault" />
  </message>
  <message name="IllegalArgumentFaultMsg">
    <part name="parameters" element="faults:IllegalArgumentFault" />
  </message>
  <portType name="OrderFulfillmentPort">
    <operation name="Submit">
      <documentation>
				<p xmlns="">Submit is the minimum operation required to support ordering. After a user assembles an 
				order on the client, the user submits the order. The client then contacts the provider and submits 
				the order to them.</p>
				<p xmlns="">The submit operation includes all the information required for the provider to fullfill 
				the order request. The provider must acknowledge the submission by returning an acknowledgement to 
				the client. The provider may not accept the submission in the acknowledgement and may do so at a later 
				time using a separate, predetermined API.</p>
				<p xmlns="">A provider may choose to reject a submit request even if they normally support quoting. 
				An acknowledgement with the rejection notice will be returned. A provider will include a message in 
				the response that indicates why the quote was rejected.</p>
			</documentation>
      <input message="order:SubmitRequest" />
      <output message="order:SubmitResponse" />
      <fault message="order:UnsupportedOperationFaultMsg" name="UnsupportedOperationFault" />
      <fault message="order:IllegalArgumentFaultMsg" name="IllegalArgumentFault" />
    </operation>
    <operation name="Quote">
      <documentation>
				<p xmlns="">Quote is an optional operation that a provider may implement. After a user assembles 
				an order the user may request a quote for the order. The client then contacts the provider and 
				requests a quote.</p>
				<p xmlns="">If a provider implements the quote operation, they will accept the order information 
				and return an acknowledgement. The acknowledgement may include the actual quote or the quote may be 
				delivered at a later time using a separate predetermined API.</p>
				<p xmlns="">A provider may choose to reject a quote request even if they normally support quoting. 
				An acknowledgement with the rejection notice will be returned. A provider will include a message in 
				the response that indicates why the quote was rejected.</p>
			</documentation>
      <input message="order:QuoteRequest" />
      <output message="order:QuoteResponse" />
      <fault message="order:UnsupportedOperationFaultMsg" name="UnsupportedOperationFault" />
      <fault message="order:IllegalArgumentFaultMsg" name="IllegalArgumentFault" />
    </operation>
    <operation name="Cancel">
      <documentation>
				<p xmlns="">Cancel is an optional operation that a provider may implement. After a user assembles an order 
				in the client and has submitted the order, the user may request to cancel it. The client then contacts the 
				provider and requests a cancellation.</p>
				<p xmlns="">If a provider implements the cancel operation, they will accept the order identifier and return 
				an acknowledgement. The acknowledgement may include an acceptance which includes the IDs of items that have 
				been cancelled or the item IDs may be delivered at a later time using a separate predetermined API.</p>
				<p xmlns="">A provider may choose to reject a cancel request even if they normally support cancelling. An 
				acknowledgement with the rejection notice will be returned. A provider will include a message in the response 
				that indicates why the cancellation was rejected.</p>
			</documentation>
      <input message="order:CancelRequest" />
      <output message="order:CancelResponse" />
      <fault message="order:UnsupportedOperationFaultMsg" name="UnsupportedOperationFault" />
      <fault message="order:IllegalArgumentFaultMsg" name="IllegalArgumentFault" />
    </operation>
  </portType>
  <binding name="OrderFulfillmentBinding" type="order:OrderFulfillmentPort">
    <soap:binding style="document"
      transport="http://schemas.xmlsoap.org/soap/http" />
    <operation name="Submit">
      <soap:operation soapAction="" style="document" />
      <input>
        <soap:body use="literal" />
      </input>
      <output>
        <soap:body use="literal" />
      </output>
      <fault name="UnsupportedOperationFault">
        <soap:fault name="UnsupportedOperationFault" use="literal" />
      </fault>
      <fault name="IllegalArgumentFault">
        <soap:fault name="IllegalArgumentFault" use="literal" />
      </fault>
    </operation>
    <operation name="Cancel">
      <soap:operation soapAction="" style="document" />
      <input>
        <soap:body use="literal" />
      </input>
      <output>
        <soap:body use="literal" />
      </output>
      <fault name="UnsupportedOperationFault">
        <soap:fault name="UnsupportedOperationFault" use="literal" />
      </fault>
      <fault name="IllegalArgumentFault">
        <soap:fault name="IllegalArgumentFault" use="literal" />
      </fault>
    </operation>
    <operation name="Quote">
      <soap:operation soapAction="" style="document" />
      <input>
        <soap:body use="literal" />
      </input>
      <output>
        <soap:body use="literal" />
      </output>
      <fault name="UnsupportedOperationFault">
        <soap:fault name="UnsupportedOperationFault" use="literal" />
      </fault>
      <fault name="IllegalArgumentFault">
        <soap:fault name="IllegalArgumentFault" use="literal" />
      </fault>
    </operation>
  </binding>
  <service name="OrderFulfillmentService">
    <port binding="order:OrderFulfillmentBinding" name="OrderFulfillmentPort">
      <soap:address location="http://www.example.org/" />
    </port>
  </service>
</definitions>