<?xml version = "1.0" encoding = "UTF-8"?>
<wsdl11:definitions name="AuthorizationSyncServices"
    targetNamespace="http://www.imsglobal.org/services/cc/wsdl11/sync/imsccauth_v1p0"
    xmlns:tns="http://www.imsglobal.org/services/cc/wsdl11/sync/imsccauth_v1p0"
    xmlns:soap11="http://schemas.xmlsoap.org/wsdl/soap/"
    xmlns:wsdl11="http://schemas.xmlsoap.org/wsdl/"
    xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <wsdl11:documentation>
        WSDL File Information
        ---------------------
        Services:       Authorization (Synchronous Communications)
        Author:         Colin Smythe (IMS GLC) and David Mills (Angel)
        Date:           1st October, 2008
        Version:        1.0
        Status:         Final Release
        Description:    This service has been designed for use with the IMS GLC Common Cartridge v1.0.

        History:        The first version of this Authorization service is based upon the Angel approach.

        WSDL Binding:   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-2008 (c) IMS Global Learning Consortium Inc.  All Rights Reserved.
                        IMS Global Learning Consortium, Inc. (IMS GLC) is publishing the information
                        contained in this binding ("Specification") for purposes of scientific
                        experimental and scholarly collaboration only.  IMS GLC 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 GLC would
                        appreciate receiving your comments and suggestions.  Please contact IMS GLC
                        through our website at: http://www.imsglobal.org.
        
            IPR, License and Distribution Notices
            This machine readable file is derived from IMS specification IMS Common Cartridge Version 1.0 found at http://www.imsglobal.org/cc/index.html and the original IMS schema binding or code base 	http://www.imsglobal.org/cc/ccv1p0/imscc_authv1p0.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-2008. 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 are not original incorporators of this document and have not changed this document, that is, are distributing a software product that incorporates this document as is from a third-party source other than IMS, 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.
            
            Developers of products or services that are original incorporators of this document and wish to provide distribution of this document as is or with modifications and developers of products and services that are not original incorporators of this document and have changed this document, 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.    

        UML Source File Information
        ---------------------------
        Choreography:     Sync
        Transport:        SOAPv1.1

        Source XSLT File Information
        ----------------------------
        XSL Generator:    UMLtoWSDLTransformv0p8.xsl
        XSLT Processor:   Xalan
        Release:          1.0 Beta 2
        Date:             12th February, 2008

        Auto-generation Tool
        --------------------
        This WSDL/XSD was auto-generated using the IMS GLC 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 GLC General Web Services: WSDL/XSD Binding Auto-generation"
        available at the IMS web-site.
        Tool Copyright:  2005-2008 (c) IMS Global Learning Consortium Inc.  All Rights Reserved.
    </wsdl11:documentation>

    <!-- Declaration of the WSDL type elements ************************************************************  -->

    <wsdl11:types>
        <xs:schema xmlns="http://www.w3.org/2001/XMLSchema"
        targetNamespace="http://www.imsglobal.org/services/cc/wsdl11/sync/imsccauth_v1p0"
        xmlns:xs="http://www.w3.org/2001/XMLSchema"
        version="IMS AUTHZ V1.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:simpleType name="imsx_CodeMinorValue.Type">
            <xs:restriction base="xs:string">
                <xs:enumeration value="fullsuccess"/>
                <xs:enumeration value="targetisbusy"/>
                <xs:enumeration value="unauthorizedrequest"/>
                <xs:enumeration value="linkfailure"/>
                <xs:enumeration value="unsupported"/>
            </xs:restriction>
        </xs:simpleType>

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

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

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

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

        <!-- Generate the simpleType elements based IMS data-types  *******************************************  -->

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

        <xs:element name="message" 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" default="TargetEndSystem" />

        <xs:element name="imsx_version" type="xs:string" default="V1.0" />

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

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

        <!-- Generate the data-type ComplexTypes **************************************************************  -->

        <xs:complexType name="ValidationResult.Type">
            <xs:annotation>
                <xs:documentation>
                    The set of possible responses from the authorization system
                    to the LMS.  Three types of response are possible depending 
                    on if a key was supplied by the LMS and whether or not the 
                    key was valid.
                </xs:documentation>
            </xs:annotation>
            <xs:choice>
                <xs:sequence minOccurs = "1" maxOccurs = "1">
                    <xs:element ref="tns:ID" minOccurs = "1" maxOccurs = "1"/>
                    <xs:element ref="tns:URL" minOccurs = "1" maxOccurs = "1"/>
                    <xs:element ref="tns:key" minOccurs = "1" maxOccurs = "1"/>
                </xs:sequence>
                <xs:sequence minOccurs = "1" maxOccurs = "1">
                    <xs:element ref="tns:release" minOccurs = "1" maxOccurs = "1"/>
                </xs:sequence>
                <xs:sequence minOccurs = "1" maxOccurs = "1">
                    <xs:element ref="tns:invalid" minOccurs = "1" maxOccurs = "1"/>
                </xs:sequence>
            </xs:choice>
        </xs:complexType>

        <xs:complexType name="Release.Type">
            <xs:annotation>
                <xs:documentation>
                </xs:documentation>
            </xs:annotation>
            <xs:sequence>
                <xs:element ref="tns:key" minOccurs = "1" maxOccurs = "1"/>
                <xs:element ref="tns:exp" minOccurs = "1" maxOccurs = "1"/>
            </xs:sequence>
        </xs:complexType>

        <xs:complexType name="Invalid.Type">
            <xs:annotation>
                <xs:documentation>
                </xs:documentation>
            </xs:annotation>
            <xs:sequence>
                <xs:element ref="tns:key" minOccurs = "1" maxOccurs = "1"/>
                <xs:element ref="tns:message" minOccurs = "1" maxOccurs = "1"/>
            </xs:sequence>
        </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: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:sequence>
        </xs:complexType>

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

        <!-- Generate the derived data-type elements based upon simpleType ************************************  -->

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

        <!-- Generate the derived data-type elements based upon derived simpleType ****************************  -->

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        <xs:element name="validationRequest">
            <xs:complexType>
                <xs:sequence>
                    <xs:element ref="tns:ID"/>
                    <xs:element ref="tns:URL"/>
                    <xs:element ref="tns:key"/>
                </xs:sequence>
            </xs:complexType>
        </xs:element>

        <xs:element name="validationResponse">
            <xs:complexType>
                <xs:sequence>
                    <xs:element ref="tns:validation" 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>
    </wsdl11:types>

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

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

    <wsdl11:message name="validationRequest">
        <wsdl11:part name="Parameters" element="tns:validationRequest"/>
        <wsdl11:part name="HeaderInfoParameters" element="tns:imsx_syncRequestHeaderInfo"/>
    </wsdl11:message>
    <wsdl11:message name="validationResponse">
        <wsdl11:part name="Response" element="tns:validationResponse"/>
        <wsdl11:part name="HeaderInfoResponse" element="tns:imsx_syncResponseHeaderInfo"/>
    </wsdl11:message>

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

    <!-- Declaration of the WSDL portType elements ********************************************************  -->

    <wsdl11:portType name="AuthorizationManagerSyncPortType">
        <wsdl11:documentation>
            PortType Description
            --------------------
            This interface consists of a single operation.  The 'validation' operation
            is used to exchange the authorization request and response.  The request
            message consists of the identifier (ID), an authorization url (URL) and a key (key).
            The response consists of the validation parameter.
        </wsdl11:documentation>
        <wsdl11:operation name="validation">
            <wsdl11:input message="tns:validationRequest"/>
            <wsdl11:output message="tns:validationResponse"/>
        </wsdl11:operation>
    </wsdl11:portType>

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

    <!-- Declaration of the WSDL binding elements *********************************************************  -->

    <wsdl11:binding name="AuthorizationManagerSyncSoapBinding" type="tns:AuthorizationManagerSyncPortType">
        <soap11:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
        <wsdl11:operation name="validation">
            <soap11:operation soapAction="http://localhost/validation" style="document"/>
            <wsdl11:input>
                <soap11:body use="literal" parts="Parameters"/>
                <soap11:header message="tns:validationRequest" part="HeaderInfoParameters" use="literal" wsdl11:required="true"/>
            </wsdl11:input>
            <wsdl11:output>
                <soap11:body use="literal" parts="Response"/>
                <soap11:header message="tns:validationResponse" part="HeaderInfoResponse" use="literal" wsdl11:required="true"/>
            </wsdl11:output>
        </wsdl11:operation>
    </wsdl11:binding>

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

    <!-- Declaration of the WSDL service elements *********************************************************  -->

    <wsdl11:service name="AuthorizationSyncService">
        <wsdl11:documentation>
            Service Information
            -------------------
            Author:         Colin Smythe (IMSGLC) and David Mills (Angel)
            Date:           1st October, 2008
            Version:        1.0
            Status:         Final Release
            Description:    This is the realization of the authorization service and consists of a single interface.
            History:        The first version of this code service based upon the Angel approach.
        </wsdl11:documentation>
        <wsdl11:port name="AuthorizationManagerSyncSoapPort" binding="tns:AuthorizationManagerSyncSoapBinding">
            <soap11:address location="http://localhost/AuthorizationManagerSyncSoap/"/>
        </wsdl11:port>
    </wsdl11:service>

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

</wsdl11:definitions>

