﻿<?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">
					<xs:complexType>
						<xs:sequence>
							<xs:element type="nonEmptyString" name="UserID" />
							<xs:element type="nonEmptyString" name="Password" />
						</xs:sequence>
					</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="ReportStandard" />
									</xs:restriction>
								</xs:simpleType>
							</xs:element>
							<xs:element name="ServiceDetail">
								<xs:complexType>
									<xs:choice>
										<xs:sequence>
											<xs:element name="DateRange">
												<xs:complexType>
													<xs:choice>
														<xs:sequence>
															<xs:element type="xs:dateTime" name="StartDate" />
															<xs:element type="xs:dateTime" name="EndDate" />
														</xs:sequence>
														<xs:sequence>
															<xs:choice>
																<xs:element name="RelativeName">
																	<xs:simpleType>
																		<xs:restriction base="xs:string">
																			<xs:enumeration value="Today" />
																			<xs:enumeration value="Yesterday" />
																			<xs:enumeration value="This Month" />
																			<xs:enumeration value="Last Month" />
																		</xs:restriction>
																	</xs:simpleType>
																</xs:element>
																<xs:element name="DaysToCover">
																	<xs:simpleType>
																		<xs:restriction base="xs:unsignedShort">
																			<xs:minInclusive value="1" />
																			<xs:maxInclusive value="14" />
																		</xs:restriction>
																	</xs:simpleType>
																</xs:element>
															</xs:choice>
															<xs:element name="SavedReport" minOccurs="0">
																<xs:complexType>
																	<xs:sequence>
																		<xs:element name="Name" type="nonEmptyString" />
																		<xs:element name="Format" type="nonEmptyString" />
																	</xs:sequence>
																</xs:complexType>
															</xs:element>
														</xs:sequence>
													</xs:choice>
													<xs:attribute type="xs:boolean" name="useUTC" default="false" />
												</xs:complexType>
											</xs:element>
											<xs:element minOccurs="0" name="Status">
												<xs:simpleType>
													<xs:restriction base="xs:string">
														<xs:enumeration value="All" />
														<xs:enumeration value="AllOutstanding" />
														<xs:enumeration value="AllFailed" />
														<xs:enumeration value="Success" />
														<xs:enumeration value="WithNetwork" />
														<xs:enumeration value="Pending" />
														<xs:enumeration value="Scheduled" />
														<xs:enumeration value="FailedWrongNumber" />
														<xs:enumeration value="FailedSystemError" />
														<xs:enumeration value="FailedStop" />
														<xs:enumeration value="FailedNoResponse" />
														<xs:enumeration value="Failed" />
													</xs:restriction>
												</xs:simpleType>
											</xs:element>
											<xs:element type="nonEmptyString" minOccurs="0" name="Destination" />
											<xs:element type="nonEmptyString" minOccurs="0" name="GUID" />
											<xs:element name="Paging">
												<xs:complexType>
													<xs:attribute type="xs:unsignedInt" name="ItemsPerPage" />
												</xs:complexType>
											</xs:element>
											<xs:element type="nonEmptyString" minOccurs="0" name="User" />
										</xs:sequence>
										<xs:element name="ReportPage">
											<xs:complexType>
												<xs:attribute type="xs:unsignedLong" name="ReportID" />
												<xs:attribute type="xs:unsignedInt" name="Page" />
												<xs:attribute type="xs:unsignedInt" name="ItemsPerPage" />
												<xs:attribute type="xs:boolean" name="useUTC" default="false" />
											</xs:complexType>
										</xs:element>
										<xs:element name="Batch">
											<xs:complexType>
												<xs:sequence>
													<xs:element name="GUID" type="nonEmptyString" />
													<xs:element name="DateID" type="xs:unsignedLong" />
												</xs:sequence>
												<xs:attribute type="xs:boolean" name="useUTC" default="false" />
											</xs:complexType>
										</xs:element>
										<xs:element name="LoggedReport">
											<xs:complexType>
												<xs:simpleContent>
													<xs:extension base="loggedReportName">
														<xs:attribute type="xs:boolean" name="useUTC" default="false" />
													</xs:extension>
												</xs:simpleContent>
											</xs:complexType>
										</xs:element>
										<xs:sequence>
											<xs:element name="ReportName">
												<xs:simpleType>
													<xs:restriction base="xs:string">
														<xs:enumeration value="messagesToday" />
														<xs:enumeration value="messagesYesterday" />
														<xs:enumeration value="messagesThisMonth" />
														<xs:enumeration value="messagesLastMonth" />
														<xs:enumeration value="messagesSinceLastRequest" />
														<xs:enumeration value="messageStatusChanges" />
													</xs:restriction>
												</xs:simpleType>
											</xs:element>
										</xs:sequence>
										<xs:sequence>
											<xs:element name="GUID" type="nonEmptyString" />
											<xs:element name="ReportName">
												<xs:simpleType>
													<xs:restriction base="xs:string">
														<xs:enumeration value="messagesByGUID" />
													</xs:restriction>
												</xs:simpleType>
											</xs:element>
										</xs:sequence>
										<xs:sequence>
											<xs:element type="nonEmptyString" name="StartDate" />
											<xs:element type="nonEmptyString" name="EndDate" />
											<xs:element name="ReportName">
												<xs:simpleType>
													<xs:restriction base="xs:string">
														<xs:enumeration value="messagesBetweenDates" />
													</xs:restriction>
												</xs:simpleType>
											</xs:element>
										</xs:sequence>
									</xs:choice>
                                    <xs:attribute name="reportError" type="xs:boolean" default="false" />
                                    <xs:anyAttribute processContents="lax" />
								</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="loggedReportName">
		<xs:restriction base="xs:string">
			<xs:enumeration value="messagesSinceLastRequest" />
			<xs:enumeration value="messageStatusChanges" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="nonEmptyString">
		<xs:restriction base="xs:string">
			<xs:minLength value="1" />
		</xs:restriction>
	</xs:simpleType>
</xs:schema>