<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2007 (http://www.altova.com) by Sanjeev (Mikki Travel) -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xs:element name="citySearchRequest">
		<xs:annotation>
			<xs:documentation>Request availability of product</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="requestAuditInfo"/>
				<xs:element name="searchCriteria">
					<xs:annotation>
						<xs:documentation>Search/checking criteria</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:sequence>
							<xs:element name="bookingCriteria">
								<xs:annotation>
									<xs:documentation>Critieria relating to the booking that is the basis of the search</xs:documentation>
								</xs:annotation>
								<xs:complexType>
									<xs:sequence>
										<xs:element name="productType">
											<xs:annotation>
												<xs:documentation>Type of product required</xs:documentation>
											</xs:annotation>
											<xs:simpleType>
												<xs:restriction base="xs:string">
													<xs:length value="1"/>
													<xs:enumeration value="3"/>
												</xs:restriction>
											</xs:simpleType>
										</xs:element>
										<xs:choice>
											<xs:annotation>
												<xs:documentation>Only one of the following values can be used</xs:documentation>
											</xs:annotation>
											<xs:element name="cityNumber">
												<xs:annotation>
													<xs:documentation>Internal Miki reference to city (valid for all cities)</xs:documentation>
												</xs:annotation>
												<xs:simpleType>
													<xs:restriction base="xs:integer">
														<xs:minInclusive value="1"/>
														<xs:maxInclusive value="99999"/>
													</xs:restriction>
												</xs:simpleType>
											</xs:element>
											<xs:element name="cityNumbers">
												<xs:annotation>
													<xs:documentation>Multiple city numbers can be  specified</xs:documentation>
												</xs:annotation>
												<xs:complexType>
													<xs:sequence maxOccurs="10">
														<xs:element name="cityNumber">
															<xs:annotation>
																<xs:documentation>Internal Miki reference to city (valid for all cities)</xs:documentation>
															</xs:annotation>
															<xs:simpleType>
																<xs:restriction base="xs:integer">
																	<xs:minInclusive value="1"/>
																	<xs:maxInclusive value="99999"/>
																</xs:restriction>
															</xs:simpleType>
														</xs:element>
														<xs:element name="citySubLocations" minOccurs="0">
															<xs:annotation>
																<xs:documentation>FOR LATER USE</xs:documentation>
															</xs:annotation>
															<xs:complexType>
																<xs:sequence maxOccurs="5">
																	<xs:element name="citySubLocation">
																		<xs:annotation>
																			<xs:documentation>FOR LATER USE</xs:documentation>
																		</xs:annotation>
																	</xs:element>
																</xs:sequence>
															</xs:complexType>
														</xs:element>
													</xs:sequence>
												</xs:complexType>
											</xs:element>
											<xs:element name="cityCode">
												<xs:annotation>
													<xs:documentation>Character reference to city (not all cities have this reference)</xs:documentation>
												</xs:annotation>
												<xs:simpleType>
													<xs:restriction base="xs:string">
														<xs:length value="3"/>
													</xs:restriction>
												</xs:simpleType>
											</xs:element>
											<xs:element name="areaName">
												<xs:annotation>
													<xs:documentation>Reference to an area, or group of cities defined by Miki</xs:documentation>
												</xs:annotation>
												<xs:simpleType>
													<xs:restriction base="xs:string">
														<xs:minLength value="1"/>
														<xs:maxLength value="10"/>
													</xs:restriction>
												</xs:simpleType>
											</xs:element>
											<xs:element name="areaNames">
												<xs:annotation>
													<xs:documentation>Mutiple areas can be specified</xs:documentation>
												</xs:annotation>
												<xs:complexType>
													<xs:sequence maxOccurs="5">
														<xs:element name="areaName">
															<xs:annotation>
																<xs:documentation>Reference to an area, or group of cities defined by Miki</xs:documentation>
															</xs:annotation>
															<xs:simpleType>
																<xs:restriction base="xs:string">
																	<xs:minLength value="1"/>
																	<xs:maxLength value="10"/>
																</xs:restriction>
															</xs:simpleType>
														</xs:element>
													</xs:sequence>
												</xs:complexType>
											</xs:element>
											<xs:element name="airportCodes">
												<xs:annotation>
													<xs:documentation>FOR LATER USE</xs:documentation>
												</xs:annotation>
												<xs:complexType>
													<xs:sequence maxOccurs="5">
														<xs:element name="airportCode">
															<xs:annotation>
																<xs:documentation>FOR LATER USE</xs:documentation>
															</xs:annotation>
															<xs:simpleType>
																<xs:restriction base="xs:string">
																	<xs:length value="3"/>
																</xs:restriction>
															</xs:simpleType>
														</xs:element>
													</xs:sequence>
												</xs:complexType>
											</xs:element>
											<xs:element name="productCodes">
												<xs:annotation>
													<xs:documentation>Multiple products can be specified</xs:documentation>
												</xs:annotation>
												<xs:complexType>
													<xs:sequence maxOccurs="50">
														<xs:element name="productCode">
															<xs:annotation>
																<xs:documentation>Unique reference to product</xs:documentation>
															</xs:annotation>
															<xs:simpleType>
																<xs:restriction base="xs:string">
																	<xs:length value="9"/>
																</xs:restriction>
															</xs:simpleType>
														</xs:element>
													</xs:sequence>
												</xs:complexType>
											</xs:element>
										</xs:choice>
										<xs:element name="bookingDate" type="xs:date">
											<xs:annotation>
												<xs:documentation>The date that the search is being made</xs:documentation>
											</xs:annotation>
										</xs:element>
										<xs:element name="serviceDate" type="xs:date">
											<xs:annotation>
												<xs:documentation>The date for which availability is being checked (check-in date for hotel products)</xs:documentation>
											</xs:annotation>
										</xs:element>
										<xs:element name="numberOfNights" minOccurs="0">
											<xs:annotation>
												<xs:documentation>If the product type is "hotel", then nights must be specified</xs:documentation>
											</xs:annotation>
											<xs:simpleType>
												<xs:restriction base="xs:integer">
													<xs:minInclusive value="1"/>
													<xs:maxInclusive value="10"/>
												</xs:restriction>
											</xs:simpleType>
										</xs:element>
										<xs:choice>
											<xs:annotation>
												<xs:documentation>Only one of the following values can be used</xs:documentation>
											</xs:annotation>
											<xs:element name="subProducts">
												<xs:annotation>
													<xs:documentation>Request by room type - multiple sub products can be requested</xs:documentation>
												</xs:annotation>
												<xs:complexType>
													<xs:sequence maxOccurs="5">
														<xs:element name="subProduct">
															<xs:annotation>
																<xs:documentation>Each sub product needs to be specified with a code and quantity</xs:documentation>
															</xs:annotation>
															<xs:complexType>
																<xs:sequence>
																	<xs:element name="subProductCode">
																		<xs:annotation>
																			<xs:documentation>The code representing the sub product for which the availability check has been requested</xs:documentation>
																		</xs:annotation>
																		<xs:simpleType>
																			<xs:restriction base="xs:int">
																				<xs:minInclusive value="1"/>
																				<xs:maxInclusive value="99999"/>
																			</xs:restriction>
																		</xs:simpleType>
																	</xs:element>
																	<xs:element name="subProductQuantity">
																		<xs:annotation>
																			<xs:documentation>How many of each sub product are required</xs:documentation>
																		</xs:annotation>
																		<xs:simpleType>
																			<xs:restriction base="xs:integer">
																				<xs:minInclusive value="1"/>
																				<xs:maxInclusive value="999"/>
																			</xs:restriction>
																		</xs:simpleType>
																	</xs:element>
																</xs:sequence>
															</xs:complexType>
														</xs:element>
													</xs:sequence>
												</xs:complexType>
											</xs:element>
											<xs:element name="roomBasis">
												<xs:annotation>
													<xs:documentation>Request by room basis</xs:documentation>
												</xs:annotation>
												<xs:complexType>
													<xs:sequence maxOccurs="5">
														<xs:element name="room">
															<xs:annotation>
																<xs:documentation>Each roomBasis needs to be specified with a sequence, number of adults and number of children</xs:documentation>
															</xs:annotation>
															<xs:complexType>
																<xs:sequence>
																	<xs:element name="roomNumber">
																		<xs:annotation>
																			<xs:documentation>Identification allowing multiple room basis requirements to be specified</xs:documentation>
																		</xs:annotation>
																		<xs:simpleType>
																			<xs:restriction base="xs:int">
																				<xs:minInclusive value="1"/>
																				<xs:maxInclusive value="99999"/>
																			</xs:restriction>
																		</xs:simpleType>
																	</xs:element>
																	<xs:element name="numberOfAdults">
																		<xs:annotation>
																			<xs:documentation>Number of adults</xs:documentation>
																		</xs:annotation>
																		<xs:simpleType>
																			<xs:restriction base="xs:integer">
																				<xs:minInclusive value="1"/>
																				<xs:maxInclusive value="999"/>
																			</xs:restriction>
																		</xs:simpleType>
																	</xs:element>
																	<xs:element name="numberOfChildren">
																		<xs:annotation>
																			<xs:documentation>Number of children</xs:documentation>
																		</xs:annotation>
																	</xs:element>
																</xs:sequence>
															</xs:complexType>
														</xs:element>
													</xs:sequence>
												</xs:complexType>
											</xs:element>
										</xs:choice>
										<xs:element name="paxDomicile" minOccurs="0">
											<xs:annotation>
												<xs:documentation>ISO country code for pax main country of residence</xs:documentation>
											</xs:annotation>
											<xs:simpleType>
												<xs:restriction base="xs:string">
													<xs:length value="2"/>
												</xs:restriction>
											</xs:simpleType>
										</xs:element>
										<xs:element name="salesChannel" minOccurs="0">
											<xs:annotation>
												<xs:documentation>Via what sales channel will the hotel be sold: 1=Wholesale, 2=Retail, 3=Corporate, 4=To consumer, 9=Staff</xs:documentation>
											</xs:annotation>
											<xs:simpleType>
												<xs:restriction base="xs:string">
													<xs:length value="1"/>
													<xs:enumeration value="1"/>
													<xs:enumeration value="2"/>
													<xs:enumeration value="3"/>
												</xs:restriction>
											</xs:simpleType>
										</xs:element>
										<xs:element name="languageCode" minOccurs="0">
											<xs:annotation>
												<xs:documentation>ISO language code for results (if not supported by Miki, en will be used)</xs:documentation>
											</xs:annotation>
											<xs:simpleType>
												<xs:restriction base="xs:string">
													<xs:length value="1"/>
												</xs:restriction>
											</xs:simpleType>
										</xs:element>
									</xs:sequence>
								</xs:complexType>
							</xs:element>
							<xs:element name="allocationCriteria" minOccurs="0">
								<xs:annotation>
									<xs:documentation>Criteria relating to the allocation status</xs:documentation>
								</xs:annotation>
								<xs:complexType>
									<xs:sequence>
										<xs:element name="returnAllocationStatus">
											<xs:annotation>
												<xs:documentation>Indicate which hotels are to be returned based on availability status: 1=All (allocation and on request), 2=Allocation only, 3=All hotels (including those not available)</xs:documentation>
											</xs:annotation>
											<xs:simpleType>
												<xs:restriction base="xs:string">
													<xs:enumeration value="1"/>
													<xs:enumeration value="2"/>
													<xs:enumeration value="3"/>
												</xs:restriction>
											</xs:simpleType>
										</xs:element>
										<xs:element name="returnAllocationBreakDown">
											<xs:annotation>
												<xs:documentation>Indicate the level of allocation breakdown required: 0=None, 1=Overall allocation status, 2=Full breakdown of availability per night</xs:documentation>
											</xs:annotation>
											<xs:simpleType>
												<xs:restriction base="xs:string">
													<xs:enumeration value="0"/>
													<xs:enumeration value="1"/>
													<xs:enumeration value="2"/>
												</xs:restriction>
											</xs:simpleType>
										</xs:element>
									</xs:sequence>
								</xs:complexType>
							</xs:element>
							<xs:element name="priceCriteria" minOccurs="0">
								<xs:annotation>
									<xs:documentation>Criteria relating to prices</xs:documentation>
								</xs:annotation>
								<xs:complexType>
									<xs:sequence>
										<xs:element name="returnPrices">
											<xs:annotation>
												<xs:documentation>Indicate whether prices are to be returned: 0=No, 1=Total prices per product only, 2=Price breakdown</xs:documentation>
											</xs:annotation>
											<xs:simpleType>
												<xs:restriction base="xs:string">
													<xs:enumeration value="0"/>
													<xs:enumeration value="1"/>
													<xs:enumeration value="2"/>
												</xs:restriction>
											</xs:simpleType>
										</xs:element>
										<xs:element name="budget" minOccurs="0">
											<xs:annotation>
												<xs:documentation>Specify a budget</xs:documentation>
											</xs:annotation>
											<xs:complexType>
												<xs:sequence>
													<xs:element name="fromBudget">
														<xs:annotation>
															<xs:documentation>Lower range of budget check </xs:documentation>
														</xs:annotation>
														<xs:simpleType>
															<xs:restriction base="xs:int">
																<xs:minInclusive value="0"/>
															</xs:restriction>
														</xs:simpleType>
													</xs:element>
													<xs:element name="toBudget">
														<xs:annotation>
															<xs:documentation>Upper range of budget check</xs:documentation>
														</xs:annotation>
														<xs:simpleType>
															<xs:restriction base="xs:int">
																<xs:maxInclusive value="99999"/>
															</xs:restriction>
														</xs:simpleType>
													</xs:element>
													<xs:element name="budgetStatus">
														<xs:annotation>
															<xs:documentation>Indicates which products should be returned when considering the budget check: 1=All, 2=Only products that fall within budget</xs:documentation>
														</xs:annotation>
														<xs:simpleType>
															<xs:restriction base="xs:string">
																<xs:enumeration value="1"/>
																<xs:enumeration value="2"/>
															</xs:restriction>
														</xs:simpleType>
													</xs:element>
												</xs:sequence>
											</xs:complexType>
										</xs:element>
										<xs:element name="priceTypes" minOccurs="0">
											<xs:annotation>
												<xs:documentation>Indicates what type of prices  should be returned: 1=Nett prices only, 2=Gross prices only, 3=All prices</xs:documentation>
											</xs:annotation>
											<xs:simpleType>
												<xs:restriction base="xs:string">
													<xs:enumeration value="1"/>
													<xs:enumeration value="2"/>
													<xs:enumeration value="3"/>
												</xs:restriction>
											</xs:simpleType>
										</xs:element>
									</xs:sequence>
								</xs:complexType>
							</xs:element>
							<xs:element name="breakfastCriteria" minOccurs="0">
								<xs:annotation>
									<xs:documentation>Criteria relating to the breakfast</xs:documentation>
								</xs:annotation>
								<xs:complexType>
									<xs:sequence>
										<xs:element name="returnBreakfastBreakdown">
											<xs:annotation>
												<xs:documentation>Indicate whether the detailed breakdown of the breakfasts per night of the stay is to be returned: 0=No, 1=Yes</xs:documentation>
											</xs:annotation>
											<xs:complexType>
												<xs:simpleContent>
													<xs:extension base="xs:boolean"/>
												</xs:simpleContent>
											</xs:complexType>
										</xs:element>
										<xs:element name="returnBreakfastSummary" minOccurs="0">
											<xs:annotation>
												<xs:documentation>Include the breakfast value separately if the same for all nights: 0=No, 1=Yes</xs:documentation>
											</xs:annotation>
										</xs:element>
									</xs:sequence>
								</xs:complexType>
							</xs:element>
							<xs:element name="cancellationPolicyCriteria" minOccurs="0">
								<xs:annotation>
									<xs:documentation>Criteria relating to the cancellation policy</xs:documentation>
								</xs:annotation>
								<xs:complexType>
									<xs:sequence>
										<xs:element name="returnCancellationPolicy">
											<xs:annotation>
												<xs:documentation>Indicates if the cancellation policy is included in the results: 0=No, 1=Yes</xs:documentation>
											</xs:annotation>
											<xs:complexType>
												<xs:simpleContent>
													<xs:extension base="xs:boolean"/>
												</xs:simpleContent>
											</xs:complexType>
										</xs:element>
										<xs:element name="returnCancellationPolicySummary">
											<xs:annotation>
												<xs:documentation>Include the cancellation policy value separately if the same for all nights: 0=No, 1=Yes</xs:documentation>
											</xs:annotation>
										</xs:element>
									</xs:sequence>
								</xs:complexType>
							</xs:element>
							<xs:element name="hotelInfoCriteria" minOccurs="0">
								<xs:annotation>
									<xs:documentation>Criteria relating to hotel information</xs:documentation>
								</xs:annotation>
								<xs:complexType>
									<xs:sequence>
										<xs:element name="hotelCategories" minOccurs="0">
											<xs:annotation>
												<xs:documentation>Category selections (optional). If not specified all are selected.</xs:documentation>
											</xs:annotation>
											<xs:complexType>
												<xs:sequence maxOccurs="2">
													<xs:annotation>
														<xs:documentation>Up to 2 values can be specified</xs:documentation>
													</xs:annotation>
													<xs:element name="hotelCategory">
														<xs:annotation>
															<xs:documentation>Indicate that hotels with a particular category only should be returned: 0=All, 1=Superior deluxe, 2=Deluxe, 3=Superior first, 4=First, 5=Superior tourist, 6=Tourist</xs:documentation>
														</xs:annotation>
														<xs:simpleType>
															<xs:restriction base="xs:string">
																<xs:length value="1"/>
																<xs:enumeration value="0"/>
																<xs:enumeration value="1"/>
																<xs:enumeration value="2"/>
																<xs:enumeration value="3"/>
																<xs:enumeration value="4"/>
																<xs:enumeration value="5"/>
																<xs:enumeration value="6"/>
															</xs:restriction>
														</xs:simpleType>
													</xs:element>
												</xs:sequence>
											</xs:complexType>
										</xs:element>
										<xs:element name="starRatings" minOccurs="0">
											<xs:annotation>
												<xs:documentation>Star rating selections (optional). If not specified all are selected.</xs:documentation>
											</xs:annotation>
											<xs:complexType>
												<xs:sequence maxOccurs="2">
													<xs:element name="starRating">
														<xs:annotation>
															<xs:documentation>Star rating of hotel: 1-7.</xs:documentation>
														</xs:annotation>
														<xs:simpleType>
															<xs:restriction base="xs:string">
																<xs:length value="1"/>
																<xs:enumeration value="1"/>
																<xs:enumeration value="2"/>
																<xs:enumeration value="3"/>
																<xs:enumeration value="4"/>
																<xs:enumeration value="5"/>
																<xs:enumeration value="6"/>
																<xs:enumeration value="7"/>
															</xs:restriction>
														</xs:simpleType>
													</xs:element>
												</xs:sequence>
											</xs:complexType>
										</xs:element>
										<xs:element name="hotelLocations" minOccurs="0">
											<xs:annotation>
												<xs:documentation>Location selections (optional). If not specified all are selected.</xs:documentation>
											</xs:annotation>
											<xs:complexType>
												<xs:sequence maxOccurs="2">
													<xs:annotation>
														<xs:documentation>Up to 2 values can be specified</xs:documentation>
													</xs:annotation>
													<xs:element name="hotelLocation">
														<xs:annotation>
															<xs:documentation>Indicate that hotels in a particular location only should be returned: 0=All, 1=City centre, 2=Within city, 3=Suburbs, 4=Airport, 5=Lake/sea</xs:documentation>
														</xs:annotation>
														<xs:simpleType>
															<xs:restriction base="xs:string">
																<xs:enumeration value="0"/>
																<xs:enumeration value="1"/>
																<xs:enumeration value="2"/>
																<xs:enumeration value="3"/>
																<xs:enumeration value="4"/>
																<xs:enumeration value="5"/>
															</xs:restriction>
														</xs:simpleType>
													</xs:element>
												</xs:sequence>
											</xs:complexType>
										</xs:element>
										<xs:element name="hotelName" minOccurs="0">
											<xs:annotation>
												<xs:documentation>Return hotels that match the value entered</xs:documentation>
											</xs:annotation>
											<xs:simpleType>
												<xs:restriction base="xs:string">
													<xs:maxLength value="30"/>
													<xs:minLength value="3"/>
												</xs:restriction>
											</xs:simpleType>
										</xs:element>
										<xs:element name="returnHotelInfo" minOccurs="0">
											<xs:annotation>
												<xs:documentation>0=No, 1=Hotel name, Cat, Loc, Star, 2=Description and facilities, 3=All</xs:documentation>
											</xs:annotation>
											<xs:simpleType>
												<xs:restriction base="xs:string">
													<xs:length value="1"/>
													<xs:enumeration value="0"/>
													<xs:enumeration value="1"/>
													<xs:enumeration value="2"/>
													<xs:enumeration value="3"/>
													<xs:enumeration value="4"/>
												</xs:restriction>
											</xs:simpleType>
										</xs:element>
									</xs:sequence>
								</xs:complexType>
							</xs:element>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
			</xs:sequence>
			<xs:attribute name="requestType" type="xs:string" use="required" fixed="citySearchRequest">
				<xs:annotation>
					<xs:documentation>Used to ID the record to the receiving software</xs:documentation>
				</xs:annotation>
			</xs:attribute>
			<xs:attribute name="versionNumber" type="xs:string" use="required" fixed="5.0.0"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="requestAuditInfo">
		<xs:annotation>
			<xs:documentation>Standard audit information sent with all requests</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="agentCode">
					<xs:annotation>
						<xs:documentation>Unique reference used to identify the client to Miki</xs:documentation>
					</xs:annotation>
					<xs:simpleType>
						<xs:restriction base="xs:string">
							<xs:minLength value="6"/>
							<xs:maxLength value="6"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:element>
				<xs:element name="requestPassword">
					<xs:annotation>
						<xs:documentation>Daily password used to validate request</xs:documentation>
					</xs:annotation>
					<xs:simpleType>
						<xs:restriction base="xs:string">
							<xs:maxLength value="20"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:element>
				<xs:element name="requestID">
					<xs:annotation>
						<xs:documentation>Unique request reference used for audit purposes</xs:documentation>
					</xs:annotation>
					<xs:simpleType>
						<xs:restriction base="xs:integer">
							<xs:totalDigits value="9"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:element>
				<xs:element name="requestTime" type="xs:dateTime">
					<xs:annotation>
						<xs:documentation>Time agent sent request to Miki</xs:documentation>
					</xs:annotation>
				</xs:element>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
</xs:schema>
