<?xml version = "1.0" encoding = "UTF-8"?>
<!--
    IPR, License and Distribution Notices
    This machine readable file is derived from IMS specification IMS Tools Interoperability Guidelines Version 1.0   
    found at http://www.imsglobal.org/ti/ and the original IMS schema binding or code base 
    http://www.imsglobal.org/ti/tiv1p0/imsti_guidev1p0.html.
    
    Recipients of this document are requested to submit, with their comments, notification of any relevant patent 
    claims or other intellectual property rights of which they may be aware that might be infringed by the schema 
    binding contained in this document.
    
    IMS takes no position regarding the validity or scope of any intellectual property or other rights that might be 
    claimed to pertain to the implementation or use of the technology described in this document or the extent to 
    which any license under such rights might or might not be available; neither does it represent that it has made 
    any effort to identify any such rights. Information on IMS’s procedures with respect to rights in IMS specifications 
    can be found at the IMS Intellectual Property Rights web page: http://www.imsglobal.org/ipr/imsipr_policyFinal.pdf.
    
    Copyright © IMS Global Learning Consortium 1999-2007. All Rights Reserved.
    
    License Notice for Users
    Users of products or services that include this document are hereby granted a worldwide, royalty-free, 
    non-exclusive license to use this document.
    
    Distribution Notice for Developers
    Developers of products or services that provide distribution of this document as is or with modifications are 
    required to register with the IMS community on the IMS website as described in the following two paragraphs:
    
    - If you wish to distribute this document as is, with no modifications, you are hereby granted permission to copy, 
    display and distribute the contents of this document in any medium for any purpose without fee or royalty provided 
    that you include this IPR, License and Distribution notice in its entirety on ALL copies, or portions thereof, that you 
    make and you complete a valid license registration with IMS and receive an email from IMS granting the license. 
    To register, follow the instructions on the IMS website: http://www.imsglobal.org/specificationdownload.cfm. Once 
    registered you are granted permission to transfer unlimited distribution rights of this document for the purposes 
    of third-party or other distribution of your product or service that incorporates this document as long as this IPR, 
    License and Distribution notice remains in place in its entirety.
    
    - If you wish to create and distribute a derived work from this document, you are hereby granted permission to copy, 
    display and distribute the contents of the derived work in any medium for any purpose without fee or royalty provided 
    that you include this IPR, License and Distribution notice in its entirety on ALL copies, or portions thereof, that you 
    make and you complete a valid profile registration with IMS and receive an email from IMS granting the license. To 
    register, follow the instructions on the IMS website: http://www.imsglobal.org/profile/. Once registered you are 
    granted permission to transfer unlimited distribution rights of the derived work for the purposes of third-party or 
    other distribution of your product or service that incorporates the derived work as long as this IPR, License and 
    Distribution notice remains in place in its entirety.
    
    The limited permissions granted above are perpetual and will not be revoked by IMS or its successors or assigns.
    
    THIS SPECIFICATION IS BEING OFFERED WITHOUT ANY WARRANTY WHATSOEVER, AND IN PARTICULAR, 
    ANY WARRANTY OF NONINFRINGEMENT IS EXPRESSLY DISCLAIMED. ANY USE OF THIS SPECIFICATION 
    SHALL BE MADE ENTIRELY AT THE IMPLEMENTER’S OWN RISK, AND NEITHER THE CONSORTIUM, NOR 
    ANY OF ITS MEMBERS OR SUBMITTERS, SHALL HAVE ANY LIABILITY WHATSOEVER TO ANY IMPLEMENTER 
    OR THIRD PARTY FOR ANY DAMAGES OF ANY NATURE WHATSOEVER, DIRECTLY OR INDIRECTLY, ARISING 
    FROM THE USE OF THIS SPECIFICATION.
-->
<wsdl:definitions name="TIROutcomeSyncServices" targetNamespace="http://www.imsglobal.org/services/ti/wsdl/sync/TIROutcomeService_v1p0"
    xmlns:tns="http://www.imsglobal.org/services/ti/wsdl/sync/TIROutcomeService_v1p0"
    xmlns:soap11="http://schemas.xmlsoap.org/wsdl/soap/"
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
    xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <wsdl:documentation>
        WSDL File Information
        ---------------------
        Services:     TIROutcome (Synchronous Communications)
        Author:       Prashant Nayak, Bruce Barton, Colin Smythe
        Date:         28th February, 2006
        Version:      1.0
        Status:       Final Release
        Description:  The Tools Interoperability Outcome Service.

        History:      Version 1.0: First full release of this service.

        WSDL Binding: This WSDL Binding is based upon the IMS General Web Services Base Profile v1.0
                      The IMS GWS Basic Profile is derived from the WS-I Basic Profile v1.1.  This
                      profile uses: WSDL 1.1, SOAP 1.1, HTTP 1.1 and XML 1.0.  Extension profiles to
                      the IMS GWS Base Profile are available but ae not supported using this tool version.

        UML Source File Information
        ---------------------------
        Choreography:     Sync
        Transport:        SOAPv1.1

        Source XSLT File Information
        ----------------------------
        XSL Generator:    UMLtoXSDTransformv0p7.xsl
        XSLT Processor:   Xalan
        Release:          1.0 Beta 1
        Date:             30th November, 2005

        Auto-generation Tool
        --------------------
        This WSDL/XSD was auto-generated using the IMS WSDL/XSD auto-generation tool.  While every attempt
        has been made to ensure that this tool auto-generates the XSDs correctly, users should be aware
        that this is an experimental tool.  Permission is given to make use of this tool.  IMS makes no
        claim on the materials created by third party users of this tool.  Details on how to use this tool
        are contained in the IMS document: "IMS General Web Services: WSDL/XSD Binding Auto-generation"
        available at the IMS web-site.
        Tool Copyright:  2005 (c) IMS Global Learning Consortium Inc.  All Rights Reserved.
    </wsdl:documentation>
    <wsdl:types>
        <xs:schema xmlns="http://www.w3.org/2001/XMLSchema"
            targetNamespace="http://www.imsglobal.org/services/ti/wsdl/sync/TIROutcomeService_v1p0"
            xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            version="IMS TIO 1.0"
            elementFormDefault="qualified"
            attributeFormDefault="unqualified">

        <!-- Generate Global Attributes ***********************************************************************  -->

        <!-- =====================================  -->

        <!-- Generate Namespaced extension Group  *************************************************************  -->

        <!-- =====================================  -->

        <!-- Generate the enumerated simpleType declarations **************************************************  -->

            <xs:simpleType name="imsx_CodeMajor.Type">
                <xs:restriction base="xs:string">
                    <xs:enumeration value="success"/>
                    <xs:enumeration value="processing"/>
                    <xs:enumeration value="failure"/>
                    <xs:enumeration value="unsupported"/>
                </xs:restriction>
            </xs:simpleType>

            <xs:simpleType name="imsx_Severity.Type">
                <xs:restriction base="xs:string">
                    <xs:enumeration value="status"/>
                    <xs:enumeration value="warning"/>
                    <xs:enumeration value="error"/>
                </xs:restriction>
            </xs:simpleType>

            <xs:element name="imsx_codeMajor" type="tns:imsx_CodeMajor.Type"/>

            <xs:element name="imsx_severity" type="tns:imsx_Severity.Type"/>

        <!-- =====================================  -->

        <!-- Generate the simpleType elements based IMS data-types  *******************************************  -->

            <xs:element name="LaunchIdentifier" type="xs:string"/>

            <xs:element name="Role" type="xs:string"/>

            <xs:element name="LaunchType" type="xs:string"/>

            <xs:element name="Name" type="xs:string"/>

            <xs:element name="ContextDescription" type="xs:string"/>

            <xs:element name="Ancillary" type="xs:string"/>

            <xs:element name="Userid" type="xs:string"/>

            <xs:element name="FirstName" type="xs:string"/>

            <xs:element name="LastName" type="xs:string"/>

            <xs:element name="SourceName" type="xs:string"/>

            <xs:element name="SourceID" type="xs:string"/>

            <xs:element name="Grade" type="xs:string"/>

            <xs:element name="imsx_messageRefIdentifier" type="xs:string"/>

            <xs:element name="imsx_operationRefIdentifier" type="xs:string"/>

            <xs:element name="imsx_description" type="xs:string"/>

            <xs:element name="imsx_codeMinorFieldName" type="xs:string"/>

            <xs:element name="imsx_codeMinorFieldValue" type="xs:string"/>

            <xs:element name="imsx_version" type="xs:string"/>

            <xs:element name="imsx_messageIdentifier" type="xs:string"/>

            <xs:element name="MAC" type="xs:string"/>

        <!-- =====================================  -->

        <!-- Generate the data-type elements ******************************************************************  -->

            <xs:complexType name="OutcomeProfile.Type" abstract="true">
                <xs:annotation>
                    <xs:documentation>
                    </xs:documentation>
                </xs:annotation>
                <xs:sequence>
                </xs:sequence>
            </xs:complexType>

            <xs:complexType name="LaunchProfile.Type">
                <xs:annotation>
                    <xs:documentation>
                    </xs:documentation>
                </xs:annotation>
                <xs:sequence>
                    <xs:element ref="tns:LaunchIdentifier" minOccurs = "1" maxOccurs = "1"/>
                    <xs:element ref="tns:Role" minOccurs = "1" maxOccurs = "1"/>
                    <xs:element ref="tns:LaunchType" minOccurs = "1" maxOccurs = "1"/>
                </xs:sequence>
            </xs:complexType>

            <xs:complexType name="UserProfile.Type" abstract="true">
                <xs:annotation>
                    <xs:documentation>
                    </xs:documentation>
                </xs:annotation>
                <xs:sequence>
                </xs:sequence>
            </xs:complexType>

            <xs:complexType name="DeliveryContextProfile.Type">
                <xs:annotation>
                    <xs:documentation>
                    </xs:documentation>
                </xs:annotation>
                <xs:sequence>
                    <xs:element ref="tns:IMSSourcedid" minOccurs = "1" maxOccurs = "1"/>
                    <xs:element ref="tns:Name" minOccurs = "1" maxOccurs = "1"/>
                    <xs:element ref="tns:ContextDescription" minOccurs = "1" maxOccurs = "1"/>
                    <xs:element ref="tns:Ancillary" minOccurs = "0" maxOccurs = "1"/>
                </xs:sequence>
            </xs:complexType>

            <xs:complexType name="SimpleUserProfile.Type">
                <xs:annotation>
                    <xs:documentation>
                    </xs:documentation>
                </xs:annotation>
                <xs:complexContent>
                    <xs:extension base="tns:UserProfile.Type">
                        <xs:sequence>
                            <xs:element ref="tns:IMSSourcedid" minOccurs = "1" maxOccurs = "1"/>
                            <xs:element ref="tns:Userid" minOccurs = "1" maxOccurs = "1"/>
                            <xs:element ref="tns:FirstName" minOccurs = "1" maxOccurs = "1"/>
                            <xs:element ref="tns:LastName" minOccurs = "1" maxOccurs = "1"/>
                            <xs:element ref="tns:Ancillary" minOccurs = "0" maxOccurs = "1"/>
                        </xs:sequence>
                    </xs:extension>
                </xs:complexContent>
            </xs:complexType>

            <xs:complexType name="Sourcedid.Type">
                <xs:annotation>
                    <xs:documentation>
                    </xs:documentation>
                </xs:annotation>
                <xs:sequence>
                    <xs:element ref="tns:SourceName" minOccurs = "1" maxOccurs = "1"/>
                    <xs:element ref="tns:SourceID" minOccurs = "1" maxOccurs = "1"/>
                </xs:sequence>
            </xs:complexType>

            <xs:complexType name="SimpleOutcomeProfile.Type">
                <xs:annotation>
                    <xs:documentation>
                    </xs:documentation>
                </xs:annotation>
                <xs:complexContent>
                    <xs:extension base="tns:OutcomeProfile.Type">
                        <xs:sequence>
                            <xs:element ref="tns:LaunchProfile" minOccurs = "1" maxOccurs = "1"/>
                            <xs:element ref="tns:UserProfile" minOccurs = "1" maxOccurs = "1"/>
                            <xs:element ref="tns:DeliveryContextProfile" minOccurs = "1" maxOccurs = "1"/>
                            <xs:element ref="tns:Grade" minOccurs = "1" maxOccurs = "1"/>
                        </xs:sequence>
                    </xs:extension>
                </xs:complexContent>
            </xs:complexType>

            <xs:complexType name="MinimalOutcomeProfile.Type">
                <xs:annotation>
                    <xs:documentation>
                    </xs:documentation>
                </xs:annotation>
                <xs:complexContent>
                    <xs:extension base="tns:OutcomeProfile.Type">
                        <xs:sequence>
                            <xs:element ref="tns:LaunchProfile" minOccurs = "1" maxOccurs = "1"/>
                            <xs:element ref="tns:Grade" minOccurs = "1" maxOccurs = "1"/>
                        </xs:sequence>
                    </xs:extension>
                </xs:complexContent>
            </xs:complexType>

            <xs:complexType name="imsx_StatusInfo.Type">
                <xs:annotation>
                    <xs:documentation>
                    </xs:documentation>
                </xs:annotation>
                <xs:sequence>
                    <xs:element ref="tns:imsx_codeMajor" minOccurs = "1" maxOccurs = "1"/>
                    <xs:element ref="tns:imsx_severity" minOccurs = "1" maxOccurs = "1"/>
                    <xs:element ref="tns:imsx_messageRefIdentifier" minOccurs = "1" maxOccurs = "1"/>
                    <xs:element ref="tns:imsx_operationRefIdentifier" minOccurs = "0" maxOccurs = "unbounded"/>
                    <xs:element ref="tns:imsx_description" minOccurs = "0" maxOccurs = "1"/>
                    <xs:element ref="tns:imsx_codeMinor" minOccurs = "0" maxOccurs = "1"/>
                </xs:sequence>
            </xs:complexType>

            <xs:complexType name="imsx_CodeMinor.Type">
                <xs:annotation>
                    <xs:documentation>
                    </xs:documentation>
                </xs:annotation>
                <xs:sequence>
                    <xs:element ref="tns:imsx_codeMinorField" minOccurs = "1" maxOccurs = "unbounded"/>
                </xs:sequence>
            </xs:complexType>

            <xs:complexType name="imsx_CodeMinorField.Type">
                <xs:annotation>
                    <xs:documentation>
                    </xs:documentation>
                </xs:annotation>
                <xs:sequence>
                    <xs:element ref="tns:imsx_codeMinorFieldName" minOccurs = "1" maxOccurs = "1"/>
                    <xs:element ref="tns:imsx_codeMinorFieldValue" minOccurs = "1" maxOccurs = "1"/>
                </xs:sequence>
            </xs:complexType>

            <xs:complexType name="imsx_RequestHeaderInfo.Type">
                <xs:annotation>
                    <xs:documentation>
                    </xs:documentation>
                </xs:annotation>
                <xs:sequence>
                    <xs:element ref="tns:imsx_version" minOccurs = "0" maxOccurs = "1"/>
                    <xs:element ref="tns:imsx_messageIdentifier" minOccurs = "1" maxOccurs = "1"/>
                    <xs:element ref="tns:SecurityProfile" minOccurs = "0" maxOccurs = "1"/>
                </xs:sequence>
            </xs:complexType>

            <xs:complexType name="imsx_ResponseHeaderInfo.Type">
                <xs:annotation>
                    <xs:documentation>
                    </xs:documentation>
                </xs:annotation>
                <xs:sequence>
                    <xs:element ref="tns:imsx_version" minOccurs = "0" maxOccurs = "1"/>
                    <xs:element ref="tns:imsx_messageIdentifier" minOccurs = "1" maxOccurs = "1"/>
                    <xs:element ref="tns:imsx_statusInfo" minOccurs = "1" maxOccurs = "1"/>
                    <xs:element ref="tns:SecurityProfile" minOccurs = "0" maxOccurs = "1"/>
                </xs:sequence>
            </xs:complexType>

            <xs:complexType name="SharedSecretSecurityProfile.Type">
                <xs:annotation>
                    <xs:documentation>
                        This is a SOAP Header extension that is required by the service.
                    </xs:documentation>
                </xs:annotation>
                <xs:complexContent>
                    <xs:extension base="tns:SecurityProfile.Type">
                        <xs:sequence>
                            <xs:element ref="tns:MAC" minOccurs = "1" maxOccurs = "1"/>
                        </xs:sequence>
                    </xs:extension>
                </xs:complexContent>
            </xs:complexType>

            <xs:complexType name="SecurityProfile.Type" abstract="true">
                <xs:annotation>
                    <xs:documentation>
                    </xs:documentation>
                </xs:annotation>
                <xs:sequence>
                </xs:sequence>
            </xs:complexType>

        <!-- =====================================  -->

        <!-- Generate the derived data-type elements **********************************************************  -->

        <!-- =====================================  -->

        <!-- Declaration of the elements **********************************************************************  -->

            <xs:element name="IMSSourcedid" type="tns:Sourcedid.Type"/>

            <xs:element name="LaunchProfile" type="tns:LaunchProfile.Type"/>

            <xs:element name="UserProfile" type="tns:UserProfile.Type"/>

            <xs:element name="DeliveryContextProfile" type="tns:DeliveryContextProfile.Type"/>

            <xs:element name="imsx_codeMinor" type="tns:imsx_CodeMinor.Type"/>

            <xs:element name="imsx_codeMinorField" type="tns:imsx_CodeMinorField.Type"/>

            <xs:element name="SecurityProfile" type="tns:SecurityProfile.Type"/>

            <xs:element name="imsx_statusInfo" type="tns:imsx_StatusInfo.Type"/>

        <!-- =====================================  -->

        <!-- Declaration of the message parameter elements ****************************************************  -->

            <xs:element name="OutcomeProfile" type="tns:OutcomeProfile.Type"/>

        <!-- =====================================  -->

        <!-- Declaration of the message body elements *********************************************************  -->

            <xs:element name="OutcomeMessageRequest">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element ref="tns:OutcomeProfile"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>

            <xs:element name="OutcomeMessageResponse">
                <xs:complexType/>
            </xs:element>

        <!-- =====================================  -->

        <!-- Declaration of the root element(s) ***************************************************************  -->

            <xs:element name="imsx_syncRequestHeaderInfo" type="tns:imsx_RequestHeaderInfo.Type"/>
            <xs:element name="imsx_syncResponseHeaderInfo" type="tns:imsx_ResponseHeaderInfo.Type"/>

        <!-- =====================================  -->

        </xs:schema>
    </wsdl:types>
    <wsdl:message name="OutcomeMessageRequest">
        <wsdl:part name="Parameters" element="tns:OutcomeMessageRequest"/>
        <wsdl:part name="HeaderInfoParameters" element="tns:imsx_syncRequestHeaderInfo"/>
    </wsdl:message>
    <wsdl:message name="OutcomeMessageResponse">
        <wsdl:part name="Response" element="tns:OutcomeMessageResponse"/>
        <wsdl:part name="HeaderInfoResponse" element="tns:imsx_syncResponseHeaderInfo"/>
    </wsdl:message>
    <wsdl:portType name="TIROutcomeServiceSyncPortType">
        <wsdl:documentation>
            PortType Description
            --------------------
            This is the TIR Outcome Service port.  There are two main components:
            
            1) Tool - a web service that generates outcome messages from the Tool's TIR conforming
            to a specific outcome profile type, for a given interaction of a user with the ProxyTool/Tool, 
            including utlizing the appropriate security profile;
            
            2) Proxy Tool Host - exposed as a web service that accepts outcome messages from the 
            Tool TIR, understands the security profile used therein and responds back to the Tool TIR 
            using the ProxyTool core protocol as to the status of the outcome processing.
        </wsdl:documentation>
        <wsdl:operation name="OutcomeMessage">
            <wsdl:input message="tns:OutcomeMessageRequest"/>
            <wsdl:output message="tns:OutcomeMessageResponse"/>
        </wsdl:operation>
    </wsdl:portType>
    <wsdl:binding name="TIROutcomeServiceSyncSoapBinding" type="tns:TIROutcomeServiceSyncPortType">
        <soap11:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
        <wsdl:operation name="OutcomeMessage">
            <soap11:operation soapAction="http://www.imsglobal.org/soap/ti/OutcomeMessage" style="document"/>
            <wsdl:input>
                <soap11:body use="literal" parts="Parameters"/>
                <soap11:header message="tns:OutcomeMessageRequest" part="HeaderInfoParameters" use="literal" wsdl:required="true"/>
            </wsdl:input>
            <wsdl:output>
                <soap11:body use="literal" parts="Response"/>
                <soap11:header message="tns:OutcomeMessageResponse" part="HeaderInfoResponse" use="literal" wsdl:required="true"/>
            </wsdl:output>
        </wsdl:operation>
    </wsdl:binding>
    <wsdl:service name="TIROutcomeSyncService">
        <wsdl:port name="TIROutcomeServiceSyncSoapPort" binding="tns:TIROutcomeServiceSyncSoapBinding">
            <soap11:address location="http://someschool.edu/TIROutcomeServiceSyncSoap/"/>
        </wsdl:port>
    </wsdl:service>
</wsdl:definitions>
