<?xml version="1.0" encoding="utf-8" ?>

<!--
	September 14, 2002

	(c) Copyright 2002, The Web Services-Interoperability Organization (WS-I)
	Download or use of this file is governed by the Policies and Bylaws of WS-I.

	For more information, send email info@ws-i.org. 	
-->

<wsdl:definitions 
     xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
       xmlns:xs="http://www.w3.org/2001/XMLSchema"
      xmlns:cfg="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/Configuration.xsd"
     xmlns:cfgw="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/Configuration.wsdl"
      xmlns:cat="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/RetailCatalog.xsd" 
    xmlns:order="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/RetailOrder.xsd"    
      xmlns:tns="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/Retailer.wsdl" 
targetNamespace="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/Retailer.wsdl" 
     xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/" 
     xmlns:wsi="http://ws-i.org/schemas/conformanceClaim/"
     >

<wsdl:documentation>
    This WSDL document describes the Retailer service for the WS-I Basic Sample Application. This 
    service is part of a supply chain management system. It is used to demonstrate a web service that is conformant 
    with the Basic Profile and to show how different web service platforms can interoperate.
</wsdl:documentation>
		
	<wsdl:import namespace="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/Configuration.wsdl" location="Configuration.wsdl"/>

	<wsdl:types>
  	  <xs:schema>
	    <xs:import namespace="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/RetailCatalog.xsd" schemaLocation="RetailCatalog.xsd"/>
	    <xs:import namespace="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/RetailOrder.xsd"   schemaLocation="RetailOrder.xsd"/>
	    <xs:import namespace="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/Configuration.xsd" schemaLocation="Configuration.xsd"/>
	  </xs:schema>
	</wsdl:types>
	
	<wsdl:message name="getCatalogRequest" />
	<wsdl:message name="getCatalogResponse">
		<wsdl:part name="return" type="cat:CatalogType">
			<wsdl:documentation>the product catalog</wsdl:documentation>
		</wsdl:part>
	</wsdl:message>
	<wsdl:message name="submitOrderRequest">
		<wsdl:part name="PartsOrder" type="order:PartsOrderType"><wsdl:documentation>XML structure holding product/quantity pairs</wsdl:documentation></wsdl:part>
		<wsdl:part name="CustomerDetails" type="order:CustomerDetailsType"/>
		<wsdl:part name="ConfigurationHeader" element="cfg:Configuration"/>
	</wsdl:message>
	<wsdl:message name="submitOrderResponse">
		<wsdl:part name="return" type="order:PartsOrderResponseType">
			<wsdl:documentation>XML structure holding product/quantity ordered pairs, with optional failure message</wsdl:documentation>
		</wsdl:part>
	</wsdl:message>
	<wsdl:message name="BadOrderFault">
		<wsdl:part name="Reason" element="order:BadOrderReason"/>
	</wsdl:message>
	<wsdl:message name="InvalidProductCodeFault">
		<wsdl:part name="InvalidProductCode" element="order:InvalidProductCode"/>
	</wsdl:message>
	
	<wsdl:portType name="RetailerPortType">
		<wsdl:operation name="getCatalog">
			<wsdl:documentation>returns a product catalog</wsdl:documentation>
			<wsdl:input message="tns:getCatalogRequest" name="getCatalogRequest"/>
			<wsdl:output message="tns:getCatalogResponse" name="getCatalogResponse"/>
		</wsdl:operation>
		<wsdl:operation name="submitOrder">
			<wsdl:documentation>Accept an order for quantities of multiple products</wsdl:documentation>
			<wsdl:input message="tns:submitOrderRequest" name="submitOrderRequest"/>
			<wsdl:output message="tns:submitOrderResponse" name="submitOrderResponse"/>
			<wsdl:fault name="BadOrder" message="tns:BadOrderFault"/>
			<wsdl:fault name="InvalidProductCode" message="tns:InvalidProductCodeFault"/>
			<wsdl:fault name="ConfigurationFault" message="cfgw:ConfigurationFaultMessage"/>
		</wsdl:operation>
	</wsdl:portType>
	
	<wsdl:binding name="RetailerSoapBinding" type="tns:RetailerPortType">
		<wsdl:documentation>
		    <wsi:Claim conformsTo="http://ws-i.org/profiles/basic1.0/" />
	        </wsdl:documentation>
		<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
		<wsdl:operation name="getCatalog">
			<soap:operation soapAction="" style="rpc"/>
			<wsdl:input>
				<soap:body use="literal" namespace="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/Retailer.wsdl"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal" namespace="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/Retailer.wsdl"/>
			</wsdl:output>
		</wsdl:operation>
		<wsdl:operation name="submitOrder">
			<soap:operation soapAction="" style="rpc"/>
			<wsdl:input>
				<soap:body use="literal" namespace="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/Retailer.wsdl"
					parts="PartsOrder CustomerDetails" />
				<soap:header message="tns:submitOrderRequest" part="ConfigurationHeader" use="literal" wsdl:required="true" >
          				<soap:headerfault message="cfgw:ConfigurationFaultMessage" part="ConfigurationFault" use="literal" />
              				</soap:header>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal" namespace="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/Retailer.wsdl"/>
			</wsdl:output>
			<wsdl:fault name="BadOrder">
				<soap:fault name="BadOrder" use="literal"/>
			</wsdl:fault>
			<wsdl:fault name="InvalidProductCode">
				<soap:fault name="InvalidProductCode" use="literal"/>
			</wsdl:fault>
		</wsdl:operation>
	</wsdl:binding>
</wsdl:definitions>


<!-- The following is an example of a getCatalog SOAP request message compliant with the above WSDL:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
<ns1:getCatalog xmlns:ns1="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/Retailer.wsdl">
</ns1:getCatalog>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

The following is an example of a getCatalog SOAP response message compliant with the above WSDL:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
<ns1:getCatalogResponse xmlns:ns1="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/Retailer.wsdl">
<return>
  <Item xmlns="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/RetailCatalog.xsd">
    <name>TV,Brand1</name>
    <description>24", Color, Advanced Velocit Scan Modular</description>
    <productNumber>605001</productNumber>
    <category>TV</category>
    <brand>Brand1</brand>
    <price>299.95</price>
  </Item>
  <Item xmlns="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/RetailCatalog.xsd">
    <name>TV, Brand2</name>
    <description>32", Super Slim Flat Panel Plasma</description>
    <productNumber>605002</productNumber>
    <category>TV</category>
    <brand>Brand2</brand>
    <price>1499.99</price>
  </Item>
</return>
</ns1:getCatalogResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>



The following is an example of a submitOrder SOAP request message compliant with the above WSDL:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header>
<h:Configuration
	xmlns:h="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/Configuration.xsd">
  <h:UserId>griddell@bowstreet.com</h:UserId>
  <h:ServiceUrl Role="LoggingFacility">http://example1/SampleApp/SCM/LoggingFacility</h:ServiceUrl>
  <h:ServiceUrl Role="Retailer">http://example2/wsi/soaprpc/wsi/RetailerImpl</h:ServiceUrl>
  <h:ServiceUrl Role="WarehouseA">http://example3/wsi/soaprpc/wsi/WarehouseAImpl</h:ServiceUrl>
  <h:ServiceUrl Role="WarehouseB">http://example4/wsi/soaprpc/wsi/WarehouseBImpl</h:ServiceUrl>
  <h:ServiceUrl Role="WarehouseC">http://example5/wsi/soaprpc/wsi/WarehouseCImpl</h:ServiceUrl>
  <h:ServiceUrl Role="ManufacturerA">http://example6/ws-i_sample/ManufacturerA</h:ServiceUrl>
  <h:ServiceUrl Role="ManufacturerB">http://example7/ws-i_sample/ManufacturerB</h:ServiceUrl>
  <h:ServiceUrl Role="ManufacturerC">http://example8/ws-i_sample/ManufacturerC</h:ServiceUrl>
</h:Configuration>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<ns1:submitOrder xmlns:ns1="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/Retailer.wsdl">
<PartsOrder xmlns:p="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/RetailOrder.xsd">
  <p:Item>
    <p:productNumber>605006</p:productNumber>
    <p:quantity>182</p:quantity>
    <p:price>3.99</p:price>
  </p:Item>
  <p:Item><p:productNumber>605002</p:productNumber>
    <p:quantity>4</p:quantity>
    <p:price>3.99</p:price>
    </p:Item>
  <p:Item>
    <p:productNumber>605003</p:productNumber>
    <p:quantity>82</p:quantity>
    <p:price>7.99</p:price>
  </p:Item>
</PartsOrder>
<CustomerDetails xmlns:c="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/RetailOrder.xsd"> 
  <c:custnbr>ABCD999999999EFG</c:custnbr>
  <c:name>Joe Bloggs</c:name>
  <c:street1 />
  <c:city />
  <c:state>NH</c:state>
  <c:zip>03870</c:zip>
  <c:country>USA</c:country>
</CustomerDetails>
</ns1:submitOrder>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

The following is an example of a submitOrder SOAP response message that is compliant with the WSDL:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
<ns1:submitOrderResponse xmlns:ns1="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/Retailer.wsdl">
<return xmlns:ns2="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/RetailOrder.xsd">
  <ns2:Item>
    <ns2:productNumber>605002</ns2:productNumber>
    <ns2:quantity>4</ns2:quantity>
    <ns2:price>3.99</ns2:price>
    <ns2:comment>in stock from WarehouseA</ns2:comment>
  </ns2:Item>
  <ns2:Item>
    <ns2:productNumber>605006</ns2:productNumber>
    <ns2:quantity>0</ns2:quantity>
    <ns2:price>0</ns2:price>
    <ns2:comment>insufficient stock</ns2:comment>
  </ns2:Item>
  <ns2:Item>
    <ns2:productNumber>605003</ns2:productNumber>
    <ns2:quantity>0</ns2:quantity>
    <ns2:price>0</ns2:price>
    <ns2:comment>insufficient stock</ns2:comment>
  </ns2:Item>
</return>
</ns1:submitOrderResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>


-->
