<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://htng.org/PWSWG/2006/08/SingleGuestItinerary/Activity/Types" xmlns:tns="http://htng.org/PWSWG/2006/08/SingleGuestItinerary/Activity/Types" xmlns:c="http://htng.org/PWSWG/2006/08/SingleGuestItinerary/Common/Types" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xs:import namespace="http://htng.org/PWSWG/2006/08/SingleGuestItinerary/Common/Types" schemaLocation=".\Common.xsd"/>
	<xs:element name="CreateActivityRequest" type="tns:ActivityRequest"/>
	<xs:element name="CreateActivityResponse" type="tns:ActivityResponse"/>
	<xs:element name="UpdateActivityRequest" type="tns:ActivityRequest"/>
	<xs:element name="UpdateActivityResponse" type="tns:ActivityResponse"/>
	<xs:element name="CancelActivityRequest" type="tns:ActivityRequest"/>
	<xs:element name="CancelActivityResponse" type="tns:ActivityResponse"/>
	<xs:complexType name="ActivityRequest">
		<xs:annotation>
			<xs:documentation>Generic self-contained request object that is used when inserting/ updating/ canceling activities.</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="ResortId" type="xs:string" minOccurs="0">
				<xs:annotation>
					<xs:documentation>This is not required if a Reservation Id is provided</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:choice>
				<xs:annotation>
					<xs:documentation xml:lang="en">The choice between a reservation header or a profile ID. One or the other is required.</xs:documentation>
				</xs:annotation>
				<xs:element name="ReservationHeader" type="tns:ReservationHeader"/>
				<xs:element name="ProfileID" type="c:UniqueID"/>
			</xs:choice>
			<xs:element name="Activities" type="tns:ActivityList">
				<xs:annotation>
					<xs:documentation>A collection of activities</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="ActivityResponse">
		<xs:annotation>
			<xs:documentation>Generic self-contained response object that is used when inserting/ updating/ canceling activities.</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="Results" type="c:ResultStatus" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>The array of ResultStatus objects contains one record per activity sent. Use the IDs to identify the external and internal id of the activities. For each activity you can send several messages in the Text array.</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
	<xs:element name="ActivityLookupRequest">
		<xs:annotation>
			<xs:documentation>Message sent on an Activity Lookup.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="ActivityLookup" type="tns:ActivityLookup"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="ActivityLookupResponse">
		<xs:annotation>
			<xs:documentation>Message received on an Activity Lookup.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="Result" type="c:ResultStatus"/>
				<xs:element name="ActivityLookupList" type="tns:ActivityLookupList"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="OutOfScopeNotificationRequest">
		<xs:annotation>
			<xs:documentation>Message sent when an activity falls out of scope.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="ReservationHeader">
					<xs:complexType>
						<xs:complexContent>
							<xs:extension base="tns:ReservationHeader">
								<xs:attribute name="reservationStatus" type="c:ReservationStatusType" use="optional"/>
								<xs:attribute name="otherReservationStatus" type="xs:string" use="optional"/>
							</xs:extension>
						</xs:complexContent>
					</xs:complexType>
				</xs:element>
				<xs:element name="ActivityID" type="c:UniqueID"/>
			</xs:sequence>
			<xs:attribute name="outOfScopeAction" type="tns:OutOfScopeActionType" use="required"/>
			<xs:attribute name="otherOutOfScopeAction" type="xs:string" use="optional"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="OutOfScopeNotificationResponse">
		<xs:annotation>
			<xs:documentation>Message received on a OutOfScopeNotification.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="Result" type="c:ResultStatus"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="FetchActivitiesRequest">
		<xs:annotation>
			<xs:documentation>Message sent when requesting activities.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:choice>
				<xs:annotation>
					<xs:documentation xml:lang="en">The choice between a reservation header or a profile ID. One or the other is required. The system on the other end, will return either activities belonging to the reservation or profile.</xs:documentation>
				</xs:annotation>
				<xs:element name="ReservationHeader" type="tns:ReservationHeader"/>
				<xs:element name="ProfileID" type="c:UniqueID"/>
			</xs:choice>
		</xs:complexType>
	</xs:element>
	<xs:element name="FetchActivitiesResponse">
		<xs:annotation>
			<xs:documentation>Message received on a FetchActivities.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="Result" type="c:ResultStatus"/>
				<xs:element name="ReturnedActivities" type="tns:FetchedActivities" minOccurs="0"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="LocationNotificationRequest">
		<xs:annotation>
			<xs:documentation>Message sent on a LocationNotification.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="ReservationID" type="c:UniqueID">
					<xs:annotation>
						<xs:documentation>Unique identifier of the reservation</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="ActivityTime" type="tns:OGTimeSpan">
					<xs:annotation>
						<xs:documentation>Start and end time or start and duration</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="LocationText" type="c:Text">
					<xs:annotation>
						<xs:documentation>A text desctiption of the location.</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="ProfileID" type="c:UniqueID" minOccurs="0">
					<xs:annotation>
						<xs:documentation>Unique identifier of the client</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="Description" type="c:Text" minOccurs="0">
					<xs:annotation>
						<xs:documentation>A text description of the activity</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="ResortId" type="xs:string" minOccurs="0"/>
			</xs:sequence>
			<xs:attribute name="locationNotificationStatus" type="tns:LocationNotificationStatus" use="required"/>
			<xs:attribute name="otherLocationNotificationStatus" type="xs:string" use="optional"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="LocationNotificationResponse">
		<xs:annotation>
			<xs:documentation>Message received after a LocationNotification.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="Result" type="c:ResultStatus"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:complexType name="ActivityLookup">
		<xs:annotation>
			<xs:documentation>Used in the request message to describe the "filter" when executing an activity lookup. Also used in the response message to return the activities matching the filter criteria.</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="ProfileID" type="c:UniqueIDList" minOccurs="0"/>
			<xs:element name="PersonName" type="c:PersonName" minOccurs="0"/>
			<xs:element name="Address" type="c:Address" minOccurs="0"/>
			<xs:element name="Phone" type="c:Phone" minOccurs="0"/>
			<xs:element name="TimeSpan" type="tns:OGTimeSpan" minOccurs="0"/>
			<xs:element name="Activities" type="tns:ActivityList" minOccurs="0"/>
			<xs:element name="Membership" type="c:Membership" minOccurs="0"/>
			<xs:element name="ResortId" type="xs:string" minOccurs="0"/>
		</xs:sequence>
		<xs:attribute name="externalSystemId" type="xs:string"/>
	</xs:complexType>
	<xs:complexType name="ActivityLookupList">
		<xs:annotation>
			<xs:documentation>A collection of Activity Lookup items.</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="ActivityLookup" type="tns:ActivityLookup" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="OGTimeSpan">
		<xs:annotation>
			<xs:documentation xml:lang="en">Represents a start date along with either a duration or end date.</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="Start" type="xs:dateTime">
				<xs:annotation>
					<xs:documentation xml:lang="en">A date and time that represent the scheduled start time of the activity represented.</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="End" type="xs:dateTime" minOccurs="0">
				<xs:annotation>
					<xs:documentation xml:lang="en">The estimated completion date and time of the activity represented.</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="Activity">
		<xs:annotation>
			<xs:documentation xml:lang="en">Represents a single instance of a scheduled activity.</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="ActivityIDs" type="c:UniqueIDList">
				<xs:annotation>
					<xs:documentation xml:lang="en">A collection of reference ID values that identify this uniquely scheduled activity instance.   May contain one ID per external system plus an internal identifier.</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="ActivityType" type="tns:ActivityType"/>
			<xs:element name="Location" type="xs:string"/>
			<xs:element name="Name" type="c:Text" maxOccurs="unbounded"/>
			<xs:element name="NumberOfPersons" type="xs:int" minOccurs="0"/>
			<xs:element name="TimeSpan" type="tns:OGTimeSpan"/>
			<xs:element name="Duration" type="tns:OGTimeSpan" minOccurs="0"/>
			<xs:element name="Description" type="c:Text" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>Description of the activity </xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="Note" type="c:Text" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation xml:lang="en">Any additional notes or comments regarding the scheduled activity.</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="GroupCode" type="xs:string" minOccurs="0"/>
			<xs:element name="Amount" type="c:Amount" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Informational item for presentation to guest - not meant for posting charges</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="DepositRequired" minOccurs="0">
				<xs:complexType>
					<xs:simpleContent>
						<xs:extension base="c:Amount">
							<xs:attribute name="collectedBy">
								<xs:simpleType>
									<xs:restriction base="xs:string">
										<xs:enumeration value="Vendor"/>
										<xs:enumeration value="Agent"/>
										<xs:enumeration value="Other"/>
									</xs:restriction>
								</xs:simpleType>
							</xs:attribute>
						</xs:extension>
					</xs:simpleContent>
				</xs:complexType>
			</xs:element>
			<xs:element name="InactiveDate" type="xs:dateTime" minOccurs="0"/>
			<xs:element name="Participants" minOccurs="0">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="Participant" type="c:PersonName" minOccurs="0" maxOccurs="unbounded"/>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="URLLink" type="xs:string" minOccurs="0"/>
			<xs:element name="Extensions" minOccurs="0">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="ActivitySpecific" type="xs:anyType" minOccurs="0" maxOccurs="unbounded"/>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="status" type="xs:string" use="required"/>
	</xs:complexType>
	<xs:complexType name="ActivityList">
		<xs:annotation>
			<xs:documentation xml:lang="en">A collection of Activity objects.</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="Activity" minOccurs="0" maxOccurs="unbounded">
				<xs:complexType>
					<xs:complexContent>
						<xs:extension base="tns:Activity"/>
					</xs:complexContent>
				</xs:complexType>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="ReservationHeader">
		<xs:annotation>
			<xs:documentation>Used to uniquely identify a reservation using it's internal ID, it's begin date and duration or end date.</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="ReservationID" type="c:UniqueID">
				<xs:annotation>
					<xs:documentation>Required unique identifier of the reservation</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="TimeSpan" type="tns:OGTimeSpan" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="FetchedActivities">
		<xs:annotation>
			<xs:documentation>Contains either a reservation header or ProfileID, indicating the owner, plus a collection of activities.</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:choice>
				<xs:annotation>
					<xs:documentation xml:lang="en">The choice between a reservation header or a profile ID. One or the other is required.</xs:documentation>
				</xs:annotation>
				<xs:element name="ReservationHeader" type="tns:ReservationHeader"/>
				<xs:element name="ProfileID" type="c:UniqueID"/>
			</xs:choice>
			<xs:element name="Activities" type="tns:ActivityList" minOccurs="0">
				<xs:annotation>
					<xs:documentation>A collection of activities</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
	<xs:simpleType name="ActivityType">
		<xs:union>
			<xs:simpleType>
				<xs:restriction base="xs:string">
					<xs:enumeration value="Golf"/>
					<xs:enumeration value="Class"/>
					<xs:enumeration value="Spa"/>
					<xs:enumeration value="TableReservation"/>
					<xs:enumeration value="Tour"/>
					<xs:enumeration value="Tennis"/>
				</xs:restriction>
			</xs:simpleType>
			<xs:simpleType>
				<xs:restriction base="xs:string">
					<xs:pattern value="\w+"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:union>
	</xs:simpleType>
	<xs:simpleType name="OutOfScopeActionType">
		<xs:annotation>
			<xs:documentation>(Enumeration) There are 3 possible actions for out of scope notifications: Release, Break, Notification.</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:enumeration value="RELEASE"/>
			<xs:enumeration value="BREAK"/>
			<xs:enumeration value="NOTIFICATION"/>
			<xs:enumeration value="OTHER"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="LocationNotificationStatus">
		<xs:annotation>
			<xs:documentation>(Enumeration) There are 2 possible values: SET, CLEAR</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:enumeration value="SET"/>
			<xs:enumeration value="CLEAR"/>
			<xs:enumeration value="OTHER"/>
		</xs:restriction>
	</xs:simpleType>
</xs:schema>
