<?xml version="1.0" encoding="UTF-8"?>
<xs:schema attributeFormDefault="unqualified"
    elementFormDefault="qualified"
    targetNamespace="http://ws.easylink.com/CampaignList/2011/01"
    xmlns:cmplist="http://ws.easylink.com/CampaignList/2011/01" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <!-- ======================================
	<xs:include schemaLocation="StatusType.xsd"/>
	<xs:include schemaLocation="EncodableStringType.xsd"/>
	<xs:include schemaLocation="DateRange.xsd"/>
	<xs:include schemaLocation="XoaMapType.xsd"/>
	<xs:include schemaLocation="FieldInfoType.xsd"/>
	<xs:include schemaLocation="PropertyType.xsd"/>
	<xs:include schemaLocation="FilterActionType.xsd"/>
	<xs:include schemaLocation="ResponseDataType.xsd"/>
		======================================= -->
    <xs:element name="CampaignListRequest">
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="0" name="SubmitId" type="xs:string"/>
                <xs:element name="Domain" type="xs:string"/>
                <xs:element minOccurs="0" name="NumToRetrieve" type="xs:unsignedInt"/>
                <xs:element name="IncludeForms" type="xs:boolean"/>
                <xs:element minOccurs="0" name="DateRange" type="cmplist:DateRangeType"/>
                <xs:element maxOccurs="unbounded" minOccurs="0"
                    name="CampaignName" type="xs:string"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="CampaignListResult">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Status" type="cmplist:StatusType"/>
                <xs:element minOccurs="0" name="SubmitId" type="xs:string"/>
                <xs:element minOccurs="0" name="NumToRetrieve" type="xs:unsignedInt"/>
                <xs:element maxOccurs="unbounded" minOccurs="0"
                    name="Campaign" type="cmplist:CampaignListType"/>
                <xs:element minOccurs="0" name="TotalCount" type="xs:unsignedInt"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:complexType name="CampaignListType">
        <xs:sequence>
            <xs:element name="CampaignName" type="xs:string"/>
            <xs:element minOccurs="0" name="StartDate" type="xs:dateTime"/>
            <xs:element minOccurs="0" name="EndDate" type="xs:dateTime"/>
            <xs:element maxOccurs="unbounded" minOccurs="0" name="Form" type="cmplist:CampaignFormType"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="CampaignFormType">
        <xs:sequence>
            <xs:element name="FormName"/>
            <xs:element minOccurs="0" name="FormCreationTime"/>
            <xs:element minOccurs="0" name="WebLocation" type="xs:anyURI"/>
            <xs:element minOccurs="0" name="LastResponseReportedTime" type="xs:dateTime"/>
            <xs:element minOccurs="0" name="LastReportedResponseNo" type="xs:unsignedInt"/>
            <xs:element maxOccurs="unbounded" minOccurs="0"
                name="FormProperty" type="cmplist:XoaMapType"/>
            <xs:element maxOccurs="unbounded" minOccurs="0"
                name="FormField" type="cmplist:FieldInfoType"/>
        </xs:sequence>
    </xs:complexType>
    <xs:simpleType name="ResponseFilterType">
        <xs:restriction base="xs:string">
            <xs:enumeration value="new"/>
            <xs:enumeration value="deleted"/>
            <xs:enumeration value="all"/>
        </xs:restriction>
    </xs:simpleType>
    <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="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="DateRangeType">
        <xs:sequence>
            <xs:element name="StartDate" type="xs:dateTime"/>
            <xs:element name="EndDate" type="xs:dateTime"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="XoaMapType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="name" type="xs:string" use="required"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:complexType name="FieldInfoType">
        <xs:sequence>
            <xs:element name="FieldName" type="cmplist:EncodableStringType"/>
            <xs:element name="FieldDataType" type="xs:string"/>
            <xs:element maxOccurs="unbounded" minOccurs="0"
                name="AdditionalInfo" type="cmplist:XoaMapType"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="PropertyType">
        <xs:sequence>
            <xs:element name="Name" type="xs:string"/>
            <xs:choice minOccurs="0">
                <xs:element name="ExtString" type="cmplist:EncodableStringType"/>
                <xs:element name="ExtNumber" type="xs:decimal"/>
                <xs:element name="ExtDateTime" type="xs:dateTime"/>
                <xs:element name="ExtBoolean" type="xs:boolean"/>
                <xs:element name="ExtBinary" type="xs:string"/>
            </xs:choice>
        </xs:sequence>
    </xs:complexType>
    <xs:simpleType name="FilterActionType">
        <xs:restriction base="xs:string">
            <xs:enumeration value="markNew"/>
            <xs:enumeration value="markDeleted"/>
            <xs:enumeration value="leaveAsItIs"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="ResponseDataType">
        <xs:sequence minOccurs="0">
            <xs:element maxOccurs="unbounded" name="FormField" type="cmplist:PropertyType"/>
        </xs:sequence>
        <xs:attribute name="sequenceNumber" type="xs:unsignedInt" use="required"/>
        <xs:attribute name="lastModifiedTime" type="xs:dateTime" use="required"/>
    </xs:complexType>
</xs:schema>
