Service Time Engine

<?xml version='1.0' encoding='UTF-8'?>

<definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
             xmlns:tns="http://xmlns.oracle.com/apps/otm/servicetimeengine"
             xmlns:xs="http://www.w3.org/2001/XMLSchema"
             xmlns="http://schemas.xmlsoap.org/wsdl/"
             xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata"
             targetNamespace="http://xmlns.oracle.com/apps/otm/servicetimeengine"
             name="ServiceTimeEngineService">
    <types>
        <xs:schema  xmlns:tns="http://xmlns.oracle.com/apps/otm/servicetimeengine" elementFormDefault="qualified"  targetNamespace="http://xmlns.oracle.com/apps/otm/servicetimeengine">

            <xs:complexType name="keyValue">
                <xs:annotation>
                    <xs:documentation>
                        This acts like place holder for requirement similar to Map with a key and value like SCAC code, Weight_UOM, Length_UOM etc...
                    </xs:documentation>
                </xs:annotation>
                <xs:attribute name="name" type="xs:string" use="required"/>
                <xs:attribute name="value" type="xs:string"/>
            </xs:complexType>
            <xs:complexType name="keyValues">
                <xs:annotation>
                    <xs:documentation>
                        This acts like place holder for requirement similar to Map with a key and list of values like HAZMAT_TYPES.
                    </xs:documentation>
                </xs:annotation>
                <xs:sequence>
                    <xs:element ref="tns:values"/>
                </xs:sequence>
                <xs:attribute name="name" use="required" type="xs:string"/>
            </xs:complexType>
            <xs:element name="values">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element ref="tns:value" maxOccurs="unbounded"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="value" type="xs:string"/>
			<xs:element name="addressLine" type="xs:string"/>
            <xs:element name="accuracy" type="xs:string" />
            <xs:element name="city" type="xs:string" />
            <xs:element name="countryCode" type="xs:string" />
            <xs:element name="countyCode" type="xs:string" />
            <xs:element name="latitude" type="xs:double" nillable='true' />
            <xs:element name="locationName" type="xs:string" />
            <xs:element name="longitude" type="xs:double" nillable='true'/>
            <xs:element name="postalCode" type="xs:string" />
            <xs:element name="province" type="xs:string" />
            <xs:element name="provinceCode" type="xs:string" />
            <xs:element name="railSplc" type="xs:string" />
            <xs:element name="railStationCode" type="xs:string" />
            <xs:element name="seqNumber" type="xs:int" nillable='true'/>
            <xs:element name="shortPostalCode" type="xs:string" />
            <xs:element name="possibleMatch"  type="tns:extEngineAddress"/>
            <xs:element name="validFlag" type="xs:boolean" default='false' />
            <xs:element name="sourceAddress" type="tns:extEngineAddress"/>
            <xs:element name="destinationAddress" type="tns:extEngineAddress"/>
            <xs:element name="address" type="tns:extEngineAddress" />
            <xs:element name="uom" type="xs:string"/>
            <xs:element name="amount" type="xs:double" nillable='true'/>

            <xs:element name="ExtEngineException"  type="xs:string" >
                <xs:annotation>
                    <xs:documentation>
                        Message contain information to be shown to user when fault occurs.
                    </xs:documentation>
                </xs:annotation>
            </xs:element>

            <xs:element name="param" type="tns:keyValue">
                <xs:annotation>
                    <xs:documentation>
                        <!-- TODO: Had not identified the use of this constants -->
                        The valid values to name attribute are
                        SOURCE_ADDRESS_TYPE
                        DEST_ADDRESS_TYPE
                        SAME_SOURCE_DEST_DIST
                    </xs:documentation>
                </xs:annotation>
            </xs:element>

            <xs:element name="extEngineAuxInput" type="tns:keyValue" >
                <xs:annotation>
                    <xs:documentation>
                        The valid values to name attribute are
                        SCAC,
                        RouteCode,
                        Height,
                        Height_UOM,
                        Length,
                        Length_UOM,
                        Width,
                        Width_UOM,
                        Weight,
                        Weight_UOM
                    </xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="extEngineAuxValueList" type="tns:keyValues">
                <xs:annotation>
                    <xs:documentation>
                        The valid values to name attribute are
                        HAZMAT_TYPES
                    </xs:documentation>
                </xs:annotation>
          </xs:element>
            <xs:element name="addressLines">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element ref='tns:addressLine' maxOccurs="unbounded"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>

            <xs:complexType name="extEngineAddress">
                <xs:sequence>
                    <xs:element ref="tns:accuracy" />
                    <xs:element ref="tns:addressLines" />
                    <xs:element ref="tns:city" />
                    <xs:element ref="tns:countryCode" />
                    <xs:element ref="tns:countyCode" />
                    <xs:element ref="tns:latitude"  />
                    <xs:element ref="tns:locationName" />
                    <xs:element ref="tns:longitude" />
                    <xs:element ref="tns:postalCode" />
                    <xs:element ref="tns:province" />
                    <xs:element ref="tns:provinceCode" />
                    <xs:element ref="tns:railSplc" />
                    <xs:element ref="tns:railStationCode" />
                    <xs:element ref="tns:seqNumber" />
                    <xs:element ref="tns:shortPostalCode" />
                </xs:sequence>
            </xs:complexType>

            <xs:element name="extEngineAuxInputList">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element ref="tns:extEngineAuxInput" maxOccurs="unbounded"/>
                        <xs:element ref="tns:extEngineAuxValueList" maxOccurs="unbounded"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>

            <xs:element name="params" >
                <xs:complexType>
                    <xs:sequence>
                        <xs:element ref="tns:param" maxOccurs="unbounded"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>

             <xs:element name="lookupServiceTimeRequest">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element ref="tns:sourceAddress" />
                        <xs:element ref="tns:destinationAddress" />
                        <xs:element ref='tns:extEngineAuxInputList'/>
                        <xs:element ref="tns:params"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>

            <xs:element name="extEngineServiceTime">
                <xs:annotation>
                    <xs:documentation>the values for UOM element should be valid unit of measure in OTM.</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                    <xs:sequence>
                        <xs:element ref="tns:uom" />
                        <xs:element ref="tns:amount" />
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:schema>
    </types>

     <message name="lookupServiceTimeRequest">
        <part name="lookupServiceTimeRequest" element="tns:lookupServiceTimeRequest"/>
    </message>

    <message name="lookupServiceTimeResponse">
        <part name="extEngineServiceTime" element="tns:extEngineServiceTime"/>
    </message>

    <message name="ExtEngineException">
        <part name="fault" element="tns:ExtEngineException"/>
    </message>

     <portType name="ExternalServiceTimeEngine">
        <operation name="lookupServiceTime" >
            <input message="tns:lookupServiceTimeRequest"  />
            <output message="tns:lookupServiceTimeResponse" />
            <fault message="tns:ExtEngineException" name="ExtEngineException"/>
        </operation>
     </portType>

     <binding name="ExternalServiceTimeEnginePortBinding" type="tns:ExternalServiceTimeEngine">
        <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
        <operation name="lookupServiceTime">
            <soap:operation soapAction="lookupServiceTime"/>
            <input>
                <soap:body use="literal"/>
            </input>
            <output>
                <soap:body use="literal"/>
            </output>
            <fault name="ExtEngineException">
                <soap:fault name="ExtEngineException" use="literal"/>
            </fault>
        </operation>

    </binding>


    <service name="ServiceTimeEngineService">
        <port name="ExternalServiceTimeEnginePort" binding="tns:ExternalServiceTimeEnginePortBinding">
            <soap:address location="http://localhost/GC3Services/ServiceTimeEngineService"/>
        </port>
    </service>


</definitions>