commit fa161cd748eafaa8caa387a73a6ab9b7f53f38ea Author: Jonas Linter Date: Fri Sep 19 12:47:48 2025 +0200 Added alpinebits docu to new repo diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..505a3b1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,10 @@ +# Python-generated files +__pycache__/ +*.py[oc] +build/ +dist/ +wheels/ +*.egg-info + +# Virtual environments +.venv diff --git a/.python-version b/.python-version new file mode 100644 index 0000000..24ee5b1 --- /dev/null +++ b/.python-version @@ -0,0 +1 @@ +3.13 diff --git a/AlpineBits-HotelData-2024-10/AlpineBits-HotelData-2024-10.pdf b/AlpineBits-HotelData-2024-10/AlpineBits-HotelData-2024-10.pdf new file mode 100644 index 0000000..0ea9a94 Binary files /dev/null and b/AlpineBits-HotelData-2024-10/AlpineBits-HotelData-2024-10.pdf differ diff --git a/AlpineBits-HotelData-2024-10/AlpineBits_Trademark-Policy.pdf b/AlpineBits-HotelData-2024-10/AlpineBits_Trademark-Policy.pdf new file mode 100644 index 0000000..e626d8a Binary files /dev/null and b/AlpineBits-HotelData-2024-10/AlpineBits_Trademark-Policy.pdf differ diff --git a/AlpineBits-HotelData-2024-10/files/capabilities.json b/AlpineBits-HotelData-2024-10/files/capabilities.json new file mode 100644 index 0000000..bb28e22 --- /dev/null +++ b/AlpineBits-HotelData-2024-10/files/capabilities.json @@ -0,0 +1,66 @@ +{ + "versions": [ + { + "version": "2024-10", + "actions": [ + { + "action": "action_OTA_Ping" + }, + { + "action": "action_OTA_HotelAvailNotif", + "supports": [ + "OTA_HotelAvailNotif_accept_rooms", + "OTA_HotelAvailNotif_accept_categories", + "OTA_HotelAvailNotif_accept_deltas", + "OTA_HotelAvailNotif_accept_BookingThreshold" + ] + }, + { + "action": "action_OTA_Read" + }, + { + "action": "action_OTA_HotelResNotif_GuestRequests" + }, + { + "action": "action_OTA_HotelDescriptiveContentNotif_Inventory", + "supports": [ + "OTA_HotelDescriptiveContentNotif_Inventory_use_rooms", + "OTA_HotelDescriptiveContentNotif_Inventory_occupancy_children" + ] + }, + { + "action": "action_OTA_HotelDescriptiveContentNotif_Info" + }, + { + "action": "action_OTA_HotelDescriptiveInfo_Inventory" + }, + { + "action": "action_OTA_HotelDescriptiveInfo_Info" + }, + { + "action": "action_OTA_HotelRatePlanNotif_RatePlans", + "supports": [ + "OTA_HotelRatePlanNotif_accept_ArrivalDOW", + "OTA_HotelRatePlanNotif_accept_DepartureDOW", + "OTA_HotelRatePlanNotif_accept_RatePlan_BookingRule", + "OTA_HotelRatePlanNotif_accept_RatePlan_RoomType_BookingRule", + "OTA_HotelRatePlanNotif_accept_RatePlan_mixed_BookingRule", + "OTA_HotelRatePlanNotif_accept_Supplements", + "OTA_HotelRatePlanNotif_accept_FreeNightsOffers", + "OTA_HotelRatePlanNotif_accept_FamilyOffers", + "OTA_HotelRatePlanNotif_accept_overlay", + "OTA_HotelRatePlanNotif_accept_RatePlanJoin", + "OTA_HotelRatePlanNotif_accept_OfferRule_BookingOffset", + "OTA_HotelRatePlanNotif_accept_OfferRule_DOWLOS" + ] + }, + { + "action": "action_OTA_HotelRatePlan_BaseRates", + "supports": [ + "OTA_HotelRatePlan_BaseRates_deltas" + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/AlpineBits-HotelData-2024-10/files/samples/ActivityData/Activities-OTA_HotelPostEventNotifRQ-deletion.xml b/AlpineBits-HotelData-2024-10/files/samples/ActivityData/Activities-OTA_HotelPostEventNotifRQ-deletion.xml new file mode 100644 index 0000000..679865a --- /dev/null +++ b/AlpineBits-HotelData-2024-10/files/samples/ActivityData/Activities-OTA_HotelPostEventNotifRQ-deletion.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/AlpineBits-HotelData-2024-10/files/samples/ActivityData/Activities-OTA_HotelPostEventNotifRQ.xml b/AlpineBits-HotelData-2024-10/files/samples/ActivityData/Activities-OTA_HotelPostEventNotifRQ.xml new file mode 100644 index 0000000..05489e7 --- /dev/null +++ b/AlpineBits-HotelData-2024-10/files/samples/ActivityData/Activities-OTA_HotelPostEventNotifRQ.xml @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + Werner + Call + + + https://example.com/image.jpg + + + + + + + + + + + + + Wellness Area + Wellnessbereich + Area wellness + + + + + + + + Yoga with Cesare + Yoga mit Cesare + Yoga con Cesare + + + WELLNESS-MENTAL + Mental wellness + mentales Wohlbefinden + Benessere mentale + + + https://example.com/image1.jpg + https://example.com/image2.jpg + https://example.com/image3.jpg + + + Yoga Lorem Ipsum ... + Yoga Lorem Ipsum ... + Yoga Lorem Ipsum ... + + + + + + + + + + diff --git a/AlpineBits-HotelData-2024-10/files/samples/ActivityData/Activities-OTA_HotelPostEventNotifRS-success.xml b/AlpineBits-HotelData-2024-10/files/samples/ActivityData/Activities-OTA_HotelPostEventNotifRS-success.xml new file mode 100644 index 0000000..19e6ba0 --- /dev/null +++ b/AlpineBits-HotelData-2024-10/files/samples/ActivityData/Activities-OTA_HotelPostEventNotifRS-success.xml @@ -0,0 +1,21 @@ + + + + + + + + + diff --git a/AlpineBits-HotelData-2024-10/files/samples/BaseRates/BaseRates-OTA_HotelRatePlanRQ.xml b/AlpineBits-HotelData-2024-10/files/samples/BaseRates/BaseRates-OTA_HotelRatePlanRQ.xml new file mode 100644 index 0000000..54a6911 --- /dev/null +++ b/AlpineBits-HotelData-2024-10/files/samples/BaseRates/BaseRates-OTA_HotelRatePlanRQ.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/AlpineBits-HotelData-2024-10/files/samples/BaseRates/BaseRates-OTA_HotelRatePlanRS.xml b/AlpineBits-HotelData-2024-10/files/samples/BaseRates/BaseRates-OTA_HotelRatePlanRS.xml new file mode 100644 index 0000000..b0901cf --- /dev/null +++ b/AlpineBits-HotelData-2024-10/files/samples/BaseRates/BaseRates-OTA_HotelRatePlanRS.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Lorem ipsum. + Lorem ipsum. + + + + + + diff --git a/AlpineBits-HotelData-2024-10/files/samples/FreeRooms/FreeRooms-OTA_HotelInvCountNotifRQ-closing_seasons.xml b/AlpineBits-HotelData-2024-10/files/samples/FreeRooms/FreeRooms-OTA_HotelInvCountNotifRQ-closing_seasons.xml new file mode 100644 index 0000000..5635136 --- /dev/null +++ b/AlpineBits-HotelData-2024-10/files/samples/FreeRooms/FreeRooms-OTA_HotelInvCountNotifRQ-closing_seasons.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/AlpineBits-HotelData-2024-10/files/samples/FreeRooms/FreeRooms-OTA_HotelInvCountNotifRQ-delta.xml b/AlpineBits-HotelData-2024-10/files/samples/FreeRooms/FreeRooms-OTA_HotelInvCountNotifRQ-delta.xml new file mode 100644 index 0000000..bb7bfff --- /dev/null +++ b/AlpineBits-HotelData-2024-10/files/samples/FreeRooms/FreeRooms-OTA_HotelInvCountNotifRQ-delta.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/AlpineBits-HotelData-2024-10/files/samples/FreeRooms/FreeRooms-OTA_HotelInvCountNotifRQ-empty.xml b/AlpineBits-HotelData-2024-10/files/samples/FreeRooms/FreeRooms-OTA_HotelInvCountNotifRQ-empty.xml new file mode 100644 index 0000000..158a886 --- /dev/null +++ b/AlpineBits-HotelData-2024-10/files/samples/FreeRooms/FreeRooms-OTA_HotelInvCountNotifRQ-empty.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + diff --git a/AlpineBits-HotelData-2024-10/files/samples/FreeRooms/FreeRooms-OTA_HotelInvCountNotifRQ.xml b/AlpineBits-HotelData-2024-10/files/samples/FreeRooms/FreeRooms-OTA_HotelInvCountNotifRQ.xml new file mode 100644 index 0000000..3246875 --- /dev/null +++ b/AlpineBits-HotelData-2024-10/files/samples/FreeRooms/FreeRooms-OTA_HotelInvCountNotifRQ.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/AlpineBits-HotelData-2024-10/files/samples/FreeRooms/FreeRooms-OTA_HotelInvCountNotifRS-advisory.xml b/AlpineBits-HotelData-2024-10/files/samples/FreeRooms/FreeRooms-OTA_HotelInvCountNotifRS-advisory.xml new file mode 100644 index 0000000..c0e7cd4 --- /dev/null +++ b/AlpineBits-HotelData-2024-10/files/samples/FreeRooms/FreeRooms-OTA_HotelInvCountNotifRS-advisory.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + last full data set received more than 48 hours ago + + + + diff --git a/AlpineBits-HotelData-2024-10/files/samples/FreeRooms/FreeRooms-OTA_HotelInvCountNotifRS-error.xml b/AlpineBits-HotelData-2024-10/files/samples/FreeRooms/FreeRooms-OTA_HotelInvCountNotifRS-error.xml new file mode 100644 index 0000000..289cd84 --- /dev/null +++ b/AlpineBits-HotelData-2024-10/files/samples/FreeRooms/FreeRooms-OTA_HotelInvCountNotifRS-error.xml @@ -0,0 +1,24 @@ + + + + + + + + + Invalid start/end date combination + + + + diff --git a/AlpineBits-HotelData-2024-10/files/samples/FreeRooms/FreeRooms-OTA_HotelInvCountNotifRS-success.xml b/AlpineBits-HotelData-2024-10/files/samples/FreeRooms/FreeRooms-OTA_HotelInvCountNotifRS-success.xml new file mode 100644 index 0000000..0a1d2ac --- /dev/null +++ b/AlpineBits-HotelData-2024-10/files/samples/FreeRooms/FreeRooms-OTA_HotelInvCountNotifRS-success.xml @@ -0,0 +1,20 @@ + + + + + + + + + diff --git a/AlpineBits-HotelData-2024-10/files/samples/FreeRooms/FreeRooms-OTA_HotelInvCountNotifRS-warning.xml b/AlpineBits-HotelData-2024-10/files/samples/FreeRooms/FreeRooms-OTA_HotelInvCountNotifRS-warning.xml new file mode 100644 index 0000000..6b6bd20 --- /dev/null +++ b/AlpineBits-HotelData-2024-10/files/samples/FreeRooms/FreeRooms-OTA_HotelInvCountNotifRS-warning.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + dates are too far in the future for this server to process + + + + diff --git a/AlpineBits-HotelData-2024-10/files/samples/GuestRequests/GuestRequests-Acknowledgments-OTA_NotifReportRQ-warning.xml b/AlpineBits-HotelData-2024-10/files/samples/GuestRequests/GuestRequests-Acknowledgments-OTA_NotifReportRQ-warning.xml new file mode 100644 index 0000000..8eec217 --- /dev/null +++ b/AlpineBits-HotelData-2024-10/files/samples/GuestRequests/GuestRequests-Acknowledgments-OTA_NotifReportRQ-warning.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + Unable to process reservation + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/AlpineBits-HotelData-2024-10/files/samples/GuestRequests/GuestRequests-Acknowledgments-OTA_NotifReportRQ.xml b/AlpineBits-HotelData-2024-10/files/samples/GuestRequests/GuestRequests-Acknowledgments-OTA_NotifReportRQ.xml new file mode 100644 index 0000000..b2a0dbf --- /dev/null +++ b/AlpineBits-HotelData-2024-10/files/samples/GuestRequests/GuestRequests-Acknowledgments-OTA_NotifReportRQ.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/AlpineBits-HotelData-2024-10/files/samples/GuestRequests/GuestRequests-OTA_ReadRQ-selection-criteria.xml b/AlpineBits-HotelData-2024-10/files/samples/GuestRequests/GuestRequests-OTA_ReadRQ-selection-criteria.xml new file mode 100644 index 0000000..8286bbc --- /dev/null +++ b/AlpineBits-HotelData-2024-10/files/samples/GuestRequests/GuestRequests-OTA_ReadRQ-selection-criteria.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + diff --git a/AlpineBits-HotelData-2024-10/files/samples/GuestRequests/GuestRequests-OTA_ReadRQ.xml b/AlpineBits-HotelData-2024-10/files/samples/GuestRequests/GuestRequests-OTA_ReadRQ.xml new file mode 100644 index 0000000..17ce6ab --- /dev/null +++ b/AlpineBits-HotelData-2024-10/files/samples/GuestRequests/GuestRequests-OTA_ReadRQ.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + diff --git a/AlpineBits-HotelData-2024-10/files/samples/GuestRequests/GuestRequests-OTA_ResRetrieveRS-cancellation.xml b/AlpineBits-HotelData-2024-10/files/samples/GuestRequests/GuestRequests-OTA_ResRetrieveRS-cancellation.xml new file mode 100644 index 0000000..23778c7 --- /dev/null +++ b/AlpineBits-HotelData-2024-10/files/samples/GuestRequests/GuestRequests-OTA_ResRetrieveRS-cancellation.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/AlpineBits-HotelData-2024-10/files/samples/GuestRequests/GuestRequests-OTA_ResRetrieveRS-empty.xml b/AlpineBits-HotelData-2024-10/files/samples/GuestRequests/GuestRequests-OTA_ResRetrieveRS-empty.xml new file mode 100644 index 0000000..05cac27 --- /dev/null +++ b/AlpineBits-HotelData-2024-10/files/samples/GuestRequests/GuestRequests-OTA_ResRetrieveRS-empty.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + diff --git a/AlpineBits-HotelData-2024-10/files/samples/GuestRequests/GuestRequests-OTA_ResRetrieveRS-error.xml b/AlpineBits-HotelData-2024-10/files/samples/GuestRequests/GuestRequests-OTA_ResRetrieveRS-error.xml new file mode 100644 index 0000000..7334e41 --- /dev/null +++ b/AlpineBits-HotelData-2024-10/files/samples/GuestRequests/GuestRequests-OTA_ResRetrieveRS-error.xml @@ -0,0 +1,24 @@ + + + + + + + + + Invalid hotel code + + + + diff --git a/AlpineBits-HotelData-2024-10/files/samples/GuestRequests/GuestRequests-OTA_ResRetrieveRS-newsletter.xml b/AlpineBits-HotelData-2024-10/files/samples/GuestRequests/GuestRequests-OTA_ResRetrieveRS-newsletter.xml new file mode 100644 index 0000000..dad3876 --- /dev/null +++ b/AlpineBits-HotelData-2024-10/files/samples/GuestRequests/GuestRequests-OTA_ResRetrieveRS-newsletter.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + Otto + Mustermann + + info@example.com + + + + + + + + + + + + + + + + + + + diff --git a/AlpineBits-HotelData-2024-10/files/samples/GuestRequests/GuestRequests-OTA_ResRetrieveRS-quote-request.xml b/AlpineBits-HotelData-2024-10/files/samples/GuestRequests/GuestRequests-OTA_ResRetrieveRS-quote-request.xml new file mode 100644 index 0000000..d62acb3 --- /dev/null +++ b/AlpineBits-HotelData-2024-10/files/samples/GuestRequests/GuestRequests-OTA_ResRetrieveRS-quote-request.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Otto + Mustermann + +
+ +
+
+
+
+
+
+
+ + + + + + + + +
+ +
+ +
diff --git a/AlpineBits-HotelData-2024-10/files/samples/GuestRequests/GuestRequests-OTA_ResRetrieveRS-reservation.xml b/AlpineBits-HotelData-2024-10/files/samples/GuestRequests/GuestRequests-OTA_ResRetrieveRS-reservation.xml new file mode 100644 index 0000000..af45741 --- /dev/null +++ b/AlpineBits-HotelData-2024-10/files/samples/GuestRequests/GuestRequests-OTA_ResRetrieveRS-reservation.xml @@ -0,0 +1,310 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Otto Mustermann + + 4444333322221111 + </PlainText> + </CardNumber> + </PaymentCard> + </GuaranteeAccepted> + </GuaranteesAccepted> + </Guarantee> + + <Total AmountAfterTax="1125" CurrencyCode="EUR"/> + + <ServiceRPHs> + <ServiceRPH RPH="1" /> + <ServiceRPH RPH="2" /> + </ServiceRPHs> + + </RoomStay> + + </RoomStays> + + <!--- optional booked services / price breakdown--> + <Services> + <!-- Garage 10 Euro / day --> + <Service Inclusive="false" Quantity="11" ServiceRPH="1" ServicePricingType="Per use" + ServiceCategoryCode="OTHER" ServiceInventoryCode="xyz" ID="123" Type="16"> + <ServiceDetails> + <Total AmountAfterTax="110" CurrencyCode="EUR"/> + <ServiceDescription> + <Text TextFormat="PlainText">Garage</Text> + </ServiceDescription> + </ServiceDetails> + </Service> + <!-- Supplement from a rate plan --> + <Service Inclusive="true" Quantity="1" ServiceRPH="2" ServicePricingType="Per stay" + ServiceCategoryCode="SUPPLEMENT" ServiceInventoryCode="0x539" ID="456" Type="16"> + <ServiceDetails> + <Total AmountAfterTax="50" CurrencyCode="EUR"/> + <ServiceDescription> + <Text TextFormat="PlainText">Final cleaning</Text> + </ServiceDescription> + </ServiceDetails> + </Service> + <!-- Spa Massage --> + <Service Inclusive="false" Quantity="1" ServiceRPH="3" ServicePricingType="Per use" + ServiceCategoryCode="SPA" + ServiceInventoryCode="abc" ID="555" Type="16"> + <ServiceDetails> + <!-- optional guest counts --> + <GuestCounts> + <!-- 2 adults --> + <GuestCount Count="2"/> + </GuestCounts> + <!-- optional time span --> + <TimeSpan Start="2022-01-03T15:00:00" End="2022-01-03T17:30:00"/> + <!-- optional guest comment --> + <Comments> + <Comment> + <Text TextFormat="PlainText">A guest comment</Text> + </Comment> + </Comments> + <Total AmountAfterTax="50" CurrencyCode="EUR"/> + <ServiceDescription> + <Text TextFormat="PlainText">couple massage</Text> + </ServiceDescription> + </ServiceDetails> + </Service> + <!-- Board price --> + <Service Inclusive="true" Quantity="33" ServiceRPH="4" ServicePricingType="Per person per night" + ServiceCategoryCode="BOARD" ServiceInventoryCode="HB" ID="789" Type="16"> + <ServiceDetails> + <Total AmountAfterTax="330" CurrencyCode="EUR"/> + <ServiceDescription> + <Text TextFormat="PlainText">Halfboard</Text> + </ServiceDescription> + </ServiceDetails> + </Service> + </Services> + + <ResGuests> + <ResGuest> + <Profiles> + <ProfileInfo> + <Profile> + + <Customer Gender="Male" BirthDate="1980-01-01" Language="de"> + + <PersonName> + <NamePrefix>Herr</NamePrefix> + <GivenName>Otto</GivenName> + <Surname>Mustermann</Surname> + <NameTitle>Dr</NameTitle> + </PersonName> + + <!-- Code 1 -> Voice --> + <Telephone PhoneTechType="1" PhoneNumber="+4934567891"/> + <!-- Code 3 -> Fax --> + <Telephone PhoneTechType="3" PhoneNumber="+4934567892"/> + <!-- Code 5 -> Mobile --> + <Telephone PhoneTechType="5" PhoneNumber="+4934567893"/> + + <Email Remark="newsletter:yes">otto.mustermann@example.com</Email> + + <Address Remark="catalog:yes"> + + <AddressLine>Musterstraße 1</AddressLine> + <CityName>Musterstadt</CityName> + <PostalCode>1234</PostalCode> + <CountryName Code="DE"/> + + </Address> + + </Customer> + + </Profile> + </ProfileInfo> + </Profiles> + </ResGuest> + </ResGuests> + + <ResGlobalInfo> + + <Comments> + + <Comment Name="included services"> + <ListItem ListItem="1" Language="de">Parkplatz</ListItem> + <ListItem ListItem="2" Language="de">Schwimmbad</ListItem> + <ListItem ListItem="3" Language="de">Skipass</ListItem> + </Comment> + + <Comment Name="customer comment"> + <Text> + Do you allow pets? sincerely, John Doe + </Text> + </Comment> + + <Comment Name="additional info"> + <Text> + This is a collective request. + </Text> + </Comment> + + </Comments> + + <!--- optional payments done with the booking--> + <DepositPayments> + <!-- example online payment --> + <GuaranteePayment Start="2023-07-13T12:51:49" GuaranteeCode="129acd49f7db2fabc317db3d9656525"> + <AcceptedPayments> + <AcceptedPayment GuaranteeTypeCode="46" GuaranteeID="PAYPAL" PaymentTransactionTypeCode="charge"> + <PaymentCard CardCode="VI" ExpireDate="1124"> + <CardHolderName>Laura Sample</CardHolderName> + <CardNumber Mask="XXXXXXXXXXXX1234" Token="39acd49f7db2fabc317db3d969592345" TokenProviderID="PAYPAL" /> + </PaymentCard> + </AcceptedPayment> + </AcceptedPayments> + <AmountPercent Amount="100" CurrencyCode="EUR" /> + </GuaranteePayment> + <!-- example bank transfer payment --> + <GuaranteePayment Start="2023-07-13T12:51:49" GuaranteeCode="123456"> + <AcceptedPayments> + <AcceptedPayment GuaranteeTypeCode="28" GuaranteeID="INTESA"> + <BankAcct> + <BankAcctName>Laura Sample</BankAcctName> + <BankAcctNumber Mask="IT12XXXXXXXXXXXXXX7990"> + <PlainText>IT12 3456 7890 1234 5678 90</PlainText> + </BankAcctNumber> + </BankAcct> + </AcceptedPayment> + </AcceptedPayments> + <AmountPercent Amount="100" CurrencyCode="EUR" /> + </GuaranteePayment> + <!-- example voucher payment --> + <GuaranteePayment Start="2023-07-13T12:51:49" GuaranteeCode="123456"> + <AcceptedPayments> + <AcceptedPayment GuaranteeTypeCode="3" GuaranteeID="GETAVO" PaymentTransactionTypeCode="charge"> + <Voucher ElectronicIndicator="true" Identifier="XVZ-123-14050" /> + </AcceptedPayment> + </AcceptedPayments> + <AmountPercent Amount="100" CurrencyCode="EUR" /> + </GuaranteePayment> + </DepositPayments> + <CancelPenalties> + <CancelPenalty> + <PenaltyDescription> + <Text> + Cancellation is handled by hotel. + Penalty is 50%, if canceled within 3 days before show, 100% otherwise. + </Text> + </PenaltyDescription> + </CancelPenalty> + </CancelPenalties> + + <HotelReservationIDs> + <!-- ResID_Type 13 -> Internet Broker --> + <HotelReservationID ResID_Type="13" + ResID_Value="Slogan" + ResID_Source="www.example.com" + ResID_SourceContext="top banner"/> + </HotelReservationIDs> + + <Profiles> + <ProfileInfo> + <!-- ProfileType 4 -> Travel Agent --> + <Profile ProfileType="4"> + <CompanyInfo> + <CompanyName Code="123" CodeContext="ABC">ACME Travel Agency</CompanyName> + <!-- Code 1 -> Voice --> + <AddressInfo> + <AddressLine>Musterstraße 1</AddressLine> + <CityName>Flaneid</CityName> + <PostalCode>12345</PostalCode> + <CountryName Code="IT"/> + </AddressInfo> + <TelephoneInfo PhoneTechType="1" PhoneNumber="+391234567890"/> + <Email>info@example.com</Email> + </CompanyInfo> + </Profile> + </ProfileInfo> + </Profiles> + + <BasicPropertyInfo HotelCode="123" HotelName="Frangart Inn"/> + + </ResGlobalInfo> + + </HotelReservation> + + </ReservationsList> + +</OTA_ResRetrieveRS> diff --git a/AlpineBits-HotelData-2024-10/files/samples/GuestRequests/GuestRequests-Push-OTA_HotelResNotifRQ-StatusUpdate.xml b/AlpineBits-HotelData-2024-10/files/samples/GuestRequests/GuestRequests-Push-OTA_HotelResNotifRQ-StatusUpdate.xml new file mode 100644 index 0000000..137a671 --- /dev/null +++ b/AlpineBits-HotelData-2024-10/files/samples/GuestRequests/GuestRequests-Push-OTA_HotelResNotifRQ-StatusUpdate.xml @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- + AlpineBits 2022-10 + https://www.alpinebits.org/ + + Sample file for GuestRequest StatusUpdate (Push). Use case: PMS sends a reservation status update to the portal that generated it + + Changelog: + v. 2018-10 1.0 initial example +--> + +<OTA_HotelResNotifRQ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns="http://www.opentravel.org/OTA/2003/05" + xsi:schemaLocation="http://www.opentravel.org/OTA/2003/05 OTA_HotelResNotifRQ.xsd" + Version="1.000"> + + <HotelReservations> + + <HotelReservation ResStatus="Reserved" CreateDateTime="2023-03-21T11:00:00+01:00"> + <UniqueID Type="14" ID="6b34fe24ac999999"/> + </HotelReservation> + + <HotelReservation ResStatus="Cancelled" CreateDateTime="2023-05-12T19:00:00+01:00" LastModifyDateTime="2023-06-12T12:00:00+01:00"> + <UniqueID Type="15" ID="6b34fe24ac244444"/> + </HotelReservation> + + </HotelReservations> + +</OTA_HotelResNotifRQ> diff --git a/AlpineBits-HotelData-2024-10/files/samples/GuestRequests/GuestRequests-Push-OTA_HotelResNotifRQ.xml b/AlpineBits-HotelData-2024-10/files/samples/GuestRequests/GuestRequests-Push-OTA_HotelResNotifRQ.xml new file mode 100644 index 0000000..f7bdf4e --- /dev/null +++ b/AlpineBits-HotelData-2024-10/files/samples/GuestRequests/GuestRequests-Push-OTA_HotelResNotifRQ.xml @@ -0,0 +1,189 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- + AlpineBits 2022-10 + https://www.alpinebits.org/ + + Sample message file for GuestRequests (Push) + + Changelog: + v. 2018-10 1.0 initial example +--> + +<OTA_HotelResNotifRQ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns="http://www.opentravel.org/OTA/2003/05" + xsi:schemaLocation="http://www.opentravel.org/OTA/2003/05 OTA_HotelResNotifRQ.xsd" + Version="1.000"> + + <HotelReservations> + + <HotelReservation CreateDateTime="2022-03-21T15:00:00+01:00" ResStatus="Reserved"> + + <!-- Type 14 -> Reservation --> + <UniqueID Type="14" ID="6b34fe24ac2ff810"/> + + <RoomStays> + + <RoomStay> + + <RoomTypes> + <RoomType RoomTypeCode="bigsuite" RoomClassificationCode="42"/> + </RoomTypes> + + <RatePlans> + <RatePlan RatePlanCode="123456-xyz"> + <Commission Percent="15"/> + <!-- Code 1 -> All inclusive --> + <MealsIncluded MealPlanIndicator="true" MealPlanCodes="1"/> + </RatePlan> + </RatePlans> + + <!-- 2 adults + 1 child + 1 child = 4 guests --> + <GuestCounts> + <!-- 2 adults --> + <GuestCount Count="2"/> + <!-- 1 child --> + <GuestCount Count="1" Age="9"/> + <!-- 1 child --> + <GuestCount Count="1" Age="3"/> + </GuestCounts> + + <TimeSpan Start="2023-01-01" End="2023-01-12"/> + + <Guarantee> + <GuaranteesAccepted> + <GuaranteeAccepted> + <PaymentCard CardCode="VI" ExpireDate="1226"> + <CardHolderName>Otto Mustermann</CardHolderName> + <CardNumber> + <PlainText>4444333322221111 + </PlainText> + </CardNumber> + </PaymentCard> + </GuaranteeAccepted> + </GuaranteesAccepted> + </Guarantee> + + <Total AmountAfterTax="299" CurrencyCode="EUR"/> + + </RoomStay> + + </RoomStays> + + <ResGuests> + <ResGuest> + <Profiles> + <ProfileInfo> + <Profile> + + <Customer Gender="Male" BirthDate="1980-01-01" Language="de"> + + <PersonName> + <NamePrefix>Herr</NamePrefix> + <GivenName>Otto</GivenName> + <Surname>Mustermann</Surname> + <NameTitle>Dr</NameTitle> + </PersonName> + + <!-- Code 1 -> Voice --> + <Telephone PhoneTechType="1" PhoneNumber="+4934567891"/> + <!-- Code 3 -> Fax --> + <Telephone PhoneTechType="3" PhoneNumber="+4934567892"/> + <!-- Code 5 -> Mobile --> + <Telephone PhoneTechType="5" PhoneNumber="+4934567893"/> + + <Email Remark="newsletter:yes">otto.mustermann@example.com</Email> + + <Address Remark="catalog:yes"> + + <AddressLine>Musterstraße 1</AddressLine> + <CityName>Musterstadt</CityName> + <PostalCode>1234</PostalCode> + <CountryName Code="DE"/> + + </Address> + + </Customer> + + </Profile> + </ProfileInfo> + </Profiles> + </ResGuest> + </ResGuests> + + <ResGlobalInfo> + + <Comments> + + <Comment Name="included services"> + <ListItem ListItem="1" Language="de">Parkplatz</ListItem> + <ListItem ListItem="2" Language="de">Schwimmbad</ListItem> + <ListItem ListItem="3" Language="de">Skipass</ListItem> + </Comment> + + <Comment Name="customer comment"> + <Text> + Sind Hunde erlaubt? + + Mfg. + Otto Mustermann. + </Text> + </Comment> + + <Comment Name="additional info"> + <Text> + This is a collective request. + </Text> + </Comment> + + </Comments> + + <CancelPenalties> + <CancelPenalty> + <PenaltyDescription> + <Text> + Cancellation is handled by hotel. + Penalty is 50%, if canceled within 3 days before show, 100% otherwise. + </Text> + </PenaltyDescription> + </CancelPenalty> + </CancelPenalties> + + <HotelReservationIDs> + <!-- ResID_Type 13 -> Internet Broker --> + <HotelReservationID ResID_Type="13" + ResID_Value="Slogan" + ResID_Source="www.example.com" + ResID_SourceContext="top banner" /> + </HotelReservationIDs> + + <Profiles> + <ProfileInfo> + <!-- ProfileType 4 -> Travel Agent --> + <Profile ProfileType="4"> + <CompanyInfo> + <CompanyName Code="123" CodeContext="ABC">ACME Travel Agency</CompanyName> + <!-- Code 1 -> Voice --> + <AddressInfo> + <AddressLine>Musterstraße 1</AddressLine> + <CityName>Flaneid</CityName> + <PostalCode>12345</PostalCode> + <CountryName Code="IT"/> + </AddressInfo> + <TelephoneInfo PhoneTechType="1" PhoneNumber="+391234567890"/> + <Email>info@example.com</Email> + </CompanyInfo> + </Profile> + </ProfileInfo> + </Profiles> + + <BasicPropertyInfo HotelCode="123" HotelName="Frangart Inn"/> + + </ResGlobalInfo> + + </HotelReservation> + + </HotelReservations> + +</OTA_HotelResNotifRQ> + diff --git a/AlpineBits-HotelData-2024-10/files/samples/GuestRequests/GuestRequests-Push-OTA_HotelResNotifRS.xml b/AlpineBits-HotelData-2024-10/files/samples/GuestRequests/GuestRequests-Push-OTA_HotelResNotifRS.xml new file mode 100644 index 0000000..a82c7d6 --- /dev/null +++ b/AlpineBits-HotelData-2024-10/files/samples/GuestRequests/GuestRequests-Push-OTA_HotelResNotifRS.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- + AlpineBits 2022-10 + https://www.alpinebits.org/ + + Sample message file for GuestRequests (Push) + + Changelog: + v. 2018-10 1.0 initial example +--> + +<OTA_HotelResNotifRS xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns="http://www.opentravel.org/OTA/2003/05" + xsi:schemaLocation="http://www.opentravel.org/OTA/2003/05 OTA_HotelResNotifRS.xsd" + Version="1.000"> + + <Success/> + + <Warnings> + <!-- refuse reservation with ID=f054bbd2f5ebab9 --> + <Warning Type="3" Code="450" RecordID="f054bbd2f5ebab9">Unable to process reservation</Warning> + </Warnings> + + <HotelReservations> + + <HotelReservation> + <!-- ACK reservation with ID="6b34fe24ac2ff810" --> + <UniqueID Type="14" ID="6b34fe24ac2ff810"/> + </HotelReservation> + + <HotelReservation> + <!-- ACK cancellation with ID="c24e8b15ca469388" --> + <UniqueID Type="15" ID="c24e8b15ca469388"/> + </HotelReservation> + + <HotelReservation> + <!-- ACK quote request with ID="1000000000000001" --> + <UniqueID Type="14" ID="1000000000000001"/> + </HotelReservation> + + </HotelReservations> + +</OTA_HotelResNotifRS> + diff --git a/AlpineBits-HotelData-2024-10/files/samples/GuestRequests/contrib/GuestRequests-OTA_ResRetrieveRS-request-with-alternative-roomstays.xml b/AlpineBits-HotelData-2024-10/files/samples/GuestRequests/contrib/GuestRequests-OTA_ResRetrieveRS-request-with-alternative-roomstays.xml new file mode 100644 index 0000000..953a42b --- /dev/null +++ b/AlpineBits-HotelData-2024-10/files/samples/GuestRequests/contrib/GuestRequests-OTA_ResRetrieveRS-request-with-alternative-roomstays.xml @@ -0,0 +1,87 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<OTA_ResRetrieveRS xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns="http://www.opentravel.org/OTA/2003/05" + xsi:schemaLocation="http://www.opentravel.org/OTA/2003/05 OTA_ResRetrieveRS.xsd" + Version="7.000"> + + <Success/> + + <ReservationsList> + + <HotelReservation CreateDateTime="2017-09-03T19:47:50" ResStatus="Requested"> + + <UniqueID Type="14" ID="6b34fe24ac2ff811"/> + + <RoomStays> + <!-- Either DZ and EZ or DZ and SUI is requested --> + <RoomStay RoomStayGroupID="1"> + <RoomTypes> + <RoomType RoomTypeCode="DZ" RoomClassificationCode="42"/> + </RoomTypes> + <GuestCounts> + <GuestCount Count="2"></GuestCount> + </GuestCounts> + <TimeSpan Start="2017-10-03" End="2017-10-08" /> + </RoomStay> + <RoomStay RoomStayGroupID="1"> + <RoomTypes> + <RoomType RoomTypeCode="EZ" RoomClassificationCode="42"/> + </RoomTypes> + <GuestCounts> + <GuestCount Count="1"></GuestCount> + </GuestCounts> + <TimeSpan Start="2017-10-03" End="2017-10-08" /> + </RoomStay> + <RoomStay RoomStayGroupID="2"> + <RoomTypes> + <RoomType RoomTypeCode="DZ" RoomClassificationCode="42"/> + </RoomTypes> + <GuestCounts> + <GuestCount Count="2"></GuestCount> + </GuestCounts> + <TimeSpan Start="2017-10-03" End="2017-10-08" /> + </RoomStay> + <RoomStay RoomStayGroupID="2"> + <RoomTypes> + <RoomType RoomTypeCode="SUI" RoomClassificationCode="42"/> + </RoomTypes> + <GuestCounts> + <GuestCount Count="1"></GuestCount> + </GuestCounts> + <TimeSpan Start="2017-10-03" End="2017-10-08" /> + </RoomStay> + </RoomStays> + + <ResGuests> + <ResGuest> + <Profiles> + <ProfileInfo> + <Profile> + <Customer Language="de" Gender="Unknown"> + <PersonName> + <GivenName>Otto</GivenName> + <Surname>Mustermann</Surname> + </PersonName> + <Address> + <CountryName Code="DE"/> + </Address> + </Customer> + </Profile> + </ProfileInfo> + </Profiles> + </ResGuest> + </ResGuests> + + <ResGlobalInfo> + <HotelReservationIDs> + <HotelReservationID ResID_Type="13" ResID_SourceContext="cnt" ResID_Value="res" ResID_Source="www.example.com"/> + </HotelReservationIDs> + <BasicPropertyInfo HotelCode="123" HotelName="Frangart Inn"/> + </ResGlobalInfo> + + </HotelReservation> + + </ReservationsList> + +</OTA_ResRetrieveRS> diff --git a/AlpineBits-HotelData-2024-10/files/samples/GuestRequests/contrib/GuestRequests-OTA_ResRetrieveRS-with-emojis.xml b/AlpineBits-HotelData-2024-10/files/samples/GuestRequests/contrib/GuestRequests-OTA_ResRetrieveRS-with-emojis.xml new file mode 100644 index 0000000..ba96c32 --- /dev/null +++ b/AlpineBits-HotelData-2024-10/files/samples/GuestRequests/contrib/GuestRequests-OTA_ResRetrieveRS-with-emojis.xml @@ -0,0 +1,181 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<OTA_ResRetrieveRS xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns="http://www.opentravel.org/OTA/2003/05" + xsi:schemaLocation="http://www.opentravel.org/OTA/2003/05 OTA_ResRetrieveRS.xsd" + Version="7.000"> + + <Success/> + + <ReservationsList> + + <HotelReservation CreateDateTime="2012-03-21T15:00:00+01:00" ResStatus="Requested"> + + <!-- Type 14 -> Reservation --> + <UniqueID Type="14" ID="6b34fe24ac2ff810"/> + + <RoomStays> + + <RoomStay> + + <RoomTypes> + <RoomType RoomTypeCode="bigsuite" RoomClassificationCode="42"/> + </RoomTypes> + + <RatePlans> + <RatePlan RatePlanCode="123456-xyz"> + <Commission Percent="15"/> + <!-- Code 1 -> All inclusive --> + <MealsIncluded MealPlanIndicator="true" MealPlanCodes="1"/> + </RatePlan> + </RatePlans> + + <!-- 2 adults + 1 child + 1 child = 4 guests --> + <GuestCounts> + <!-- 2 adults --> + <GuestCount Count="2"/> + <!-- 1 child --> + <GuestCount Count="1" Age="9"/> + <!-- 1 child --> + <GuestCount Count="1" Age="3"/> + </GuestCounts> + + <TimeSpan Start="2012-01-01" End="2012-01-12"/> + + <Guarantee> + <GuaranteesAccepted> + <GuaranteeAccepted> + <PaymentCard CardCode="VI" ExpireDate="1216"> + <CardHolderName>Otto Mustermann</CardHolderName> + <CardNumber> + <PlainText>4444333322221111 + </PlainText> + </CardNumber> + </PaymentCard> + </GuaranteeAccepted> + </GuaranteesAccepted> + </Guarantee> + + <Total AmountAfterTax="299" CurrencyCode="EUR"/> + + </RoomStay> + + </RoomStays> + + <ResGuests> + <ResGuest> + <Profiles> + <ProfileInfo> + <Profile> + + <Customer Gender="Male" BirthDate="1980-01-01" Language="de"> + + <PersonName> + <NamePrefix>Herr</NamePrefix> + <GivenName>Otto</GivenName> + <Surname>Mustermann</Surname> + <NameTitle>Dr</NameTitle> + </PersonName> + + <!-- Code 1 -> Voice --> + <Telephone PhoneTechType="1" PhoneNumber="+4934567891"/> + <!-- Code 3 -> Fax --> + <Telephone PhoneTechType="3" PhoneNumber="+4934567892"/> + <!-- Code 5 -> Mobile --> + <Telephone PhoneTechType="5" PhoneNumber="+4934567893"/> + + <Email Remark="newsletter:yes">otto.mustermann@example.com</Email> + + <Address Remark="catalog:yes"> + + <AddressLine>Musterstraße 1</AddressLine> + <CityName>Musterstadt</CityName> + <PostalCode>1234</PostalCode> + <CountryName Code="DE"/> + + </Address> + + </Customer> + + </Profile> + </ProfileInfo> + </Profiles> + </ResGuest> + </ResGuests> + + <ResGlobalInfo> + + <Comments> + + <Comment Name="included services"> + <ListItem ListItem="1" Language="de">Parkplatz</ListItem> + <ListItem ListItem="2" Language="de">Schwimmbad</ListItem> + <ListItem ListItem="3" Language="de">Skipass</ListItem> + </Comment> + + <Comment Name="customer comment"> + <Text> + Sind 🐶 erlaubt? + Wir kommen mit zwei 🚗. + + Mfg. + Otto Mustermann. + </Text> + </Comment> + + <Comment Name="additional info"> + <Text> + This is a collective request. + </Text> + </Comment> + + </Comments> + + <CancelPenalties> + <CancelPenalty> + <PenaltyDescription> + <Text> + Cancellation is handled by hotel. + Penalty is 50%, if canceled within 3 days before show, 100% otherwise. + </Text> + </PenaltyDescription> + </CancelPenalty> + </CancelPenalties> + + <HotelReservationIDs> + <!-- ResID_Type 13 -> Internet Broker --> + <HotelReservationID ResID_Type="13" + ResID_Value="Slogan" + ResID_Source="www.example.com" + ResID_SourceContext="top banner" /> + </HotelReservationIDs> + + <Profiles> + <ProfileInfo> + <!-- ProfileType 4 -> Travel Agent --> + <Profile ProfileType="4"> + <CompanyInfo> + <CompanyName Code="123" CodeContext="ABC">ACME Travel Agency</CompanyName> + <!-- Code 1 -> Voice --> + <AddressInfo> + <AddressLine>Musterstraße 1</AddressLine> + <CityName>Flaneid</CityName> + <PostalCode>12345</PostalCode> + <CountryName Code="IT"/> + </AddressInfo> + <TelephoneInfo PhoneTechType="1" PhoneNumber="+391234567890"/> + <Email>info@example.com</Email> + </CompanyInfo> + </Profile> + </ProfileInfo> + </Profiles> + + <BasicPropertyInfo HotelCode="123" HotelName="Frangart Inn"/> + + </ResGlobalInfo> + + </HotelReservation> + + </ReservationsList> + +</OTA_ResRetrieveRS> diff --git a/AlpineBits-HotelData-2024-10/files/samples/GuestRequests/nonvalid/GuestRequests-Push-OTA_HotelResNotifRQ-open-tag.xml b/AlpineBits-HotelData-2024-10/files/samples/GuestRequests/nonvalid/GuestRequests-Push-OTA_HotelResNotifRQ-open-tag.xml new file mode 100644 index 0000000..55def8c --- /dev/null +++ b/AlpineBits-HotelData-2024-10/files/samples/GuestRequests/nonvalid/GuestRequests-Push-OTA_HotelResNotifRQ-open-tag.xml @@ -0,0 +1,191 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- + AlpineBits 2022-10 + https://www.alpinebits.org/ + + Sample message file for GuestRequests response (Push) with an open tag on line 24 in the UniqueID element + + Changelog: + v. 2022-10 1.1 syntax with an open tag + v. 2018-10 1.0 initial example +--> + +<OTA_HotelResNotifRQ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns="http://www.opentravel.org/OTA/2003/05" + xsi:schemaLocation="http://www.opentravel.org/OTA/2003/05 OTA_HotelResNotifRQ.xsd" + Version="1.000"> + + <HotelReservations> + + <HotelReservation CreateDateTime="2022-03-21T15:00:00+01:00" ResStatus="Reserved"> + + <!-- Type 14 -> Reservation --> + <!-- ERROR OPEN TAG --> + <UniqueID Type="14" ID="6b34fe24ac2ff810"> + + <RoomStays> + + <RoomStay> + + <RoomTypes> + <RoomType RoomTypeCode="bigsuite" RoomClassificationCode="42"/> + </RoomTypes> + + <RatePlans> + <RatePlan RatePlanCode="123456-xyz"> + <Commission Percent="15"/> + <!-- Code 1 -> All inclusive --> + <MealsIncluded MealPlanIndicator="true" MealPlanCodes="1"/> + </RatePlan> + </RatePlans> + + <!-- 2 adults + 1 child + 1 child = 4 guests --> + <GuestCounts> + <!-- 2 adults --> + <GuestCount Count="2"/> + <!-- 1 child --> + <GuestCount Count="1" Age="9"/> + <!-- 1 child --> + <GuestCount Count="1" Age="3"/> + </GuestCounts> + + <TimeSpan Start="2022-01-01" End="2022-01-12"/> + + <Guarantee> + <GuaranteesAccepted> + <GuaranteeAccepted> + <PaymentCard CardCode="VI" ExpireDate="1226"> + <CardHolderName>Otto Mustermann</CardHolderName> + <CardNumber> + <PlainText>4444333322221111 + </PlainText> + </CardNumber> + </PaymentCard> + </GuaranteeAccepted> + </GuaranteesAccepted> + </Guarantee> + + <Total AmountAfterTax="299" CurrencyCode="EUR"/> + + </RoomStay> + + </RoomStays> + + <ResGuests> + <ResGuest> + <Profiles> + <ProfileInfo> + <Profile> + + <Customer Gender="Male" BirthDate="1980-01-01" Language="de"> + + <PersonName> + <NamePrefix>Herr</NamePrefix> + <GivenName>Otto</GivenName> + <Surname>Mustermann</Surname> + <NameTitle>Dr</NameTitle> + </PersonName> + + <!-- Code 1 -> Voice --> + <Telephone PhoneTechType="1" PhoneNumber="+4934567891"/> + <!-- Code 3 -> Fax --> + <Telephone PhoneTechType="3" PhoneNumber="+4934567892"/> + <!-- Code 5 -> Mobile --> + <Telephone PhoneTechType="5" PhoneNumber="+4934567893"/> + + <Email Remark="newsletter:yes">otto.mustermann@example.com</Email> + + <Address Remark="catalog:yes"> + + <AddressLine>Musterstraße 1</AddressLine> + <CityName>Musterstadt</CityName> + <PostalCode>1234</PostalCode> + <CountryName Code="DE"/> + + </Address> + + </Customer> + + </Profile> + </ProfileInfo> + </Profiles> + </ResGuest> + </ResGuests> + + <ResGlobalInfo> + + <Comments> + + <Comment Name="included services"> + <ListItem ListItem="1" Language="de">Parkplatz</ListItem> + <ListItem ListItem="2" Language="de">Schwimmbad</ListItem> + <ListItem ListItem="3" Language="de">Skipass</ListItem> + </Comment> + + <Comment Name="customer comment"> + <Text> + Sind Hunde erlaubt? + + Mfg. + Otto Mustermann. + </Text> + </Comment> + + <Comment Name="additional info"> + <Text> + This is a collective request. + </Text> + </Comment> + + </Comments> + + <CancelPenalties> + <CancelPenalty> + <PenaltyDescription> + <Text> + Cancellation is handled by hotel. + Penalty is 50%, if canceled within 3 days before show, 100% otherwise. + </Text> + </PenaltyDescription> + </CancelPenalty> + </CancelPenalties> + + <HotelReservationIDs> + <!-- ResID_Type 13 -> Internet Broker --> + <HotelReservationID ResID_Type="13" + ResID_Value="Slogan" + ResID_Source="www.example.com" + ResID_SourceContext="top banner" /> + </HotelReservationIDs> + + <Profiles> + <ProfileInfo> + <!-- ProfileType 4 -> Travel Agent --> + <Profile ProfileType="4"> + <CompanyInfo> + <CompanyName Code="123" CodeContext="ABC">ACME Travel Agency</CompanyName> + <!-- Code 1 -> Voice --> + <AddressInfo> + <AddressLine>Musterstraße 1</AddressLine> + <CityName>Flaneid</CityName> + <PostalCode>12345</PostalCode> + <CountryName Code="IT"/> + </AddressInfo> + <TelephoneInfo PhoneTechType="1" PhoneNumber="+391234567890"/> + <Email>info@example.com</Email> + </CompanyInfo> + </Profile> + </ProfileInfo> + </Profiles> + + <BasicPropertyInfo HotelCode="123" HotelName="Frangart Inn"/> + + </ResGlobalInfo> + + </HotelReservation> + + </HotelReservations> + +</OTA_HotelResNotifRQ> + diff --git a/AlpineBits-HotelData-2024-10/files/samples/Handshake/Handshake-OTA_PingRQ.xml b/AlpineBits-HotelData-2024-10/files/samples/Handshake/Handshake-OTA_PingRQ.xml new file mode 100644 index 0000000..213af84 --- /dev/null +++ b/AlpineBits-HotelData-2024-10/files/samples/Handshake/Handshake-OTA_PingRQ.xml @@ -0,0 +1,158 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- + AlpineBits 2024-10 + https://www.alpinebits.org/ + + Sample message file for a Handshake request + + Changelog: + v. 2024-10 1.2 Example extended with all capabilities and two supported releases + v. 2024-10 1.1 Removed the OTA_Ping action + v. 2024-10 1.0 added supported version 2024-10 in the example + v. 2018-10 1.0 initial example +--> + +<OTA_PingRQ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" +xmlns="http://www.opentravel.org/OTA/2003/05" +xsi:schemaLocation="http://www.opentravel.org/OTA/2003/05 OTA_PingRQ.xsd" +Version="8.000"> +<EchoData> +{ + "versions": [ + { + "version": "2024-10", + "actions": [ + { + "action": "action_OTA_Read" + }, + { + "action": "action_OTA_HotelResNotif_GuestRequests" + }, + { + "action": "action_OTA_HotelResNotif_GuestRequests_StatusUpdate" + }, + { + "action": "action_OTA_HotelInvCountNotif", + "supports": [ + "OTA_HotelInvCountNotif_accept_rooms", + "OTA_HotelInvCountNotif_accept_categories", + "OTA_HotelInvCountNotif_accept_deltas", + "OTA_HotelInvCountNotif_accept_out_of_market", + "OTA_HotelInvCountNotif_accept_out_of_order", + "OTA_HotelInvCountNotif_accept_complete_set", + "OTA_HotelInvCountNotif_accept_closing_seasons" + ] + }, + { + "action": "action_OTA_HotelDescriptiveContentNotif_Inventory", + "supports": [ + "OTA_HotelDescriptiveContentNotif_Inventory_use_rooms", + "OTA_HotelDescriptiveContentNotif_Inventory_occupancy_children" + ] + }, + { + "action": "action_OTA_HotelDescriptiveContentNotif_Info" + }, + { + "action": "action_OTA_HotelDescriptiveInfo_Inventory" + }, + { + "action": "action_OTA_HotelDescriptiveInfo_Info" + }, + { + "action": "action_OTA_HotelRatePlanNotif_RatePlans", + "supports": [ + "OTA_HotelRatePlanNotif_accept_ArrivalDOW", + "OTA_HotelRatePlanNotif_accept_DepartureDOW", + "OTA_HotelRatePlanNotif_accept_RatePlan_BookingRule", + "OTA_HotelRatePlanNotif_accept_RatePlan_RoomType_BookingRule", + "OTA_HotelRatePlanNotif_accept_RatePlan_mixed_BookingRule", + "OTA_HotelRatePlanNotif_accept_Supplements", + "OTA_HotelRatePlanNotif_accept_FreeNightsOffers", + "OTA_HotelRatePlanNotif_accept_FamilyOffers", + "OTA_HotelRatePlanNotif_accept_full", + "OTA_HotelRatePlanNotif_accept_overlay", + "OTA_HotelRatePlanNotif_accept_RatePlanJoin", + "OTA_HotelRatePlanNotif_accept_OfferRule_BookingOffset", + "OTA_HotelRatePlanNotif_accept_OfferRule_DOWLOS" + ] + }, + { + "action": "action_OTA_HotelRatePlan_BaseRates", + "supports": [ + "OTA_HotelRatePlan_BaseRates_deltas" + ] + }, + { + "action": "action_OTA_HotelPostEventNotif_EventReports" + } + ] + }, + { + "version": "2022-10", + "actions": [ + { + "action": "action_OTA_Ping" + }, + { + "action": "action_OTA_Read" + }, + { + "action": "action_OTA_HotelResNotif_GuestRequests" + }, + { + "action": "action_OTA_HotelResNotif_GuestRequests_StatusUpdate" + }, + { + "action": "action_OTA_HotelInvCountNotif", + "supports": [ + "OTA_HotelInvCountNotif_accept_rooms", + "OTA_HotelInvCountNotif_accept_categories", + "OTA_HotelInvCountNotif_accept_deltas", + "OTA_HotelInvCountNotif_accept_out_of_market", + "OTA_HotelInvCountNotif_accept_out_of_order", + "OTA_HotelInvCountNotif_accept_complete_set", + "OTA_HotelInvCountNotif_accept_closing_seasons" + ] + }, + { + "action": "action_OTA_HotelDescriptiveContentNotif_Inventory", + "supports": [ + "OTA_HotelDescriptiveContentNotif_Inventory_use_rooms", + "OTA_HotelDescriptiveContentNotif_Inventory_occupancy_children" + ] + }, + { + "action": "action_OTA_HotelDescriptiveContentNotif_Info" + }, + { + "action": "action_OTA_HotelDescriptiveInfo_Inventory" + }, + { + "action": "action_OTA_HotelDescriptiveInfo_Info" + }, + + { + "action": "action_OTA_HotelRatePlanNotif_RatePlans", + "supports": [ + "OTA_HotelRatePlanNotif_accept_ArrivalDOW", + "OTA_HotelRatePlanNotif_accept_DepartureDOW", + "OTA_HotelRatePlanNotif_accept_RatePlan_BookingRule", + "OTA_HotelRatePlanNotif_accept_RatePlan_RoomType_BookingRule", + "OTA_HotelRatePlanNotif_accept_RatePlan_mixed_BookingRule", + "OTA_HotelRatePlanNotif_accept_Supplements", + "OTA_HotelRatePlanNotif_accept_FreeNightsOffers", + "OTA_HotelRatePlanNotif_accept_FamilyOffers", + "OTA_HotelRatePlanNotif_accept_overlay", + "OTA_HotelRatePlanNotif_accept_RatePlanJoin", + "OTA_HotelRatePlanNotif_accept_OfferRule_BookingOffset", + "OTA_HotelRatePlanNotif_accept_OfferRule_DOWLOS" + ] + } + ] + } + ] +} +</EchoData> +</OTA_PingRQ> diff --git a/AlpineBits-HotelData-2024-10/files/samples/Handshake/Handshake-OTA_PingRS.xml b/AlpineBits-HotelData-2024-10/files/samples/Handshake/Handshake-OTA_PingRS.xml new file mode 100644 index 0000000..d20ce94 --- /dev/null +++ b/AlpineBits-HotelData-2024-10/files/samples/Handshake/Handshake-OTA_PingRS.xml @@ -0,0 +1,272 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- + AlpineBits 2024-10 + https://www.alpinebits.org/ + + Sample message file for a Handshake response + + Changelog: + v. 2024-10 1.2 Example extended with all capabilities and two supported releases + v. 2024-10 1.1 Removed the OTA_Ping action + v. 2024-10 1.0 added supported version 2024-10 in the example + v. 2018-10 1.0 initial example +--> + +<?xml version="1.0" encoding="UTF-8"?> +<OTA_PingRS xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns="http://www.opentravel.org/OTA/2003/05" + xsi:schemaLocation="http://www.opentravel.org/OTA/2003/05 OTA_PingRS.xsd" + Version="8.000"> + <Success/> + <Warnings> + <Warning Type="11" Status="ALPINEBITS_HANDSHAKE"> + { + "versions": [ + { + "version": "2024-10", + "actions": [ + { + "action": "action_OTA_Read" + }, + { + "action": "action_OTA_HotelResNotif_GuestRequests" + }, + { + "action": "action_OTA_HotelResNotif_GuestRequests_StatusUpdate" + }, + + { + "action": "action_OTA_HotelInvCountNotif", + "supports": [ + "OTA_HotelInvCountNotif_accept_rooms", + "OTA_HotelInvCountNotif_accept_categories", + "OTA_HotelInvCountNotif_accept_deltas", + "OTA_HotelInvCountNotif_accept_out_of_market", + "OTA_HotelInvCountNotif_accept_out_of_order", + "OTA_HotelInvCountNotif_accept_complete_set", + "OTA_HotelInvCountNotif_accept_closing_seasons" + ] + }, + + { + "action": "action_OTA_HotelDescriptiveContentNotif_Inventory", + "supports": [ + "OTA_HotelDescriptiveContentNotif_Inventory_use_rooms", + "OTA_HotelDescriptiveContentNotif_Inventory_occupancy_children" + ] + }, + { + "action": "action_OTA_HotelDescriptiveContentNotif_Info" + }, + { + "action": "action_OTA_HotelDescriptiveInfo_Inventory" + }, + { + "action": "action_OTA_HotelDescriptiveInfo_Info" + }, + + { + "action": "action_OTA_HotelRatePlanNotif_RatePlans", + "supports": [ + "OTA_HotelRatePlanNotif_accept_ArrivalDOW", + "OTA_HotelRatePlanNotif_accept_DepartureDOW", + "OTA_HotelRatePlanNotif_accept_RatePlan_BookingRule", + "OTA_HotelRatePlanNotif_accept_RatePlan_RoomType_BookingRule", + "OTA_HotelRatePlanNotif_accept_RatePlan_mixed_BookingRule", + "OTA_HotelRatePlanNotif_accept_Supplements", + "OTA_HotelRatePlanNotif_accept_FreeNightsOffers", + "OTA_HotelRatePlanNotif_accept_FamilyOffers", + "OTA_HotelRatePlanNotif_accept_full", + "OTA_HotelRatePlanNotif_accept_overlay", + "OTA_HotelRatePlanNotif_accept_RatePlanJoin", + "OTA_HotelRatePlanNotif_accept_OfferRule_BookingOffset", + "OTA_HotelRatePlanNotif_accept_OfferRule_DOWLOS" + ] + }, + + + { + "action": "action_OTA_HotelRatePlan_BaseRates", + "supports": [ + "OTA_HotelRatePlan_BaseRates_deltas" + ] + }, + + { + "action": "action_OTA_HotelPostEventNotif_EventReports" + } + + ] + }, + { + "version": "2022-10", + "actions": [ + { + "action": "action_OTA_Ping" + }, + + { + "action": "action_OTA_Read" + }, + { + "action": "action_OTA_HotelResNotif_GuestRequests" + }, + { + "action": "action_OTA_HotelResNotif_GuestRequests_StatusUpdate" + } + ] + } + ] + } + </Warning> + </Warnings> + <EchoData> + { + "versions": [ + { + "version": "2024-10", + "actions": [ + { + "action": "action_OTA_Read" + }, + { + "action": "action_OTA_HotelResNotif_GuestRequests" + }, + { + "action": "action_OTA_HotelResNotif_GuestRequests_StatusUpdate" + }, + + { + "action": "action_OTA_HotelInvCountNotif", + "supports": [ + "OTA_HotelInvCountNotif_accept_rooms", + "OTA_HotelInvCountNotif_accept_categories", + "OTA_HotelInvCountNotif_accept_deltas", + "OTA_HotelInvCountNotif_accept_out_of_market", + "OTA_HotelInvCountNotif_accept_out_of_order", + "OTA_HotelInvCountNotif_accept_complete_set", + "OTA_HotelInvCountNotif_accept_closing_seasons" + ] + }, + + { + "action": "action_OTA_HotelDescriptiveContentNotif_Inventory", + "supports": [ + "OTA_HotelDescriptiveContentNotif_Inventory_use_rooms", + "OTA_HotelDescriptiveContentNotif_Inventory_occupancy_children" + ] + }, + { + "action": "action_OTA_HotelDescriptiveContentNotif_Info" + }, + { + "action": "action_OTA_HotelDescriptiveInfo_Inventory" + }, + { + "action": "action_OTA_HotelDescriptiveInfo_Info" + }, + + { + "action": "action_OTA_HotelRatePlanNotif_RatePlans", + "supports": [ + "OTA_HotelRatePlanNotif_accept_ArrivalDOW", + "OTA_HotelRatePlanNotif_accept_DepartureDOW", + "OTA_HotelRatePlanNotif_accept_RatePlan_BookingRule", + "OTA_HotelRatePlanNotif_accept_RatePlan_RoomType_BookingRule", + "OTA_HotelRatePlanNotif_accept_RatePlan_mixed_BookingRule", + "OTA_HotelRatePlanNotif_accept_Supplements", + "OTA_HotelRatePlanNotif_accept_FreeNightsOffers", + "OTA_HotelRatePlanNotif_accept_FamilyOffers", + "OTA_HotelRatePlanNotif_accept_full", + "OTA_HotelRatePlanNotif_accept_overlay", + "OTA_HotelRatePlanNotif_accept_RatePlanJoin", + "OTA_HotelRatePlanNotif_accept_OfferRule_BookingOffset", + "OTA_HotelRatePlanNotif_accept_OfferRule_DOWLOS" + ] + }, + + + { + "action": "action_OTA_HotelRatePlan_BaseRates", + "supports": [ + "OTA_HotelRatePlan_BaseRates_deltas" + ] + }, + + { + "action": "action_OTA_HotelPostEventNotif_EventReports" + } + + ] + }, + { + "version": "2022-10", + "actions": [ + { + "action": "action_OTA_Ping" + }, + + { + "action": "action_OTA_Read" + }, + { + "action": "action_OTA_HotelResNotif_GuestRequests" + }, + { + "action": "action_OTA_HotelResNotif_GuestRequests_StatusUpdate" + }, + + { + "action": "action_OTA_HotelInvCountNotif", + "supports": [ + "OTA_HotelInvCountNotif_accept_rooms", + "OTA_HotelInvCountNotif_accept_categories", + "OTA_HotelInvCountNotif_accept_deltas", + "OTA_HotelInvCountNotif_accept_out_of_market", + "OTA_HotelInvCountNotif_accept_out_of_order", + "OTA_HotelInvCountNotif_accept_complete_set", + "OTA_HotelInvCountNotif_accept_closing_seasons" + ] + }, + + { + "action": "action_OTA_HotelDescriptiveContentNotif_Inventory", + "supports": [ + "OTA_HotelDescriptiveContentNotif_Inventory_use_rooms", + "OTA_HotelDescriptiveContentNotif_Inventory_occupancy_children" + ] + }, + { + "action": "action_OTA_HotelDescriptiveContentNotif_Info" + }, + { + "action": "action_OTA_HotelDescriptiveInfo_Inventory" + }, + { + "action": "action_OTA_HotelDescriptiveInfo_Info" + }, + + { + "action": "action_OTA_HotelRatePlanNotif_RatePlans", + "supports": [ + "OTA_HotelRatePlanNotif_accept_ArrivalDOW", + "OTA_HotelRatePlanNotif_accept_DepartureDOW", + "OTA_HotelRatePlanNotif_accept_RatePlan_BookingRule", + "OTA_HotelRatePlanNotif_accept_RatePlan_RoomType_BookingRule", + "OTA_HotelRatePlanNotif_accept_RatePlan_mixed_BookingRule", + "OTA_HotelRatePlanNotif_accept_Supplements", + "OTA_HotelRatePlanNotif_accept_FreeNightsOffers", + "OTA_HotelRatePlanNotif_accept_FamilyOffers", + "OTA_HotelRatePlanNotif_accept_overlay", + "OTA_HotelRatePlanNotif_accept_RatePlanJoin", + "OTA_HotelRatePlanNotif_accept_OfferRule_BookingOffset", + "OTA_HotelRatePlanNotif_accept_OfferRule_DOWLOS" + ] + } + ] + } + ] + } + </EchoData> +</OTA_PingRS> \ No newline at end of file diff --git a/AlpineBits-HotelData-2024-10/files/samples/Inventory/Inventory-Pull-OTA_HotelDescriptiveInfoRQ-basic.xml b/AlpineBits-HotelData-2024-10/files/samples/Inventory/Inventory-Pull-OTA_HotelDescriptiveInfoRQ-basic.xml new file mode 100644 index 0000000..eef8fc2 --- /dev/null +++ b/AlpineBits-HotelData-2024-10/files/samples/Inventory/Inventory-Pull-OTA_HotelDescriptiveInfoRQ-basic.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- + AlpineBits 2022-10 + https://www.alpinebits.org/ + + Sample message file for an Inventory Basic pull request + + Changelog: + v. 2017-10 1.0 initial example +--> + +<OTA_HotelDescriptiveInfoRQ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns="http://www.opentravel.org/OTA/2003/05" + xsi:schemaLocation="http://www.opentravel.org/OTA/2003/05 OTA_HotelDescriptiveInfoRQ.xsd" + Version="3.000"> + + <HotelDescriptiveInfos> + <HotelDescriptiveInfo HotelCode="123" HotelName="Frangart Inn"/> + </HotelDescriptiveInfos> + +</OTA_HotelDescriptiveInfoRQ> diff --git a/AlpineBits-HotelData-2024-10/files/samples/Inventory/Inventory-Pull-OTA_HotelDescriptiveInfoRQ-hotelinfo.xml b/AlpineBits-HotelData-2024-10/files/samples/Inventory/Inventory-Pull-OTA_HotelDescriptiveInfoRQ-hotelinfo.xml new file mode 100644 index 0000000..808135c --- /dev/null +++ b/AlpineBits-HotelData-2024-10/files/samples/Inventory/Inventory-Pull-OTA_HotelDescriptiveInfoRQ-hotelinfo.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- + AlpineBits 2022-10 + https://www.alpinebits.org/ + + Sample message file for an Inventory HotelInfo pull request + + Changelog: + v. 2017-10 1.0 initial example +--> + +<OTA_HotelDescriptiveInfoRQ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns="http://www.opentravel.org/OTA/2003/05" + xsi:schemaLocation="http://www.opentravel.org/OTA/2003/05 OTA_HotelDescriptiveInfoRQ.xsd" + Version="3.000"> + + <HotelDescriptiveInfos> + <HotelDescriptiveInfo HotelCode="123" HotelName="Frangart Inn"/> + </HotelDescriptiveInfos> + +</OTA_HotelDescriptiveInfoRQ> diff --git a/AlpineBits-HotelData-2024-10/files/samples/Inventory/Inventory-Pull-OTA_HotelDescriptiveInfoRS-basic.xml b/AlpineBits-HotelData-2024-10/files/samples/Inventory/Inventory-Pull-OTA_HotelDescriptiveInfoRS-basic.xml new file mode 100644 index 0000000..115f42b --- /dev/null +++ b/AlpineBits-HotelData-2024-10/files/samples/Inventory/Inventory-Pull-OTA_HotelDescriptiveInfoRS-basic.xml @@ -0,0 +1,152 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- + AlpineBits 2022-10 + https://www.alpinebits.org/ + + Sample message file for an Inventory Basic pull response + + Changelog: + v. 2015-07 1.0 initial example +--> + +<OTA_HotelDescriptiveInfoRS xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns="http://www.opentravel.org/OTA/2003/05" + xsi:schemaLocation="http://www.opentravel.org/OTA/2003/05 OTA_HotelDescriptiveInfoRS.xsd" + Version="8.000"> + + <Success/> + + <HotelDescriptiveContents> + + <HotelDescriptiveContent HotelCode="123" HotelName="Frangart Inn"> + + <FacilityInfo> + + <GuestRooms> + + <!-- This element defines a category and contains its basic description --> + + <GuestRoom Code="DZ" MaxOccupancy="2" MinOccupancy="1" MaxChildOccupancy="1"> + + <!-- RoomClassificationCode = "42" means Room, 13 Apartment, see OTA table GRI --> + + <TypeRoom StandardOccupancy="2" RoomClassificationCode="42"/> + + <Amenities> + + <!-- 26 means Crib, see OTA table RMA --> + + <Amenity RoomAmenityCode="26"/> + + </Amenities> + + <MultimediaDescriptions> + + <MultimediaDescription InfoCode="25"> + + <TextItems> + + <TextItem> + + <Description TextFormat="PlainText" Language="en">Double room</Description> + + <Description TextFormat="PlainText" Language="de">Doppelzimmer</Description> + + <Description TextFormat="PlainText" Language="it">Camera doppia</Description> + + </TextItem> + + </TextItems> + + </MultimediaDescription> + + <MultimediaDescription InfoCode="1"> + + <TextItems> + + <TextItem> + + <Description TextFormat="PlainText" Language="en">Description of the double room.</Description> + + <Description TextFormat="PlainText" Language="de">Doppelzimmer Beschreibung.</Description> + + <Description TextFormat="PlainText" Language="it">Descrizione della camera doppia.</Description> + + </TextItem> + + </TextItems> + + </MultimediaDescription> + + <MultimediaDescription InfoCode="23"> + + <ImageItems> + + <!-- 6 means Guest room, see OTA table PIC --> + + <ImageItem Category="6"> + + <ImageFormat CopyrightNotice="Copyright notice 2015"> + + <URL>https://www.example.com/image.jpg</URL> + + </ImageFormat> + + <Description TextFormat="PlainText" Language="en">Picture of the room</Description> + + <Description TextFormat="PlainText" Language="de">Zimmerbild</Description> + + <Description TextFormat="PlainText" Language="it">Immagine della stanza</Description> + + </ImageItem> + + </ImageItems> + + </MultimediaDescription> + + </MultimediaDescriptions> + + </GuestRoom> + + <!-- Following elements define the single Rooms that belong to the Category --> + + <GuestRoom Code="DZ"> + + <TypeRoom RoomID="101"/> + + </GuestRoom> + + <GuestRoom Code="DZ"> + + <TypeRoom RoomID="102"/> + + </GuestRoom> + + <GuestRoom Code="DZ"> + + <TypeRoom RoomID="103"/> + + </GuestRoom> + + <GuestRoom Code="DZ"> + + <TypeRoom RoomID="104"/> + + </GuestRoom> + + <GuestRoom Code="DZ"> + + <TypeRoom RoomID="105"/> + + </GuestRoom> + + </GuestRooms> + + </FacilityInfo> + + </HotelDescriptiveContent> + + </HotelDescriptiveContents> + +</OTA_HotelDescriptiveInfoRS> diff --git a/AlpineBits-HotelData-2024-10/files/samples/Inventory/Inventory-Pull-OTA_HotelDescriptiveInfoRS-hotelinfo.xml b/AlpineBits-HotelData-2024-10/files/samples/Inventory/Inventory-Pull-OTA_HotelDescriptiveInfoRS-hotelinfo.xml new file mode 100644 index 0000000..7350dca --- /dev/null +++ b/AlpineBits-HotelData-2024-10/files/samples/Inventory/Inventory-Pull-OTA_HotelDescriptiveInfoRS-hotelinfo.xml @@ -0,0 +1,356 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- + AlpineBits 2022-10 + https://www.alpinebits.org/ + + Sample message file for an Inventory HotelInfo pull response + + Changelog: + v. 2017-10 1.0 initial example +--> + +<OTA_HotelDescriptiveInfoRS xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns="http://www.opentravel.org/OTA/2003/05" + xsi:schemaLocation="http://www.opentravel.org/OTA/2003/05 OTA_HotelDescriptiveInfoRS.xsd" + Version="3.000"> + + <Success/> + + <HotelDescriptiveContents> + + <!-- + HotelCode: Is the sender unique ID of the Property. + AreaID: Unique id that identify a city/location. + Could be used the GeoNames code as common reference. + --> + <HotelDescriptiveContent HotelCode="123" HotelName="Frangart Inn" AreaID="3181913" > + + <HotelInfo> + + <!-- type of propriety like: Hotel, B&B, Chalet... --> + <CategoryCodes> + <!-- + CodeDetail attribute: is composed by 2 elements separated by colon. CustomPropertyTypeTable_Value:ClassValue + CustomPropertyTypeTable_Value: composition of 'CustomPropertyTypeTable' intended as the name of a custom property type table, the `_` char is used as separator and the value of the table that identify the property type. Partners are freely to use and share theirs own table + ClassValue: intended as the property class value. Es. `4` for 4 stars or `4s` for superior 4 stars properties + --> + <HotelCategory CodeDetail="ASTAT2020_11:4s"/> <!-- String 128 chars --> + </CategoryCodes> + + <!-- descriptive elements of the propriety - see OTA code table for information codes (INF) --> + <Descriptions> + <!-- may contain MultimediaDescriptions --> + <MultimediaDescriptions> + + <!-- + at least one MultimediaDescription + for InfoCode see INF table. + Es. + 1 = description + 17 = short desc. + 23 = pictures + 24 = video + --> + + <!-- InfoCode="17" for short description --> + <MultimediaDescription InfoCode="17"> + <TextItems> + <!-- SourceID: Unique identifier for each Description content --> + <TextItem SourceID="56757e0211b70d37910f407fb6f657fa" CopyrightNotice="Hotel copyright"> + <Description Language="en" TextFormat="PlainText">A short description</Description> + </TextItem> + <TextItem SourceID="56757e0211b70d37910f407fb6f657fb" CopyrightNotice="Hotel copyright"> + <Description Language="de" TextFormat="PlainText">kurze beschreibung</Description> + </TextItem> + <TextItem SourceID="56757e0211b70d37910f407fb6f657fc" CopyrightNotice="Hotel copyright"> + <Description Language="it" TextFormat="PlainText">Descrizione Breve</Description> + </TextItem> + </TextItems> + </MultimediaDescription> + + <!-- InfoCode="1" for long description --> + <MultimediaDescription InfoCode="1"> + <TextItems> + <TextItem SourceID="56757e0211b70d37910f407fb6f657fd" CopyrightNotice="Other copyright"> + <Description Language="en" TextFormat="HTML">A long description</Description> + </TextItem> + <TextItem SourceID="56757e0211b70d37910f407fb6f657fe" CopyrightNotice="Other copyright"> + <Description Language="de" TextFormat="HTML">erweiterte Beschreibung</Description> + </TextItem> + <TextItem SourceID="56757e0211b70d37910f407fb6f657ff" CopyrightNotice="Other copyright"> + <Description Language="it" TextFormat="PlainText">Descrizione lunga</Description> + </TextItem> + </TextItems> + </MultimediaDescription> + + <!-- hotel pictures --> + <MultimediaDescription InfoCode="23"> + <!-- + Category: picture elements of the propriety - see OTA code table for picture category codes (PIC) + Es. + 1 = Exterior View + 2 = Lobby View + 4 = Restaurant + 12 = Spa + 15 = Logo + 22 = Property Amenity + --> + <ImageItems> + <!-- hotel Logo --> + <ImageItem Category="15"> + <!-- SourceID: Unique identifier for each image file --> + <ImageFormat Title="Title 64 chars length" CopyrightNotice="Image copyright" SourceID="56757e0211b70d37910f407fb6f657fa"> + <URL>https://..../HotelLogo.jpg</URL> + </ImageFormat> + <Description TextFormat="PlainText" Language="en">Logo AlpineBits Hotel Resort</Description> + <Description TextFormat="PlainText" Language="de">Logo AlpineBits Hotel Resort</Description> + <Description TextFormat="PlainText" Language="it">Logo AlpineBits Hotel Resort</Description> + </ImageItem> + + <!-- example: exterior picture applicable from Sep 30 to Mar 30 for seasonal pictures --> + <ImageItem Category="1"> + <ImageFormat Title="Title 64 chars length" CopyrightNotice="Image copyright" SourceID="56757e0211b70d37910f407fb6f657fb" + ApplicableStart="--09-30" ApplicableEnd="--03-30"> + <URL>https://..../HotelExteriorWinterView.jpg</URL> + </ImageFormat> + <Description TextFormat="PlainText" Language="en">Image description</Description> + </ImageItem> + + </ImageItems> + + </MultimediaDescription> + + <!-- hotel Videos --> + <MultimediaDescription InfoCode="24"> + + <VideoItems> + <!-- one or more video --> + <VideoItem Category="12"> + <!-- SourceID: Unique identifier for each video file --> + <VideoFormat Title="Title 64 chars length" CopyrightNotice="Video copyright" SourceID="56757e0211b70d37910f407fb6f657fa"> + <URL>https://..../HotelVideo.mp4</URL> + </VideoFormat> + <Description TextFormat="PlainText" Language="en">Video AlpineBits Hotel Resort</Description> + <Description TextFormat="PlainText" Language="de">Video AlpineBits Hotel Resort</Description> + <Description TextFormat="PlainText" Language="it">Video AlpineBits Hotel Resort</Description> + </VideoItem> + </VideoItems> + + </MultimediaDescription> + </MultimediaDescriptions> + + </Descriptions> + + <!-- geo position + For AltitudeUnitOfMeasureCode attribute see UOM CodeList. 3 = Meters, could be assume all altitudes are in meters. + --> + <Position Altitude="200" AltitudeUnitOfMeasureCode="3" Latitude="46.1372647" Longitude="12.2011353"/> + + <!-- hotel amenities --> + <Services> + <!-- + hotel level facilities / services - see OTA code table for hotel amenity codes (HAC) + Es. + 47=Accessible facilities + 68=Parking + 224=Pet allowed + 76=Restaurant + 118=BBQ Grill + Proximity code (PRX) describe where the service is located + Es. + 1=Onsite + 2=Offsite + 3=Nearby + 4=Info not Available + 5=Onsite and Offsite + --> + <Service Code="68" Included="false" ProximityCode="2"/> + <Service Code="224" Included="false" ProximityCode="1"/> + <Service Code="118" Included="true" ProximityCode="1"/> + <Service Code="76" Included="false" ProximityCode="1"/> + <Service Code="47" ProximityCode="3"> + <Features> + <!-- See PHY Disability Feature Code + Es. + 8=Accessible Parking + 49=Ramp Access + 56=Elevator near accessible rooms + --> + <Feature AccessibleCode="8"/> + <Feature AccessibleCode="49"/> + </Features> + </Service> + + </Services> + + </HotelInfo> + + <!-- Policies: check-in and check_out period, min guest age, ... --> + <Policies> + <Policy> + <CancelPolicy> + <CancelPenalty> + <!-- Describe cancellation policies --> + <PenaltyDescription> + <Text TextFormat="PlainText" Language="en">You will pay the entire vacation if you don't cancel 2 days before arrival</Text> + <Text TextFormat="PlainText" Language="it">Cancellazione gratuita fino a 48 ore dalla partenza, poi verrà accreditato il 100% dell'importo</Text> + </PenaltyDescription> + </CancelPenalty> + </CancelPolicy> + </Policy> + + <Policy> + <CheckoutCharges> + <!-- Useful for apartments cleaning service --> + <CheckoutCharge Amount="10000" CurrencyCode="EUR" DecimalPlaces="2"> + <Description> + <Text TextFormat="PlainText" Language="en">Will be charged 100€ for cleaning</Text> + <Text TextFormat="PlainText" Language="it">Verranno addebitati 100€ per le pulizie</Text> + </Description> + </CheckoutCharge> + </CheckoutCharges> + </Policy> + + <Policy> + <PetsPolicies> + <!-- + For proprieties that allow pets and charge the vacation. + NonRefundableFee is for pet/room + ChargeCode: 1=daily, 12=per Stay. see CHG code list + --> + <PetsPolicy MaxPetQuantity="2" NonRefundableFee="2000" ChargeCode="1" CurrencyCode="EUR" DecimalPlaces="2"> + <Description> + <Text TextFormat="PlainText" Language="en">it's possible to bring 2 pets per room. A supplement of € 20 / day will be applied for each animal</Text> + <Text TextFormat="PlainText" Language="it">E' possibile portare 2 animali da compagnia per stanza. Per ogni animale verrà applicato un supplemento di 20€/giorno</Text> + </Description> + </PetsPolicy> + </PetsPolicies> + </Policy> + + <Policy> + <TaxPolicies> + <!-- + City Tax/ Ortstaxe + ChargeFrequency: 1 = Daily. See (CHG) CodeList + ChargeUnit: 21=Per Person/night. See (CHG) CodeList + Code: 3=City Tax (Fee Tax Type FTT) + --> + <TaxPolicy ChargeFrequency="1" ChargeUnit="21" Amount="200" CurrencyCode="EUR" DecimalPlaces="2" Code="3"> + <TaxDescription> + <Text TextFormat="PlainText" Language="en">City Tax: 2€ a person a day</Text> + <Text TextFormat="PlainText" Language="it">Tassa di soggiorno:2€ a ospite al giorno</Text> + </TaxDescription> + </TaxPolicy> + </TaxPolicies> + </Policy> + + <Policy> + <!-- Payment accepted: we accept V**A, MAS*****RD.. cash.. --> + <GuaranteePaymentPolicy> + <GuaranteePayment> + + <AcceptedPayments> + <AcceptedPayment> + <BankAcct> + <BankAcctName>My Bank</BankAcctName> + <BankAcctNumber> + <PlainText>IBAN12345</PlainText> + </BankAcctNumber> + <BankID> + <PlainText>SWIFT123</PlainText> + </BankID> + </BankAcct> + </AcceptedPayment> + + <AcceptedPayment> + <Cash CashIndicator="true"/> + </AcceptedPayment> + + <AcceptedPayment> + <PaymentCard CardCode="AX"/> + </AcceptedPayment> + <AcceptedPayment> + <PaymentCard CardCode="MC"/> + </AcceptedPayment> + <AcceptedPayment> + <PaymentCard CardCode="VI"/> + </AcceptedPayment> + + </AcceptedPayments> + + <!-- caparra/deposit --> + <AmountPercent Percent="30"/> + <Deadline OffsetDropTime="AfterBooking" OffsetTimeUnit="Day" OffsetUnitMultiplier="0"/> + </GuaranteePayment> + </GuaranteePaymentPolicy> + </Policy> + + <Policy> + <PolicyInfo MinGuestAge="6"></PolicyInfo> + </Policy> + + <Policy> + <!-- Check-in and Check-out range --> + <StayRequirements> + <StayRequirement StayContext="Checkin" Start="15:00:00" End="20:00:00"/> + <StayRequirement StayContext="Checkout" Start="06:00:00" End="10:00:00"/> + </StayRequirements> + </Policy> + + </Policies> + + <!-- Scale value depends by the review provider. See provider's documentation --> + <AffiliationInfo> + <Awards> + <Award Rating="95" Provider="TRUSTYOU" OfficialAppointmentInd="false"/> + </Awards> + </AffiliationInfo> + + <!-- ContactInfos: this element has been restricted in AlpineBits 2022-10 --> + <ContactInfos> + <!-- Location must be "6" ("Hotel direct contact" according to OTA code table for type codes (CON)) --> + <ContactInfo Location="6"> + <Addresses> + <Address Language="it"> + <AddressLine>Via AlpineBits 16</AddressLine> + <CityName>Bolzano</CityName> + <PostalCode>23030</PostalCode> + <StateProv StateCode="BZ"/> + <CountryName Code="IT"/> + </Address> + <Address Language="de"> + <AddressLine>AlpineBitsstraße 16</AddressLine> + <CityName>Bozen</CityName> + <PostalCode>23030</PostalCode> + <StateProv StateCode="BZ"/> + <CountryName Code="IT"/> + </Address> + <Address Language="en"> + <AddressLine>AlpineBits Street 16</AddressLine> + <CityName>Bolzano</CityName> + <PostalCode>23030</PostalCode> + <StateProv StateCode="BZ"/> + <CountryName Code="IT"/> + </Address> + </Addresses> + <Phones> + <Phone PhoneTechType="1" PhoneNumber="+3903720000000"/> + <Phone PhoneTechType="3" PhoneNumber="+3903400000000"/> + </Phones> + <Emails> + <!-- EmailType: 5 = Property --> + <Email EmailType="5">info@alpinebitsHotel.it</Email> + </Emails> + <URLs> + <URL>https://www.alpinebitsHotel.it</URL> + <URL ID="FACEBOOK">https://www.facebook.com/alpinebitsHotel</URL> + </URLs> + <CompanyName/> + </ContactInfo> + </ContactInfos> + + </HotelDescriptiveContent> + </HotelDescriptiveContents> + +</OTA_HotelDescriptiveInfoRS> diff --git a/AlpineBits-HotelData-2024-10/files/samples/Inventory/Inventory-Push-OTA_HotelDescriptiveContentNotifRQ-basic.xml b/AlpineBits-HotelData-2024-10/files/samples/Inventory/Inventory-Push-OTA_HotelDescriptiveContentNotifRQ-basic.xml new file mode 100644 index 0000000..cbdc5df --- /dev/null +++ b/AlpineBits-HotelData-2024-10/files/samples/Inventory/Inventory-Push-OTA_HotelDescriptiveContentNotifRQ-basic.xml @@ -0,0 +1,109 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- + AlpineBits 2022-10 + https://www.alpinebits.org/ + + Sample message file for an Inventory Basic request to push room information + + Changelog: + v. 2022-10 1.1 reformatting + v. 2015-07 1.0 initial example +--> + +<OTA_HotelDescriptiveContentNotifRQ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns="http://www.opentravel.org/OTA/2003/05" + xsi:schemaLocation="http://www.opentravel.org/OTA/2003/05 OTA_HotelDescriptiveContentNotifRQ.xsd" + Version="8.000"> + + <HotelDescriptiveContents> + + <HotelDescriptiveContent HotelCode="123" HotelName="Frangart Inn"> + + <FacilityInfo> + + <GuestRooms> + + <!-- This element defines a category and contains its basic description --> + <GuestRoom Code="DZ" MaxOccupancy="2" MinOccupancy="1" MaxChildOccupancy="1"> + + <!-- RoomClassificationCode = "42" means Room, 13 Apartment, see OTA table GRI --> + <TypeRoom StandardOccupancy="2" RoomClassificationCode="42"/> + + <Amenities> + + <!-- 26 means Crib, see OTA table RMA --> + <Amenity RoomAmenityCode="26"/> + + </Amenities> + + <MultimediaDescriptions> + + <MultimediaDescription InfoCode="25"> + <TextItems> + <TextItem> + <Description TextFormat="PlainText" Language="en">Double room</Description> + <Description TextFormat="PlainText" Language="de">Doppelzimmer</Description> + <Description TextFormat="PlainText" Language="it">Camera doppia</Description> + </TextItem> + </TextItems> + </MultimediaDescription> + + <MultimediaDescription InfoCode="1"> + <TextItems> + <TextItem> + <Description TextFormat="PlainText" Language="en">Description of the double room.</Description> + <Description TextFormat="PlainText" Language="de">Doppelzimmer Beschreibung.</Description> + <Description TextFormat="PlainText" Language="it">Descrizione della camera doppia.</Description> + </TextItem> + </TextItems> + </MultimediaDescription> + + <MultimediaDescription InfoCode="23"> + <ImageItems> + + <!-- 6 means Guest room, see OTA table PIC --> + <ImageItem Category="6"> + <ImageFormat CopyrightNotice="Copyright notice 2015"> + <URL>https://www.example.com/image.jpg</URL> + </ImageFormat> + <Description TextFormat="PlainText" Language="en">Picture of the room</Description> + <Description TextFormat="PlainText" Language="de">Zimmerbild</Description> + <Description TextFormat="PlainText" Language="it">Immagine della stanza</Description> + </ImageItem> + </ImageItems> + </MultimediaDescription> + </MultimediaDescriptions> + + </GuestRoom> + + <!-- Following elements define the single Rooms that belong to the Category --> + <GuestRoom Code="DZ"> + <TypeRoom RoomID="101"/> + </GuestRoom> + + <GuestRoom Code="DZ"> + <TypeRoom RoomID="102"/> + </GuestRoom> + + <GuestRoom Code="DZ"> + <TypeRoom RoomID="103"/> + </GuestRoom> + + <GuestRoom Code="DZ"> + <TypeRoom RoomID="104"/> + </GuestRoom> + + <GuestRoom Code="DZ"> + <TypeRoom RoomID="105"/> + </GuestRoom> + + </GuestRooms> + + </FacilityInfo> + + </HotelDescriptiveContent> + + </HotelDescriptiveContents> + +</OTA_HotelDescriptiveContentNotifRQ> diff --git a/AlpineBits-HotelData-2024-10/files/samples/Inventory/Inventory-Push-OTA_HotelDescriptiveContentNotifRQ-delete-all.xml b/AlpineBits-HotelData-2024-10/files/samples/Inventory/Inventory-Push-OTA_HotelDescriptiveContentNotifRQ-delete-all.xml new file mode 100644 index 0000000..dc4f19e --- /dev/null +++ b/AlpineBits-HotelData-2024-10/files/samples/Inventory/Inventory-Push-OTA_HotelDescriptiveContentNotifRQ-delete-all.xml @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- + AlpineBits 2022-10 + https://www.alpinebits.org/ + + Sample message file for an Inventory HotelInfo request to push a deletion + + Changelog: + v. 2022-10 1.1 reformatting + v. 2017-10 1.0 initial example +--> + +<OTA_HotelDescriptiveContentNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Version="5.000" + TimeStamp="2014-10-16T17:00:40" + xsi:schemaLocation="http://www.opentravel.org/OTA/2003/05 OTA_HotelDescriptiveContentNotifRQ.xsd"> + + <HotelDescriptiveContents> + + <HotelDescriptiveContent HotelCode="9996"> + + <FacilityInfo> + <GuestRooms> + </GuestRooms> + </FacilityInfo> + + </HotelDescriptiveContent> + + </HotelDescriptiveContents> + +</OTA_HotelDescriptiveContentNotifRQ> diff --git a/AlpineBits-HotelData-2024-10/files/samples/Inventory/Inventory-Push-OTA_HotelDescriptiveContentNotifRQ-hotelInfo-with-contact-infos.xml b/AlpineBits-HotelData-2024-10/files/samples/Inventory/Inventory-Push-OTA_HotelDescriptiveContentNotifRQ-hotelInfo-with-contact-infos.xml new file mode 100644 index 0000000..1144c82 --- /dev/null +++ b/AlpineBits-HotelData-2024-10/files/samples/Inventory/Inventory-Push-OTA_HotelDescriptiveContentNotifRQ-hotelInfo-with-contact-infos.xml @@ -0,0 +1,42 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- + AlpineBits 2022-10 + https://www.alpinebits.org/ + + Sample message file for an Inventory HotelInfo request to push contact information + + Changelog: + v. 2022-10 1.1 reformatting + v. 2018-10 1.0 initial example +--> + +<OTA_HotelDescriptiveContentNotifRQ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns="http://www.opentravel.org/OTA/2003/05" + xsi:schemaLocation="http://www.opentravel.org/OTA/2003/05 OTA_HotelDescriptiveContentNotifRQ.xsd" + Version="8.000"> + + <HotelDescriptiveContents> + + <HotelDescriptiveContent HotelCode="123" HotelName="Frangart Inn"> + + <ContactInfos> + + <!-- Location must be "6" ("Hotel direct contact" according to OTA code table for type codes (CON)) --> + <ContactInfo Location="6"> + <URLs> + <URL ID="WEBSITE">httpss://www.alpinebits.org/</URL> + <URL ID="FACEBOOK">httpss://www.facebook.com/alpinebits/</URL> + <URL ID="TWITTER">httpss://twitter.com/hashtag/alpinebits</URL> + <URL ID="TRUSTYOU">id:12345678-1nvalid</URL> + <URL ID="YOUTUBE">httpss://www.youtube.com/user/AlpineBits</URL> + </URLs> + </ContactInfo> + + </ContactInfos> + + </HotelDescriptiveContent> + + </HotelDescriptiveContents> + +</OTA_HotelDescriptiveContentNotifRQ> diff --git a/AlpineBits-HotelData-2024-10/files/samples/Inventory/Inventory-Push-OTA_HotelDescriptiveContentNotifRQ-hotelInfo-with-roomtype.xml b/AlpineBits-HotelData-2024-10/files/samples/Inventory/Inventory-Push-OTA_HotelDescriptiveContentNotifRQ-hotelInfo-with-roomtype.xml new file mode 100644 index 0000000..30b4203 --- /dev/null +++ b/AlpineBits-HotelData-2024-10/files/samples/Inventory/Inventory-Push-OTA_HotelDescriptiveContentNotifRQ-hotelInfo-with-roomtype.xml @@ -0,0 +1,66 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- + AlpineBits 2022-10 + https://www.alpinebits.org/ + + Sample message file for an Inventory HotelInfo request to push room information with RoomType + + Changelog: + v. 2022-10 1.1 reformatting + v. 2018-10 1.0 initial example +--> + +<OTA_HotelDescriptiveContentNotifRQ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns="http://www.opentravel.org/OTA/2003/05" + xsi:schemaLocation="http://www.opentravel.org/OTA/2003/05 OTA_HotelDescriptiveContentNotifRQ.xsd" + Version="8.000"> + + <HotelDescriptiveContents> + + <HotelDescriptiveContent HotelCode="123" HotelName="Frangart Inn"> + + <FacilityInfo> + + <GuestRooms> + + <GuestRoom Code="EZ" MinOccupancy="1" MaxOccupancy="1"> + + <!-- RoomType 8 and RoomClassificationCode 5 means "camping ground/pitch" (see section 4.4) --> + <TypeRoom StandardOccupancy="1" RoomClassificationCode="5" RoomType="8" /> + + <Amenities> + <Amenity RoomAmenityCode="7"/> + <Amenity RoomAmenityCode="10"/> + <Amenity RoomAmenityCode="16"/> + <Amenity RoomAmenityCode="50"/> + <Amenity RoomAmenityCode="92"/> + <Amenity RoomAmenityCode="203"/> + <Amenity RoomAmenityCode="251"/> + <Amenity RoomAmenityCode="268"/> + <Amenity RoomAmenityCode="276"/> + </Amenities> + + <MultimediaDescriptions> + <MultimediaDescription InfoCode="25"> + <TextItems> + <TextItem> + <Description Language="de" TextFormat="PlainText">Zeltplatz</Description> + <Description Language="en" TextFormat="PlainText">piazzola</Description> + <Description Language="it" TextFormat="PlainText">pitch</Description> + </TextItem> + </TextItems> + </MultimediaDescription> + </MultimediaDescriptions> + + </GuestRoom> + + </GuestRooms> + + </FacilityInfo> + + </HotelDescriptiveContent> + + </HotelDescriptiveContents> + +</OTA_HotelDescriptiveContentNotifRQ> diff --git a/AlpineBits-HotelData-2024-10/files/samples/Inventory/Inventory-Push-OTA_HotelDescriptiveContentNotifRQ-hotelInfo.xml b/AlpineBits-HotelData-2024-10/files/samples/Inventory/Inventory-Push-OTA_HotelDescriptiveContentNotifRQ-hotelInfo.xml new file mode 100644 index 0000000..9e0f545 --- /dev/null +++ b/AlpineBits-HotelData-2024-10/files/samples/Inventory/Inventory-Push-OTA_HotelDescriptiveContentNotifRQ-hotelInfo.xml @@ -0,0 +1,373 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- + AlpineBits 2022-10 + https://www.alpinebits.org/ + + Sample message file for an Inventory HotelInfo request to push hotel data + + Changelog: + v. 2022-10 1.1 reformatting + v. 2017-10 1.0 initial example +--> + +<OTA_HotelDescriptiveContentNotifRQ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns="http://www.opentravel.org/OTA/2003/05" + xsi:schemaLocation="http://www.opentravel.org/OTA/2003/05 OTA_HotelDescriptiveContentNotifRQ.xsd" + Version="8.000"> + + <HotelDescriptiveContents> + + <!-- + HotelCode: Is the sender unique ID of the Property. + HotelName: The Name of the property + AreaID: Unique id that identify a city/location. + For Example, could be used the GeoNames code as common reference. + --> + <HotelDescriptiveContent HotelCode="123" HotelName="Frangart Inn" AreaID="3181913" > + + <HotelInfo> + + <!-- type of propriety like: Hotel, B&B, Chalet... --> + + <CategoryCodes> + + <!-- + CodeDetail attribute: is composed by 2 elements separated by colon. CustomPropertyTypeTable_Value:ClassValue + CustomPropertyTypeTable_Value: composition of 'CustomPropertyTypeTable' intended as the name of a custom property type table, the `_` char is used as separator and the value of the table that identify the property type. Partners are freely to use and share theirs own table + ClassValue: intended as the property class value. Es. `4` for 4 stars or `4s` for superior 4 stars properties + --> + <HotelCategory CodeDetail="ASTAT2020_11:4s"/> <!-- String 128 chars --> + </CategoryCodes> + + <!-- descriptive elements of the propriety - see OTA code table for information codes (INF) --> + <Descriptions> + + <!-- may contain one MultimediaDescriptions --> + <MultimediaDescriptions> + + <!-- + at least one MultimediaDescription + for InfoCode see INF table. + Es. + 1 = description + 17 = Short Desc. + 23 = pictures + --> + + <!-- InfoCode="17" for short description --> + <MultimediaDescription InfoCode="17"> + <TextItems> + <TextItem CopyrightNotice="Hotel copyright"> + <Description Language="en" TextFormat="PlainText">A short description</Description> + </TextItem> + <TextItem CopyrightNotice="Hotel copyright"> + <Description Language="de" TextFormat="PlainText">kurze beschreibung</Description> + </TextItem> + <TextItem CopyrightNotice="Hotel copyright"> + <Description Language="it" TextFormat="PlainText">Descrizione Breve</Description> + </TextItem> + </TextItems> + </MultimediaDescription> + + <!-- InfoCode="1" for long description --> + <MultimediaDescription InfoCode="1"> + <TextItems> + <TextItem CopyrightNotice="Other copyright"> + <Description Language="en" TextFormat="PlainText">A long description</Description> + </TextItem> + <TextItem CopyrightNotice="Other copyright"> + <Description Language="de" TextFormat="PlainText">erweiterte Beschreibung</Description> + </TextItem> + <TextItem CopyrightNotice="Other copyright"> + <Description Language="it" TextFormat="PlainText">Descrizione lunga</Description> + </TextItem> + </TextItems> + </MultimediaDescription> + + <!-- hotel pictures --> + <MultimediaDescription InfoCode="23"> + <!-- + Category: picture elements of the propriety - see OTA code table for picture category codes (PIC) + Es. + 1 = Exterior View + 2 = Lobby View + 4 = Restaurant + 12 = Spa + 15 = Logo + 22 = Property Amenity + --> + <ImageItems> + + <!-- hotel Logo --> + + <ImageItem Category="15"> + + <!-- SourceID: Unique identifier for each image file --> + <ImageFormat CopyrightNotice="Image copyright" SourceID="56757e0211b70d379107707fb6f657fa"> + <URL>https://..../HotelLogo.jpg</URL> + </ImageFormat> + <Description TextFormat="PlainText" Language="en">Logo Frangart Inn</Description> + <Description TextFormat="PlainText" Language="de">Logo Frangart Inn</Description> + <Description TextFormat="PlainText" Language="it">Logo Frangart Inn</Description> + </ImageItem> + + <!-- example: exterior picture applicable from Sep 30 to Mar 30 for seasonal pictures --> + <ImageItem Category="1"> + <ImageFormat CopyrightNotice="Image copyright" SourceID="56757e0211440d37910f407fb6f657fb" ApplicableStart="--09-30" ApplicableEnd="--03-30"> + <URL>https://..../HotelExteriorWinterView.jpg</URL> + </ImageFormat> + <Description TextFormat="PlainText" Language="en">Image description</Description> + </ImageItem> + + </ImageItems> + + </MultimediaDescription> + + <!-- hotel Videos --> + <MultimediaDescription InfoCode="24"> + + <VideoItems> + + <!-- one or more video --> + + <VideoItem Category="12"> + + <!-- SourceID: Unique identifier for each video file --> + <VideoFormat CopyrightNotice="Video copyright" SourceID="56757e0211b70887910f407fb6f657fa"> + <URL>https://..../HotelVideo.mp4</URL> + </VideoFormat> + <Description TextFormat="PlainText" Language="en">Video Frangart Inn</Description> + <Description TextFormat="PlainText" Language="de">Video Frangart Inn</Description> + <Description TextFormat="PlainText" Language="it">Video Frangart Inn</Description> + </VideoItem> + </VideoItems> + + </MultimediaDescription> + </MultimediaDescriptions> + + </Descriptions> + + <!-- geo position + For AltitudeUnitOfMeasureCode attribute see UOM CodeList. 3 = Meters, could be assume all altitudes are in meters. + --> + <Position Altitude="200" AltitudeUnitOfMeasureCode="3" Latitude="46.1372647" Longitude="12.2011353"/> + + <!-- hotel amenities --> + + <Services> + <!-- + hotel level facilities / services - see OTA code table for hotel amenity codes (HAC) + Es. + 47=Accessible facilities + 68=Parking + 224=Pet allowed + 76=Restaurant + 118=BBQ Grill + Proximity code (PRX) describe where the service is located + Es. + 1=Onsite + 2=Offsite + 3=Nearby + 4=Info not Available + 5=Onsite and Offsite + --> + <Service Code="68" ProximityCode="2"/> + <Service Code="224" ProximityCode="1"/> + <Service Code="118" ProximityCode="1"/> + <Service Code="76" ProximityCode="1"/> + <Service Code="47" ProximityCode="3"> + + <Features> + <!-- See PHY Disability Feature Code + Es. + 8=Accessible Parking + 49=Ramp Access + 56=Elevator near accessible rooms + --> + <Feature AccessibleCode="8"/> + <Feature AccessibleCode="49"/> + </Features> + + </Service> + + <Service Code="342" MealPlanCode="12" Included="true" ProximityCode="1"/> + + </Services> + + </HotelInfo> + + <!-- Policies: check-in and check_out period, min guest age, ... --> + <Policies> + <Policy> + <CancelPolicy> + <CancelPenalty> + <!-- Describe cancellation policies --> + <PenaltyDescription> + <Text TextFormat="PlainText" Language="en">You will pay the entire vacation if you don't cancel 2 days before check-in</Text> + <Text TextFormat="PlainText" Language="it">Cancellazione gratuita fino a 48 ore dal check-in, poi verrà addebitato il 100% dell'importo</Text> + </PenaltyDescription> + </CancelPenalty> + </CancelPolicy> + </Policy> + + <Policy> + <CheckoutCharges> + <!-- Useful for apartments cleaning service --> + <CheckoutCharge Amount="100" CurrencyCode="EUR"> + <Description> + <Text TextFormat="PlainText" Language="en">Will be charged 100€ for cleaning</Text> + <Text TextFormat="PlainText" Language="it">Verranno addebitati 100€ per le pulizie</Text> + </Description> + </CheckoutCharge> + </CheckoutCharges> + </Policy> + + <Policy> + <PetsPolicies> + <!-- + For proprieties that allow pets and charge the vacation. + NonRefundableFee is for pet/room + ChargeCode: 1=daily, 12=per Stay. see CHG code list + --> + <PetsPolicy MaxPetQuantity="2" NonRefundableFee="20" ChargeCode="1" CurrencyCode="EUR" > + <Description> + <Text TextFormat="PlainText" Language="en">it's possible to bring 2 pets per room. A supplement of € 20 / day will be applied for each animal</Text> + <Text TextFormat="PlainText" Language="it">E' possibile portare 2 animali da compagnia per stanza. Per ogni animale verrà applicato un supplemento di 20€/giorno</Text> + </Description> + </PetsPolicy> + </PetsPolicies> + </Policy> + + <Policy> + <TaxPolicies> + <!-- + City Tax/ Ortstaxe + ChargeFrequency: 1 = Daily. See (CHG) CodeList + hargeUnit: 21=Per Person/night. See (CHG) CodeList + Code: 3=City Tax (Fee Tax Type FTT) + --> + <TaxPolicy ChargeFrequency="1" ChargeUnit="21" Amount="2.52" CurrencyCode="EUR" Code="3"> + <TaxDescription> + <Text TextFormat="PlainText" Language="en">City Tax: 2.52€ a person a day</Text> + <Text TextFormat="PlainText" Language="it">Tassa di soggiorno:2.52€ a ospite al giorno</Text> + </TaxDescription> + </TaxPolicy> + </TaxPolicies> + </Policy> + + <Policy> + <!-- Payment accepted: we accept V**A, MAS*****RD.. cash.. --> + <GuaranteePaymentPolicy> + <GuaranteePayment> + + <AcceptedPayments> + <AcceptedPayment> + <BankAcct> + <BankAcctName>My Bank</BankAcctName> + <BankAcctNumber> + <PlainText>IBAN12345</PlainText> + </BankAcctNumber> + <BankID> + <PlainText>SWIFT123</PlainText> + </BankID> + </BankAcct> + </AcceptedPayment> + + <AcceptedPayment> + <Cash CashIndicator="true"/> + </AcceptedPayment> + + <AcceptedPayment> + <PaymentCard CardCode="AX"/> + </AcceptedPayment> + + <AcceptedPayment> + <PaymentCard CardCode="MC"/> + </AcceptedPayment> + + <AcceptedPayment> + <PaymentCard CardCode="VI"/> + </AcceptedPayment> + + </AcceptedPayments> + + <!-- caparra/deposit --> + <AmountPercent Percent="30"/> + <Deadline OffsetDropTime="AfterBooking" OffsetTimeUnit="Day" OffsetUnitMultiplier="0"/> + + </GuaranteePayment> + + </GuaranteePaymentPolicy> + + </Policy> + + <Policy> + <!-- Check-in and Check-out range --> + <StayRequirements> + <StayRequirement StayContext="Checkin" Start="15:00:00" End="20:00:00"/> + <StayRequirement StayContext="Checkout" Start="06:00:00" End="10:00:00"/> + </StayRequirements> + </Policy> + + </Policies> + + <!-- Scale value depends by the review provider. See provider's documentation --> + <AffiliationInfo> + <Awards> + <Award Rating="95" Provider="TRUSTYOU" OfficialAppointmentInd="false"/> + </Awards> + </AffiliationInfo> + + <!-- ContactInfos: this element has been restricted in AlpineBits 2022-10 --> + <ContactInfos> + <!-- Location must be "6" ("Hotel direct contact" according to OTA code table for type codes (CON)) --> + <ContactInfo Location="6"> + + <Addresses> + <Address Language="it"> + <AddressLine>Via Bolzano 63/A</AddressLine> + <CityName>Bolzano</CityName> + <PostalCode>39057</PostalCode> + <StateProv StateCode="BZ"/> + <CountryName Code="IT"/> + </Address> + <Address Language="de"> + <AddressLine>Bozner Straße Nr. 63/A</AddressLine> + <CityName>Bozen</CityName> + <PostalCode>39057</PostalCode> + <StateProv StateCode="BZ"/> + <CountryName Code="IT"/> + </Address> + <Address Language="en"> + <AddressLine>Via Bolzano 63/A</AddressLine> + <CityName>Bolzano</CityName> + <PostalCode>39057</PostalCode> + <StateProv StateCode="BZ"/> + <CountryName Code="IT"/> + </Address> + </Addresses> + + <Phones> + <Phone PhoneTechType="1" PhoneNumber="+3903720000000"/> + <Phone PhoneTechType="3" PhoneNumber="+3903400000000"/> + </Phones> + + <Emails> + <!-- EmailType: 5 = Property --> + <Email EmailType="5">info@alpinebits.org</Email> + </Emails> + + <URLs> + <URL ID="WEBSITE">https://www.alpinebits.org/</URL> + <URL ID="FACEBOOK">https://www.facebook.com/alpinebits/</URL> + </URLs> + </ContactInfo> + + </ContactInfos> + + </HotelDescriptiveContent> + + </HotelDescriptiveContents> + +</OTA_HotelDescriptiveContentNotifRQ> diff --git a/AlpineBits-HotelData-2024-10/files/samples/Inventory/Inventory-Push-OTA_HotelDescriptiveContentNotifRS-advisory.xml b/AlpineBits-HotelData-2024-10/files/samples/Inventory/Inventory-Push-OTA_HotelDescriptiveContentNotifRS-advisory.xml new file mode 100644 index 0000000..16b3909 --- /dev/null +++ b/AlpineBits-HotelData-2024-10/files/samples/Inventory/Inventory-Push-OTA_HotelDescriptiveContentNotifRS-advisory.xml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- + AlpineBits 2022-10 + https://www.alpinebits.org/ + + Sample message file for an Inventory (Basic and HotelInfo) push response with an advisory + + Changelog: + v. 2015-07 1.0 initial example +--> + +<OTA_HotelDescriptiveContentNotifRS xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns="http://www.opentravel.org/OTA/2003/05" + xsi:schemaLocation="http://www.opentravel.org/OTA/2003/05 OTA_HotelDescriptiveContentNotifRS.xsd" + Version="3.000"> + + <Success/> + + <Warnings> + <Warning Type="11"> + description text contains lorem ipsum + </Warning> + </Warnings> + +</OTA_HotelDescriptiveContentNotifRS> diff --git a/AlpineBits-HotelData-2024-10/files/samples/Inventory/Inventory-Push-OTA_HotelDescriptiveContentNotifRS-error.xml b/AlpineBits-HotelData-2024-10/files/samples/Inventory/Inventory-Push-OTA_HotelDescriptiveContentNotifRS-error.xml new file mode 100644 index 0000000..d12534f --- /dev/null +++ b/AlpineBits-HotelData-2024-10/files/samples/Inventory/Inventory-Push-OTA_HotelDescriptiveContentNotifRS-error.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- + AlpineBits 2022-10 + https://www.alpinebits.org/ + + Sample message file for an Inventory (Basic and HotelInfo) push response with an error + + Changelog: + v. 2015-07 1.0 initial example +--> + +<OTA_HotelDescriptiveContentNotifRS xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns="http://www.opentravel.org/OTA/2003/05" + xsi:schemaLocation="http://www.opentravel.org/OTA/2003/05 OTA_HotelDescriptiveContentNotifRS.xsd" + Version="3.000"> + + <Errors> + <Error Type="13" Code="404"> + incosistent values for occupancy + </Error> + </Errors> + +</OTA_HotelDescriptiveContentNotifRS> diff --git a/AlpineBits-HotelData-2024-10/files/samples/Inventory/Inventory-Push-OTA_HotelDescriptiveContentNotifRS-success.xml b/AlpineBits-HotelData-2024-10/files/samples/Inventory/Inventory-Push-OTA_HotelDescriptiveContentNotifRS-success.xml new file mode 100644 index 0000000..a0b6006 --- /dev/null +++ b/AlpineBits-HotelData-2024-10/files/samples/Inventory/Inventory-Push-OTA_HotelDescriptiveContentNotifRS-success.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- + AlpineBits 2022-10 + https://www.alpinebits.org/ + + Sample message file for an Inventory (Basic and HotelInfo) push response with a success + + Changelog: + v. 2015-07 1.0 initial example +--> + +<OTA_HotelDescriptiveContentNotifRS xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns="http://www.opentravel.org/OTA/2003/05" + xsi:schemaLocation="http://www.opentravel.org/OTA/2003/05 OTA_HotelDescriptiveContentNotifRS.xsd" + Version="3.000"> + + <Success/> + +</OTA_HotelDescriptiveContentNotifRS> + diff --git a/AlpineBits-HotelData-2024-10/files/samples/Inventory/Inventory-Push-OTA_HotelDescriptiveContentNotifRS-warning.xml b/AlpineBits-HotelData-2024-10/files/samples/Inventory/Inventory-Push-OTA_HotelDescriptiveContentNotifRS-warning.xml new file mode 100644 index 0000000..9c282a5 --- /dev/null +++ b/AlpineBits-HotelData-2024-10/files/samples/Inventory/Inventory-Push-OTA_HotelDescriptiveContentNotifRS-warning.xml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- + AlpineBits 2022-10 + https://www.alpinebits.org/ + + Sample message file for an Inventory (Basic and HotelInfo) push response with a warning + + Changelog: + v. 2015-07 1.0 initial example +--> + +<OTA_HotelDescriptiveContentNotifRS xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns="http://www.opentravel.org/OTA/2003/05" + xsi:schemaLocation="http://www.opentravel.org/OTA/2003/05 OTA_HotelDescriptiveContentNotifRS.xsd" + Version="3.000"> + + <Success/> + + <Warnings> + <Warning Type="3"> + too many products + </Warning> + </Warnings> + +</OTA_HotelDescriptiveContentNotifRS> diff --git a/AlpineBits-HotelData-2024-10/files/samples/Inventory/contrib/Inventory-Pull-OTA_HotelDescriptiveInfoRS-hotelinfo.xml b/AlpineBits-HotelData-2024-10/files/samples/Inventory/contrib/Inventory-Pull-OTA_HotelDescriptiveInfoRS-hotelinfo.xml new file mode 100644 index 0000000..87ac9f7 --- /dev/null +++ b/AlpineBits-HotelData-2024-10/files/samples/Inventory/contrib/Inventory-Pull-OTA_HotelDescriptiveInfoRS-hotelinfo.xml @@ -0,0 +1,166 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<OTA_HotelDescriptiveInfoRS xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns="http://www.opentravel.org/OTA/2003/05" + xsi:schemaLocation="http://www.opentravel.org/OTA/2003/05 OTA_HotelDescriptiveInfoRS.xsd" + Version="3.000"> + + <Success/> + + <HotelDescriptiveContents> + + <HotelDescriptiveContent HotelCode="123" HotelName="Frangart Inn" HotelCityCode="A007"> + + <!-- HotelInfo - see OTA code table for status codes (HST) --> + + <HotelInfo HotelStatusCode="1"> + <!-- type of propriety, e.g.: hotel, B&B, chalet... --> + <CategoryCodes> + <!-- see OTA code table for property class type (PCT) --> + <HotelCategory Code="20" CodeDetail="4S"/> + </CategoryCodes> + <!-- descriptive elements of the propriety - see OTA code table for information codes (INF) --> + <Descriptions> + <MultimediaDescriptions> + <!-- short description --> + <MultimediaDescription InfoCode="17"> + <TextItems> + <TextItem> + <Description Language="en" TextFormat="PlainText">A short description</Description> + </TextItem> + </TextItems> + </MultimediaDescription> + <!-- long description --> + <MultimediaDescription InfoCode="1"> + <TextItems> + <TextItem> + <Description Language="en" TextFormat="HTML">A long description</Description> + </TextItem> + </TextItems> + </MultimediaDescription> + <!-- hotel pictures --> + <MultimediaDescription InfoCode="23"> + <!-- picture elements of the propriety - see OTA code table for picture category codes (PIC) --> + <ImageItems> + <!-- hotel Logo --> + <ImageItem Category="15"> + <ImageFormat CopyrightNotice="Image copyright"> + <URL>https://..../HotelLogo.jpg</URL> + </ImageFormat> + <Description TextFormat="PlainText" Language="en">Image description</Description> + </ImageItem> + <!-- example: exterior picture applicable from Dec 01 to Mar 30 --> + <ImageItem Category="1"> + <ImageFormat CopyrightNotice="Image copyright" ApplicableStart="--12-01" + ApplicableEnd="--03-30"> + <URL>https://..../HotelExteriorWinterView.jpg</URL> + </ImageFormat> + <Description TextFormat="PlainText" Language="en">Image description</Description> + </ImageItem> + <!-- + ..... + --> + </ImageItems> + </MultimediaDescription> + </MultimediaDescriptions> + </Descriptions> + <!-- geo position --> + <Position Altitude="200" Latitude="11.23334" Longitude="42.34543"/> + <!-- hotel amenities --> + <Services> + <!-- hotel facilities / services - see OTA code table for hotel amenity codes (HAC) --> + <Service Code="223"/> + <Service Code="165"/> + <Service Code="224"/> + </Services> + </HotelInfo> + + <!-- FacilityInfo: additional descriptive content for room categories --> + + <FacilityInfo> + <GuestRooms> + <GuestRoom Code="DZ"> + <MultimediaDescriptions> + <MultimediaDescription> + <ImageItems> + <ImageItem Category="6"> + <ImageFormat CopyrightNotice="Image copyright"> + <URL>https://..../HotelLogo.jpg</URL> + </ImageFormat> + <Description TextFormat="PlainText" Language="en">Image description + </Description> + </ImageItem> + <!-- + ..... + --> + </ImageItems> + </MultimediaDescription> + </MultimediaDescriptions> + </GuestRoom> + </GuestRooms> + </FacilityInfo> + + <!-- Policies: check-in and check_out period, min guest age, ... --> + + <Policies> + <Policy> + <GuaranteePaymentPolicy> + <GuaranteePayment> + <AcceptedPayments> + <AcceptedPayment> + <BankAcct> + <BankAcctName>My Bank</BankAcctName> + <BankAcctNumber> + <PlainText>IBAN12345</PlainText> + </BankAcctNumber> + <BankID> + <PlainText>SWIFT123</PlainText> + </BankID> + </BankAcct> + </AcceptedPayment> + <AcceptedPayment> + <PaymentCard> + <CardType>VISA</CardType> + </PaymentCard> + </AcceptedPayment> + <AcceptedPayment> + <PaymentCard> + <CardType>Mastercard</CardType> + </PaymentCard> + </AcceptedPayment> + </AcceptedPayments> + <AmountPercent Percent="30"/> + <Deadline OffsetDropTime="AfterBooking" OffsetTimeUnit="Day" OffsetUnitMultiplier="0"/> + </GuaranteePayment> + </GuaranteePaymentPolicy> + <PolicyInfo CheckInTime="15:00:00" CheckOutTime="10:00:00" MinGuestAge="16"/> + </Policy> + </Policies> + + <!-- AffiliationInfo --> + + <AffiliationInfo> + <!-- ratings --> + <Awards> + <Award OfficialAppointmentInd="true" Provider="Trustpilot" Rating="4.5" RatingSymbol="Star"/> + </Awards> + </AffiliationInfo> + + <!-- ContactInfos: this element has been restricted in AlpineBits 2018-10 --> + + <ContactInfos> + <!-- Location must be "6" ("Hotel direct contact" according to OTA code table for type codes (CON)) --> + <ContactInfo Location="6"> + <URLs> + <URL ID="FACEBOOK">https://www.facebook.com/alpinebits/</URL> + <URL ID="TWITTER">https://twitter.com/hashtag/alpinebits</URL> + <URL ID="TRUSTYOU">id:12345678-1nvalid</URL> + <URL ID="YOUTUBE">https://www.youtube.com/user/AlpineBits</URL> + </URLs> + </ContactInfo> + </ContactInfos> + + </HotelDescriptiveContent> + </HotelDescriptiveContents> + +</OTA_HotelDescriptiveInfoRS> diff --git a/AlpineBits-HotelData-2024-10/files/samples/Inventory/contrib/Inventory-Push-OTA_HotelDescriptiveContentNotifRQ-hotelinfo_proposal.xml b/AlpineBits-HotelData-2024-10/files/samples/Inventory/contrib/Inventory-Push-OTA_HotelDescriptiveContentNotifRQ-hotelinfo_proposal.xml new file mode 100644 index 0000000..040f035 --- /dev/null +++ b/AlpineBits-HotelData-2024-10/files/samples/Inventory/contrib/Inventory-Push-OTA_HotelDescriptiveContentNotifRQ-hotelinfo_proposal.xml @@ -0,0 +1,164 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<OTA_HotelDescriptiveContentNotifRQ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns="http://www.opentravel.org/OTA/2003/05" + xsi:schemaLocation="http://www.opentravel.org/OTA/2003/05 OTA_HotelDescriptiveContentNotifRQ.xsd" + Version="8.000"> + + <HotelDescriptiveContents> + + <HotelDescriptiveContent HotelCode="123" HotelName="Frangart Inn" HotelCityCode="A007"> + + <!-- HotelInfo - see OTA code table for status codes (HST) --> + + <HotelInfo HotelStatusCode="1"> + <!-- type of propriety, e.g.: hotel, B&B, chalet... --> + <CategoryCodes> + <!-- see OTA code table for property class type (PCT) --> + <HotelCategory Code="20" CodeDetail="4S"/> + </CategoryCodes> + <!-- descriptive elements of the propriety - see OTA code table for information codes (INF) --> + <Descriptions> + <MultimediaDescriptions> + <!-- short description --> + <MultimediaDescription InfoCode="17"> + <TextItems> + <TextItem> + <Description Language="en" TextFormat="PlainText">A short description</Description> + </TextItem> + </TextItems> + </MultimediaDescription> + <!-- long description --> + <MultimediaDescription InfoCode="1"> + <TextItems> + <TextItem> + <Description Language="en" TextFormat="HTML">A long description</Description> + </TextItem> + </TextItems> + </MultimediaDescription> + <!-- hotel pictures --> + <MultimediaDescription InfoCode="23"> + <!-- picture elements of the propriety - see OTA code table for picture category codes (PIC) --> + <ImageItems> + <!-- hotel Logo --> + <ImageItem Category="15"> + <ImageFormat CopyrightNotice="Image copyright"> + <URL>https://..../HotelLogo.jpg</URL> + </ImageFormat> + <Description TextFormat="PlainText" Language="en">Image description</Description> + </ImageItem> + <!-- example: exterior picture applicable from Dec 01 to Mar 30 --> + <ImageItem Category="1"> + <ImageFormat CopyrightNotice="Image copyright" ApplicableStart="--12-01" + ApplicableEnd="--03-30"> + <URL>https://..../HotelExteriorWinterView.jpg</URL> + </ImageFormat> + <Description TextFormat="PlainText" Language="en">Image description</Description> + </ImageItem> + <!-- + ..... + --> + </ImageItems> + </MultimediaDescription> + </MultimediaDescriptions> + </Descriptions> + <!-- geo position --> + <Position Altitude="200" Latitude="11.23334" Longitude="42.34543"/> + <!-- hotel amenities --> + <Services> + <!-- hotel facilities / services - see OTA code table for hotel amenity codes (HAC) --> + <Service Code="223"/> + <Service Code="165"/> + <Service Code="224"/> + </Services> + </HotelInfo> + + <!-- FacilityInfo: additional descriptive content for room categories --> + + <FacilityInfo> + <GuestRooms> + <GuestRoom Code="DZ"> + <MultimediaDescriptions> + <MultimediaDescription> + <ImageItems> + <ImageItem Category="6"> + <ImageFormat CopyrightNotice="Image copyright"> + <URL>https://..../HotelLogo.jpg</URL> + </ImageFormat> + <Description TextFormat="PlainText" Language="en">Image description + </Description> + </ImageItem> + <!-- + ..... + --> + </ImageItems> + </MultimediaDescription> + </MultimediaDescriptions> + </GuestRoom> + </GuestRooms> + </FacilityInfo> + + <!-- Policies: check-in and check_out period, min guest age, ... --> + + <Policies> + <Policy> + <GuaranteePaymentPolicy> + <GuaranteePayment> + <AcceptedPayments> + <AcceptedPayment> + <BankAcct> + <BankAcctName>My Bank</BankAcctName> + <BankAcctNumber> + <PlainText>IBAN12345</PlainText> + </BankAcctNumber> + <BankID> + <PlainText>SWIFT123</PlainText> + </BankID> + </BankAcct> + </AcceptedPayment> + <AcceptedPayment> + <PaymentCard> + <CardType>VISA</CardType> + </PaymentCard> + </AcceptedPayment> + <AcceptedPayment> + <PaymentCard> + <CardType>Mastercard</CardType> + </PaymentCard> + </AcceptedPayment> + </AcceptedPayments> + <AmountPercent Percent="30"/> + <Deadline OffsetDropTime="AfterBooking" OffsetTimeUnit="Day" OffsetUnitMultiplier="0"/> + </GuaranteePayment> + </GuaranteePaymentPolicy> + <PolicyInfo CheckInTime="15:00:00" CheckOutTime="10:00:00" MinGuestAge="16"/> + </Policy> + </Policies> + + <!-- AffiliationInfo --> + + <AffiliationInfo> + <!-- ratings --> + <Awards> + <Award OfficialAppointmentInd="true" Provider="Trustpilot" Rating="4.5" RatingSymbol="Star"/> + </Awards> + </AffiliationInfo> + + <!-- ContactInfos: this element has been restricted in AlpineBits 2018-10 --> + + <ContactInfos> + <!-- Location must be "6" ("Hotel direct contact" according to OTA code table for type codes (CON)) --> + <ContactInfo Location="6"> + <URLs> + <URL ID="FACEBOOK">https://www.facebook.com/alpinebits/</URL> + <URL ID="TWITTER">https://twitter.com/hashtag/alpinebits</URL> + <URL ID="TRUSTYOU">id:12345678-1nvalid</URL> + <URL ID="YOUTUBE">https://www.youtube.com/user/AlpineBits</URL> + </URLs> + </ContactInfo> + </ContactInfos> + + </HotelDescriptiveContent> + </HotelDescriptiveContents> + +</OTA_HotelDescriptiveContentNotifRQ> diff --git a/AlpineBits-HotelData-2024-10/files/samples/RatePlans/RatePlans-OTA_HotelRatePlanNotifRQ.xml b/AlpineBits-HotelData-2024-10/files/samples/RatePlans/RatePlans-OTA_HotelRatePlanNotifRQ.xml new file mode 100644 index 0000000..8deff3b --- /dev/null +++ b/AlpineBits-HotelData-2024-10/files/samples/RatePlans/RatePlans-OTA_HotelRatePlanNotifRQ.xml @@ -0,0 +1,124 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- + AlpineBits 2024-10 + https://www.alpinebits.org/ + + Sample message file for a RatePlan request with BookingRules on LengthOfStay and DayOfWeek restrictions, + price variants according to the amount of people, a supplement for the final cleaning and an offer for kids. + + changelog: + v. 2024-10 1.0 Replaced RatePlanNotifType value 'New' with 'Full' + v. 2017-10 1.0 adapted for static rates + v. 2015-07 1.0 LengthOfStay -> Time set to 5 for SetMaxLOS + BaseByGuestAmt -> AmountAfterTax corrected to be consistent with the choice of Type="7" (per person) + v. 2014-04 1.2 removed third example Offer element (only at most two Offer elements are allowed) + v. 2014-04 1.1 Description: fixed Name="Short Description" -> Name="title" and added example content + v. 2014-04 1.0 initial example +--> + +<OTA_HotelRatePlanNotifRQ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns="http://www.opentravel.org/OTA/2003/05" + xsi:schemaLocation="http://www.opentravel.org/OTA/2003/05 OTA_HotelRatePlanNotifRQ.xsd" + Version="1.000"> + + <RatePlans HotelCode="123" HotelName="Frangart Inn"> + + <RatePlan RatePlanNotifType="Full" CurrencyCode="EUR" RatePlanCode="Rate1-4-HB"> + + <BookingRules> + + <BookingRule Start="2023-03-03" End="2023-04-17"> + + <LengthsOfStay> + <LengthOfStay Time="5" TimeUnit="Day" MinMaxMessageType="SetMinLOS"/> + <LengthOfStay Time="5" TimeUnit="Day" MinMaxMessageType="SetMaxLOS"/> + </LengthsOfStay> + + <DOW_Restrictions> + <ArrivalDaysOfWeek Mon="1" Tue="1" Weds="1" Thur="1" Fri="1" Sat="1" Sun="1"/> + <DepartureDaysOfWeek Mon="1" Tue="1" Weds="1" Thur="1" Fri="1" Sat="1" Sun="1"/> + </DOW_Restrictions> + + <RestrictionStatus Restriction="Master" Status="Open"/> + + </BookingRule> + + </BookingRules> + + <Rates> + + <!-- first in list: the static rate - values apply to every rate in the rate plan --> + + <Rate RateTimeUnit="Day" UnitMultiplier="1"> + <BaseByGuestAmts> + <BaseByGuestAmt Type="7"/> + </BaseByGuestAmts> + <MealsIncluded MealPlanIndicator="true" MealPlanCodes="12"/> + </Rate> + + <!-- following: "normal" rates ... --> + + <Rate InvTypeCode="double" Start="2023-03-03" End="2023-03-08"> + <BaseByGuestAmts> + <BaseByGuestAmt NumberOfGuests="1" AgeQualifyingCode="10" AmountAfterTax="106"/> + <BaseByGuestAmt NumberOfGuests="2" AgeQualifyingCode="10" AmountAfterTax="96"/> + </BaseByGuestAmts> + <AdditionalGuestAmounts> + <AdditionalGuestAmount AgeQualifyingCode="10" Amount="76.8"/> + <AdditionalGuestAmount AgeQualifyingCode="8" MaxAge="3" Amount="0" /> + <AdditionalGuestAmount AgeQualifyingCode="8" MinAge="3" MaxAge="6" Amount="38.4" /> + <AdditionalGuestAmount AgeQualifyingCode="8" MinAge="6" MaxAge="10" Amount="48" /> + <AdditionalGuestAmount AgeQualifyingCode="8" MinAge="10" MaxAge="16" Amount="67.2"/> + </AdditionalGuestAmounts> + </Rate> + + </Rates> + + <Supplements> + + <Supplement InvType="EXTRA" InvCode="0x539" AddToBasicRateIndicator="true" MandatoryIndicator="true" ChargeTypeCode="18"> + <Description Name="title"> + <Text TextFormat="PlainText" Language="de">Endreinigung</Text> + <Text TextFormat="PlainText" Language="it">Pulizia finale</Text> + <!-- more languages ... --> + </Description> + <Description Name="intro"> + <Text TextFormat="PlainText" Language="de">Die Endreinigung lorem ipsum dolor sit amet.</Text> + <Text TextFormat="PlainText" Language="it">La pulizia finale lorem ipsum dolor sit amet.</Text> + <!-- more languages ... --> + </Description> + </Supplement> + + <Supplement InvType="EXTRA" InvCode="0x539" Amount="20" Start="2022-10-01" End="2022-10-11"/> + + </Supplements> + + <Offers> + <Offer> + <OfferRules> + <OfferRule> + <Occupancy AgeQualifyingCode="10" MinAge="16"/> + <Occupancy AgeQualifyingCode="8"/> + </OfferRule> + </OfferRules> + </Offer> + </Offers> + + <Description Name="title"> + <Text TextFormat="PlainText" Language="en">Lorem ipsum.</Text> + <Text TextFormat="PlainText" Language="it">Lorem ipsum.</Text> + <!-- more languages ... --> + </Description> + + <Description Name="intro"> + <Text TextFormat="PlainText" Language="en">Lorem ipsum dolor sit amet.</Text> + <Text TextFormat="PlainText" Language="it">Lorem ipsum dolor sit amet.</Text> + <!-- more languages ... --> + </Description> + + </RatePlan> + + </RatePlans> + +</OTA_HotelRatePlanNotifRQ> diff --git a/AlpineBits-HotelData-2024-10/files/samples/RatePlans/RatePlans-OTA_HotelRatePlanNotifRS-advisory.xml b/AlpineBits-HotelData-2024-10/files/samples/RatePlans/RatePlans-OTA_HotelRatePlanNotifRS-advisory.xml new file mode 100644 index 0000000..3bf15d1 --- /dev/null +++ b/AlpineBits-HotelData-2024-10/files/samples/RatePlans/RatePlans-OTA_HotelRatePlanNotifRS-advisory.xml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- + AlpineBits 2022-10 + https://www.alpinebits.org/ + + Sample message file for a RatePlan response with an advisory + + changelog: + v. 2015-07 1.0 initial example +--> + +<OTA_HotelRatePlanNotifRS xmlns="http://www.opentravel.org/OTA/2003/05" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.opentravel.org/OTA/2003/05 OTA_HotelRatePlanNotifRS.xsd" + Version="3.14"> + + <Success/> + + <Warnings> + <Warning Type="11"> + End date is less than 3 days from now + </Warning> + </Warnings> + +</OTA_HotelRatePlanNotifRS> diff --git a/AlpineBits-HotelData-2024-10/files/samples/RatePlans/RatePlans-OTA_HotelRatePlanNotifRS-error.xml b/AlpineBits-HotelData-2024-10/files/samples/RatePlans/RatePlans-OTA_HotelRatePlanNotifRS-error.xml new file mode 100644 index 0000000..3be3d97 --- /dev/null +++ b/AlpineBits-HotelData-2024-10/files/samples/RatePlans/RatePlans-OTA_HotelRatePlanNotifRS-error.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- + AlpineBits 2022-10 + https://www.alpinebits.org/ + + Sample message file for a RatePlan response with an error + + changelog: + v. 2015-07 1.0 initial example +--> + +<OTA_HotelRatePlanNotifRS xmlns="http://www.opentravel.org/OTA/2003/05" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.opentravel.org/OTA/2003/05 OTA_HotelRatePlanNotifRS.xsd" + Version="3.14"> + + <Errors> + <Error Type="13" Code="404"> + Invalid start/end date combination + </Error> + </Errors> + +</OTA_HotelRatePlanNotifRS> diff --git a/AlpineBits-HotelData-2024-10/files/samples/RatePlans/RatePlans-OTA_HotelRatePlanNotifRS-success.xml b/AlpineBits-HotelData-2024-10/files/samples/RatePlans/RatePlans-OTA_HotelRatePlanNotifRS-success.xml new file mode 100644 index 0000000..43e67f2 --- /dev/null +++ b/AlpineBits-HotelData-2024-10/files/samples/RatePlans/RatePlans-OTA_HotelRatePlanNotifRS-success.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- + AlpineBits 2022-10 + https://www.alpinebits.org/ + + Sample message file for a RatePlan response with a success + + changelog: + v. 2015-07 1.0 initial example +--> + +<OTA_HotelRatePlanNotifRS xmlns="http://www.opentravel.org/OTA/2003/05" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.opentravel.org/OTA/2003/05 OTA_HotelRatePlanNotifRS.xsd" + Version="3.14"> + + <Success/> + +</OTA_HotelRatePlanNotifRS> diff --git a/AlpineBits-HotelData-2024-10/files/samples/RatePlans/RatePlans-OTA_HotelRatePlanNotifRS-warning.xml b/AlpineBits-HotelData-2024-10/files/samples/RatePlans/RatePlans-OTA_HotelRatePlanNotifRS-warning.xml new file mode 100644 index 0000000..200bb63 --- /dev/null +++ b/AlpineBits-HotelData-2024-10/files/samples/RatePlans/RatePlans-OTA_HotelRatePlanNotifRS-warning.xml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- + AlpineBits 2022-10 + https://www.alpinebits.org/ + + Sample message file for a RatePlan response with a warning + + changelog: + v. 2015-07 1.0 initial example +--> + +<OTA_HotelRatePlanNotifRS xmlns="http://www.opentravel.org/OTA/2003/05" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.opentravel.org/OTA/2003/05 OTA_HotelRatePlanNotifRS.xsd" + Version="3.14"> + + <Success/> + + <Warnings> + <Warning Type="3"> + Dates are too far in the future for this server to process + </Warning> + </Warnings> + +</OTA_HotelRatePlanNotifRS> diff --git a/AlpineBits-HotelData-2024-10/files/samples/RatePlans/contrib/RatePlans-OTA_HotelRatePlanNotifRQ-min-max-booking-offset.xml b/AlpineBits-HotelData-2024-10/files/samples/RatePlans/contrib/RatePlans-OTA_HotelRatePlanNotifRQ-min-max-booking-offset.xml new file mode 100644 index 0000000..0886972 --- /dev/null +++ b/AlpineBits-HotelData-2024-10/files/samples/RatePlans/contrib/RatePlans-OTA_HotelRatePlanNotifRQ-min-max-booking-offset.xml @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="UTF-8"?> +<OTA_HotelRatePlanNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" Version="6.000" TimeStamp="2014-10-16T17:00:40" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opentravel.org/OTA/2003/05 OTA_HotelRatePlanNotifRQ.xsd"> + <RatePlans HotelCode="2588"> + <RatePlan CurrencyCode="EUR" RatePlanCode="TP-FW" RatePlanNotifType="New"> + <Rates> + <Rate InvTypeCode="FW" Start="2014-10-16" End="2014-12-21"> + <BaseByGuestAmts> + <BaseByGuestAmt NumberOfGuests="2" AgeQualifyingCode="10" AmountAfterTax="340" Type="25"/> + <BaseByGuestAmt NumberOfGuests="3" AgeQualifyingCode="10" AmountAfterTax="340" Type="25"/> + <BaseByGuestAmt NumberOfGuests="4" AgeQualifyingCode="10" AmountAfterTax="340" Type="25"/> + </BaseByGuestAmts> + <AdditionalGuestAmounts> + <AdditionalGuestAmount AgeQualifyingCode="10" Amount="68"/> + <AdditionalGuestAmount AgeQualifyingCode="8" MaxAge="3" Amount="30"/> + <AdditionalGuestAmount AgeQualifyingCode="8" MinAge="3" MaxAge="7" Amount="25.5"/> + <AdditionalGuestAmount AgeQualifyingCode="8" MinAge="7" MaxAge="16" Amount="42.5"/> + </AdditionalGuestAmounts> + <MealsIncluded MealPlanCodes="14" MealPlanIndicator="1"/> + </Rate> + </Rates> + <Offers> + <Offer> + <OfferRules> + <OfferRule MinAdvancedBookingOffset="P1D" MaxAdvancedBookingOffset="P90D"> + <Occupancy AgeQualifyingCode="10" MinAge="16"/> + <Occupancy AgeQualifyingCode="8"/> + </OfferRule> + </OfferRules> + </Offer> + </Offers> + <Description Name="title"> + <Text TextFormat="PlainText" Language="de">Tagespreise Ferienwohnungen</Text> + <Text TextFormat="PlainText" Language="it">Prezzi giornalieri appartamenti</Text> + </Description> + <Description Name="intro"> + <Text TextFormat="PlainText" Language="de">Tagespreise für Ferienwohnungen</Text> + <Text TextFormat="PlainText" Language="it">Prezzi giornalieri per appartamenti</Text> + </Description> + </RatePlan> + </RatePlans> +</OTA_HotelRatePlanNotifRQ> diff --git a/AlpineBits-HotelData-2024-10/files/samples/RatePlans/contrib/RatePlans-OTA_HotelRatePlanNotifRQ-offer-with-emojis.xml b/AlpineBits-HotelData-2024-10/files/samples/RatePlans/contrib/RatePlans-OTA_HotelRatePlanNotifRQ-offer-with-emojis.xml new file mode 100644 index 0000000..8620d00 --- /dev/null +++ b/AlpineBits-HotelData-2024-10/files/samples/RatePlans/contrib/RatePlans-OTA_HotelRatePlanNotifRQ-offer-with-emojis.xml @@ -0,0 +1,107 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<OTA_HotelRatePlanNotifRQ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns="http://www.opentravel.org/OTA/2003/05" + xsi:schemaLocation="http://www.opentravel.org/OTA/2003/05 OTA_HotelRatePlanNotifRQ.xsd" + Version="1.000"> + + <RatePlans HotelCode="123" HotelName="Frangart Inn"> + + <RatePlan RatePlanNotifType="Full" CurrencyCode="EUR" RatePlanCode="Rate1-4-HB" RatePlanType="12"> + + <BookingRules> + + <BookingRule Start="2021-03-03" End="2021-04-17"> + + <LengthsOfStay> + <LengthOfStay Time="5" TimeUnit="Day" MinMaxMessageType="SetMinLOS"/> + <LengthOfStay Time="5" TimeUnit="Day" MinMaxMessageType="SetMaxLOS"/> + </LengthsOfStay> + + <DOW_Restrictions> + <ArrivalDaysOfWeek Mon="1" Tue="1" Weds="1" Thur="1" Fri="1" Sat="1" Sun="1"/> + <DepartureDaysOfWeek Mon="1" Tue="1" Weds="1" Thur="1" Fri="1" Sat="1" Sun="1"/> + </DOW_Restrictions> + + <RestrictionStatus Restriction="Master" Status="Open"/> + + </BookingRule> + + </BookingRules> + + <Rates> + + <!-- first in list: the static rate - values apply to every rate in the rate plan --> + + <Rate RateTimeUnit="Day" UnitMultiplier="1"> + <BaseByGuestAmts> + <BaseByGuestAmt Type="7"/> + </BaseByGuestAmts> + <MealsIncluded MealPlanIndicator="true" MealPlanCodes="12"/> + </Rate> + + <!-- following: "normal" rates ... --> + + <Rate InvTypeCode="double" Start="2021-03-03" End="2021-03-08"> + <BaseByGuestAmts> + <BaseByGuestAmt NumberOfGuests="1" AgeQualifyingCode="10" AmountAfterTax="106"/> + <BaseByGuestAmt NumberOfGuests="2" AgeQualifyingCode="10" AmountAfterTax="96"/> + </BaseByGuestAmts> + <AdditionalGuestAmounts> + <AdditionalGuestAmount AgeQualifyingCode="10" Amount="76.8"/> + <AdditionalGuestAmount AgeQualifyingCode="8" MaxAge="3" Amount="0" /> + <AdditionalGuestAmount AgeQualifyingCode="8" MinAge="3" MaxAge="6" Amount="38.4" /> + <AdditionalGuestAmount AgeQualifyingCode="8" MinAge="6" MaxAge="10" Amount="48" /> + <AdditionalGuestAmount AgeQualifyingCode="8" MinAge="10" MaxAge="16" Amount="67.2"/> + </AdditionalGuestAmounts> + </Rate> + + </Rates> + + <Supplements> + + <Supplement InvType="EXTRA" InvCode="0x539" AddToBasicRateIndicator="true" MandatoryIndicator="true" ChargeTypeCode="18"> + <Description Name="title"> + <Text TextFormat="PlainText" Language="de">Endreinigung</Text> + <Text TextFormat="PlainText" Language="it">Pulizia finale</Text> + <!-- more languages ... --> + </Description> + <Description Name="intro"> + <Text TextFormat="PlainText" Language="de">Die Endreinigung lorem ipsum dolor sit amet.</Text> + <Text TextFormat="PlainText" Language="it">La pulizia finale lorem ipsum dolor sit amet.</Text> + <!-- more languages ... --> + </Description> + </Supplement> + + <Supplement InvType="EXTRA" InvCode="0x539" Amount="20" Start="2021-10-01" End="2021-10-11"/> + + </Supplements> + + <Offers> + <Offer> + <OfferRules> + <OfferRule> + <Occupancy AgeQualifyingCode="10" MinAge="16"/> + <Occupancy AgeQualifyingCode="8"/> + </OfferRule> + </OfferRules> + </Offer> + </Offers> + + <Description Name="title"> + <Text TextFormat="PlainText" Language="en">"❄️ Snow weekend ☃" offer!</Text> + <Text TextFormat="PlainText" Language="it">Offerta "❄️ Weekend sulla neve ☃"!</Text> + <!-- more languages ... --> + </Description> + + <Description Name="intro"> + <Text TextFormat="PlainText" Language="en">Special offer with 🛏 and 🎿 rental. Enjoy skiing by us! ⛷🏂</Text> + <Text TextFormat="PlainText" Language="it">Offerta speciale con 🛏 e noleggio 🎿. Vieni a sciare da noi! ⛷🏂</Text> + <!-- more languages ... --> + </Description> + + </RatePlan> + + </RatePlans> + +</OTA_HotelRatePlanNotifRQ> diff --git a/AlpineBits-HotelData-2024-10/files/schema-xsd/alpinebits.xsd b/AlpineBits-HotelData-2024-10/files/schema-xsd/alpinebits.xsd new file mode 100644 index 0000000..1bc16dd --- /dev/null +++ b/AlpineBits-HotelData-2024-10/files/schema-xsd/alpinebits.xsd @@ -0,0 +1,4628 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- + AlpineBits 2024-10 + http://www.alpinebits.org/ + + W3C XML Schema file + + changelog: + + v. 2024-10 1.4 ************************************************************************************************** + All occurrences of type="def_nonempty_string" have been replaced with the value defined in + OTA 2015A. + + v. 2024-10 1.3 ************************************************************************************************** + HotelCode: Bugfix: define HotelCode as required everywhere + + v. 2024-10 1.2 ************************************************************************************************** + RatePlans: Attribute RatePlanNotifType value `New` has been replaced with `Full`. `New` is still + accepted for compatibility reasons. + Inventory: Element TypeRoom changed to mandatory element + + v. 2024-10 1.1 ************************************************************************************************** + GuestRequests: added optional RoomRates element + + v. 2024-10 1.0 ************************************************************************************************** + GuestRequests: added optional Services element + + + v. 2022-10 1.2 ************************************************************************************************** + GuestRequests: allow Errors in OTA_HotelResNotifRS + GuestRequests: allow Warnings in OTA_NotifReportRS + Inventory: allow Warnings in OTA_HotelDescriptiveInfoRS + BaseRates: allow Warnings in OTA_HotelRatePlanRS + + + v. 2022-10 1.1 ************************************************************************************************** + GuestRequests: added optional LastModifyDateTime attribute for HotelReservation element + + + v. 2022-10 1.0 ************************************************************************************************** + GuestRequests: added optional attribute RoomStayReservation to element HotelReservation + + + v. 2020-10 1.6 ************************************************************************************************** + HotelCode: define HotelCode as String of length 1 to 16, just like in OTA2015A + + + v. 2020-10 1.5 ************************************************************************************************** + Inventory: fix HotelDescriptiveContents -> ... -> ContactInfo -> ... -> URL -> ID restriction + The written 2020-10 standard says on page 55 that "...Partners are allowed to define further + values...". The prior XSD defined an enumeration of allowed values, which was too restrictive. This + has been fixed. + + + v. 2020-10 1.4 ************************************************************************************************** + Inventory: removed attributes Code and CodeContext from element CompanyName under ContactInfo + + + v. 2020-10 1.3 ************************************************************************************************** + make LocationCategories optional + + + v. 2020-10 1.2 ************************************************************************************************** + OTA_PingRS has been loosened to accept Warning elements of any type, as well asError elements + + + v. 2020-10 1.1 ************************************************************************************************** + FreeRooms: major changes, since that action has completely been rewritten; the root node has been + changed from OTA_HotelAvailNotifRQ/RS to OTA_HotelInvCountNotifRQ/RS + (done by C. Gapp) + + ************************************************************************************************** + the CurrencyCode attribute used to be defined as non-empty string or hard-coded to "EUR"; this has + been changed to a generic string with 3 character in order to allow other currencies and to be + compatible with OTA + + ************************************************************************************************** + GuestRequests: added SpecialRequests for pets + + ************************************************************************************************** + Inventory: HotelDescriptiveContents has been expanded: ContactInfos has more content and + HotelInfo, Policies and AffiliationInfo are now strictly defined (they used to allow any OTA + content). + + ************************************************************************************************** + new action Activities: elements OTA_HotelPostEventNotifRQ and OTA_HotelPostEventNotifRS added + + + v. 2018-10 1.3 more things changed related to the new section "Responses with a request for complete sets of data": + + - added "11" as allowed value for the attribute Type of the Error elements + + - made the attribute Code of the Error elements optional + + - added Warnings element below OTA_ResRetrieveRS + + + v. 2018-10 1.2 the Status attribute has been extended to all Warning elements (also the ones + for GuestRequests) and to Error elements; the choice of keywords has become + a common definition (def_send_complete) + + + v. 2018-10 1.1 added Status attribute to Warning element (see section "Responses with a + request for complete sets of data") + + fixed copy&paste error in enumeration of new RoomType attribute values + + + v. 2018-10 1.0 ************************************************************************************************** + allowed additional value "HTML" for attribute TextFormat in Inventory + HotelDescriptiveContents -> ... -> FacilityInfo -> ... -> MultimediaDescription -> ... -> Description + + + ************************************************************************************************** + https://gitlab.com/alpinebits/developers-kit/issues/5 + "Booking push functionality" + + 042 - GuestRequests: + + added HotelCode and HotelName attributes to BasicPropertyInfo element + (this is needed to share the HotelReservation-sub-schema for + "GuestRequests" and "GuestRequests (Push)") + + added new root nodes OTA_HotelResNotifRQ/OTA_HotelResNotifRS for + "GuestRequests (Push)" messages with a shared HotelReservation-sub-schema + + + ************************************************************************************************** + https://gitlab.com/alpinebits/developers-kit/issues/8 + "Extension with new room types" + + 042 - GuestRequests: + OTA_ResRetrieveRS -> ... -> HotelReservation > RoomStays > RoomStay > RoomTypes > RoomType {1} + + and + + 044 - Inventory/*: + group name="def_hoteldescriptivecontents" -> ... -> GuestRoom -> TypeRoom + + => Added optional RoomType attribute with possible values 1, 2, 3, 4, 5, 6, 7, 8, 9. + + + ************************************************************************************************** + https://gitlab.com/alpinebits/developers-kit/issues/10 + "Hotel ID transmission" + + 044 - Inventory/* + group name="def_hoteldescriptivecontents" -> ... -> ContactInfos + + => defined (narrowed down) the content of the ContactInfos element + + + ************************************************************************************************** + https://gitlab.com/alpinebits/developers-kit/issues/4 + "Handshaking review" + + 03 - Handshake + + => added new root elements OTA_PingRQ and OTA_PingRS + + + v. 2017-10 1.1 - RatePlans: RatePlans > RatePlan > Offers: allow only MinLOS and MaxLOS attributes (not the forward ones too) + + v. 2017-10 1.0 - FreeRooms: OTA_HotelAvailNotifRQ -> UniqueID (added allowed value to attribute Type, by Luca Rainone) + FreeRooms: OTA_HotelAvailNotifRQ -> AvailStatusMessages -> ... -> StatusApplicationControl (added new mandatory attribute BookingThreshold) + + GuestRequests: OTA_ResRetrieveRS -> ReservationsList -> ... -> RatePlan (added element Commission) + GuestRequests: OTA_ResRetrieveRS -> ReservationsList -> ... -> CardNumber (added attributes EncryptedValue and EncryptionMethod) + GuestRequests: OTA_ResRetrieveRS -> ReservationsList -> ... -> RoomStay > RoomTypes (made optional) + + SimplePackages section removed + + Inventory has become Inventory/Basic (Push) and Inventory/HotelInfo (Push): + OTA_HotelDescriptiveContentNotifRQ (major changes, one being that empty GuestRooms elements are now allowed by Luca Rainone) + + Inventory/Basic (Pull) and Inventory/HotelInfo (Pull) added + + RatePlans: OTA_HotelRatePlanNotifRQ -> RatePlans -> RatePlan -> BookingRules -> ... -> LengthOfStay (added allowed values to attribute MinMaxMessageType) + RatePlans: OTA_HotelRatePlanNotifRQ -> RatePlans -> RatePlan -> Supplements -> Supplement (added element PrerequisiteInventory) + RatePlans: OTA_HotelRatePlanNotifRQ -> RatePlans -> RatePlan -> Supplements -> Supplement -> Description (major changes) + RatePlans: OTA_HotelRatePlanNotifRQ -> RatePlans -> RatePlan -> Offers -> Offer (major changes) + RatePlans: OTA_HotelRatePlanNotifRQ -> RatePlans -> RatePlan -> Description (major changes) + RatePlans: OTA_HotelRatePlanNotifRQ -> RatePlans -> RatePlan -> ... -> BaseByGuestAmt (NumberOfGuests and Type are optional now to allow static rates) + + BaseRates section added + + v. 2015-07b 1.4 - weaken the schema for Inventory (to prepare for upcoming release that will support Inventory deltas): + + - the RoomAmenityCode attribute becomes optional to allow empty Amenity elements + - the MultimediaDescription element can be empty + + v. 2015-07b 1.3 - RatePlans > RatePlan > Description > TextFormat can now also be "HTML" (besides "PlainText") + + v. 2015-07b 1.2 - added optional attributes RatePlanID and RatePlanQualifier to RatePlan + for the new OTA_HotelRatePlanNotif_accept_RatePlanJoin capability + + v. 2015-07b 1.1 - added def_invTypeCode_string type (string with up to 8 chars) used for the following attributes that identify room categories: + + FreeRooms: OTA_HotelAvailNotifRQ -> AvailStatusMessages -> AvailStatusMessage -> StatusApplicationControl -> InvTypeCode + GuestRequests: OTA_ResRetrieveRS -> ReservationList -> HotelReservation -> RoomStays -> RoomStay -> RoomTypes > RoomType -> RoomTypeCode + Inventory: OTA_HotelDescriptiveContentNotifRQ -> HotelDescriptiveContents -> HotelDescriptiveContent -> FacilityInfo -> GuestRooms -> GuestRoom -> Code + RatePlan: OTA_HotelRatePlanNotifRQ -> RatePlans -> RatePlan -> BookingRules -> BookingRule -> Code + RatePlan: OTA_HotelRatePlanNotifRQ -> RatePlans -> RatePlan -> Rates -> Rate -> InvTypeCode + + (derived from Lukas Braun's pull request) + + v. 2015-07b 1.0 - RatePlans > RatePlan > Rates > Rate > BaseByGuestAmts > AmountAfterTax + must be > 0.0 (was: >= 0.0) + + v. 2015-07 2.9 - Inventory: added a missing maxOccurs="unbounded" to the ImageItem + + v. 2015-07 2.8 - Inventory: reconciled with the definitions given in the updated document + + v. 2015-07 2.7 - changes to Inventory: removed the old Inventory, added MaxChildOccupancy to GuestRoom, + made some of the attributes mandatory, formating changes + + v. 2015-07 2.6 - made sub-elements of HotelReservation > ... > Customer > Address {0,1} optional + + v. 2015-07 2.5 - added a choice of 'Modify' for ResStatus + + v. 2015-07 2.4 - added MinCount attribute to Offer>>Guest + + v. 2015-07 2.3 - changes to Supplement: a few attributes are removed and many attributes are made optional + + v. 2015-07 2.2 - RatePlans/Supplements: changed format of description + + v. 2015-07 2.1 - GuestRequests: ResGuests >> Customer: attributes Gender and Language are now optional + + v. 2015-07 2.0 - allow Warnings in OTA_NotifReportRQ messages + + v. 2015-07 1.9 - GuestRequests: use CardNumber -> PlainText instead of the Remark attribute of + PaymentCard under Guarantee; add BasicPropertyInfo element at the end of the + ResGlobalInfo block for OTA-2015A compatiblity + + v. 2015-07 1.8 - added section for New Inventory (exact name pending) + + v. 2015-07 1.7 - allowed more than one HotelReservationID + + v. 2015-07 1.6 - RatePlans: allow optional PrerequisiteInventory element under Supplement element + + v. 2015-07 1.5 - Inventory: removed Amenities and added optional Room -> RoomTypeCode + + v. 2015-07 1.4 - HotelReservationID -> ResID_Type is not limited to 13 anymore + + v. 2015-07 1.3 - new section in RoomStays: Guarantee -> GuaranteesAccepted -> GuaranteeAccepted -> PaymentCard + + v. 2015-07 1.2 - new section in ResGlobalInfo: Profiles -> ProfileInfo -> Profile -> CompanyInfo + + v. 2015-07 1.1 - HotelReservation > RoomStays > RoomStay > RoomTypes > RoomType is now + mandatory and has a new optional attribute RoomClassificationCode + + v. 2015-07 1.0 - OTA_NotifReportRS besides Success, now also allows Error responses + + v. 2014-04 1.6 - [fixed] InvCode attribute in Supplement changed from def_int_ge0 to def_nonempty_string + + v. 2014-04 1.5 - [strictness improvement] made NumberOfGuests attribute mandatory + + v. 2014-04 1.4 - [fixed] RatePlans: optional Rate attributes RateTimeUnit and UnitMultiplier added + + v. 2014-04 1.3 - [fixed] GuestRequests: ReservationsList can be empy + + v. 2014-04 1.2 - follow-up to fix 1.1 that allowed empty AvailStatusMessages elements too + (reverted) + + v. 2014-04 1.1 - empty AvailStatusMessage elements in FreeRooms now allowed + (see https://groups.google.com/d/msg/alpinebits/B-orBE9eJCk/rKyIYbNBFNoJ ) + - Version and TimeStamp also added to OTA_NotifReportRS + (see https://groups.google.com/d/msg/alpinebits/jwaPC3XAafo/yDDYCkpNPYEJ ) + + v. 2014-04 1.0 - major rewrite for 2014-04 + + previous changelogs: + + v. 2013-04 1.0 - the XML schema is now flattened into this single file; + some improvements by Martin; + added optional RatePlanCode attribute to RatePlan; + removed restrictions on the form of the ID attribute in UniqueID + + W3C XML Schema for OTA_HotelAvailNotifRQ: + v. 2013-04 1.0 - added MessageContentCode attribute for delta messages + v. 2012-05 1.2 - changed Thu -> Thur and Wed -> Weds for OTA compatibility + v. 2012-05 1.1 - added optional TimeStamp attribute for OTA_HotelAvailNotifRQ to be compatible with AlpineBits 2011-11 documents + v. 2012-05 1.0 + + W3C XML Schema for OTA_HotelAvailNotifRS: + v. 2013-04 1.0 - added warnings + v. 2012-05 1.0 + + W3C XML Schema for OTA_ReadRQ: + v. 2012-05 1.0 + + W3C XML Schema for OTA_ResRetrieveRS: + v. 2013-04 1.0 - simplified the definition of GuestCounts for XSD conformance, + moved UniqueID and RatePlans elements to common to support schema flattening + v. 2012-05 1.0 + + W3C XML Schema for OTA_HotelRatePlanNotifRQ: + v. 2013-04 1.0 - removed def_plaintext and simplified def_rate_plan to fix an issue with the parsing of the schema, + moved UniqueID and RatePlans elements to common + v. 2012-05 1.2 - changed Thu -> Thur and Wed -> Weds for OTA compatibility + v. 2012-05 1.0 + + W3C XML Schema for OTA_HotelRatePlanNotifRS: + v. 2013-04 1.0 - added warnings + v. 2012-05 1.0 +--> + +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" + elementFormDefault="qualified" + targetNamespace="http://www.opentravel.org/OTA/2003/05" + xmlns="http://www.opentravel.org/OTA/2003/05"> + + + <!-- ******************************************************************************* --> + <!-- * Handshake --> + <!-- ******************************************************************************* --> + + <!-- Handshake: OTA_PingRQ --> + + <xs:element name="OTA_PingRQ"> + <xs:complexType> + <xs:sequence> + <xs:element name="EchoData" type="def_nonempty_string"/> + </xs:sequence> + <xs:attribute name="Version" use="required"/> + <xs:attribute name="TimeStamp"/> + </xs:complexType> + </xs:element> + + <!-- Handshake: OTA_PingRS --> + + <xs:element name="OTA_PingRS"> + <xs:complexType> + + <xs:choice> + + <!-- choice: Errors --> + + <xs:sequence> + <xs:element name="Errors"> + <xs:complexType> + <xs:sequence> + <xs:element name="Error" maxOccurs="unbounded"> + <xs:complexType mixed="true"> + <xs:attribute name="Type" use="required"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="11"/> + <xs:enumeration value="13"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="Code" type="def_int_gt0"/> + <xs:attribute name="Status"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="ALPINEBITS_HANDSHAKE"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + + <!-- choice: Success + Warnings + EchoData --> + + <xs:sequence> + <xs:element name="Success"/> + <xs:element name="Warnings" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="Warning" maxOccurs="unbounded"> + <xs:complexType mixed="true"> + <xs:attribute name="Type" use="required" type="def_int_gt0"/> + <xs:attribute name="Status"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="ALPINEBITS_HANDSHAKE"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="EchoData" type="def_nonempty_string"/> + </xs:sequence> + + </xs:choice> + + <xs:attribute name="Version" use="required"/> + <xs:attribute name="TimeStamp"/> + </xs:complexType> + </xs:element> + + + <!-- ******************************************************************************* --> + <!-- * Activities --> + <!-- ******************************************************************************* --> + + <!-- Activities: OTA_HotelPostEventNotifRQ --> + + <xs:element name="OTA_HotelPostEventNotifRQ"> + <xs:complexType> + <xs:sequence> + + <xs:element name="EventReports"> + <xs:complexType> + <xs:sequence> + <xs:element name="EventReport" maxOccurs="99"> + <xs:complexType> + <xs:sequence> + + <!-- EventSites --> + <xs:element name="EventSites"> + <xs:complexType> + <xs:sequence> + <xs:element name="EventSite"> + <xs:complexType> + <xs:sequence> + <xs:element name="Event_ID"> + <xs:complexType> + <xs:attribute name="ID" type="StringLength1to32" use="required"/> + <xs:attribute name="ID_Context" type="StringLength1to32" use="required"/> + <xs:attribute name="Type" use="required"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="18"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + </xs:sequence> + <xs:attribute name="HotelCode" use="required" type="def_one_to_sixteen_chars_string"/> + <xs:attribute name="HotelName" type="StringLength1to128"/> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + + <!-- GeneralEventInfo --> + <xs:element name="GeneralEventInfo"> + <xs:complexType> + <xs:sequence> + <xs:element name="EventContacts" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="EventContact" maxOccurs="unbounded"> + <xs:complexType> + <xs:sequence> + <xs:element name="PersonName" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="GivenName" minOccurs="0"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="StringLength1to64"/> + </xs:simpleContent> + </xs:complexType> + </xs:element> + <xs:element name="Surname"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="StringLength1to64"/> + </xs:simpleContent> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="URL" minOccurs="0"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="def_nonempty_string"> + <xs:attribute name="Type" use="required"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="Image"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + <xs:element name="EmployeeInfo" minOccurs="0"> + <xs:complexType> + <xs:attribute name="EmployeeId"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:minLength value="1"/> + <xs:maxLength value="16"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + </xs:sequence> + <xs:attribute name="Role" type="StringLength1to32"/> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="AttendeeInfo" minOccurs="0"> + <xs:complexType> + <xs:attribute name="TotalQuantity" use="required" type="def_int_ge0"/> + <xs:attribute name="PreRegisteredQuantity" use="required" type="def_int_ge0"/> + </xs:complexType> + </xs:element> + <xs:element name="Dates" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <!-- LatestDate/Start/End are dates or datetimes, but we cannot make a choice between the two, + because XSD would need Elements to be different to distinguish the cases. --> + <xs:element name="Date" maxOccurs="99"> + <xs:complexType> + <xs:sequence> + <xs:element name="EndDateWindow" minOccurs="0"> + <xs:complexType> + <xs:attribute name="LatestDate" use="required" type="DateOrDateTimeType"/> + </xs:complexType> + </xs:element> + <xs:element name="LocationCategories" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="Location" minOccurs="0"> + <xs:complexType> + <xs:attribute name="AreaID" use="required" type="NumericStringLength1to8"/> + </xs:complexType> + </xs:element> + <xs:element name="Category" maxOccurs="unbounded"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="def_nonempty_string"> + <xs:attribute name="Language" use="required"> + <xs:simpleType> + <xs:restriction base="xs:language"> + <xs:pattern value="[a-z][a-z]"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + <xs:attribute name="Start" use="required" type="DateOrTimeOrDateTimeType"/> + <xs:attribute name="End" type="DateOrTimeOrDateTimeType"/> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="Comments" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="Comment" maxOccurs="unbounded"> + <xs:complexType> + <xs:sequence> + <xs:element name="Text" minOccurs="0" maxOccurs="unbounded"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="def_nonempty_string"> + <xs:attribute name="Language"> + <xs:simpleType> + <xs:restriction base="xs:language"> + <xs:pattern value="[a-z][a-z]"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + <xs:element name="Image" minOccurs="0" maxOccurs="unbounded"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="def_nonempty_string"/> + </xs:simpleContent> + </xs:complexType> + </xs:element> + </xs:sequence> + <xs:attribute name="Name" use="required"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="Title"/> + <xs:enumeration value="Category"/> + <xs:enumeration value="Gallery"/> + <xs:enumeration value="Description"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + <xs:attribute name="Type" type="def_nonempty_string"/> + <xs:attribute name="URL" type="def_url_string"/> + <xs:attribute name="Acronym" type="StringLength1to32"/> + </xs:complexType> + </xs:element> + + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + <xs:attribute name="Version" use="required"/> + </xs:complexType> + </xs:element> + + <!-- Activities: OTA_HotelPostEventNotifRS --> + + <xs:element name="OTA_HotelPostEventNotifRS"> + <xs:complexType> + <xs:group ref="def_generic_response"/> + <xs:attribute name="Version" use="required"/> + <xs:attribute name="TimeStamp"/> + </xs:complexType> + </xs:element> + + + <!-- ******************************************************************************* --> + <!-- * FreeRooms --> + <!-- ******************************************************************************* --> + + <!-- FreeRooms: OTA_HotelInvCountNotifRQ --> + + <xs:element name="OTA_HotelInvCountNotifRQ"> + <xs:complexType> + <xs:sequence> + + <!-- UniqueID {0,1} --> + + <xs:element name="UniqueID" minOccurs="0"> + <xs:complexType> + <xs:attribute name="Type" use="required"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="16"/> + <xs:enumeration value="35"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="ID" use="required" type="xs:string"/> <!-- an ID is required by OTA, we ignore the value --> + <xs:attribute name="Instance" use="required"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="CompleteSet"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + + <!-- Inventories {1} --> + + <xs:element name="Inventories"> + <xs:complexType> + <xs:sequence> + + <!-- Inventories > Inventory (1,} --> + + <xs:element name="Inventory" maxOccurs="unbounded"> + <xs:complexType> + + <!-- Inventories > Inventory > StatusApplicationControl {0,1} --> + + <xs:sequence> + <xs:element name="StatusApplicationControl" minOccurs="0"> + <xs:complexType> + <xs:attribute name="Start" use="required" type="def_date"/> + <xs:attribute name="End" use="required" type="def_date"/> + <xs:attribute name="InvTypeCode" type="def_invTypeCode_string"/> + <xs:attribute name="InvCode" type="StringLength1to16"/> + <xs:attribute name="AllInvCode" type="def_bool"/> + </xs:complexType> + </xs:element> + + <xs:element name="InvCounts" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="InvCount" maxOccurs="3"> + <xs:complexType> + <xs:attribute name="CountType" use="required"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="2"/> + <xs:enumeration value="6"/> + <xs:enumeration value="9"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + + <xs:attribute name="Count" use="required" type="def_int_ge0"/> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + <xs:attribute name="HotelCode" use="required" type="StringLength1to16"/> + <xs:attribute name="HotelName" type="StringLength1to128"/> + </xs:complexType> + </xs:element> + </xs:sequence> + <xs:attribute name="Version" use="required"/> + </xs:complexType> + </xs:element> + + <!-- FreeRooms: OTA_HotelInvCountNotifRS --> + + <xs:element name="OTA_HotelInvCountNotifRS"> + <xs:complexType> + <xs:group ref="def_generic_response"/> + <xs:attribute name="Version" use="required"/> + <xs:attribute name="TimeStamp"/> + </xs:complexType> + </xs:element> + + + <!-- ******************************************************************************* --> + <!-- * GuestRequests --> + <!-- ******************************************************************************* --> + + <!-- GuestRequests (push): OTA_HotelResNotifRQ --> + + <xs:element name="OTA_HotelResNotifRQ"> + <xs:complexType> + <xs:sequence> + <xs:element name="HotelReservations"> + <xs:complexType> + <xs:sequence> + <xs:group ref="def_hotelreservation"/> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + <xs:attribute name="Version" use="required"/> + <xs:attribute name="TimeStamp"/> + </xs:complexType> + </xs:element> + + <!-- GuestRequests (push): OTA_HotelResNotifRS --> + + <xs:element name="OTA_HotelResNotifRS"> + <xs:complexType> + <xs:sequence> + + <xs:choice> + + <!-- choice: Errors {1} --> + + <xs:element name="Errors"> + <xs:complexType> + <xs:sequence> + + <!-- Errors > Error {1,} --> + + <xs:element name="Error" maxOccurs="unbounded"> + <xs:complexType mixed="true"> + <xs:attribute name="Type" use="required"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="11"/> + <xs:enumeration value="13"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="Code" type="def_int_ge0"/> + <xs:attribute name="Status" type="def_send_complete"/> + </xs:complexType> + </xs:element> + + </xs:sequence> + </xs:complexType> + </xs:element> + + <!-- choice: Success {1} + Warnings {0,1} + HotelReservations {1} --> + + <xs:sequence> + + <xs:element name="Success"/> + + <xs:element name="Warnings" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="Warning" maxOccurs="unbounded"> + <xs:complexType mixed="true"> + <xs:attribute name="Type" use="required" type="def_int_gt0"/> + <xs:attribute name="Code" use="required" type="def_int_gt0"/> + <xs:attribute name="RecordID" use="required" type="StringLength1to64"/> + <xs:attribute name="Status" type="def_send_complete"/> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + + <xs:element name="HotelReservations"> + <xs:complexType> + <xs:sequence> + + <xs:element name="HotelReservation" maxOccurs="unbounded"> + <xs:complexType> + <xs:sequence> + + <xs:element name="UniqueID"> + <xs:complexType> + <xs:attribute name="Type" use="required"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="14"/> + <xs:enumeration value="15"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="ID" use="required" type="StringLength1to32"/> + </xs:complexType> + </xs:element> + + </xs:sequence> + </xs:complexType> + </xs:element> + + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + + </xs:choice> + + </xs:sequence> + <xs:attribute name="Version" use="required"/> + <xs:attribute name="TimeStamp"/> + </xs:complexType> + </xs:element> + + <!-- GuestRequests: OTA_ReadRQ --> + + <xs:element name="OTA_ReadRQ"> + <xs:complexType> + <xs:sequence> + + <xs:element name="ReadRequests"> + <xs:complexType> + <xs:sequence> + + <xs:element name="HotelReadRequest"> + <xs:complexType> + <xs:sequence> + + <xs:element name="SelectionCriteria" minOccurs="0"> + <xs:complexType> + <xs:attribute name="Start" use="required" type="def_datetime"/> + </xs:complexType> + </xs:element> + + </xs:sequence> + <xs:attribute name="HotelCode" use="required" type="StringLength1to16"/> + <xs:attribute name="HotelName" type="StringLength1to128"/> + </xs:complexType> + </xs:element> + + </xs:sequence> + </xs:complexType> + </xs:element> + + </xs:sequence> + <xs:attribute name="Version" use="required"/> + <xs:attribute name="TimeStamp"/> + </xs:complexType> + </xs:element> + + <!-- GuestRequests: OTA_ResRetrieveRS --> + + <xs:element name="OTA_ResRetrieveRS"> + <xs:complexType> + + <xs:choice> + + <!-- choice: Errors {1} --> + + <xs:element name="Errors"> + <xs:complexType> + <xs:sequence> + + <!-- Errors > Error {1,} --> + + <xs:element name="Error" maxOccurs="unbounded"> + <xs:complexType mixed="true"> + <xs:attribute name="Type" use="required"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="11"/> + <xs:enumeration value="13"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="Code" type="def_int_ge0"/> + <xs:attribute name="Status" type="def_send_complete"/> + </xs:complexType> + </xs:element> + + </xs:sequence> + </xs:complexType> + </xs:element> + + <!-- choice: Success {1} + Warnings {0,1} + ReservationsList {1} --> + + <xs:sequence> + + <xs:element name="Success"/> + + <xs:element name="Warnings" minOccurs="0"> + <xs:complexType> + <xs:sequence> + + <!-- Warnings > Warning {1,} --> + + <xs:element name="Warning" maxOccurs="unbounded"> + <xs:complexType mixed="true"> + <xs:attribute name="Type" use="required" type="def_int_gt0"/> + <xs:attribute name="Code" type="def_int_ge0"/> + <xs:attribute name="RecordID" type="StringLength1to64"/> + <xs:attribute name="Status" type="def_send_complete"/> + </xs:complexType> + </xs:element> + + </xs:sequence> + </xs:complexType> + </xs:element> + + <xs:element name="ReservationsList"> + <xs:complexType> + <xs:sequence> + <xs:group ref="def_hotelreservation"/> + </xs:sequence> + </xs:complexType> + </xs:element> + + </xs:sequence> + + </xs:choice> + + <xs:attribute name="Version" use="required"/> + <xs:attribute name="TimeStamp"/> + </xs:complexType> + </xs:element> + + <!-- GuestRequests: OTA_NotifReportRQ --> + + <xs:element name="OTA_NotifReportRQ"> + <xs:complexType> + <xs:sequence> + + <xs:element name="Success"/> + + <xs:element name="Warnings" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="Warning" maxOccurs="unbounded"> + <xs:complexType mixed="true"> + <xs:attribute name="Type" use="required" type="def_int_gt0"/> + <xs:attribute name="Code" use="required" type="def_int_gt0"/> + <xs:attribute name="RecordID" use="required" type="StringLength1to64"/> + <xs:attribute name="Status" type="def_send_complete"/> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + + <xs:element name="NotifDetails" minOccurs="0"> + <xs:complexType> + <xs:sequence> + + <xs:element name="HotelNotifReport"> + <xs:complexType> + <xs:sequence> + + <xs:element name="HotelReservations"> + <xs:complexType> + <xs:sequence> + + <xs:element name="HotelReservation" maxOccurs="unbounded"> + <xs:complexType> + <xs:sequence> + + <xs:element name="UniqueID"> + <xs:complexType> + <xs:attribute name="Type" use="required"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="14"/> + <xs:enumeration value="15"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="ID" use="required" type="StringLength1to32"/> + </xs:complexType> + </xs:element> + + </xs:sequence> + </xs:complexType> + </xs:element> + + </xs:sequence> + </xs:complexType> + </xs:element> + + </xs:sequence> + </xs:complexType> + </xs:element> + + </xs:sequence> + </xs:complexType> + </xs:element> + + </xs:sequence> + <xs:attribute name="Version" use="required"/> + <xs:attribute name="TimeStamp"/> + </xs:complexType> + </xs:element> + + <!-- GuestRequests: OTA_NotifReportRS --> + + <xs:element name="OTA_NotifReportRS"> + <xs:complexType> + + <xs:choice> + + <!-- choice: Errors {1} --> + + <xs:element name="Errors"> + <xs:complexType> + <xs:sequence> + + <!-- Errors > Error {1,} --> + + <xs:element name="Error" maxOccurs="unbounded"> + <xs:complexType mixed="true"> + <xs:attribute name="Type" use="required"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="11"/> + <xs:enumeration value="13"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="Code" type="def_int_ge0"/> + <xs:attribute name="Status" type="def_send_complete"/> + </xs:complexType> + </xs:element> + + </xs:sequence> + </xs:complexType> + </xs:element> + + <!-- choice: Success {1}, Warnings{0,} --> + + <xs:sequence> + <xs:element name="Success"/> + + <xs:element name="Warnings" minOccurs="0"> + <xs:complexType> + <xs:sequence> + + <!-- Warnings > Warning {1,} --> + + <xs:element name="Warning" maxOccurs="unbounded"> + <xs:complexType mixed="true"> + <xs:attribute name="Type" use="required" type="def_int_gt0"/> + <xs:attribute name="RecordID" type="StringLength1to64"/> + <xs:attribute name="Status" type="def_send_complete"/> + </xs:complexType> + </xs:element> + + </xs:sequence> + </xs:complexType> + </xs:element> + + </xs:sequence> + + + + </xs:choice> + + <xs:attribute name="Version" use="required"/> + <xs:attribute name="TimeStamp"/> + + </xs:complexType> + </xs:element> + + + <!-- ******************************************************************************* --> + <!-- * Inventory/Basic (Push) and Inventory/HotelInfo (Push) --> + <!-- ******************************************************************************* --> + + <!-- Inventory: OTA_HotelDescriptiveContentNotifRQ --> + + <xs:element name="OTA_HotelDescriptiveContentNotifRQ"> + <xs:complexType> + <xs:sequence> + + <xs:group ref="def_hoteldescriptivecontents"/> + + </xs:sequence> + <xs:attribute name="Version" use="required"/> + <xs:attribute name="TimeStamp"/> + </xs:complexType> + </xs:element> + + <!-- Inventory: OTA_HotelDescriptiveContentNotifRS --> + + <xs:element name="OTA_HotelDescriptiveContentNotifRS"> + <xs:complexType> + <xs:group ref="def_generic_response"/> + <xs:attribute name="Version" use="required"/> + <xs:attribute name="TimeStamp"/> + </xs:complexType> + </xs:element> + + + <!-- ******************************************************************************* --> + <!-- * Inventory/Basic (Pull) and Inventory/HotelInfo (Pull) --> + <!-- ******************************************************************************* --> + + <!-- Inventory: OTA_HotelDescriptiveInfoRQ --> + + <xs:element name="OTA_HotelDescriptiveInfoRQ"> + <xs:complexType> + <xs:sequence> + + <xs:element name="HotelDescriptiveInfos"> + <xs:complexType> + <xs:sequence> + + <xs:element name="HotelDescriptiveInfo"> + <xs:complexType> + <xs:attribute name="HotelCode" use="required" type="StringLength1to16"/> + <xs:attribute name="HotelName" type="StringLength1to128"/> + </xs:complexType> + </xs:element> + + </xs:sequence> + </xs:complexType> + </xs:element> + + </xs:sequence> + <xs:attribute name="Version" use="required"/> + <xs:attribute name="TimeStamp"/> + </xs:complexType> + </xs:element> + + <!-- Inventory: OTA_HotelDescriptiveInfoRS --> + + <xs:element name="OTA_HotelDescriptiveInfoRS"> + <xs:complexType> + + <xs:choice> + + <!-- choice: Errors {1} --> + + <xs:element name="Errors"> + <xs:complexType> + <xs:sequence> + + <!-- Errors > Error {1,} --> + + <xs:element name="Error" maxOccurs="unbounded"> + <xs:complexType mixed="true"> + <xs:attribute name="Type" use="required"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="11"/> + <xs:enumeration value="13"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="Code" type="def_int_ge0"/> + <xs:attribute name="Status" type="def_send_complete"/> + </xs:complexType> + </xs:element> + + </xs:sequence> + </xs:complexType> + </xs:element> + + <!-- choice: Success {1} + Warnings {0, } + HotelDescriptiveContents {1} --> + + <xs:sequence> + <xs:element name="Success"/> + + <xs:element name="Warnings" minOccurs="0"> + <xs:complexType> + <xs:sequence> + + <!-- Warnings > Warning {1,} --> + + <xs:element name="Warning" maxOccurs="unbounded"> + <xs:complexType mixed="true"> + <xs:attribute name="Type" use="required" type="def_int_gt0"/> + <xs:attribute name="RecordID" type="StringLength1to64"/> + <xs:attribute name="Status" type="def_send_complete"/> + </xs:complexType> + </xs:element> + + </xs:sequence> + </xs:complexType> + </xs:element> + + <xs:group ref="def_hoteldescriptivecontents"/> + </xs:sequence> + + </xs:choice> + + <xs:attribute name="Version" use="required"/> + <xs:attribute name="TimeStamp"/> + + </xs:complexType> + </xs:element> + + + <!-- ******************************************************************************* --> + <!-- * RatePlans --> + <!-- ******************************************************************************* --> + + <!-- RatePlans: OTA_HotelRatePlanNotifRQ --> + + <xs:element name="OTA_HotelRatePlanNotifRQ"> + <xs:complexType> + <xs:sequence> + + <!-- UniqueID {0,1} --> + + <xs:element name="UniqueID" minOccurs="0"> + <xs:complexType> + <xs:attribute name="Type" use="required"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="16"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="ID" use="required" type="xs:string"/> <!-- an ID is required by OTA, we ignore the value --> + <xs:attribute name="Instance" use="required"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="CompleteSet"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + + <!-- RatePlans {1} --> + + <xs:group ref="def_rateplans"/> + + </xs:sequence> + <xs:attribute name="Version" use="required"/> + <xs:attribute name="TimeStamp"/> + </xs:complexType> + </xs:element> + + <!-- RatePlans: OTA_HotelRatePlanNotifRS --> + + <xs:element name="OTA_HotelRatePlanNotifRS"> + <xs:complexType> + <xs:group ref="def_generic_response"/> + <xs:attribute name="Version" use="required"/> + <xs:attribute name="TimeStamp"/> + </xs:complexType> + </xs:element> + + + <!-- ******************************************************************************* --> + <!-- * BaseRates --> + <!-- ******************************************************************************* --> + + <!-- BaseRates: OTA_HotelRatePlanRQ --> + + <xs:element name="OTA_HotelRatePlanRQ"> + <xs:complexType> + <xs:sequence> + + <!-- RatePlans {1} --> + + <xs:element name="RatePlans"> + <xs:complexType> + <xs:sequence> + + <!-- RatePlans > RatePlan {1} --> + + <xs:element name="RatePlan"> + <xs:complexType> + <xs:sequence> + + <xs:choice maxOccurs="unbounded"> + + <xs:element name="DateRange"> + <xs:complexType> + <xs:attribute name="Start" type="def_date"/> + <xs:attribute name="End" type="def_date"/> + </xs:complexType> + </xs:element> + + <xs:element name="RatePlanCandidates"> + <xs:complexType> + <xs:sequence> + <xs:element name="RatePlanCandidate" maxOccurs="unbounded"> + <xs:complexType> + <xs:attribute name="RatePlanCode" type="StringLength1to64"/> + <xs:attribute name="RatePlanID" type="StringLength1to64"/> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + + <xs:element name="HotelRef"> + <xs:complexType> + <xs:attribute name="HotelCode" use="required" type="StringLength1to16"/> + <xs:attribute name="HotelName" type="StringLength1to128"/> + </xs:complexType> + </xs:element> + + </xs:choice> + + </xs:sequence> + </xs:complexType> + </xs:element> + + </xs:sequence> + </xs:complexType> + </xs:element> + + </xs:sequence> + <xs:attribute name="Version" use="required"/> + <xs:attribute name="TimeStamp"/> + + </xs:complexType> + </xs:element> + + <!-- BaseRates: OTA_HotelRatePlanRS --> + + <xs:element name="OTA_HotelRatePlanRS"> + <xs:complexType> + + <xs:choice> + + <!-- choice: Errors {1} --> + + <xs:element name="Errors"> + <xs:complexType> + <xs:sequence> + + <!-- Errors > Error {1,} --> + + <xs:element name="Error" maxOccurs="unbounded"> + <xs:complexType mixed="true"> + <xs:attribute name="Type" use="required"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="11"/> + <xs:enumeration value="13"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="Code" type="def_int_ge0"/> + <xs:attribute name="Status" type="def_send_complete"/> + </xs:complexType> + </xs:element> + + </xs:sequence> + </xs:complexType> + </xs:element> + + <!-- choice: Success {1} + Warnings {0, } + RatePlans {1} --> + + <xs:sequence> + <xs:element name="Success"/> + + <xs:element name="Warnings" minOccurs="0"> + <xs:complexType> + <xs:sequence> + + <!-- Warnings > Warning {1,} --> + + <xs:element name="Warning" maxOccurs="unbounded"> + <xs:complexType mixed="true"> + <xs:attribute name="Type" use="required" type="def_int_gt0"/> + <xs:attribute name="RecordID" type="StringLength1to64"/> + <xs:attribute name="Status" type="def_send_complete"/> + </xs:complexType> + </xs:element> + + </xs:sequence> + </xs:complexType> + </xs:element> + + <xs:group ref="def_rateplans"/> + </xs:sequence> + + </xs:choice> + <xs:attribute name="Version" use="required"/> + <xs:attribute name="TimeStamp"/> + + </xs:complexType> + </xs:element> + + + <!-- ******************************************************************************* --> + <!-- * common definition of HotelReservation used in GuestRequests --> + <!-- ******************************************************************************* --> + + <xs:group name="def_hotelreservation"> + <xs:sequence> + + <!-- HotelReservation {0,} --> + + <xs:element name="HotelReservation" maxOccurs="unbounded" minOccurs="0"> + <xs:complexType> + <xs:sequence> + + <!-- HotelReservation > UniqueID {1} --> + + <xs:element name="UniqueID"> + <xs:complexType> + <xs:attribute name="Type" use="required"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="14"/> + <xs:enumeration value="15"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="ID" use="required" type="StringLength1to32"/> + </xs:complexType> + </xs:element> + + <!-- HotelReservation > RoomStays {0,1} --> + + <xs:element name="RoomStays" minOccurs="0"> + <xs:complexType> + <xs:sequence> + + <!-- HotelReservation > RoomStays > RoomStay {1,} --> + + <xs:element name="RoomStay" maxOccurs="unbounded"> + <xs:complexType> + <xs:sequence> + + <!-- HotelReservation > RoomStays > RoomStay > RoomTypes {0,1} --> + + <xs:element name="RoomTypes" minOccurs="0"> + <xs:complexType> + <xs:sequence> + + <!-- HotelReservation > RoomStays > RoomStay > RoomTypes > RoomType {1} --> + + <xs:element name="RoomType"> + <xs:complexType> + <xs:attribute name="RoomTypeCode" type="def_invTypeCode_string"/> + <xs:attribute name="RoomClassificationCode" type="def_int_ge0"/> + <xs:attribute name="RoomType"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <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:enumeration value="8"/> + <xs:enumeration value="9"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + + </xs:sequence> + </xs:complexType> + </xs:element> + + <!-- HotelReservation > RoomStays > RoomStay > RatePlans {0,1} --> + + <xs:element name="RatePlans" minOccurs="0"> + <xs:complexType> + <xs:sequence> + + <!-- HotelReservation > RoomStays > RoomStay > RatePlans > RatePlan {1} --> + + <xs:element name="RatePlan"> + <xs:complexType> + <xs:sequence> + + <!-- HotelReservation > RoomStays > RoomStay > RatePlans > RatePlan > Commission {0,1} --> + + <xs:element name="Commission" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="CommissionPayableAmount" minOccurs="0"> + <xs:complexType> + <xs:attribute name="Amount" type="def_decimal_ge0"/> + <xs:attribute name="CurrencyCode" type="def_three_char_string"/> + </xs:complexType> + </xs:element> + </xs:sequence> + <xs:attribute name="Percent" type="def_int_ge0"/> + </xs:complexType> + </xs:element> + + <!-- HotelReservation > RoomStays > RoomStay > RatePlans > RatePlan > MealsIncluded {0,1} --> + + <xs:element name="MealsIncluded" minOccurs="0"> + <xs:complexType> + <xs:attribute name="MealPlanIndicator" use="required"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="1"/> + <xs:enumeration value="true"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="MealPlanCodes" use="required"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="1"/> + <xs:enumeration value="3"/> + <xs:enumeration value="10"/> + <xs:enumeration value="12"/> + <xs:enumeration value="14"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + + </xs:sequence> + <xs:attribute name="RatePlanCode" type="StringLength1to64"/> + </xs:complexType> + </xs:element> + + </xs:sequence> + </xs:complexType> + </xs:element> + + <!-- HotelReservation > RoomStays > RoomStay > RoomRates {0,1} --> + + <xs:element name="RoomRates" minOccurs="0"> + <xs:complexType> + <xs:sequence> + + <!-- HotelReservation > RoomStays > RoomStay > RoomRates > RoomRate {1} --> + + <xs:element name="RoomRate"> + <xs:complexType> + <xs:sequence> + + <!-- HotelReservation > RoomStays > RoomStay > RoomRates > RoomRate > Rates {1} --> + + <xs:element name="Rates" minOccurs="1"> + <xs:complexType> + <xs:sequence> + + <!-- HotelReservation > RoomStays > RoomStay > RoomRates > RoomRate > Rates > Rate {1,} --> + + <xs:element name="Rate" maxOccurs="unbounded"> + <xs:complexType> + <xs:sequence> + + <!-- HotelReservation > RoomStays > RoomStay > RoomRates > RoomRate > Rates > Rate > Base {1} --> + + <xs:element name="Base" maxOccurs="unbounded"> + <xs:complexType> + <xs:attribute name="AmountAfterTax" type="def_decimal_gt0"/> + <xs:attribute name="CurrencyCode" type="def_three_char_string"/> + </xs:complexType> + </xs:element> + + </xs:sequence> + + <xs:attribute name="EffectiveDate" use="required" type="def_date"/> + <xs:attribute name="ExpireDate" type="def_date"/> + <xs:attribute name="ExpireDateExclusiveInd" type="def_bool"/> + <xs:attribute name="RateTimeUnit"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="Day"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="UnitMultiplier" type="def_int_gt0"/> + </xs:complexType> + </xs:element> + + </xs:sequence> + </xs:complexType> + </xs:element> + + </xs:sequence> + <xs:attribute name="RatePlanCode" use="required" type="StringLength1to64"/> + <xs:attribute name="RoomTypeCode" use="required" type="def_invTypeCode_string"/> + </xs:complexType> + </xs:element> + + </xs:sequence> + </xs:complexType> + </xs:element> + + <!-- HotelReservation > RoomStays > RoomStay > GuestCounts {0,1} --> + + <xs:element name="GuestCounts" minOccurs="0"> + <xs:complexType> + <xs:sequence> + + <!-- HotelReservation > RoomStays > RoomStay > GuestCounts > GuestCount {1,} --> + + <xs:element name="GuestCount" maxOccurs="unbounded"> + <xs:complexType> + <xs:attribute name="Count" use="required" type="def_int_gt0"/> + <xs:attribute name="Age" type="def_int_ge0"/> + </xs:complexType> + </xs:element> + + </xs:sequence> + </xs:complexType> + </xs:element> + + <!-- HotelReservation > RoomStays > RoomStay > TimeSpan {1} --> + + <xs:element name="TimeSpan"> + <xs:complexType> + <xs:sequence> + + <!-- HotelReservation > RoomStays > RoomStay > TimeSpan > StartDateWindow {0,1} --> + + <xs:element name="StartDateWindow" minOccurs="0"> + <xs:complexType> + <xs:attribute name="EarliestDate" use="required" type="def_date"/> + <xs:attribute name="LatestDate" use="required" type="def_date"/> + </xs:complexType> + </xs:element> + + </xs:sequence> + <xs:attribute name="Start" type="def_date"/> + <xs:attribute name="End" type="def_date"/> + <xs:attribute name="Duration"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:pattern value="P[0-9]+N"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + + <!-- HotelReservation > RoomStays > RoomStay > Guarantee {0,1} --> + + <xs:element name="Guarantee" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="GuaranteesAccepted"> + <xs:complexType> + <xs:sequence> + <xs:element name="GuaranteeAccepted"> + <xs:complexType> + <xs:sequence> + + <xs:element name="PaymentCard"> + <xs:complexType> + <xs:sequence> + <xs:element name="CardHolderName" type="StringLength1to64"/> + + <xs:element name="CardNumber"> + <xs:complexType> + <xs:sequence> + <xs:element name="PlainText" type="def_nonempty_string" minOccurs="0"/> + </xs:sequence> + <xs:attribute name="EncryptedValue" type="def_nonempty_string"/> + <xs:attribute name="EncryptionMethod" type="def_nonempty_string"/> + </xs:complexType> + </xs:element> + + </xs:sequence> + <xs:attribute name="CardCode" use="required"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:pattern value="[A-Z][A-Z]?"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="ExpireDate" use="required"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:pattern value="[0-9][0-9][0-9][0-9]"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + + <!-- HotelReservation > RoomStays > RoomStay > Total {0,1} --> + + <xs:element name="Total" minOccurs="0"> + <xs:complexType> + <xs:attribute name="AmountAfterTax" use="required" type="def_decimal_ge0"/> + <xs:attribute name="CurrencyCode" use="required" type="def_three_char_string"/> + </xs:complexType> + </xs:element> + + <!-- HotelReservation > RoomStays > RoomStay > ServiceRPHs {0,1} --> + <xs:element name="ServiceRPHs" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="ServiceRPH" maxOccurs="unbounded"> + <xs:complexType> + <xs:attribute name="RPH" use="required"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:pattern value="[0-9]{1,8}"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + + </xs:sequence> + <xs:attribute name="RoomStayGroupID" type="StringLength1to32"/> + </xs:complexType> + </xs:element> + + </xs:sequence> + </xs:complexType> + </xs:element> + + <!-- HotelReservation > Services {0,1} --> + + <xs:element name="Services" minOccurs="0"> + <xs:complexType> + <xs:sequence> + + <!-- HotelReservation > Services > Service {1,} --> + + <xs:element name="Service" maxOccurs="unbounded"> + <xs:complexType> + <xs:sequence> + <xs:element name="ServiceDetails" minOccurs="1"> + <xs:complexType> + <xs:sequence> + <xs:element name="GuestCounts" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="GuestCount" maxOccurs="99"> + <xs:complexType> + <xs:attribute name="Age" type="def_int_gt0"/> + <xs:attribute name="Count" type="def_int_gt0" use="required"/> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="TimeSpan" minOccurs="0"> + <xs:complexType> + <xs:attribute name="Start" type="def_datetime" use="required"/> + <xs:attribute name="End" type="def_datetime"/> + </xs:complexType> + </xs:element> + <xs:element name="Comments" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="Comment"> + <xs:complexType> + <xs:sequence> + <xs:element name="Text"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="def_nonempty_string"> + <xs:attribute name="TextFormat" use="required"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="PlainText"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="Total"> + <xs:complexType> + <xs:attribute name="AmountAfterTax" use="required" type="def_decimal_ge0"/> + <xs:attribute name="CurrencyCode" use="required" type="def_three_char_string"/> + </xs:complexType> + </xs:element> + <xs:element name="ServiceDescription" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="Text" minOccurs="1"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="def_nonempty_string"> + <xs:attribute name="TextFormat" use="required"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="PlainText"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + <xs:attribute name="ID" use="required" type="def_one_to_thirty_two_chars_string"/> + <xs:attribute name="Type" use="required"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="16"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="ServiceCategoryCode" use="required"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="BOARD"/> + <xs:enumeration value="SUPPLEMENT"/> + <xs:enumeration value="SPA"/> + <xs:enumeration value="FOOD"/> + <xs:enumeration value="BEVERAGE"/> + <xs:enumeration value="ACTIVITY"/> + <xs:enumeration value="TOURISTTAX"/> + <xs:enumeration value="TRANSFER"/> + <xs:enumeration value="OTHER"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="ServiceInventoryCode" type="def_one_to_sixteen_chars_string" use="required"/> + <xs:attribute name="ServiceRPH"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:pattern value="[0-9]{1,8}"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="ServicePricingType" use="required"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="Per night"/> + <xs:enumeration value="Per person"/> + <xs:enumeration value="Per person per night"/> + <xs:enumeration value="Per stay"/> + <xs:enumeration value="Per use"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="Inclusive" type="xs:boolean" use="required"/> + <xs:attribute name="Quantity" type="def_int_gt0" use="required"/> + </xs:complexType> + </xs:element> + + </xs:sequence> + </xs:complexType> + </xs:element> + + <!-- HotelReservation > ResGuests {0, 1} --> + + <xs:element name="ResGuests" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="ResGuest"> + <xs:complexType> + <xs:sequence> + <xs:element name="Profiles"> + <xs:complexType> + <xs:sequence> + <xs:element name="ProfileInfo"> + <xs:complexType> + <xs:sequence> + <xs:element name="Profile"> + <xs:complexType> + <xs:sequence> + + <!-- HotelReservation > ... > Customer {1} --> + + <xs:element name="Customer"> + <xs:complexType> + <xs:sequence> + + <!-- HotelReservation > ... > Customer > PersonName {1} --> + + <xs:element name="PersonName"> + <xs:complexType> + <xs:sequence> + <xs:element name="NamePrefix" minOccurs="0" type="StringLength1to16"/> + <xs:element name="GivenName" type="StringLength1to64"/> + <xs:element name="Surname" type="StringLength1to64"/> + <xs:element name="NameTitle" minOccurs="0" type="StringLength1to16"/> + </xs:sequence> + </xs:complexType> + </xs:element> + + <!-- HotelReservation > ... > Customer > Telephone {0,} --> + + <xs:element name="Telephone" minOccurs="0" maxOccurs="unbounded"> + <xs:complexType> + <xs:attribute name="PhoneTechType"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:pattern value="(1|3|5)"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="PhoneNumber" use="required"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:pattern value="\+?[0-9]+"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + + <!-- HotelReservation > ... > Customer > Email {0,1} --> + + <xs:element name="Email" minOccurs="0"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="def_email_string"> + <xs:attribute name="Remark"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:pattern value="newsletter:(no|yes)"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + + <!-- HotelReservation > ... > Customer > Address {0,1} --> + + <xs:element name="Address" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="AddressLine" type="StringLength1to255" minOccurs="0"/> + <xs:element name="CityName" type="StringLength1to64" minOccurs="0"/> + <xs:element name="PostalCode" type="StringLength1to16" minOccurs="0"/> + <xs:element name="CountryName" minOccurs="0"> + <xs:complexType> + <xs:attribute name="Code" use="required"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:pattern value="[A-Z][A-Z]"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + </xs:sequence> + <xs:attribute name="Remark"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:pattern value="catalog:(no|yes)"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + + </xs:sequence> + <xs:attribute name="Gender"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:pattern value="(Unknown|Male|Female)"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="BirthDate" type="def_date"/> + <xs:attribute name="Language"> + <xs:simpleType> + <xs:restriction base="xs:language"> + <xs:pattern value="[a-z][a-z]"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + + <!-- HotelReservation > ResGlobalInfo {0,1} --> + + <xs:element name="ResGlobalInfo" minOccurs="0"> + <xs:complexType> + <xs:sequence> + + <!-- HotelReservation > ResGlobalInfo > Comments {0,1} --> + + <xs:element name="Comments" minOccurs="0"> + <xs:complexType> + <xs:sequence> + + <!-- HotelReservation > ResGlobalInfo > Comment {1,2} --> + + <xs:element name="Comment" maxOccurs="3"> + <xs:complexType> + <xs:sequence> + <xs:choice> + + <xs:element name="ListItem" minOccurs="0" maxOccurs="unbounded"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="def_nonempty_string"> + <xs:attribute name="ListItem" use="required" type="def_int_ge0"/> + <xs:attribute name="Language" use="required"> + <xs:simpleType> + <xs:restriction base="xs:language"> + <xs:pattern value="[a-z][a-z]"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + + <xs:element name="Text" minOccurs="0" type="def_nonempty_string"/> + + </xs:choice> + </xs:sequence> + <xs:attribute name="Name" use="required"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="included services"/> + <xs:enumeration value="customer comment"/> + <xs:enumeration value="additional info"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + + <!-- HotelReservation > ResGlobalInfo > SpecialRequests {0,1} --> + + <xs:element name="SpecialRequests" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="SpecialRequest" maxOccurs="unbounded"> + <xs:complexType> + <xs:sequence> + <xs:element name="Text" minOccurs="0"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:string"> + <xs:attribute name="TextFormat" use="required"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="PlainText"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + </xs:sequence> + <xs:attribute name="RequestCode" use="required" type="StringLength1to16"/> + <xs:attribute name="CodeContext" use="required"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="ALPINEBITS"/> + <xs:enumeration value="HOTEL"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + + <!-- HotelReservation > ResGlobalInfo > DepositPayments {0,1} --> + + <xs:element name="DepositPayments" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="GuaranteePayment" maxOccurs="unbounded"> + <xs:complexType> + <xs:sequence> + <xs:element name="AcceptedPayments"> + <xs:complexType> + <xs:sequence> + <xs:element name="AcceptedPayment"> + <xs:complexType> + <xs:choice> + <xs:element name="PaymentCard" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="CardHolderName" type="StringLength1to64" + minOccurs="0"/> + <xs:element name="CardNumber" minOccurs="0"> + <xs:complexType> + <xs:attribute name="Mask"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:pattern value="[0-9a-zA-Z]{1,32}"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="Token"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:pattern value="[0-9a-zA-Z]{1,32}"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="TokenProviderID" type="def_nonempty_string"/> + </xs:complexType> + </xs:element> + </xs:sequence> + <xs:attribute name="CardCode"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:pattern value="[A-Z]{1,2}"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="ExpireDate"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:pattern value="(0[1-9]|1[0-2])[0-9][0-9]"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + <xs:element name="BankAcct" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="BankAcctName" type="StringLength1to64" + minOccurs="0"/> + <xs:element name="BankAcctNumber"> + <xs:complexType> + <xs:sequence> + <xs:element name="PlainText" type="NumericStringLength1to19"/> + </xs:sequence> + <xs:attribute name="Mask"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:pattern value="[0-9a-zA-Z]{1,32}"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="Voucher" minOccurs="0"> + <xs:complexType> + <xs:attribute name="ElectronicIndicator" use="required"> + <xs:simpleType> + <xs:restriction base="xs:boolean"> + <xs:pattern value="1|true"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="Identifier" type="StringLength1to64" use="required" /> + </xs:complexType> + </xs:element> + </xs:choice> + <xs:attribute name="GuaranteeTypeCode"/> + <xs:attribute name="GuaranteeID"/> + <xs:attribute name="PaymentTransactionTypeCode"/> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="AmountPercent" minOccurs="0"> + <xs:complexType> + <xs:attribute name="Amount" use="required" type="def_decimal_gt0"/> + <xs:attribute name="CurrencyCode" type="def_three_char_string"/> + </xs:complexType> + </xs:element> + </xs:sequence> + <xs:attribute name="Start"/> + <xs:attribute name="GuaranteeCode"/> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + + <!-- HotelReservation > ResGlobalInfo > CancelPenalties {0,1} --> + + <xs:element name="CancelPenalties" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="CancelPenalty"> + <xs:complexType> + <xs:sequence> + <xs:element name="PenaltyDescription"> + <xs:complexType> + <xs:sequence> + <xs:element name="Text" type="def_nonempty_string"/> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + + <!-- HotelReservation > ResGlobalInfo > HotelReservationIDs {0,1} --> + + <xs:element name="HotelReservationIDs" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="HotelReservationID" maxOccurs="unbounded"> + <xs:complexType> + <xs:attribute name="ResID_Type" use="required" type="def_int_gt0"/> + <xs:attribute name="ResID_Value" type="StringLength1to64"/> + <xs:attribute name="ResID_Source" type="StringLength1to64"/> + <xs:attribute name="ResID_SourceContext" type="StringLength1to64"/> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + + <!-- HotelReservation > ResGlobalInfo > Profiles {0,1} --> + + <xs:element name="Profiles" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="ProfileInfo"> + <xs:complexType> + <xs:sequence> + <xs:element name="Profile"> + <xs:complexType> + <xs:sequence> + <xs:element name="CompanyInfo"> + <xs:complexType> + <xs:sequence> + + <xs:element name="CompanyName"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="def_nonempty_string"> + <xs:attribute name="Code" use="required" type="def_nonempty_string"/> + <xs:attribute name="CodeContext" use="required" type="def_nonempty_string"/> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + + <xs:element name="AddressInfo" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="AddressLine" type="StringLength1to255"/> + <xs:element name="CityName" type="StringLength1to64"/> + <xs:element name="PostalCode" type="StringLength1to16"/> + <xs:element name="CountryName"> + <xs:complexType> + <xs:attribute name="Code" use="required"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:pattern value="[A-Z][A-Z]"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + + <xs:element name="TelephoneInfo" minOccurs="0"> + <xs:complexType> + <xs:attribute name="PhoneTechType"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:pattern value="(1|3|5)"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="PhoneNumber" use="required"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:pattern value="\+?[0-9]+"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + + <xs:element name="Email" minOccurs="0" type="def_nonempty_string"/> + + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + <xs:attribute name="ProfileType" use="required"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="4"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + + <xs:element name="BasicPropertyInfo"> + <xs:complexType> + <xs:attribute name="HotelCode" use="required" type="StringLength1to16"/> + <xs:attribute name="HotelName" type="StringLength1to128"/> + </xs:complexType> + </xs:element> + + </xs:sequence> + </xs:complexType> + </xs:element> + + </xs:sequence> + <xs:attribute name="CreateDateTime" use="required" type="def_datetime"/> + <xs:attribute name="LastModifyDateTime" type="def_datetime"/> + <xs:attribute name="ResStatus" use="required"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="Requested"/> + <xs:enumeration value="Reserved"/> + <xs:enumeration value="Cancelled"/> + <xs:enumeration value="Modify"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="RoomStayReservation" type="def_bool"/> + </xs:complexType> + </xs:element> + + </xs:sequence> + </xs:group> + + + <!-- ******************************************************************************* --> + <!-- * common definition for HotelDescriptiveContents element as used --> + <!-- * in the Inventory types Inventory/HotelInfo (Push) and Inventory/Basic (Push) --> + <!-- ******************************************************************************* --> + + <xs:group name="def_hoteldescriptivecontents"> + <xs:sequence> + + <xs:element name="HotelDescriptiveContents"> + <xs:complexType> + <xs:sequence> + + <xs:element name="HotelDescriptiveContent"> + <xs:complexType> + <xs:sequence> + + <!-- HotelInfo (Inventory/HotelInfo (push)) --> + <xs:element name="HotelInfo" minOccurs="0"> + <xs:complexType> + <xs:sequence> + + <!-- HotelInfo > CategoryCodes --> + <xs:element name="CategoryCodes" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="HotelCategory"> + <xs:complexType> + <xs:attribute name="Code" type="def_nonempty_string"/> + <xs:attribute name="CodeDetail" use="required" type="StringLength1to128"/> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + + <!-- HotelInfo > Descriptions --> + <xs:element name="Descriptions" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="MultimediaDescriptions"> + <xs:complexType> + <xs:sequence> + <xs:element name="MultimediaDescription" maxOccurs="unbounded"> + <xs:complexType> + <xs:choice> + <xs:element name="TextItems" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="TextItem" minOccurs="0" maxOccurs="unbounded"> + <xs:complexType> + <xs:sequence> + <xs:element name="Description" maxOccurs="unbounded"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="def_nonempty_string"> + <xs:attribute name="TextFormat" use="required"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="PlainText"/> + <xs:enumeration value="HTML"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="Language" use="required"> + <xs:simpleType> + <xs:restriction base="xs:language"> + <xs:pattern value="[a-z][a-z]"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + </xs:sequence> + <xs:attribute name="SourceID" type="StringLength1to32"/> + <xs:attribute name="CopyrightNotice" type="StringLength1to64"/> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="ImageItems" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="ImageItem" maxOccurs="unbounded"> + <xs:complexType> + <xs:sequence> + <xs:element name="ImageFormat"> + <xs:complexType> + <xs:sequence> + <xs:element name="URL" type="def_url_string"/> + </xs:sequence> + <xs:attribute name="CopyrightNotice" type="StringLength1to64" /> + <xs:attribute name="SourceID" type="StringLength1to32"/> + <xs:attribute name="Title" type="StringLength1to64"/> + <xs:attribute name="ApplicableStart"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:pattern value="--[0-1][0-9]-[0-3][0-9]"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="ApplicableEnd"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:pattern value="--[0-1][0-9]-[0-3][0-9]"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + <xs:element name="Description" minOccurs="0" maxOccurs="unbounded"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="def_nonempty_string"> + <xs:attribute name="TextFormat" use="required"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="PlainText"/> + <xs:enumeration value="HTML"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="Language" use="required"> + <xs:simpleType> + <xs:restriction base="xs:language"> + <xs:pattern value="[a-z][a-z]"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + </xs:sequence> + <xs:attribute name="Category" use="required"> + <xs:simpleType> + <xs:restriction base="def_int_gt0"> + <xs:enumeration value="1"/> + <xs:enumeration value="2"/> + <xs:enumeration value="4"/> + <xs:enumeration value="12"/> + <xs:enumeration value="15"/> + <xs:enumeration value="22"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="VideoItems" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="VideoItem" maxOccurs="unbounded"> + <xs:complexType> + <xs:sequence> + <xs:element name="VideoFormat"> + <xs:complexType> + <xs:sequence> + <xs:element name="URL" type="def_url_string"/> + </xs:sequence> + <xs:attribute name="CopyrightNotice" type="StringLength1to64" /> + <xs:attribute name="SourceID" type="StringLength1to32"/> + <xs:attribute name="Title" type="StringLength1to64"/> + <xs:attribute name="ApplicableStart"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:pattern value="[0-1][0-9]-[0-3][0-9]"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + <xs:element name="Description" minOccurs="0" maxOccurs="unbounded"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="def_nonempty_string"> + <xs:attribute name="TextFormat" use="required"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="PlainText"/> + <xs:enumeration value="HTML"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="Language" use="required"> + <xs:simpleType> + <xs:restriction base="xs:language"> + <xs:pattern value="[a-z][a-z]"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + </xs:sequence> + <xs:attribute name="Category" use="required"> + <xs:simpleType> + <xs:restriction base="def_int_gt0"> + <xs:enumeration value="1"/> + <xs:enumeration value="2"/> + <xs:enumeration value="4"/> + <xs:enumeration value="12"/> + <xs:enumeration value="20"/> + <xs:enumeration value="22"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:choice> + <xs:attribute name="InfoCode"> + <xs:simpleType> + <xs:restriction base="def_int_gt0"> + <xs:enumeration value="1"/> + <xs:enumeration value="17"/> + <xs:enumeration value="23"/> + <xs:enumeration value="24"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + + <!-- HotelInfo > Position --> + <xs:element name="Position" minOccurs="0"> + <xs:complexType> + <xs:attribute name="Altitude" type="xs:decimal"/> + <xs:attribute name="AltitudeUnitOfMeasureCode"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="3"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="Latitude" type="xs:decimal"/> + <xs:attribute name="Longitude" type="xs:decimal"/> + </xs:complexType> + </xs:element> + + <!-- HotelInfo > Services --> + <xs:element name="Services" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="Service" minOccurs="0" maxOccurs="unbounded"> + <xs:complexType> + <xs:sequence> + <xs:element name="Features" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="Feature" minOccurs="0" maxOccurs="unbounded"> + <xs:complexType> + <xs:attribute name="AccessibleCode" use="required" type="def_int_gt0"/> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + <xs:attribute name="Code" use="required" type="def_alpinebits_code"/> + <xs:attribute name="MealPlanCode"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="12"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="ProximityCode" type="def_int_gt0"/> + <xs:attribute name="Included" type="def_bool"/> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + + </xs:sequence> + <xs:attribute name="HotelStatusCode" type="def_int_gt0"/> + </xs:complexType> + </xs:element> + + <!-- FacilityInfo (Inventory/Basic (push)) --> + <xs:element name="FacilityInfo" minOccurs="0"> + <xs:complexType> + <xs:sequence> + + <xs:element name="GuestRooms"> + <xs:complexType> + <xs:sequence> + + <xs:element name="GuestRoom" minOccurs="0" maxOccurs="unbounded"> + <xs:complexType> + <xs:sequence> + + <xs:element name="TypeRoom"> + <xs:complexType> + <xs:attribute name="StandardOccupancy" type="def_int_gt0"/> + <xs:attribute name="RoomClassificationCode" type="def_int_ge0"/> + <xs:attribute name="RoomID" type="StringLength1to16"/> + <xs:attribute name="Size" type="def_int_ge0"/> + <xs:attribute name="RoomType"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <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:enumeration value="8"/> + <xs:enumeration value="9"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + + <xs:element name="Amenities" minOccurs="0"> + <xs:complexType> + <xs:sequence> + + <xs:element name="Amenity" maxOccurs="unbounded"> + <xs:complexType> + <xs:attribute name="RoomAmenityCode" type="def_alpinebits_code"/> + </xs:complexType> + </xs:element> + + </xs:sequence> + </xs:complexType> + </xs:element> + + <xs:element name="MultimediaDescriptions" minOccurs="0"> + <xs:complexType> + <xs:sequence> + + <xs:element name="MultimediaDescription" maxOccurs="unbounded" minOccurs="0"> + <xs:complexType> + <xs:choice> + + <xs:element name="TextItems" minOccurs="0"> + <xs:complexType> + <xs:sequence> + + <xs:element name="TextItem"> + <xs:complexType> + <xs:sequence> + + <xs:element name="Description" maxOccurs="unbounded"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="def_nonempty_string"> + <xs:attribute name="TextFormat" use="required"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="PlainText"/> + <xs:enumeration value="HTML"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="Language" use="required"> + <xs:simpleType> + <xs:restriction base="xs:language"> + <xs:pattern value="[a-z][a-z]"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + + </xs:sequence> + </xs:complexType> + </xs:element> + + </xs:sequence> + </xs:complexType> + </xs:element> + + <xs:element name="ImageItems" minOccurs="0"> + <xs:complexType> + <xs:sequence> + + <xs:element name="ImageItem" maxOccurs="unbounded"> + <xs:complexType> + <xs:sequence> + + <xs:element name="ImageFormat"> + <xs:complexType> + <xs:sequence> + <xs:element name="URL" type="def_url_string"/> + </xs:sequence> + <xs:attribute name="CopyrightNotice" type="StringLength1to64" /> + </xs:complexType> + </xs:element> + + <xs:element name="Description" minOccurs="0" maxOccurs="unbounded"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="def_nonempty_string"> + <xs:attribute name="TextFormat" use="required"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="PlainText"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="Language" use="required"> + <xs:simpleType> + <xs:restriction base="xs:language"> + <xs:pattern value="[a-z][a-z]"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + + </xs:sequence> + <xs:attribute name="Category" use="required" type="def_int_gt0" /> + </xs:complexType> + </xs:element> + + </xs:sequence> + </xs:complexType> + </xs:element> + + </xs:choice> + <xs:attribute name="InfoCode"> + <xs:simpleType> + <xs:restriction base="def_int_gt0"> + <xs:enumeration value="1"/> + <xs:enumeration value="23"/> + <xs:enumeration value="25"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + + </xs:sequence> + </xs:complexType> + </xs:element> + + </xs:sequence> + <xs:attribute name="Code" use="required" type="def_invTypeCode_string"/> + <xs:attribute name="MaxOccupancy" type="def_int_gt0"/> + <xs:attribute name="MinOccupancy" type="def_int_gt0"/> + <xs:attribute name="MaxChildOccupancy" type="def_int_gt0"/> + <xs:attribute name="ID" type="def_invTypeCode_string"/> + </xs:complexType> + </xs:element> + + </xs:sequence> + </xs:complexType> + </xs:element> + + </xs:sequence> + </xs:complexType> + </xs:element> + + <!-- Policies (Inventory/HotelInfo (push)) --> + <xs:element name="Policies" minOccurs="0"> + <xs:complexType> + <xs:sequence> + + <xs:element name="Policy" maxOccurs="unbounded"> + <xs:complexType> + <xs:sequence> + + <xs:element name="CancelPolicy" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="CancelPenalty"> + <xs:complexType> + <xs:sequence> + <xs:element name="PenaltyDescription"> + <xs:complexType> + <xs:sequence> + <xs:element name="Text" maxOccurs="unbounded"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="def_nonempty_string"> + <xs:attribute name="TextFormat" use="required"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="PlainText"/> + <xs:enumeration value="HTML"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="Language" use="required"> + <xs:simpleType> + <xs:restriction base="xs:language"> + <xs:pattern value="[a-z][a-z]"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + + <xs:element name="CheckoutCharges" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="CheckoutCharge"> + <xs:complexType> + <xs:sequence> + <xs:element name="Description"> + <xs:complexType> + <xs:sequence> + <xs:element name="Text" maxOccurs="unbounded"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="def_nonempty_string"> + <xs:attribute name="TextFormat" use="required"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="PlainText"/> + <xs:enumeration value="HTML"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="Language" use="required"> + <xs:simpleType> + <xs:restriction base="xs:language"> + <xs:pattern value="[a-z][a-z]"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + <xs:attribute name="Amount" type="def_decimal_ge0"/> + <xs:attribute name="CurrencyCode" type="def_three_char_string"/> + <xs:attribute name="DecimalPlaces" type="def_int_gt0"/> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + + <xs:element name="PetsPolicies" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="PetsPolicy"> + <xs:complexType> + <xs:sequence> + <xs:element name="Description"> + <xs:complexType> + <xs:sequence> + <xs:element name="Text" maxOccurs="unbounded"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="def_nonempty_string"> + <xs:attribute name="TextFormat" use="required"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="PlainText"/> + <xs:enumeration value="HTML"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="Language" use="required"> + <xs:simpleType> + <xs:restriction base="xs:language"> + <xs:pattern value="[a-z][a-z]"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + <xs:attribute name="MaxPetQuantity" type="def_int_ge0"/> + <xs:attribute name="NonRefundableFee" type="def_decimal_ge0"/> + <xs:attribute name="ChargeCode" type="def_int_gt0"/> + <xs:attribute name="CurrencyCode" type="def_three_char_string"/> + <xs:attribute name="DecimalPlaces" type="def_int_gt0"/> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + + <xs:element name="TaxPolicies" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="TaxPolicy"> + <xs:complexType> + <xs:sequence> + <xs:element name="TaxDescription"> + <xs:complexType> + <xs:sequence> + <xs:element name="Text" maxOccurs="unbounded"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="def_nonempty_string"> + <xs:attribute name="TextFormat" use="required"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="PlainText"/> + <xs:enumeration value="HTML"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="Language" use="required"> + <xs:simpleType> + <xs:restriction base="xs:language"> + <xs:pattern value="[a-z][a-z]"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + <xs:attribute name="Amount" type="def_decimal_ge0"/> + <xs:attribute name="CurrencyCode" type="def_three_char_string"/> + <xs:attribute name="DecimalPlaces" type="def_int_gt0"/> + <xs:attribute name="Code"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="3"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="ChargeFrequency"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="1"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="ChargeUnit"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="21"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + + <xs:element name="GuaranteePaymentPolicy" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="GuaranteePayment"> + <xs:complexType> + <xs:sequence> + <xs:element name="AcceptedPayments"> + <xs:complexType> + <xs:sequence> + <xs:element name="AcceptedPayment" maxOccurs="unbounded"> + <xs:complexType> + <xs:sequence> + <xs:element name="BankAcct" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="BankAcctName"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="StringLength1to64"/> + </xs:simpleContent> + </xs:complexType> + </xs:element> + <xs:element name="BankAcctNumber"> + <xs:complexType> + <xs:sequence> + <xs:element name="PlainText"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="NumericStringLength1to19"/> + </xs:simpleContent> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="BankID"> + <xs:complexType> + <xs:sequence> + <xs:element name="PlainText"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="NumericStringLength1to19"/> + </xs:simpleContent> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="Cash" minOccurs="0"> + <xs:complexType> + <xs:attribute name="CashIndicator" use="required" type="def_bool"/> + </xs:complexType> + </xs:element> + <xs:element name="PaymentCard" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="CardType" minOccurs="0"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="def_nonempty_string"/> + </xs:simpleContent> + </xs:complexType> + </xs:element> + </xs:sequence> + <xs:attribute name="CardCode" type="def_nonempty_string"/> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="AmountPercent" minOccurs="0"> + <xs:complexType> + <xs:attribute name="Percent" use="required" type="def_decimal_gt0"/> + </xs:complexType> + </xs:element> + <xs:element name="Deadline" minOccurs="0"> + <xs:complexType> + <xs:attribute name="OffsetDropTime" use="required" type="def_nonempty_string"/> + <xs:attribute name="OffsetTimeUnit" use="required" type="TimeUnitType"/> + <xs:attribute name="OffsetUnitMultiplier" use="required" type="def_int_ge0"/> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + + <xs:element name="PolicyInfo" minOccurs="0"> + <xs:complexType> + <xs:attribute name="MinGuestAge" type="def_int_ge0"/> + </xs:complexType> + </xs:element> + + <xs:element name="StayRequirements" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="StayRequirement" maxOccurs="2"> + <xs:complexType> + <xs:attribute name="StayContext"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="Checkin"/> + <xs:enumeration value="Checkout"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="Start"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:pattern value="[0-2][0-9]:[0-5][0-9]:[0-5][0-9]"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="End"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:pattern value="[0-2][0-9]:[0-5][0-9]:[0-5][0-9]"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + + </xs:sequence> + </xs:complexType> + </xs:element> + + </xs:sequence> + </xs:complexType> + </xs:element> + + <!-- AffiliationInfo (Inventory/HotelInfo (push)) --> + <xs:element name="AffiliationInfo" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="Awards"> + <xs:complexType> + <xs:sequence> + <xs:element name="Award" maxOccurs="unbounded"> + <xs:complexType> + <xs:attribute name="Rating" use="required" type="def_decimal_ge0"/> + <xs:attribute name="Provider" use="required" type="def_nonempty_string"/> + <xs:attribute name="RatingSymbol" type="def_nonempty_string"/> + <xs:attribute name="OfficialAppointmentInd" type="def_bool"/> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + + <!-- ContactInfos (Inventory/HotelInfo (push)) --> + <xs:element name="ContactInfos" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="ContactInfo"> + <xs:complexType> + <xs:sequence> + + <xs:element name="Addresses" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="Address" maxOccurs="unbounded"> + <xs:complexType> + <xs:sequence> + <xs:element name="AddressLine" type="StringLength1to255"/> + <xs:element name="CityName" type="StringLength1to64"/> + <xs:element name="PostalCode" type="StringLength1to16"/> + <xs:element name="StateProv" minOccurs="0"> + <xs:complexType> + <xs:attribute name="StateCode" use="required" type="def_nonempty_string"/> + </xs:complexType> + </xs:element> + <xs:element name="CountryName" minOccurs="0"> + <xs:complexType> + <xs:attribute name="Code" use="required"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:pattern value="[A-Z][A-Z]"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + </xs:sequence> + <xs:attribute name="Language"> + <xs:simpleType> + <xs:restriction base="xs:language"> + <xs:pattern value="[a-z][a-z]"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + + <xs:element name="Phones" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="Phone" maxOccurs="unbounded"> + <xs:complexType> + <xs:attribute name="PhoneTechType" use="required" type="def_nonempty_string"/> + <xs:attribute name="PhoneNumber" use="required"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:pattern value="\+?[0-9]+"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + + <xs:element name="Emails" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="Email" maxOccurs="unbounded"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="def_nonempty_string"> + <xs:attribute name="EmailType" use="required" type="def_nonempty_string"/> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + + <xs:element name="URLs" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="URL" maxOccurs="unbounded"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:anyURI"> + <xs:attribute name="ID" type="def_uppercase_string"/> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + + <xs:element name="CompanyName" minOccurs="0"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="def_any_string"/> + </xs:simpleContent> + </xs:complexType> + </xs:element> + + </xs:sequence> + + <xs:attribute name="Location"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="6"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + + </xs:sequence> + <xs:attribute name="HotelCityCode" type="StringLength1to8"/> + <xs:attribute name="HotelCode" use="required" type="StringLength1to16" /> + <xs:attribute name="HotelName" type="StringLength1to128"/> + <xs:attribute name="AreaID" type="NumericStringLength1to8"/> + </xs:complexType> + </xs:element> + + </xs:sequence> + </xs:complexType> + </xs:element> + + </xs:sequence> + </xs:group> + + + <!-- ******************************************************************************* --> + <!-- * common definition for RatePlans element as used --> + <!-- * in RatePlans and BaseRates --> + <!-- ******************************************************************************* --> + + <xs:group name="def_rateplans"> + + <xs:sequence> + <xs:element name="RatePlans"> + <xs:complexType> + <xs:sequence> + + <!-- RatePlans > RatePlan {1,} --> + + <xs:element name="RatePlan" maxOccurs="unbounded"> + <xs:complexType> + <xs:sequence> + + <!-- RatePlans > RatePlan > BookingRules {0,1} --> + + <xs:element name="BookingRules" minOccurs="0"> + <xs:complexType> + <xs:sequence> + + <xs:element name="BookingRule" maxOccurs="unbounded"> + <xs:complexType> + <xs:sequence> + + <xs:element name="LengthsOfStay" minOccurs="0"> + <xs:complexType> + <xs:sequence> + + <xs:element name="LengthOfStay" maxOccurs="unbounded"> + <xs:complexType> + <xs:attribute name="Time" use="required" type="def_decimal_ge0"/> + <xs:attribute name="TimeUnit" use="required"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="Day"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="MinMaxMessageType" use="required"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="SetMinLOS"/> + <xs:enumeration value="SetForwardMinStay"/> + <xs:enumeration value="SetMaxLOS"/> + <xs:enumeration value="SetForwardMaxStay"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + + </xs:sequence> + </xs:complexType> + </xs:element> + + <xs:element name="DOW_Restrictions" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="ArrivalDaysOfWeek" minOccurs="0"> + <xs:complexType> + <xs:attribute name="Mon" type="def_bool"/> + <xs:attribute name="Tue" type="def_bool"/> + <xs:attribute name="Weds" type="def_bool"/> + <xs:attribute name="Thur" type="def_bool"/> + <xs:attribute name="Fri" type="def_bool"/> + <xs:attribute name="Sat" type="def_bool"/> + <xs:attribute name="Sun" type="def_bool"/> + </xs:complexType> + </xs:element> + <xs:element name="DepartureDaysOfWeek" minOccurs="0"> + <xs:complexType> + <xs:attribute name="Mon" type="def_bool"/> + <xs:attribute name="Tue" type="def_bool"/> + <xs:attribute name="Weds" type="def_bool"/> + <xs:attribute name="Thur" type="def_bool"/> + <xs:attribute name="Fri" type="def_bool"/> + <xs:attribute name="Sat" type="def_bool"/> + <xs:attribute name="Sun" type="def_bool"/> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + + <xs:element name="RestrictionStatus" minOccurs="0"> + <xs:complexType> + <xs:attribute name="Restriction"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="Master"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="Status"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="Open"/> + <xs:enumeration value="Close"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + + </xs:sequence> + <xs:attribute name="CodeContext"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="ROOMTYPE"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="Code" type="def_invTypeCode_string"/> + <xs:attribute name="Start" type="def_date"/> + <xs:attribute name="End" type="def_date"/> + </xs:complexType> + </xs:element> + + </xs:sequence> + </xs:complexType> + </xs:element> + + <!-- RatePlans > RatePlan > Rates {0,1} --> + + <xs:element name="Rates" minOccurs="0"> + <xs:complexType> + <xs:sequence> + + <xs:element name="Rate" maxOccurs="unbounded"> + <xs:complexType> + <xs:sequence> + + <xs:element name="BaseByGuestAmts" minOccurs="0"> + <xs:complexType> + <xs:sequence> + + <xs:element name="BaseByGuestAmt" maxOccurs="unbounded"> + <xs:complexType> + <xs:attribute name="NumberOfGuests" type="def_int_gt0"/> + <xs:attribute name="AmountAfterTax" type="def_decimal_gt0"/> + <xs:attribute name="CurrencyCode" type="def_three_char_string"/> + <xs:attribute name="Type"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="7"/> + <xs:enumeration value="25"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="AgeQualifyingCode" type="def_int_gt0"/> + </xs:complexType> + </xs:element> + + </xs:sequence> + </xs:complexType> + </xs:element> + + <xs:element name="AdditionalGuestAmounts" minOccurs="0"> + <xs:complexType> + <xs:sequence> + + <xs:element name="AdditionalGuestAmount" maxOccurs="unbounded"> + <xs:complexType> + <xs:attribute name="Amount" type="def_decimal_ge0"/> + <xs:attribute name="AgeQualifyingCode" type="def_int_gt0"/> + <xs:attribute name="MinAge" type="def_int_gt0"/> + <xs:attribute name="MaxAge" type="def_int_gt0"/> + </xs:complexType> + </xs:element> + + </xs:sequence> + </xs:complexType> + </xs:element> + + <xs:element name="RateDescription" minOccurs="0"> + <xs:complexType> + <xs:sequence> + + <xs:element name="ListItem" maxOccurs="unbounded"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="def_nonempty_string"> + <xs:attribute name="ListItem" use="required" type="def_int_ge0"/> + <xs:attribute name="Language" use="required"> + <xs:simpleType> + <xs:restriction base="xs:language"> + <xs:pattern value="[a-z][a-z]"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + + </xs:sequence> + <xs:attribute name="Name" use="required"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="included services"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + + <xs:element name="MealsIncluded" minOccurs="0"> + <xs:complexType> + <xs:attribute name="Breakfast" type="def_bool"/> + <xs:attribute name="Lunch" type="def_bool"/> + <xs:attribute name="Dinner" type="def_bool"/> + <xs:attribute name="MealPlanCodes"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="1"/> + <xs:enumeration value="3"/> + <xs:enumeration value="10"/> + <xs:enumeration value="12"/> + <xs:enumeration value="14"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="MealPlanIndicator"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="1"/> + <xs:enumeration value="true"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + + </xs:sequence> + <xs:attribute name="MinGuestApplicable" type="def_int_gt0"/> + <xs:attribute name="Start" type="def_date"/> + <xs:attribute name="End" type="def_date"/> + <xs:attribute name="RateTimeUnit"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="Day"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="UnitMultiplier" type="def_int_gt0"/> + <xs:attribute name="Mon" type="def_bool"/> + <xs:attribute name="Tue" type="def_bool"/> + <xs:attribute name="Weds" type="def_bool"/> + <xs:attribute name="Thur" type="def_bool"/> + <xs:attribute name="Fri" type="def_bool"/> + <xs:attribute name="Sat" type="def_bool"/> + <xs:attribute name="Sun" type="def_bool"/> + <xs:attribute name="Duration"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:pattern value="P[0-9]+N"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="InvTypeCode" type="def_invTypeCode_string"/> + + </xs:complexType> + </xs:element> + + </xs:sequence> + </xs:complexType> + </xs:element> + + <!-- RatePlans > RatePlan > Supplements {0,1} --> + + <xs:element name="Supplements" minOccurs="0"> + <xs:complexType> + <xs:sequence> + + <xs:element name="Supplement" maxOccurs="unbounded"> + <xs:complexType> + <xs:sequence> + <xs:choice> + <xs:element name="PrerequisiteInventory" minOccurs="0"> + <xs:complexType> + <xs:attribute name="InvCode" use="required" type="StringLength1to16"/> + <xs:attribute name="InvType" use="required"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="ALPINEBITSDOW"/> + <xs:enumeration value="ROOMTYPE"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + </xs:choice> + <!-- RatePlans > RatePlan > Supplements > Supplement > Description {0,5} --> + + <xs:element name="Description" minOccurs="0" maxOccurs="5"> + <xs:complexType> + <xs:sequence> + + <xs:choice maxOccurs="unbounded"> + + <xs:element name="ListItem" type="def_nonempty_string"/> + + <xs:element name="Image" type="def_url_string"/> + + <xs:element name="Text"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="def_nonempty_string"> + <xs:attribute name="TextFormat" use="required"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="PlainText"/> + <xs:enumeration value="HTML"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="Language"> + <xs:simpleType> + <xs:restriction base="xs:language"> + <xs:pattern value="[a-z][a-z]"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + + <xs:element name="URL" type="def_url_string"/> + + </xs:choice> + + </xs:sequence> + + <xs:attribute name="Name" use="required"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="title"/> + <xs:enumeration value="intro"/> + <xs:enumeration value="description"/> + <xs:enumeration value="gallery"/> + <xs:enumeration value="codelist"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + + </xs:sequence> + + <xs:attribute name="AddToBasicRateIndicator"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="1"/> + <xs:enumeration value="true"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + + <xs:attribute name="ChargeTypeCode"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="1"/> + <xs:enumeration value="12"/> + <xs:enumeration value="18"/> + <xs:enumeration value="19"/> + <xs:enumeration value="20"/> + <xs:enumeration value="21"/> + <xs:enumeration value="24"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + + <xs:attribute name="Amount" type="def_decimal_ge0"/> + + <xs:attribute name="InvType" use="required"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="EXTRA"/> + <xs:enumeration value="ALPINEBITSEXTRA"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + + <xs:attribute name="InvCode" type="StringLength1to16" use="required"/> + + <xs:attribute name="MandatoryIndicator" type="def_bool"/> + + <xs:attribute name="Start" type="def_date"/> + <xs:attribute name="End" type="def_date"/> + + </xs:complexType> + </xs:element> + + </xs:sequence> + </xs:complexType> + </xs:element> + + <!-- RatePlans > RatePlan > Offers {0,1} --> + + <xs:element name="Offers" minOccurs="0"> + <xs:complexType> + <xs:sequence> + + <xs:element name="Offer" maxOccurs="3"> + <xs:complexType> + <xs:sequence> + + <xs:element name="OfferRules" minOccurs="0"> + <xs:complexType> + <xs:sequence> + + <xs:element name="OfferRule" minOccurs="0"> + <xs:complexType> + <xs:sequence> + + <xs:element name="LengthsOfStay" minOccurs="0"> + <xs:complexType> + <xs:sequence> + + <xs:element name="LengthOfStay" maxOccurs="unbounded"> + <xs:complexType> + <xs:attribute name="Time" use="required" type="def_decimal_ge0"/> + <xs:attribute name="TimeUnit" use="required"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="Day"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="MinMaxMessageType" use="required"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="SetMinLOS"/> + <xs:enumeration value="SetMaxLOS"/> + <xs:enumeration value=""/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + + </xs:sequence> + </xs:complexType> + </xs:element> + + <xs:element name="DOW_Restrictions" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="ArrivalDaysOfWeek" minOccurs="0"> + <xs:complexType> + <xs:attribute name="Mon" type="def_bool"/> + <xs:attribute name="Tue" type="def_bool"/> + <xs:attribute name="Weds" type="def_bool"/> + <xs:attribute name="Thur" type="def_bool"/> + <xs:attribute name="Fri" type="def_bool"/> + <xs:attribute name="Sat" type="def_bool"/> + <xs:attribute name="Sun" type="def_bool"/> + </xs:complexType> + </xs:element> + <xs:element name="DepartureDaysOfWeek" minOccurs="0"> + <xs:complexType> + <xs:attribute name="Mon" type="def_bool"/> + <xs:attribute name="Tue" type="def_bool"/> + <xs:attribute name="Weds" type="def_bool"/> + <xs:attribute name="Thur" type="def_bool"/> + <xs:attribute name="Fri" type="def_bool"/> + <xs:attribute name="Sat" type="def_bool"/> + <xs:attribute name="Sun" type="def_bool"/> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + + <xs:element name="Occupancy" maxOccurs="unbounded"> + <xs:complexType> + <xs:attribute name="AgeQualifyingCode" use="required"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="8"/> + <xs:enumeration value="10"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="MinAge" type="def_int_gt0"/> + <xs:attribute name="MaxAge" type="def_int_gt0"/> + <xs:attribute name="MinOccupancy" type="def_int_ge0"/> + <xs:attribute name="MaxOccupancy" type="def_int_gt0"/> + </xs:complexType> + </xs:element> + + </xs:sequence> + + <xs:attribute name="MinAdvancedBookingOffset"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:pattern value="P[0-9]+D"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="MaxAdvancedBookingOffset"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:pattern value="P[0-9]+D"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + + </xs:complexType> + </xs:element> + + </xs:sequence> + </xs:complexType> + </xs:element> + + <xs:element name="Discount" minOccurs="0"> + <xs:complexType> + <xs:attribute name="Percent" use="required"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="100"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="NightsRequired" type="def_int_gt0"/> + <xs:attribute name="NightsDiscounted" type="def_int_gt0"/> + <xs:attribute name="DiscountPattern"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:pattern value="0*1*"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + + <xs:element name="Guests" minOccurs="0"> + <xs:complexType> + <xs:sequence> + + <xs:element name="Guest"> + <xs:complexType> + <xs:attribute name="AgeQualifyingCode" use="required" type="def_int_gt0"/> + <xs:attribute name="MaxAge" use="required" type="def_int_gt0"/> + <xs:attribute name="MinCount" use="required" type="def_int_ge0"/> + <xs:attribute name="FirstQualifyingPosition" use="required"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="1"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="LastQualifyingPosition" use="required" type="def_int_gt0"/> + </xs:complexType> + </xs:element> + + </xs:sequence> + </xs:complexType> + </xs:element> + + </xs:sequence> + </xs:complexType> + </xs:element> + + </xs:sequence> + </xs:complexType> + </xs:element> + + <!-- RatePlans > RatePlan > Description {0,5} --> + + <xs:element name="Description" minOccurs="0" maxOccurs="5"> + <xs:complexType> + <xs:sequence> + + <xs:choice maxOccurs="unbounded"> + + <xs:element name="ListItem" type="def_nonempty_string"/> + + <xs:element name="Image" type="def_url_string"/> + + <xs:element name="Text"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="def_nonempty_string"> + <xs:attribute name="TextFormat" use="required"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="PlainText"/> + <xs:enumeration value="HTML"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="Language"> + <xs:simpleType> + <xs:restriction base="xs:language"> + <xs:pattern value="[a-z][a-z]"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + + <xs:element name="URL" type="def_url_string"/> + + </xs:choice> + + </xs:sequence> + + <xs:attribute name="Name" use="required"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="title"/> + <xs:enumeration value="intro"/> + <xs:enumeration value="description"/> + <xs:enumeration value="gallery"/> + <xs:enumeration value="codelist"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + + </xs:sequence> + <xs:attribute name="Start" type="def_date"/> + <xs:attribute name="End" type="def_date"/> + <xs:attribute name="RatePlanNotifType"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="Overlay"/> + <xs:enumeration value="New"/> + <xs:enumeration value="Full"/> + <xs:enumeration value="Remove"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="CurrencyCode" type="def_three_char_string"/> + <xs:attribute name="RatePlanCode" type="StringLength1to64"/> + <xs:attribute name="RatePlanType"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="12"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="RatePlanCategory" type="StringLength1to64"/> + <xs:attribute name="RatePlanID" type="StringLength1to64"/> + <xs:attribute name="RatePlanQualifier" type="def_bool"/> + </xs:complexType> + </xs:element> <!-- close RatePlan --> + + </xs:sequence> + <xs:attribute name="HotelCode" use="required" type="StringLength1to16"/> + <xs:attribute name="HotelName" type="StringLength1to128"/> + </xs:complexType> + + </xs:element> + + </xs:sequence> + + </xs:group> + + + <!-- ******************************************************************************* --> + <!-- * common definition for success/advisory/warning/error responses --> + <!-- ******************************************************************************* --> + + <xs:group name="def_generic_response"> + <xs:choice> + + <!-- choice: Errors {1} --> + + <xs:element name="Errors"> + <xs:complexType> + <xs:sequence> + + <!-- Errors > Error {1,} --> + + <xs:element name="Error" maxOccurs="unbounded"> + <xs:complexType mixed="true"> + <xs:attribute name="Type" use="required"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="11"/> + <xs:enumeration value="13"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="Code" type="def_int_gt0"/> + <xs:attribute name="Status" type="def_send_complete"/> + </xs:complexType> + </xs:element> + + </xs:sequence> + </xs:complexType> + </xs:element> + + <!-- choice: Success {1} + Warnings {0,1} --> + + <xs:sequence> + + <xs:element name="Success"/> + + <xs:element name="Warnings" minOccurs="0"> + <xs:complexType> + <xs:sequence> + + <!-- Warnings > Warning {1,} --> + + <xs:element name="Warning" maxOccurs="unbounded"> + <xs:complexType mixed="true"> + <xs:attribute name="Type" use="required" type="def_int_gt0"/> + <xs:attribute name="RecordID" type="StringLength1to64"/> + <xs:attribute name="Status" type="def_send_complete"/> + </xs:complexType> + </xs:element> + + </xs:sequence> + </xs:complexType> + </xs:element> + + </xs:sequence> + + </xs:choice> + </xs:group> + + + <!-- ******************************************************************************* --> + <!-- * common definition for recurring, simple types --> + <!-- ******************************************************************************* --> + + <!-- The keywords to request complete set responses. --> + + <xs:simpleType name="def_send_complete"> + <xs:restriction base="xs:string"> + <xs:enumeration value="ALPINEBITS_SEND_HANDSHAKE"/> + <xs:enumeration value="ALPINEBITS_SEND_FREEROOMS"/> + <xs:enumeration value="ALPINEBITS_SEND_RATEPLANS"/> + <xs:enumeration value="ALPINEBITS_SEND_INVENTORY"/> + </xs:restriction> + </xs:simpleType> + + <!-- A generic non-empty string type. --> + + <xs:simpleType name="def_nonempty_string"> + <xs:restriction base="xs:string"> + <xs:minLength value="1"/> + </xs:restriction> + </xs:simpleType> + + <!-- A generic string type. --> + + <xs:simpleType name="def_any_string"> + <xs:restriction base="xs:string"> + <xs:minLength value="0"/> + </xs:restriction> + </xs:simpleType> + + <!-- A generic non-empty uppercase string type. --> + + <xs:simpleType name="def_uppercase_string"> + <xs:restriction base="xs:string"> + <xs:pattern value="[A-Z]+"/> + </xs:restriction> + </xs:simpleType> + + <!-- A generic string type containing an @ char, like an email address --> + + <xs:simpleType name="def_email_string"> + <xs:restriction base="xs:string"> + <xs:pattern value="\S+@\S+"/> + </xs:restriction> + </xs:simpleType> + + <!-- String type defining room category codes (like InvTypeCode) --> + + <xs:simpleType name="def_invTypeCode_string"> + <xs:restriction base="xs:string"> + <xs:minLength value="1"/> + <xs:maxLength value="8"/> + </xs:restriction> + </xs:simpleType> + + <!-- A generic string type starting with http:// or https:// --> + + <xs:simpleType name="def_url_string"> + <xs:restriction base="xs:anyURI"> + <xs:pattern value="https?://.+"/> + </xs:restriction> + </xs:simpleType> + + <!-- A generic string type with 3 characters. --> + + <xs:simpleType name="def_three_char_string"> + <xs:restriction base="xs:string"> + <xs:minLength value="3"/> + <xs:maxLength value="3"/> + </xs:restriction> + </xs:simpleType> + + <!-- A generic string type with 1 to 16 characters (defintion taken from OTA2015A). --> + + <xs:simpleType name="def_one_to_sixteen_chars_string"> + <xs:restriction base="xs:string"> + <xs:minLength value="1"/> + <xs:maxLength value="16"/> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="def_one_to_thirty_two_chars_string"> + <xs:restriction base="xs:string"> + <xs:minLength value="1"/> + <xs:maxLength value="32"/> + </xs:restriction> + </xs:simpleType> + + <!-- A generic integer > 0 type. --> + + <xs:simpleType name="def_int_gt0"> + <xs:restriction base="xs:positiveInteger"> + <xs:pattern value="[0-9]+"/> + </xs:restriction> + </xs:simpleType> + + <!-- A generic integer >= 0 type. --> + + <xs:simpleType name="def_int_ge0"> + <xs:restriction base="xs:nonNegativeInteger"> + <xs:pattern value="[0-9]+"/> + </xs:restriction> + </xs:simpleType> + + <!-- A generic decimal >= 0 type. --> + + <xs:simpleType name="def_decimal_ge0"> + <xs:restriction base="xs:decimal"> + <xs:minInclusive value="0.0"/> + <xs:pattern value="[0-9]*\.?[0-9]*"/> + </xs:restriction> + </xs:simpleType> + + <!-- A generic decimal > 0 type. --> + + <xs:simpleType name="def_decimal_gt0"> + <xs:restriction base="xs:decimal"> + <xs:minExclusive value="0.0"/> + <xs:pattern value="[0-9]*\.?[0-9]*"/> + </xs:restriction> + </xs:simpleType> + + <!-- A generic date type. --> + + <xs:simpleType name="def_date"> + <xs:restriction base="xs:date"> + <xs:pattern value="\S+"/> + </xs:restriction> + </xs:simpleType> + + <!-- A generic datetime type. --> + + <xs:simpleType name="def_datetime"> + <xs:restriction base="xs:dateTime"> + <xs:pattern value="\S+"/> + </xs:restriction> + </xs:simpleType> + + <!-- A generic boolean type (1,true,0,false). --> + + <xs:simpleType name="def_bool"> + <xs:restriction base="xs:boolean"> + <xs:pattern value="\S+"/> + </xs:restriction> + </xs:simpleType> + + <!-- A code defined in the OpenTravel or AlpineBits Code tables (1,101,101.ABR). --> + + <xs:simpleType name="def_alpinebits_code"> + <xs:restriction base="xs:string"> + <xs:pattern value="[0-9]{1,3}(\.[A-Z]{3}){0,1}"/> + </xs:restriction> + </xs:simpleType> + + <!-- OTA2015A legacy restrictions --> + + <xs:simpleType name="TimeUnitType"> + <xs:annotation> + <xs:documentation xml:lang="en">Defines the unit in which the time is expressed (e.g. year, day, hour).</xs:documentation> + </xs:annotation> + <xs:restriction base="StringLength1to16"> + <xs:enumeration value="Year"/> + <xs:enumeration value="Month"/> + <xs:enumeration value="Week"/> + <xs:enumeration value="Day"/> + <xs:enumeration value="Hour"/> + <xs:enumeration value="Second"/> + <xs:enumeration value="FullDuration"/> + <xs:enumeration value="Minute"/> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="DateOrTimeOrDateTimeType"> + <xs:annotation> + <xs:documentation xml:lang="en">A construct to validate either a date or a time or a dateTime value.</xs:documentation> + </xs:annotation> + <xs:union memberTypes="xs:date xs:dateTime xs:time"/> + </xs:simpleType> + + <xs:simpleType name="DateOrDateTimeType"> + <xs:annotation> + <xs:documentation xml:lang="en">A construct to validate either a date or a dateTime value.</xs:documentation> + </xs:annotation> + <xs:union memberTypes="xs:date xs:dateTime"/> + </xs:simpleType> + + <xs:simpleType name="StringLength0to8"> + <xs:annotation> + <xs:documentation xml:lang="en">Used for Character Strings, length 0 to 8.</xs:documentation> + </xs:annotation> + <xs:restriction base="xs:string"> + <xs:minLength value="0"/> + <xs:maxLength value="8"/> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="StringLength0to32"> + <xs:annotation> + <xs:documentation xml:lang="en">Used for Character Strings, length 0 to 32.</xs:documentation> + </xs:annotation> + <xs:restriction base="xs:string"> + <xs:minLength value="0"/> + <xs:maxLength value="32"/> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="StringLength0to64"> + <xs:annotation> + <xs:documentation xml:lang="en">Used for Character Strings, length 0 to 64.</xs:documentation> + </xs:annotation> + <xs:restriction base="xs:string"> + <xs:minLength value="0"/> + <xs:maxLength value="64"/> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="StringLength0to128"> + <xs:annotation> + <xs:documentation xml:lang="en">Used for Character Strings, length 0 to 128.</xs:documentation> + </xs:annotation> + <xs:restriction base="xs:string"> + <xs:minLength value="0"/> + <xs:maxLength value="128"/> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="StringLength1to180"> + <xs:annotation> + <xs:documentation xml:lang="en">Used for Character Strings, length 1 to 180.</xs:documentation> + </xs:annotation> + <xs:restriction base="xs:string"> + <xs:minLength value="1"/> + <xs:maxLength value="180"/> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="StringLength0to255"> + <xs:annotation> + <xs:documentation xml:lang="en">Used for Character Strings, length 0 to 255.</xs:documentation> + </xs:annotation> + <xs:restriction base="xs:string"> + <xs:minLength value="0"/> + <xs:maxLength value="255"/> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="StringLength1to8"> + <xs:annotation> + <xs:documentation xml:lang="en">Used for Character Strings, length 1 to 8.</xs:documentation> + </xs:annotation> + <xs:restriction base="xs:string"> + <xs:minLength value="1"/> + <xs:maxLength value="8"/> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="StringLength1to16"> + <xs:annotation> + <xs:documentation xml:lang="en">Used for Character Strings, length 1 to 16.</xs:documentation> + </xs:annotation> + <xs:restriction base="xs:string"> + <xs:minLength value="1"/> + <xs:maxLength value="16"/> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="StringLength1to32"> + <xs:annotation> + <xs:documentation xml:lang="en">Used for Character Strings, length 1 to 32.</xs:documentation> + </xs:annotation> + <xs:restriction base="xs:string"> + <xs:minLength value="1"/> + <xs:maxLength value="32"/> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="StringLength1to64"> + <xs:annotation> + <xs:documentation xml:lang="en">Used for Character Strings, length 1 to 64.</xs:documentation> + </xs:annotation> + <xs:restriction base="xs:string"> + <xs:minLength value="1"/> + <xs:maxLength value="64"/> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="StringLength1to128"> + <xs:annotation> + <xs:documentation xml:lang="en">Used for Character Strings, length 1 to 128.</xs:documentation> + </xs:annotation> + <xs:restriction base="xs:string"> + <xs:minLength value="1"/> + <xs:maxLength value="128"/> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="StringLength1to255"> + <xs:annotation> + <xs:documentation xml:lang="en">Used for Character Strings, length 1 to 255.</xs:documentation> + </xs:annotation> + <xs:restriction base="xs:string"> + <xs:minLength value="1"/> + <xs:maxLength value="255"/> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="StringLength3"> + <xs:annotation> + <xs:documentation xml:lang="en">Used for Strings, length exactly 3.</xs:documentation> + </xs:annotation> + <xs:restriction base="xs:string"> + <xs:minLength value="3"/> + <xs:maxLength value="3"/> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="Numeric0to4"> + <xs:annotation> + <xs:documentation xml:lang="en">Used for Numeric values, from 0 to 4 inclusive.</xs:documentation> + </xs:annotation> + <xs:restriction base="xs:integer"> + <xs:minInclusive value="0"/> + <xs:maxInclusive value="4"/> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="Numeric0to10"> + <xs:annotation> + <xs:documentation xml:lang="en">Used for Numeric values, from 0 to 10 inclusive.</xs:documentation> + </xs:annotation> + <xs:restriction base="xs:integer"> + <xs:minInclusive value="0"/> + <xs:maxInclusive value="10"/> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="Numeric0to99"> + <xs:annotation> + <xs:documentation xml:lang="en">Used for Numeric values, from 0 to 99 inclusive.</xs:documentation> + </xs:annotation> + <xs:restriction base="xs:integer"> + <xs:minInclusive value="0"/> + <xs:maxInclusive value="99"/> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="Numeric0to999"> + <xs:annotation> + <xs:documentation xml:lang="en">Used for Numeric values, from 0 to 999 inclusive.</xs:documentation> + </xs:annotation> + <xs:restriction base="xs:integer"> + <xs:minInclusive value="0"/> + <xs:maxInclusive value="999"/> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="Numeric0to9999"> + <xs:annotation> + <xs:documentation xml:lang="en">Used for Numeric values, from 0 to 9999 inclusive.</xs:documentation> + </xs:annotation> + <xs:restriction base="xs:integer"> + <xs:minInclusive value="0"/> + <xs:maxInclusive value="9999"/> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="Numeric1to3"> + <xs:annotation> + <xs:documentation xml:lang="en">Used for Numeric values, from 1 to 3 inclusive.</xs:documentation> + </xs:annotation> + <xs:restriction base="xs:integer"> + <xs:minInclusive value="1"/> + <xs:maxInclusive value="3"/> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="Numeric1to4"> + <xs:annotation> + <xs:documentation xml:lang="en">Used for Numeric values, from 1 to 4 inclusive.</xs:documentation> + </xs:annotation> + <xs:restriction base="xs:integer"> + <xs:minInclusive value="1"/> + <xs:maxInclusive value="4"/> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="Numeric1to99"> + <xs:annotation> + <xs:documentation xml:lang="en">Used for Numeric values, from 1 to 99 inclusive.</xs:documentation> + </xs:annotation> + <xs:restriction base="xs:integer"> + <xs:minInclusive value="1"/> + <xs:maxInclusive value="99"/> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="Numeric1to999"> + <xs:annotation> + <xs:documentation xml:lang="en">Used for Numeric values, from 1 to 999 inclusive.</xs:documentation> + </xs:annotation> + <xs:restriction base="xs:integer"> + <xs:minInclusive value="1"/> + <xs:maxInclusive value="999"/> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="Numeric1to9999"> + <xs:annotation> + <xs:documentation xml:lang="en">Used for Numeric values, from 1 to 9999 inclusive.</xs:documentation> + </xs:annotation> + <xs:restriction base="xs:integer"> + <xs:minInclusive value="1"/> + <xs:maxInclusive value="9999"/> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="NumericStringLength1to16"> + <xs:annotation> + <xs:documentation xml:lang="en">Used for Numeric Strings, length 1 to 16.</xs:documentation> + </xs:annotation> + <xs:restriction base="xs:string"> + <xs:pattern value="[0-9]{1,16}"/> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="NumericStringLength1to19"> + <xs:annotation> + <xs:documentation xml:lang="en">Used for Numeric Strings, length 1 to 19.</xs:documentation> + </xs:annotation> + <xs:restriction base="xs:string"> + <xs:pattern value="[0-9]{1,19}"/> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="NumericStringLength2"> + <xs:annotation> + <xs:documentation>Used for Numeric Strings, length exactly 2.</xs:documentation> + </xs:annotation> + <xs:restriction base="xs:string"> + <xs:pattern value="[0-9]{2}"/> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="NumericStringLength4"> + <xs:annotation> + <xs:documentation xml:lang="en">Used for Numeric Strings, length exactly 4.</xs:documentation> + </xs:annotation> + <xs:restriction base="xs:string"> + <xs:pattern value="[0-9]{4}"/> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="NumericStringLength1to3"> + <xs:annotation> + <xs:documentation xml:lang="en">Used for Numeric Strings length 1 to 3.</xs:documentation> + </xs:annotation> + <xs:restriction base="xs:string"> + <xs:pattern value="[0-9]{1,3}"/> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="NumericStringLength1to5"> + <xs:annotation> + <xs:documentation xml:lang="en">Used for Numeric Strings, length 1 to 5.</xs:documentation> + </xs:annotation> + <xs:restriction base="xs:string"> + <xs:pattern value="[0-9]{1,5}"/> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="NumericStringLength1to8"> + <xs:annotation> + <xs:documentation xml:lang="en">Used for Numeric Strings, length 1 to 8.</xs:documentation> + </xs:annotation> + <xs:restriction base="xs:string"> + <xs:pattern value="[0-9]{1,8}"/> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="NumericStringLength15to50"> + <xs:annotation> + <xs:documentation>Used for Numeric Strings, length 15 to 50.</xs:documentation> + </xs:annotation> + <xs:restriction base="xs:string"> + <xs:pattern value="[0-9]{15,50}"/> + </xs:restriction> + </xs:simpleType> + +</xs:schema> diff --git a/README.md b/README.md new file mode 100644 index 0000000..e69de29 diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..cb783b3 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,7 @@ +[project] +name = "alpine-bits-python-server" +version = "0.1.0" +description = "Add your description here" +readme = "README.md" +requires-python = ">=3.13" +dependencies = []