<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:annotation>
	<xs:documentation>  CHANGE HISTORY
									UPDATED: 20011-07-06
	                                - Changed Contact (name) element to ContactName
	                                - UsageDateRange
										- add ReportName as sub-element so usage date range can be provided for each report supported
										- set maxOccurs='unbounded'
									- ServiceNote
										- set maxOccurs='unbounded'
									- Alert
										- set maxOccurs='unbounded'
									- TestServerInstructions
										- added as a new element under "Registry" to capture the instructions to developers
	</xs:documentation>
</xs:annotation>
	<xs:element name="SUSHIServerStatus" type="SUSHIServerStatus">
		<xs:annotation>
			<xs:documentation>The SUSHI Server Status schema is used to report
										 on the current configuration and status of the SUSHI Server.
										 The 'Registry' element describes the configuration and set-up
										 details for the client.  
										 The 'Status' element gives the current status of the server.
			</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:complexType name="SUSHIServerStatus">
		<xs:sequence>
			<xs:element name="Vendor" type="Vendor"/>
			<xs:element name="Platform" type="Platform"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="Vendor">
		<xs:annotation>
			<xs:documentation>The Content Provider.</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="Organization"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="Contact">
		<xs:annotation>
			<xs:documentation>Details of a person to contact.</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="ContactName" type="xs:string" minOccurs="0"/>
			<xs:element name="E-mail" type="xs:string" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="Organization">
		<xs:annotation>
			<xs:documentation>Details for the Vendor or Customer.</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="Name" type="xs:string" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Name of the organization.</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="ID" type="xs:string">
				<xs:annotation>
					<xs:documentation>The ID by which this organization is known by the content provider. In the case of the customer, it is the CustomerID as used by the content provider.</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="Contact" type="Contact" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="WebSiteUrl" type="xs:anyURI" minOccurs="0"/>
			<xs:element name="LogoUrl" type="xs:anyURI" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="Platform">
		<xs:sequence>
			<xs:element name="PlatformName" type="xs:string" minOccurs="1" maxOccurs="1">
				<xs:annotation>
					<xs:documentation>The full name of the platform. 
												e.g. 'EBSCOhost Research Databases'
					</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="PlatformCode" type="xs:string" minOccurs="1" maxOccurs="1">
				<xs:annotation>
					<xs:documentation>The 'Platform' value that appears in COUNTER reports.
												 e.g. 'EBSCOhost'
					</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="Registry" type="Registry" minOccurs="1" maxOccurs="1">
				<xs:annotation>
					<xs:documentation>Information that pertains to the configuration of the SUSHI
											Server. This is also the same information that would be expected to
											be found on the SUSHI Server Registry.
				</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="Status" type="Status" minOccurs="1" maxOccurs="1">
				<xs:annotation>
					<xs:documentation>Information about the current SUSHI Status</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="Registry">
		<xs:sequence>
			<xs:element name="CounterSushiVersion" type="xs:string"/>
			<xs:element name="ServerURL" type="xs:string" minOccurs="1" maxOccurs="1">
				<xs:annotation>
					<xs:documentation>The URL for the production version of the SUSHI Service
					</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="TestServerURL" type="xs:string" minOccurs="0" maxOccurs="1">
				<xs:annotation>
					<xs:documentation>The URL for the  test version of the SUSHI Server.
					</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="ServerStatusURL" type="xs:string" minOccurs="0" maxOccurs="1">
				<xs:annotation>
					<xs:documentation>The URL for the SUSHI Status Report web service.
					</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="Contact" type="Contact">
				<xs:annotation>
					<xs:documentation>Who to contact with questions about configuring a client for this platform.
					</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="Instructions" type="xs:string" minOccurs="0" maxOccurs="1">
				<xs:annotation>
					<xs:documentation>Detailed instructions for clients wanting to use this server.
					</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="TestServerInstructions" type="xs:string" minOccurs="0" maxOccurs="1">
				<xs:annotation>
					<xs:documentation>Detailed instructions for client developers wanting to use this server in test mode.
					</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="AboutRequesterID" type="xs:string" minOccurs="0" maxOccurs="1">
				<xs:annotation>
					<xs:documentation>A description about the Platform's expectation for the RequesterID element
												when sending a SUSHI Request to the production server. 
												e.g. does the client need to request a special identifier, or would then send
												the customer ID, etc.
					</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="AboutCustomerID" type="xs:string" minOccurs="0" maxOccurs="1">
				<xs:annotation>
					<xs:documentation>A description about the Platform's expectation for the Customer ID element
												when sending a SUSHI Request to the production server. 
												e.g. does the client need to request a special identifier, or would then send
												the customer ID, etc.
					</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="AboutSecurity" type="AboutSecurity" minOccurs="0" maxOccurs="1">
				<xs:annotation>
					<xs:documentation>Description of the type of security imposed by the server.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="ReportSupported" type="ReportSupported" minOccurs="1" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>The list of COUNTER reports supported by the production server.
					</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="LastUpdateDate" type="xs:dateTime">
			<xs:annotation>
				<xs:documentation>The date and time when the registry information was last updated
											 Clients will use this information to determine if they need to refresh
											 information they have on file for the platform.
				</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="Status">
		<xs:annotation>
			<xs:documentation>These elements provide information on the current status of the server.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="ServiceNote" type="xs:string" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>Optional text that clarifies the state of the server.
					</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="UsageDateRange" type="UsageDateRange" minOccurs="1" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>The overall dates of usage data available on the server. A repeating element of one per report.
					</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="Alert" type="xs:string" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>An optional note that is intended to alert the client about
												changes in the usage data. This alert would be used to 
												inform the client that a prior month's usage data had been 
												updated and suggest that they re-request that month's usage.
					</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="ServiceActive" type="xs:boolean" use="required">
			<xs:annotation>
				<xs:documentation>A true/false flag that indicates if the server is currently active and
											able to accept requests.
				</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="AboutSecurity">
		<xs:simpleContent>
			<xs:extension base="xs:string">
				<xs:attribute name="IP" type="xs:boolean">
					<xs:annotation>
						<xs:documentation>This true/false attribute is used to indicate if the production SUSHI server
														requires the SUSHI client to IP authenticate.
						</xs:documentation>
					</xs:annotation>
				</xs:attribute>
				<xs:attribute name="SOAPExtension" type="xs:boolean">
					<xs:annotation>
						<xs:documentation>This true/false attribute is used to indicate if the production SUSHI server
														requires as username/password at the service level (SOAP), or
														has implemented some other custom SOAP extension that must
														be accomodated by the client.
						</xs:documentation>
					</xs:annotation>
				</xs:attribute>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="ReportSupported">
		<xs:annotation>
			<xs:documentation>The list of COUNTER reports supported by the production server.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="ReportName" type="xs:string" minOccurs="1" maxOccurs="1">
				<xs:annotation>
					<xs:documentation>The official name of the COUNTER report as used in 
												SUSHI Requests, e.g. JR1
					</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="ReportDescription" type="xs:string" minOccurs="1" maxOccurs="1">
				<xs:annotation>
					<xs:documentation>The full name of the the COUNTER report
												 e.g. Full text requests by month and journal
					</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="UsageDateRange">
		<xs:annotation>
			<xs:documentation>The time period representing the usage data available
											  on the server.
			  </xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="ReportName" type="xs:string" minOccurs="1" maxOccurs="1">
				<xs:annotation>
					<xs:documentation>Indicates the report the usage date range applies to.
												The official name of the COUNTER report as used in 
												SUSHI Requests, e.g. JR1
					</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="Begin" type="xs:date" minOccurs="1" maxOccurs="1">
				<xs:annotation>
					<xs:documentation>The is the BEGIN date that can be used in a SUSHI Request
													that will get results. Use the first day of the month.
					</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="End" type="xs:date" minOccurs="1" maxOccurs="1">
				<xs:annotation>
					<xs:documentation>The is the END date that can be used in a SUSHI Request
													that will get results. Use the last day of the month.
													The client will use this value to determine if the server offers
													any new usage since the previous request for a report and
													thus can delay the actual SUSHI request until new data is 
													available to harvest.
					</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
</xs:schema>
