<?xml version = "1.0" encoding = "UTF-8"?>
<wsdl:definitions name="TIRLaunchSyncServices" targetNamespace="http://www.imsglobal.org/services/ti/wsdl/sync/TIRLaunchService_v1p0"
    xmlns:tns="http://www.imsglobal.org/services/ti/wsdl/sync/TIRLaunchService_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:     TIRLaunch (Synchronous Communications)
        Author:       Prashant Nayak, Bruce Barton, Colin Smythe
        Date:         28th February, 2006
        Version:      1.0
        Status:       Final Release
        Description:  The Tools Interoperability Launch Service.

        History:      Version 1.0: This is the first formal 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.

        Copyright:    2005 (c) IMS Global Learning Consortium Inc.  All Rights Reserved.
                      IMS Global Learning Consortium, Inc. (IMS) is publishing the information
                      contained in this binding ("Specification") for purposes of scientific
                      experimental and scholarly collaboration only.  IMS makes no warranty or 
                      representation regarding the accuracy or completeness of the Specification.
                      This material is provided on an "As Is" and "As Available basis".
                      The Specification is at all times subject to change and revision without
                      notice. It is your sole responsibility to evaluate the usefulness, accuracy
                      and completeness of the Specification as it relates to you.  IMS would
                      appreciate receiving your comments and suggestions.  Please contact IMS
                      through our website at: http://www.imsglobal.org.

        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/TIRLaunchService_v1p0"
            xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            version="IMS TIL 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="DisplayResponseAction" type="xs:string"/>

            <xs:element name="PerformRedirectAction" type="xs:string"/>

            <xs:element name="Ancillary" type="xs:string"/>

            <xs:element name="ProxyToolName" type="xs:string"/>

            <xs:element name="ProxyToolDescription" type="xs:string"/>

            <xs:element name="ServiceName" type="xs:string"/>

            <xs:element name="ServiceLocation" type="xs:string"/>

            <xs:element name="ServiceProfileName" type="xs:string"/>

            <xs:element name="major" type="xs:string"/>

            <xs:element name="minor" type="xs:string"/>

            <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="SourceName" type="xs:string"/>

            <xs:element name="SourceID" 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="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="CoreSettings.Type">
                <xs:annotation>
                    <xs:documentation>
                    </xs:documentation>
                </xs:annotation>
                <xs:sequence>
                    <xs:element ref="tns:ProxyTool" minOccurs = "1" maxOccurs = "1"/>
                    <xs:element ref="tns:TIR" minOccurs = "1" maxOccurs = "1"/>
                </xs:sequence>
            </xs:complexType>

            <xs:complexType name="LaunchDirective.Type">
                <xs:annotation>
                    <xs:documentation>
                    </xs:documentation>
                </xs:annotation>
                <xs:choice>
                    <xs:element ref="tns:DisplayResponseAction" minOccurs = "1" maxOccurs = "1"/>
                    <xs:element ref="tns:PerformRedirectAction" minOccurs = "1" maxOccurs = "1"/>
                </xs:choice>
            </xs:complexType>

            <xs:complexType name="ContextualSettings.Type">
                <xs:annotation>
                    <xs:documentation>
                    </xs:documentation>
                </xs:annotation>
                <xs:sequence>
                    <xs:element ref="tns:LaunchProfile" minOccurs = "1" maxOccurs = "1"/>
                    <xs:element ref="tns:DeliveryContextProfile" minOccurs = "0" maxOccurs = "1"/>
                    <xs:element ref="tns:AcclipProfile" minOccurs = "0" maxOccurs = "1"/>
                    <xs:element ref="tns:UserProfile" minOccurs = "0" maxOccurs = "1"/>
                </xs:sequence>
            </xs:complexType>

            <xs:complexType name="ToolSettings.Type">
                <xs:annotation>
                    <xs:documentation>
                    </xs:documentation>
                </xs:annotation>
                <xs:sequence>
                    <xs:element ref="tns:Ancillary" minOccurs = "0" maxOccurs = "1"/>
                </xs:sequence>
            </xs:complexType>

            <xs:complexType name="ProxyTool.Type">
                <xs:annotation>
                    <xs:documentation>
                    </xs:documentation>
                </xs:annotation>
                <xs:sequence>
                    <xs:element ref="tns:ProxyToolName" minOccurs = "1" maxOccurs = "1"/>
                    <xs:element ref="tns:ProxyToolVersion" minOccurs = "1" maxOccurs = "1"/>
                    <xs:element ref="tns:IMSTIVersion" minOccurs = "1" maxOccurs = "1"/>
                    <xs:element ref="tns:ProxyToolDescription" minOccurs = "1" maxOccurs = "1"/>
                </xs:sequence>
            </xs:complexType>

            <xs:complexType name="TIR.Type">
                <xs:annotation>
                    <xs:documentation>
                    </xs:documentation>
                </xs:annotation>
                <xs:sequence>
                    <xs:element ref="tns:LaunchService" minOccurs = "0" maxOccurs = "1"/>
                    <xs:element ref="tns:OutcomeService" minOccurs = "0" maxOccurs = "1"/>
                </xs:sequence>
            </xs:complexType>

            <xs:complexType name="TIRServiceLocator.Type">
                <xs:annotation>
                    <xs:documentation>
                    </xs:documentation>
                </xs:annotation>
                <xs:sequence>
                    <xs:element ref="tns:ServiceName" minOccurs = "1" maxOccurs = "1"/>
                    <xs:element ref="tns:ServiceLocation" minOccurs = "1" maxOccurs = "1"/>
                    <xs:element ref="tns:ServiceProfileName" minOccurs = "1" maxOccurs = "1"/>
                </xs:sequence>
            </xs:complexType>

            <xs:complexType name="Version.Type">
                <xs:annotation>
                    <xs:documentation>
                    </xs:documentation>
                </xs:annotation>
                <xs:sequence>
                    <xs:element ref="tns:major" minOccurs = "1" maxOccurs = "1"/>
                    <xs:element ref="tns:minor" minOccurs = "1" maxOccurs = "1"/>
                </xs:sequence>
            </xs:complexType>

            <xs:complexType name="AcclipProfile.Type">
                <xs:annotation>
                    <xs:documentation>
                    </xs:documentation>
                </xs:annotation>
                <xs:sequence>
                    <xs:element ref="tns:Ancillary" minOccurs = "1" maxOccurs = "1"/>
                </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="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="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="UserProfile.Type" abstract="true">
                <xs:annotation>
                    <xs:documentation>
                    </xs:documentation>
                </xs:annotation>
                <xs:sequence>
                </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="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>
                        There is a SOAPHeader 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="ProxyTool" type="tns:ProxyTool.Type"/>

            <xs:element name="TIR" type="tns:TIR.Type"/>

            <xs:element name="LaunchProfile" type="tns:LaunchProfile.Type"/>

            <xs:element name="DeliveryContextProfile" type="tns:DeliveryContextProfile.Type"/>

            <xs:element name="AcclipProfile" type="tns:AcclipProfile.Type"/>

            <xs:element name="UserProfile" type="tns:UserProfile.Type"/>

            <xs:element name="ProxyToolVersion" type="tns:Version.Type"/>

            <xs:element name="IMSTIVersion" type="tns:Version.Type"/>

            <xs:element name="LaunchService" type="tns:TIRServiceLocator.Type"/>

            <xs:element name="OutcomeService" type="tns:TIRServiceLocator.Type"/>

            <xs:element name="IMSSourcedid" type="tns:Sourcedid.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="CoreSettings" type="tns:CoreSettings.Type"/>

            <xs:element name="ContextualSettings" type="tns:ContextualSettings.Type"/>

            <xs:element name="ToolSettings" type="tns:ToolSettings.Type"/>

            <xs:element name="LaunchDirective" type="tns:LaunchDirective.Type"/>

        <!-- =====================================  -->

        <!-- Declaration of the message body elements *********************************************************  -->

            <xs:element name="ProxyToolLaunchRequest">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element ref="tns:CoreSettings"/>
                        <xs:element ref="tns:ContextualSettings"/>
                        <xs:element ref="tns:ToolSettings"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>

            <xs:element name="ProxyToolLaunchResponse">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element ref="tns:LaunchDirective" minOccurs="0" maxOccurs="1"/>
                    </xs:sequence>
                </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="ProxyToolLaunchRequest">
        <wsdl:part name="Parameters" element="tns:ProxyToolLaunchRequest"/>
        <wsdl:part name="HeaderInfoParameters" element="tns:imsx_syncRequestHeaderInfo"/>
    </wsdl:message>
    <wsdl:message name="ProxyToolLaunchResponse">
        <wsdl:part name="Response" element="tns:ProxyToolLaunchResponse"/>
        <wsdl:part name="HeaderInfoResponse" element="tns:imsx_syncResponseHeaderInfo"/>
    </wsdl:message>
    <wsdl:portType name="TIRLaunchServiceSyncPortType">
        <wsdl:documentation>
            PortType Description
            --------------------
            This is the TIR Launch Service port.  There are two main components:
            
            1) ProxyTool Host - this performs all the functions related to the launch of the
            ProxyTool, including generating the relevant ProxyTool launch message and utilizing
            appropriate security profile;
            
            2) Tool - exposed as a web service that accepts launch messages from the LMS TIR,
            understands the security profile used therein and responds back to the LMS TIR using
            the ProxyTool core protocol as to the status of the launch.
        </wsdl:documentation>
        <wsdl:operation name="ProxyToolLaunch">
            <wsdl:input message="tns:ProxyToolLaunchRequest"/>
            <wsdl:output message="tns:ProxyToolLaunchResponse"/>
        </wsdl:operation>
    </wsdl:portType>
    <wsdl:binding name="TIRLaunchServiceSyncSoapBinding" type="tns:TIRLaunchServiceSyncPortType">
        <soap11:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
        <wsdl:operation name="ProxyToolLaunch">
            <soap11:operation soapAction="http://www.imsglobal.org/soap/ti/ProxyToolLaunch" style="document"/>
            <wsdl:input>
                <soap11:body use="literal" parts="Parameters"/>
                <soap11:header message="tns:ProxyToolLaunchRequest" part="HeaderInfoParameters" use="literal" wsdl:required="true"/>
            </wsdl:input>
            <wsdl:output>
                <soap11:body use="literal" parts="Response"/>
                <soap11:header message="tns:ProxyToolLaunchResponse" part="HeaderInfoResponse" use="literal" wsdl:required="true"/>
            </wsdl:output>
        </wsdl:operation>
    </wsdl:binding>
    <wsdl:service name="TIRLaunchSyncService">
        <wsdl:port name="TIRLaunchServiceSyncSoapPort" binding="tns:TIRLaunchServiceSyncSoapBinding">
            <soap11:address location="http://localhost/~csev/nusoap/samples/DoLaunchRequest.php"/>
        </wsdl:port>
    </wsdl:service>
</wsdl:definitions>
