<?xml version="1.0" encoding="UTF-8"?>
<xs:schema attributeFormDefault="unqualified"
    elementFormDefault="qualified"
    targetNamespace="http://ws.easylink.com/ItemLevelQuery/2011/01"
    xmlns:xoail="http://ws.easylink.com/ItemLevelQuery/2011/01" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <!--  =========================== -->
    <xs:complexType name="JobIdType">
        <xs:sequence>
            <xs:element name="XDN" type="xs:string"/>
            <xs:element name="MRN" type="xs:integer"/>
        </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:enumeration value="other"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="EncodableStringType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="b64charset" type="xs:string" use="optional"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <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>
    <!-- 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="xoail:AddressType"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <!-- =====================
	<xs:include schemaLocation="EncodableStringType.xsd"/>
	====================== -->
    <xs:complexType name="ExtPropType">
        <xs:choice minOccurs="0">
            <xs:element name="ExtString" type="xoail:EncodableStringType"/>
            <xs:element name="ExtNumber" type="xs:decimal"/>
            <xs:element name="ExtDateTime" type="xs:dateTime"/>
        </xs:choice>
        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="idnum" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="ExtDataType">
        <xs:sequence>
            <xs:element maxOccurs="unbounded" name="ExtSegment">
                <xs:complexType>
                    <xs:sequence minOccurs="0">
                        <xs:element maxOccurs="unbounded" name="ExtProp" type="xoail:ExtPropType"/>
                    </xs:sequence>
                    <xs:attribute name="name" type="xs:string"/>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="ExtDataFilterType">
        <xs:sequence>
            <xs:element maxOccurs="unbounded" minOccurs="0" name="ExtSegmentFilter">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element maxOccurs="unbounded" minOccurs="0" name="ExtPropFilter">
                            <xs:complexType>
                                <xs:attribute name="name" type="xs:string"/>
                                <xs:attribute name="idnum" type="xs:string"/>
                            </xs:complexType>
                        </xs:element>
                    </xs:sequence>
                    <xs:attribute name="name" type="xs:string"/>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <!--  =========================== -->
    <xs:complexType name="JobStateType">
        <xs:choice>
            <xs:element name="Delivered" type="xs:string"/>
            <xs:element name="Undelivered" type="xs:string"/>
        </xs:choice>
    </xs:complexType>
    <xs:complexType name="ILStartJobFilter">
        <xs:sequence>
            <xs:element name="StartJobId" type="xoail:JobIdType"/>
            <xs:element name="BillingSubJobNo" type="xs:long"/>
            <xs:element name="XQN" type="xs:long"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="ILItemQueryFilter">
        <xs:choice>
            <xs:element minOccurs="0" name="ItemRef" type="xoail:EncodableStringType"/>
            <xs:element minOccurs="0" name="DestinationAddress" type="xoail:DestinationType"/>
        </xs:choice>
    </xs:complexType>
    <xs:complexType name="ILJobQueryFilter">
        <xs:choice>
            <xs:element minOccurs="0" name="BillingCode" type="xoail:EncodableStringType"/>
            <xs:element minOccurs="0" name="CustomerReference" type="xoail:EncodableStringType"/>
        </xs:choice>
    </xs:complexType>
    <xs:simpleType name="EntityLevel">
        <xs:restriction base="xs:string">
            <xs:enumeration value="group"/>
            <xs:enumeration value="user"/>
            <xs:enumeration value="customer"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="EntityIdType">
        <xs:simpleContent>
            <xs:extension base="xs:long">
                <xs:attribute name="type" type="xoail:EntityLevel" use="required"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:simpleType name="DomainType">
        <xs:restriction base="xs:string">
            <xs:enumeration value="XDDS"/>
            <xs:enumeration value="MR"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="StateCodeType">
        <xs:restriction base="xs:int">
            <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:restriction>
    </xs:simpleType>
    <xs:simpleType name="StateStringType">
        <xs:restriction base="xs:string">
            <xs:enumeration value="Pending"/>
            <xs:enumeration value="Submitted"/>
            <xs:enumeration value="InProcess"/>
            <xs:enumeration value="Error"/>
            <xs:enumeration value="Cancelled"/>
            <xs:enumeration value="Held"/>
            <xs:enumeration value="Sent"/>
            <xs:enumeration value="Expired"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="StateType">
        <xs:simpleContent>
            <xs:extension base="xoail:StateStringType">
                <xs:attribute name="code" type="xoail:StateCodeType" use="required"/>
                <xs:attribute name="gammacode" type="xs:int" use="optional"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:element name="ItemLevelQueryRequest">
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="0" name="SubmitId" type="xs:string"/>
                <xs:element minOccurs="0" name="Domain" type="xs:string"/>
                <xs:element name="StartDateTime" type="xs:dateTime"/>
                <xs:element name="EndDateTime" type="xs:dateTime"/>
                <xs:element minOccurs="0" name="UseBase64" type="xs:boolean"/>
                <xs:element minOccurs="0" name="UseBinary" type="xs:boolean"/>
                <xs:element minOccurs="0" name="EntityId" type="xoail:EntityIdType"/>
                <xs:element minOccurs="0" name="NumToRetrieve" type="xs:unsignedInt"/>
                <xs:element minOccurs="0" name="ItemState" type="xoail:JobStateType"/>
                <xs:element minOccurs="0" name="StartJobFilter" type="xoail:ILStartJobFilter"/>
                <xs:element minOccurs="0" name="ItemLevelFilter" type="xoail:ILItemQueryFilter"/>
                <xs:element minOccurs="0" name="JobLevelFilter" type="xoail:ILJobQueryFilter"/>
                <xs:element minOccurs="0" name="ExtendedFilter" type="xoail:ExtDataFilterType"/>
                <xs:element minOccurs="0" name="IncludeExtendedJobData" type="xoail:ExtDataFilterType"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="ItemLevelQueryResult">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Status" type="xoail:StatusType"/>
                <xs:element minOccurs="0" name="SubmitId" type="xs:string"/>
                <xs:element maxOccurs="unbounded" minOccurs="0" name="ItemQueryData">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element minOccurs="0" name="UserId" type="xs:string"/>
                            <xs:element name="Domain" type="xs:string"/>
                            <xs:element name="JobNumber" type="xs:string"/>
                            <xs:element name="BillingSubJobNo" type="xs:int"/>
                            <xs:element name="XQN" type="xs:int"/>
                            <xs:element minOccurs="0" name="State" type="xoail:StateType"/>
                            <xs:element minOccurs="0"
                                name="JobEntryTime" type="xs:dateTime"/>
                            <xs:element minOccurs="0"
                                name="DeliveryTime" type="xs:dateTime"/>
                            <xs:element minOccurs="0" name="BillingCode" type="xoail:EncodableStringType"/>
                            <xs:element minOccurs="0"
                                name="CustomerReference" type="xoail:EncodableStringType"/>
                            <xs:element minOccurs="0"
                                name="ItemReference" type="xoail:EncodableStringType"/>
                            <xs:element minOccurs="0"
                                name="DestinationAddress" type="xoail:DestinationType"/>
                            <xs:element minOccurs="0"
                                name="NormalizedDestinationAddress" type="xoail:DestinationType">
                                <xs:annotation>
                                    <xs:documentation>NormalizedDestinationAddress</xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element minOccurs="0"
                                name="ResendOriginalJob" type="xoail:JobIdType"/>
                            <xs:element minOccurs="0"
                                name="ExtendedJobData" type="xoail:ExtDataType"/>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element name="MoreItemsFound" type="xs:boolean"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>
