<?xml version="1.0" encoding="UTF-8"?>
<xs:schema attributeFormDefault="unqualified"
    elementFormDefault="qualified"
    targetNamespace="http://ws.easylink.com/F2MFilteringRulesCreate/2011/01"
    xmlns:xoafrc="http://ws.easylink.com/F2MFilteringRulesCreate/2011/01" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <!-- =============================
	<xs:include schemaLocation="StatusType.xsd"/>
	<xs:include schemaLocation="StoredObjectType.xsd"/>
	<xs:include schemaLocation="SegmentType.xsd"/>
	<xs:include schemaLocation="Rules.xsd"/>
			============================= -->
    <xs:element name="F2MFilteringRulesCreateRequest">
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="0" name="SubmitId" type="xs:string"/>
                <xs:element name="ObjectStore" type="xs:string"/>
                <xs:element name="ReplaceExisting" type="xs:boolean">
                    <xs:annotation>
                        <xs:documentation>flag to replace existing storedObject</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element name="F2MFilteringRulesId" type="xoafrc:F2MFilteringRulesOwnershipType"/>
                <xs:element minOccurs="0" name="Rules" type="xoafrc:RulesType">
                    <xs:annotation>
                        <xs:documentation>Email Filtering Rules</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element maxOccurs="unbounded" minOccurs="0"
                    name="AdditionalInfo" type="xoafrc:SegmentType"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="F2MFilteringRulesCreateResult">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Status" type="xoafrc:StatusType"/>
                <xs:element minOccurs="0" name="SubmitId" type="xs:string"/>
                <xs:element minOccurs="0" name="ObjectStore" type="xs:string"/>
                <xs:element minOccurs="0" name="F2MFilteringRulesId" type="xoafrc:F2MFilteringRulesOwnershipType"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:complexType name="RulesType">
        <xs:sequence>
            <xs:element maxOccurs="unbounded" name="Rule">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element maxOccurs="unbounded" name="Conditional">
                            <xs:complexType>
                                <xs:simpleContent>
                                    <xs:extension base="xs:string">
                                    <xs:attribute
                                    name="MatchAgainst"
                                    type="xs:string" use="required">
                                    <xs:annotation>
                                    <xs:documentation>values can be "Subject" or "From" or "True". When "True", the "Condition" and "MatchCase" attribute values have no significance as this rule applies to all mails.</xs:documentation>
                                    </xs:annotation>
                                    </xs:attribute>
                                    <xs:attribute name="Condition" type="xs:string">
                                    <xs:annotation>
                                    <xs:documentation>The ten allowed values are:
IsEqualTo
IsNotEqualTo
Contains
DoesNotContain
StartsWith
DoesNotStartWith
EndsWith
DoesNotEndWith
IsMissingOrBlank
IsNotMissingOrBlank</xs:documentation>
                                    </xs:annotation>
                                    </xs:attribute>
                                    <xs:attribute name="MatchCase" type="xs:boolean"/>
                                    </xs:extension>
                                </xs:simpleContent>
                            </xs:complexType>
                        </xs:element>
                        <xs:element name="Action" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>values can be "delete" or "forward".</xs:documentation>
                            </xs:annotation>
                        </xs:element>
                        <xs:element maxOccurs="unbounded" minOccurs="0"
                            name="EmailAddress" type="xs:string"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <!-- ===============================
	=============================== -->
    <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="F2MFilteringRulesOwnershipType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="ownership"
                    type="xoafrc:StoredObjectLevelType" use="required"/>
                <xs:attribute name="groupName" type="xs:string"/>
                <xs:attribute name="groupNo" type="xs:long"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
</xs:schema>
