<?xml version="1.0" encoding="UTF-8"?>
<xs:schema attributeFormDefault="unqualified"
    elementFormDefault="qualified"
    targetNamespace="http://ws.easylink.com/JobDetail/2020/06"
    xmlns:xoajd="http://ws.easylink.com/JobDetail/2020/06" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="JobDetailRequest">
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="0" name="SubmitId" type="xs:string"/>
                <xs:element name="JobId" type="xoajd:JobIdType"/>
                <xs:element minOccurs="0" name="Window" type="xoajd:WindowType">
                    <xs:annotation>
                        <xs:documentation>defines an optional time period to narrow the query results.</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element minOccurs="0" name="Chunk" type="xoajd:ChunkType">
                    <xs:annotation>
                        <xs:documentation>defines the "chunking" parameters used to narrow the resutls of the query</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element minOccurs="0" name="RequestedJobAttributes" type="xs:string">
                    <xs:annotation>
                        <xs:documentation>CSV:a list of job attribute fileds to include in the result (UDDERS and job progress fields).  This will be used as the header row for Job:JobAttributes. A list of know field names will need to be proviede in the documentation.  Additional data fields may be requested using the %seg:keyword syntax. If this field is not present in the request, a default list of attributes shall be used.</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element minOccurs="0"
                    name="RequestedDeliveryDetails" type="xs:string">
                    <xs:annotation>
                        <xs:documentation>CSV:a list of delivery data fileds to include in the result (bcdetail, UDDERS, etc).  This will be used as the header row for Job:Group:DetailColumns. A list of know field names will need to be proviede in the documentation.  Additional data fields may be requested using the %seg:keyword syntax.If this field is not present in the request, a default list of attributes shall be used.</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element minOccurs="0" name="UseBase64" type="xs:boolean">
                    <xs:annotation>
                        <xs:documentation>supported fields will be RFC2047 encoded in the result. =?{charset}?B?{bas64-encoded-data}?=</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element minOccurs="0" name="UseBinary" type="xs:boolean">
                    <xs:annotation>
                        <xs:documentation>supported fields will be RFC2047 encoded in the result. =?binary?B?{bas64-encoded-data}?=</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element minOccurs="0"
                    name="IncludeAllDeliveryGroups" type="xs:boolean">
                    <xs:annotation>
                        <xs:documentation>when true, friend and report subjob data will be included in the result</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element minOccurs="0" name="HideEvents" type="xoajd:HideEventsType">
                    <xs:annotation>
                        <xs:documentation>identifis the types of events to eliminate from the result.</xs:documentation>
                    </xs:annotation>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="JobDetailResult">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Status" type="xoajd:StatusType"/>
                <xs:element minOccurs="0" name="SubmitId" type="xs:string"/>
                <xs:element name="JobId" type="xoajd:JobIdType"/>
                <xs:element minOccurs="0" name="Window" type="xoajd:WindowType">
                    <xs:annotation>
                        <xs:documentation>echoed from the request</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element minOccurs="0" name="Chunk" type="xoajd:ChunkType">
                    <xs:annotation>
                        <xs:documentation>echoed from request</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element minOccurs="0" name="ArrivalColumns" type="xs:string"/>
                <xs:element minOccurs="0" name="RemovalColumns" type="xs:string"/>
                <xs:element minOccurs="0" name="PullColumns" type="xs:string"/>
                <xs:element minOccurs="0" name="EndPos" type="xoajd:PosType">
                    <xs:annotation>
                        <xs:documentation>last record in a "chunked" set</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element minOccurs="0" name="NumDataRecs" type="xs:int">
                    <xs:annotation>
                        <xs:documentation>number of "detail" records returned in a "chunked" request</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element minOccurs="0" name="MoreDataAvailable" type="xs:boolean">
                    <xs:annotation>
                        <xs:documentation>when true, indicates that there are more records available in the current set</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element maxOccurs="unbounded" minOccurs="0" name="Job">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element maxOccurs="unbounded"
                                minOccurs="0" name="JobState" type="xs:string">
                                <xs:annotation>
                                    <xs:documentation>job progress state(s)</xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element minOccurs="0"
                                name="JobAttributes" type="xs:string">
                                <xs:annotation>
                                    <xs:documentation>CSV:UDDERS and other job-level attributes (includes a header row)</xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element maxOccurs="unbounded"
                                minOccurs="0" name="Group">
                                <xs:complexType>
                                    <xs:sequence>
                                    <xs:element
                                    maxOccurs="unbounded"
                                    minOccurs="0"
                                    name="Attachments" type="xs:string">
                                    <xs:annotation>
                                    <xs:documentation>CSV of attachment data, Flags at end of record, allowed to extend</xs:documentation>
                                    </xs:annotation>
                                    </xs:element>
                                    <xs:element minOccurs="0"
                                    name="DetailColumns" type="xs:string">
                                    <xs:annotation>
                                    <xs:documentation>The "header row" or list of culums used in the XQN:Detail</xs:documentation>
                                    </xs:annotation>
                                    </xs:element>
                                    <xs:element
                                    maxOccurs="unbounded"
                                    minOccurs="0" name="XQN">
                                    <xs:complexType>
                                    <xs:sequence>
                                    <xs:element
                                    minOccurs="0"
                                    name="Detail" type="xs:string">
                                    <xs:annotation>
                                    <xs:documentation>CSV data - colums defined in BSJ:DetailColums above</xs:documentation>
                                    </xs:annotation>
                                    </xs:element>
                                    <xs:element
                                    minOccurs="0"
                                    name="Arrivals" type="xs:string">
                                    <xs:annotation>
                                    <xs:documentation>CSV:xqn,time,subject,class,detail,message,tags</xs:documentation>
                                    </xs:annotation>
                                    </xs:element>
                                    <xs:element
                                    minOccurs="0"
                                    name="Removals" type="xs:string">
                                    <xs:annotation>
                                    <xs:documentation>CSV:time,reason</xs:documentation>
                                    </xs:annotation>
                                    </xs:element>
                                    <xs:element
                                    minOccurs="0"
                                    name="Pulls" type="xs:string">
                                    <xs:annotation>
                                    <xs:documentation>CSV:attachment_num,time</xs:documentation>
                                    </xs:annotation>
                                    </xs:element>
                                    </xs:sequence>
                                    </xs:complexType>
                                    </xs:element>
                                    </xs:sequence>
                                    <xs:attribute name="type" use="required">
                                    <xs:simpleType>
                                    <xs:restriction base="xs:string">
                                    <xs:enumeration value="Normal"/>
                                    <xs:enumeration value="Report"/>
                                    <xs:enumeration value="Friend"/>
                                    </xs:restriction>
                                    </xs:simpleType>
                                    </xs:attribute>
                                    <xs:attribute name="num"
                                    type="xs:int" use="required"/>
                                </xs:complexType>
                            </xs:element>
                        </xs:sequence>
                        <xs:attribute name="XDN" type="xs:string" use="required"/>
                        <xs:attribute name="MRN" type="xs:integer" use="required"/>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:complexType name="JobIdType">
        <xs:sequence>
            <xs:element name="XDN" type="xs:string"/>
            <xs:element name="MRN" type="xs:integer"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="PosType">
        <xs:sequence>
            <xs:element name="XDN" type="xs:string"/>
            <xs:element name="MRN" type="xs:integer"/>
            <xs:element name="BSJ" type="xs:int"/>
            <xs:element name="XQN" type="xs:int"/>
        </xs:sequence>
    </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:complexType name="WindowType">
        <xs:sequence>
            <xs:element name="StartTime" type="xs:dateTime"/>
            <xs:element name="EndTime" type="xs:dateTime"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="ChunkType">
        <xs:sequence>
            <xs:element minOccurs="0" name="StartPos" type="xoajd:PosType"/>
            <xs:element minOccurs="0" name="NumRecs" type="xs:int"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="HideEventsType">
        <xs:sequence>
            <xs:element minOccurs="0" name="Arrival" type="xs:boolean"/>
            <xs:element minOccurs="0" name="Removal" type="xs:boolean"/>
            <xs:element minOccurs="0" name="Pull" type="xs:boolean"/>
        </xs:sequence>
    </xs:complexType>
</xs:schema>
