<?xml version="1.0" encoding="UTF-8"?>
<xs:schema attributeFormDefault="unqualified"
    elementFormDefault="qualified"
    targetNamespace="http://ws.easylink.com/VoiceScriptRetrieve/2011/01"
    xmlns:xoavsr="http://ws.easylink.com/VoiceScriptRetrieve/2011/01" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <!-- ==========	
	<xs:include schemaLocation="Document.xsd"/>
	<xs:include schemaLocation="DTMFKey.xsd"/>
	<xs:include schemaLocation="OwnershipLevelType.xsd"/>
	<xs:include schemaLocation="StatusType.xsd"/>
	<xs:include schemaLocation="StoredObjectType.xsd"/>
	<xs:include schemaLocation="VoiceScript.xsd"/>
        ========== -->
    <xs:element name="VoiceScriptRetrieveRequest">
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="0" name="SubmitId" type="xs:string"/>
                <xs:element name="ObjectStore" type="xs:string">
                    <xs:annotation>
                        <xs:documentation>Object store domain . dev ,dev4</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element name="VoiceScriptId" type="xoavsr:StoredObjectIdType"/>
                <xs:element name="RetrievalContentType" type="xoavsr:VoiceScriptRetrievalType">
                    <xs:annotation>
                        <xs:documentation>enum  1.TransactionOnly (no attachement)      . 2.TransactionWithAttachment . 3.DescriptionOnly</xs:documentation>
                    </xs:annotation>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="VoiceScriptRetrieveResult">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Status" type="xoavsr:StatusType"/>
                <xs:element minOccurs="0" name="SubmitId" type="xs:string"/>
                <xs:element minOccurs="0" name="ObjectStore" type="xs:string"/>
                <xs:element minOccurs="0" name="VoiceScriptId" type="xoavsr:StoredObjectIdType"/>
                <xs:choice minOccurs="0">
                    <xs:element name="TransactionInfo" type="xoavsr:TransactionInfoType">
                        <xs:annotation>
                            <xs:documentation>Transaction info doesnt retrieve the attachement file if its not asked for.</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="Description">
                        <xs:annotation>
                            <xs:documentation>Segment properties read from the description file</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element maxOccurs="unbounded"
                                    minOccurs="0" name="Segment" type="xoavsr:SegmentType"/>
                            </xs:sequence>
                        </xs:complexType>
                    </xs:element>
                </xs:choice>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <!-- ===============================
	<xs:include schemaLocation="OwnershipLevelType.xsd"/>
	=============================== -->
    <xs:element name="CharacterSet" type="xs:string">
        <xs:annotation>
            <xs:documentation>use ISO names</xs:documentation>
        </xs:annotation>
    </xs:element>
    <xs:simpleType name="DocEncodingFormat">
        <xs:restriction base="xs:string">
            <xs:enumeration value="text"/>
            <xs:enumeration value="base64"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="DocDataType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="format"
                    type="xoavsr:DocEncodingFormat" use="required"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:complexType name="SosObjectIdType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="sosType" type="xs:string" use="required"/>
                <xs:attribute name="ownershipLevel" type="xoavsr:OwnershipLevelType"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:complexType name="DocumentType">
        <xs:sequence>
            <xs:element name="DocType" type="xs:string">
                <xs:annotation>
                    <xs:documentation>Value restricted by application to recognized values</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="Filename" type="xs:string"/>
            <xs:choice>
                <xs:element name="DocData" type="xoavsr:DocDataType"/>
                <xs:element name="DocCfs" type="xs:string"/>
                <xs:element name="DocUrl" type="xs:anyURI"/>
                <xs:element name="SosObject" type="xoavsr:SosObjectIdType"/>
            </xs:choice>
            <xs:element minOccurs="0" ref="xoavsr:CharacterSet"/>
        </xs:sequence>
        <xs:attribute name="ref" type="xs:string" use="optional"/>
    </xs:complexType>
    <xs:complexType name="DocumentSetType">
        <xs:sequence>
            <xs:element maxOccurs="unbounded" minOccurs="0"
                name="Document" type="xoavsr:DocumentType"/>
        </xs:sequence>
    </xs:complexType>
    <xs:simpleType name="DTMFKey">
        <xs:restriction base="xs:string">
            <xs:enumeration value="0"/>
            <xs:enumeration value="1"/>
            <xs:enumeration value="2"/>
            <xs:enumeration value="3"/>
            <xs:enumeration value="4"/>
            <xs:enumeration value="5"/>
            <xs:enumeration value="6"/>
            <xs:enumeration value="7"/>
            <xs:enumeration value="8"/>
            <xs:enumeration value="9"/>
            <xs:enumeration value="#"/>
            <xs:enumeration value="*"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="OwnershipLevelType">
        <xs:restriction base="xs:string">
            <xs:enumeration value="user"/>
            <xs:enumeration value="customer"/>
            <xs:enumeration value="group"/>
            <xs:enumeration value="system"/>
        </xs:restriction>
    </xs:simpleType>
    <!-- ===============================
	=============================== -->
    <xs:complexType name="SegmentType">
        <xs:sequence>
            <xs:element maxOccurs="unbounded" name="Property">
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="xs:string">
                            <xs:attribute name="name" type="xs:string" use="required"/>
                            <xs:attribute name="b64charset"
                                type="xs:string" use="optional"/>
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
        <xs:attribute name="name" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="StatusType">
        <xs:sequence>
            <xs:element name="StatusCode" type="xs:integer">
                <xs:annotation>
                    <xs:documentation>0 = success, non-zero = error state TBD</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="StatusMessage" type="xs:string">
                <xs:annotation>
                    <xs:documentation>text description of StatusCode</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="ErrorList">
                <xs:annotation>
                    <xs:documentation>Container for Errors</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                    <xs:sequence>
                        <xs:element maxOccurs="unbounded" name="Error">
                            <xs:annotation>
                                <xs:documentation>An Error</xs:documentation>
                            </xs:annotation>
                            <xs:complexType>
                                <xs:sequence>
                                    <xs:element name="ErrorCode" type="xs:integer">
                                    <xs:annotation>
                                    <xs:documentation>non-zero code</xs:documentation>
                                    </xs:annotation>
                                    </xs:element>
                                    <xs:element name="ErrorMessage" type="xs:string"/>
                                </xs:sequence>
                            </xs:complexType>
                        </xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="SubmissionTime" type="xs:dateTime">
                <xs:annotation>
                    <xs:documentation>The time the Request was received by the system</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="CompletionTime" type="xs:dateTime">
                <xs:annotation>
                    <xs:documentation>the time the Request was completed processing</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:simpleType name="StoredObjectLevelType">
        <xs:restriction base="xs:string">
            <xs:enumeration value="user"/>
            <xs:enumeration value="customer"/>
            <xs:enumeration value="group"/>
            <xs:enumeration value="domain"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="StoredObjectIdType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="objKind" type="xs:string" use="required"/>
                <xs:attribute name="ownership" type="xoavsr:StoredObjectLevelType"/>
                <xs:attribute name="groupName" type="xs:string"/>
                <xs:attribute name="groupNo" type="xs:long"/>
                <xs:attribute name="b64charset" type="xs:string"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:complexType name="OwnershipInfoType">
        <xs:sequence>
            <xs:element name="Ownership" type="xoavsr:StoredObjectLevelType"/>
            <xs:element minOccurs="0" name="GroupName" type="xs:string"/>
            <xs:element minOccurs="0" name="GroupNo" type="xs:long"/>
        </xs:sequence>
    </xs:complexType>
    <!-- ==========	
	<xs:include schemaLocation="Document.xsd"/>
	<xs:include schemaLocation="DTMFKey.xsd"/>
	<xs:include schemaLocation="OwnershipLevelType.xsd"/>
	========== -->
    <xs:complexType name="MultipleChoiceInfoType">
        <xs:sequence>
            <xs:element name="ResponseRange">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="NumChoices">
                            <xs:simpleType>
                                <xs:restriction base="xs:unsignedInt"/>
                            </xs:simpleType>
                        </xs:element>
                        <xs:element minOccurs="0" name="ExitChoice" type="xoavsr:DTMFKey"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element minOccurs="0" name="PromptAttachment" type="xoavsr:DocumentInfoType"/>
            <xs:element minOccurs="0" name="ResponseAttachment" type="xoavsr:DocumentInfoType"/>
            <xs:element maxOccurs="unbounded" minOccurs="0"
                name="Branching" type="xoavsr:BranchingInfoType"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="NumericInputInfoType">
        <xs:sequence>
            <xs:element name="ResponseRange">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="MinInputDigit" type="xs:unsignedInt"/>
                        <xs:element name="MaxInputDigit" type="xs:unsignedInt"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element minOccurs="0" name="PromptAttachment" type="xoavsr:DocumentInfoType"/>
            <xs:element maxOccurs="3" minOccurs="0" name="Branching" type="xoavsr:BranchingInfoType"/>
        </xs:sequence>
    </xs:complexType>
    <xs:simpleType name="BranchingConditionType">
        <xs:restriction base="xs:string">
            <xs:enumeration value="equals"/>
            <xs:enumeration value="greaterthan"/>
            <xs:enumeration value="lessthan"/>
            <xs:enumeration value="notequals"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="BranchingInfoType">
        <xs:sequence>
            <xs:element minOccurs="0" name="Condition" type="xoavsr:BranchingConditionType"/>
            <xs:element minOccurs="0" name="InputKey" type="xs:unsignedInt"/>
            <xs:choice>
                <xs:element name="GotoTransactionID" type="xs:unsignedInt"/>
                <xs:element name="GoToTransaction" type="xs:string"/>
            </xs:choice>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="InformationalInfoType">
        <xs:sequence>
            <xs:element minOccurs="0" name="PromptAttachment" type="xoavsr:DocumentInfoType"/>
            <xs:element minOccurs="0" name="Branching" type="xoavsr:BranchingInfoType"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="ExactMatchInfoType">
        <xs:sequence>
            <xs:element name="ResponseRange">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="InsertId" type="xs:unsignedInt"/>
                        <xs:element name="NumOfAttempts" type="xs:unsignedInt"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element minOccurs="0" name="PromptAttachment" type="xoavsr:DocumentInfoType"/>
            <xs:element minOccurs="0" name="ResponseAttachment" type="xoavsr:DocumentInfoType"/>
            <xs:element maxOccurs="2" minOccurs="0" name="Branching" type="xoavsr:BranchingInfoType">
                <xs:annotation>
                    <xs:documentation>equals and not equals</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="AutoTransferInfoType">
        <xs:sequence>
            <xs:element name="ResponseRange">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="TransferKey" type="xoavsr:DTMFKey"/>
                        <xs:element name="PlayBackLoopDelay" type="xs:unsignedInt"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element minOccurs="0" name="PromptAttachment" type="xoavsr:DocumentInfoType"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="TransactionInfoType">
        <xs:sequence>
            <xs:element minOccurs="0" name="IDWav" type="xoavsr:DocumentInfoType"/>
            <xs:element maxOccurs="unbounded" name="Transaction">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="TransactionName" type="xs:string"/>
                        <xs:choice>
                            <xs:element name="Informational" type="xoavsr:InformationalInfoType"/>
                            <xs:element name="MultipleChoice" type="xoavsr:MultipleChoiceInfoType"/>
                            <xs:element name="AutoTransfer" type="xoavsr:AutoTransferInfoType"/>
                            <xs:element name="NumericInput" type="xoavsr:NumericInputInfoType"/>
                            <xs:element name="ExactMatch" type="xoavsr:ExactMatchInfoType"/>
                        </xs:choice>
                    </xs:sequence>
                    <xs:attribute name="transactionID" type="xs:unsignedInt"/>
                </xs:complexType>
            </xs:element>
            <xs:element maxOccurs="unbounded" minOccurs="0"
                name="Attachment" type="xoavsr:DocumentType"/>
        </xs:sequence>
    </xs:complexType>
    <xs:simpleType name="VoiceScriptRetrievalType">
        <xs:restriction base="xs:string">
            <xs:enumeration value="TransactionOnly"/>
            <xs:enumeration value="TransactionWithAttachement"/>
            <xs:enumeration value="DescriptionOnly"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="DocumentInfoType">
        <xs:sequence>
            <xs:element name="DocType" type="xs:string">
                <xs:annotation>
                    <xs:documentation>Value restricted by application to recognized values</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:choice>
                <xs:element name="SosObject" type="xoavsr:SosObjectIdType"/>
                <xs:element name="Filename" type="xs:string"/>
            </xs:choice>
        </xs:sequence>
    </xs:complexType>
</xs:schema>
