<?xml version="1.0" encoding="UTF-8"?>
<xs:schema attributeFormDefault="unqualified"
    elementFormDefault="qualified"
    targetNamespace="http://ws.easylink.com/Resend/2011/01"
    xmlns:xoars="http://ws.easylink.com/Resend/2011/01" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <!-- =======================
	
	<xs:include schemaLocation="AddressType.xsd"/>
	<xs:include schemaLocation="DestinationType.xsd"/>
	<xs:include schemaLocation="JobIdType.xsd"/>
	<xs:include schemaLocation="ReportTypes.xsd"/>
	<xs:include schemaLocation="ScheduleType.xsd"/>
	<xs:include schemaLocation="YesNo.xsd"/>
	<xs:include schemaLocation="RecStatusType.xsd"/>
	<xs:include schemaLocation="StatusType.xsd"/>
	 ======================= -->
    <xs:complexType name="ResendSpecType">
        <xs:choice>
            <xs:element minOccurs="0" name="ItemSpec">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element minOccurs="0" name="Destination" type="xoars:DestinationType"/>
                        <xs:element minOccurs="0" name="ReportType" type="xoars:MainReportTypeEnum"/>
                        <xs:element minOccurs="0"
                            name="ReportDestination" type="xoars:DestinationType"/>
                    </xs:sequence>
                    <xs:attribute name="xqn" type="xs:int" use="required"/>
                </xs:complexType>
            </xs:element>
            <xs:element minOccurs="0" name="FilterSpec">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element maxOccurs="unbounded" name="Filter">
                            <xs:simpleType>
                                <xs:restriction base="xs:string">
                                    <xs:enumeration value="Busy"/>
                                    <xs:enumeration value="NoAnswer"/>
                                    <xs:enumeration value="NotSent"/>
                                </xs:restriction>
                            </xs:simpleType>
                        </xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:choice>
    </xs:complexType>
    <xs:complexType name="ResendStatusType">
        <xs:sequence>
            <xs:element minOccurs="0" name="MessageId" type="xs:string"/>
            <xs:element name="RecStatus" type="xoars:RecStatusType"/>
            <xs:element minOccurs="0" name="JobId" type="xoars:JobIdType"/>
        </xs:sequence>
    </xs:complexType>
    <xs:element name="ResendRequest">
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="0" name="SubmitId" type="xs:string"/>
                <xs:element maxOccurs="unbounded" name="Resend">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element minOccurs="0" name="MessageId" type="xs:string"/>
                            <xs:element name="JobId" type="xoars:JobIdType"/>
                            <xs:element minOccurs="0" name="Schedule" type="xoars:ScheduleType"/>
                            <xs:element minOccurs="0" name="StartTime" type="xs:dateTime"/>
                            <xs:choice minOccurs="0">
                                <xs:annotation>
                                    <xs:documentation>if its specified, then it will be used as the job expiration time otherwise profile value will be used</xs:documentation>
                                </xs:annotation>
                                <xs:element minOccurs="0"
                                    name="ExpirationTime" type="xs:dateTime"/>
                                <xs:element minOccurs="0"
                                    name="ExpirationDays" type="xs:decimal"/>
                            </xs:choice>
                            <xs:element minOccurs="0"
                                name="RecipientTimezoneOption" type="xoars:YesNo"/>
                            <xs:element minOccurs="0" name="ResendSpec" type="xoars:ResendSpecType"/>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="ResendResult">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Status" type="xoars:StatusType"/>
                <xs:element minOccurs="0" name="SubmitID" type="xs:string"/>
                <xs:element maxOccurs="unbounded" minOccurs="0"
                    name="ResendStatus" type="xoars:ResendStatusType"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <!-- includes for standalone validation
	<xs:include schemaLocation="AddressType.xsd"/>
	================ -->
    <xs:complexType name="DestinationType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="type" type="xoars:AddressType"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:complexType name="JobIdType">
        <xs:sequence>
            <xs:element name="XDN" type="xs:string"/>
            <xs:element name="MRN" type="xs:integer"/>
        </xs:sequence>
    </xs:complexType>
    <!-- ===============================
	=============================== -->
    <!-- All report types -->
    <xs:simpleType name="MainReportTypeEnum">
        <xs:restriction base="xs:string">
            <xs:enumeration value="none"/>
            <xs:enumeration value="summary"/>
            <xs:enumeration value="detail"/>
            <xs:enumeration value="exception"/>
            <xs:enumeration value="conditional"/>
            <xs:enumeration value="pull"/>
            <xs:enumeration value="enhanced"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="ScheduleType">
        <xs:restriction base="xs:string">
            <xs:enumeration value="express"/>
            <xs:enumeration value="offpeak"/>
            <xs:enumeration value="scheduled"/>
        </xs:restriction>
    </xs:simpleType>
    <!-- =============================== -->
    <xs:simpleType name="YesNo">
        <xs:restriction base="xs:string">
            <xs:enumeration value="yes"/>
            <xs:enumeration value="no"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="RecStatusType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="code" type="xs:int" use="required"/>
            </xs:extension>
        </xs:simpleContent>
    </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>
    <!-- address type enum -->
    <xs:simpleType name="AddressType">
        <xs:restriction base="xs:string">
            <xs:enumeration value="fax"/>
            <xs:enumeration value="internet"/>
            <xs:enumeration value="mbox"/>
            <xs:enumeration value="x400"/>
            <xs:enumeration value="telex"/>
            <xs:enumeration value="cablegram"/>
            <xs:enumeration value="mailgram"/>
            <xs:enumeration value="ddd"/>
            <xs:enumeration value="dedLine"/>
            <xs:enumeration value="softswitch"/>
            <xs:enumeration value="voice"/>
            <xs:enumeration value="sms"/>
            <xs:enumeration value="fod"/>
            <xs:enumeration value="list"/>
            <xs:enumeration value="smQuery"/>
            <xs:enumeration value="URL"/>
        </xs:restriction>
    </xs:simpleType>
</xs:schema>
