<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
	<xs:element name="Request">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="Identification" minOccurs="0">
					<xs:complexType>
						<xs:choice>
							<xs:choice>
								<xs:element type="nonEmptyString" name="Affiliate" />
								<xs:element type="nonEmptyString" name="Brand" />
							</xs:choice>
							<xs:sequence>
								<xs:element type="nonEmptyString" name="UserID" />
								<xs:element type="nonEmptyString" name="Password" />
							</xs:sequence>
						</xs:choice>
					</xs:complexType>
				</xs:element>
				<xs:element name="Service">
					<xs:complexType>
						<xs:sequence>
							<xs:element type="nonEmptyString" minOccurs="0" name="SoftwareVersion" />
							<xs:element name="ServiceName">
								<xs:simpleType>
									<xs:restriction base="xs:string">
										<xs:enumeration value="AccountOpen" />
									</xs:restriction>
								</xs:simpleType>
							</xs:element>
							<xs:element name="ServiceDetail">
								<xs:complexType>
									<xs:sequence>
										<xs:element type="nonEmptyString" minOccurs="0" name="FirstName" />
										<xs:element type="nonEmptyString" minOccurs="0" name="LastName" />
										<xs:element type="nonEmptyString" minOccurs="0" name="MobilePhone" />
										<xs:element type="nonEmptyString" name="EmailAddress" />
										<xs:element type="nonEmptyString" minOccurs="0" name="Company" />
										<xs:element type="nonEmptyString" minOccurs="0" name="Phone" />
										<xs:element type="nonEmptyString" name="Password" />
										<xs:element type="nonEmptyString" minOccurs="0" name="AltEmail" />
										<xs:element type="nonEmptyString" minOccurs="0" name="DefaultHeader" />
										<xs:element type="nonEmptyString" minOccurs="0" name="TimeZone" />
										<xs:element type="nonEmptyString" minOccurs="0" name="Location" />
										<xs:element type="nonEmptyString" minOccurs="0" name="PromoCode" />
										<xs:element type="booleanOrEmpty" minOccurs="0" name="EmailOptOut" />
                    <xs:element type="infoSource"     minOccurs="0" name="InfoSource" />
									</xs:sequence>
								</xs:complexType>
							</xs:element>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
			</xs:sequence>
			<xs:attribute name="Version">
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:enumeration value="1.0" />
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="nonEmptyString">
		<xs:restriction base="xs:string">
			<xs:minLength value="1" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="emptyString">
		<xs:restriction base="xs:string">
			<xs:maxLength value="0" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="booleanOrEmpty">
		<xs:union memberTypes="xs:boolean emptyString" />
	</xs:simpleType>
    <xs:simpleType name="infoSource">
        <xs:restriction base="xs:string">
            <xs:enumeration value="AFFILIATE" />
            <xs:enumeration value="CUSTOMER_LEAD" />
            <xs:enumeration value="DIRECT_MAIL" />
            <xs:enumeration value="PR" />
            <xs:enumeration value="SEARCH_ENGINE" />
            <xs:enumeration value="TELEPHONE_CALL" />
            <xs:enumeration value="VZW" />
            <xs:enumeration value="WORD_OF_MOUTH" />
            <xs:enumeration value="OTHER" />
        </xs:restriction>
    </xs:simpleType>
</xs:schema>