Żądania
Składnia
Wiadomość Transaction (Property Data) ma tę składnię:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="timestamp"
id="message_ID"
partner="partner_key">
<PropertyDataSet action="[overlay|delta]">
<!-- (Required) ID that matches the Hotel List Feed -->
<Property>HotelID</Property>
<RoomData>
<!-- (Required) One room ID per RoomData element -->
<RoomID>RoomID</RoomID>
<Name>
<Text text="room_name" language="language_code"/>
</Name>
<Description>
<Text text="room_description" language="language_code"/>
</Description>
<!-- (Optional) Restricts the rate plans allowed for this room type to
those listed here. If specified, don't specify AllowableRoomIDs. -->
<AllowablePackageIDs>
<AllowablePackageID>PackageID</AllowablePackageID>
</AllowablePackageIDs>
<Capacity>max_number_of_occupants</Capacity>
<AdultCapacity>max_number_of_adult_occupants</AdultCapacity>
<ChildCapacity>max_number_of_child_occupants</ChildCapacity>
<OccupancySettings>
<MinOccupancy>min_number_of_occupants</MinOccupancy>
<MinAge>min_age_of_occupants</MinAge>
</OccupancySettings>
<PhotoURL>
<Caption>
<Text text="photo_description" language="language_code"/>
</Caption>
<URL>photo_location</URL>
</PhotoURL>
<RoomFeatures>
<JapaneseHotelRoomStyle>[western|japanese|japanese_western]</JapaneseHotelRoomStyle>
<Beds>
<Bed size="[single|semi_double|double|queen|king]">
<Width unit="cm" number="bed_width"/>
<Length unit="cm" number="bed_length"/>
</Bed>
<!-- Include with any additional beds. -->
</Beds>
<Suite/>
<Capsule/>
<Roomsharing>[shared|private]</Roomsharing>
<Outdoor/>
<MobilityAccessible/>
<Smoking>[smoking|non_smoking]</Smoking>
<BathAndToilet relation="[together|separate]">
<Bath bathtub="[false|true]" shower="[false|true]"/>
<Toilet electronic_bidet="[false|true]" mobility_accessible="[false|true]"/>
</BathAndToilet>
<OpenAirBath/>
<AirConditioning/>
<Balcony/>
<Views>
<!-- (Optional) Defines the type of views from the room. -->
<!-- Example: <OceanView/> -->
</Views>
</RoomFeatures>
</RoomData>
<PackageData>
<!-- (Required) One package ID per PackageData element -->
<PackageID>PackageID</PackageID>
<Name>
<Text text="package_name" language="language_code"/>
</Name>
<Description>
<Text text="package_description" language="language_code"/>
</Description>
<!-- (Optional) Restricts the room types allowed for this rate plan to
those listed here. If specified, don't specify AllowablePackageIDs. -->
<AllowableRoomIDs>
<AllowableRoomID>RoomID</AllowableRoomID>
</AllowableRoomIDs>
<!-- Add Loyalty point information -->
<MilesIncluded>
<LoyaltyCampaignID>campaign-ID</LoyaltyCampaignID>
<!-- (Optional) Use <NumberOfMiles> if the rate plan earns fixed loyalty rewards-->
<NumberOfMiles>integer</NumberOfMiles>
</MilesIncluded>
<Refundable available="[false|true]" refundable_until_days="number_of_days"
refundable_until_time="time"/>
<!-- For these next 3 elements, boolean_value can be 0/1 or true/false -->
<BreakfastIncluded>boolean_value</BreakfastIncluded>
<InternetIncluded>boolean_value</InternetIncluded>
<ParkingIncluded>boolean_value</ParkingIncluded>
<PhotoURL>
<Caption>
<Text text="photo_description" language="language_code"/>
...
</Caption>
<URL>photo_location</URL>
</PhotoURL>
...
<Meals>
<Breakfast
included="[true|false]" buffet="[true|false]"
in_room="[true|false]" in_private_space="[true|false]"/>
<Dinner
included="[true|false]" buffet="[true|false]"
in_room="[true|false]" in_private_space="[true|false]"/>
</Meals>
<CheckinTime>checkin_time</CheckinTime>
<CheckoutTime>checkout_time</CheckoutTime>
</PackageData>
</PropertyDataSet>
</Transaction>
Elementy i atrybuty
Wiadomość Transaction (Property Data) zawiera te elementy i atrybuty:
| Element / @Attribute | Wystąpienia | Typ | Opis |
|---|---|---|---|
| Transaction | 1 | Complex element | W implementacji ARI jest to element główny wiadomości określający typy pokoi i pakiety dla jednego obiektu. |
| Transaction / @timestamp | 1 | DateTime | Data i godzina utworzenia tej wiadomości. |
| Transaction / @id | 1 | string | Unikalny identyfikator tej wiadomości z żądaniem. Ta wartość jest zwracana w wiadomości z odpowiedzią. Dozwolone znaki to a–z, A–Z, 0–9, _ (podkreślenie) i - (łącznik). |
| Transaction / @partner | 1 | string | Konto partnera, do którego należy ta wiadomość. Ta wartość ciągu znaków to wartość „Klucz partnera” podana na
stronie Ustawienia konta w Hotel Center.
Uwaga: jeśli masz backend, który udostępnia pliki danych dla wielu kont, ta wartość musi być zgodna z wartością atrybutu |
| Transaction / PropertyDataSet | 1.. | PropertyDataSet | Kontener do definiowania typów pokoi i pakietów dla pojedynczego obiektu.
Zalecamy wysyłanie wywołania |
| Transaction / PropertyDataSet / @action | 0..1 | enum | Typ aktualizacji, która ma zostać zastosowana do definicji cen pokoi. Prawidłowe wartości to:
Ten atrybut jest opcjonalny. Jeśli nie zostanie podany, domyślnie przyjmuje wartość |
| Transaction / PropertyDataSet / Property | 1 | string | Unikalny identyfikator usługi. Ta wartość musi być zgodna z identyfikatorem hotelu określonym za pomocą elementu
<id> w elemencie <listing> w pliku danych z listą hoteli. Identyfikator hotelu jest też podany w Hotel Center. |
| Transaction / PropertyDataSet / RoomData | 0..n | RoomData | Opisuje pokój. Uwaga: wymagana jest co najmniej jedna z tych właściwości: |
| Transaction / PropertyDataSet / RoomData / RoomID | 1 | RoomID | Unikalny identyfikator typu pokoju. Ta wartość jest przywoływana za pomocą atrybutu InvTypeCode w elemencie <StatusApplicationControl> w wiadomościach <OTA_HotelAvailNotifRQ>, <OTA_HotelRateAmountNotifRQ> i <OTA_HotelInvCountNotifRQ>. |
| Transaction / PropertyDataSet / RoomData / Name | 1 | Name | Kontener z nazwą kategorii pokoju w co najmniej 1 języku. |
| Transaction / PropertyDataSet / RoomData / Name / Text | 1..n | Text | Określa nazwę kategorii pokoju w jednym języku. |
| Transaction / PropertyDataSet / RoomData / Name / Text / @text | 1..n | string | Nazwa kategorii pokoju w języku określonym przez atrybut language. |
| Transaction / PropertyDataSet / RoomData / Description | 1 | Name | Kontener opisu kategorii pokoju w co najmniej jednym języku. |
| Transaction / PropertyDataSet / RoomData / Description / Text | 1..n | Text | Określa opis kategorii pokoju w jednym języku. |
| Transaction / PropertyDataSet / RoomData / Description / Text / @text | 1..n | string | Opis kategorii pokoju w języku określonym przez atrybut language. |
| Transaction / PropertyDataSet / RoomData / Description / Text / @language | 1..n | string | Dwuliterowy kod języka. |
| Transaction / PropertyDataSet / RoomData / AllowablePackageIDs | 0..1 | AllowablePackageIDs | Kontener elementów <AllowablePackageID>.
Jeśli określono element Jeśli nie podano wartości Używaj właściwości |
| Transaction / PropertyDataSet / RoomData / AllowablePackageIDs / AllowablePackageID | 1..n | AllowablePackageID | Określa identyfikator pakietu planu cenowego, który można połączyć z tym typem pokoju. Abonament jest określany przez połączenie pakietu, cen i dostępności. Symbol PackageID
odpowiada symbolowi RatePlanCode w wiadomościach OTA_HotelRateAmountNotifRQ i OTA_HotelAvailNotifRQ.
|
| Transaction / PropertyDataSet / RoomData / Capacity | 0..1 | integer | Maksymalna liczba osób dorosłych i dzieci, które mogą fizycznie zmieścić się w pokoju. Ta wartość powinna być większa lub równa wszystkim wartościom NumberOfGuests, które przesyłasz wraz ze stawkami.
Wartość Uwaga: jeśli wartość |
| Transaction / PropertyDataSet / RoomData / AdultCapacity | 0..1 | integer | Maksymalna liczba osób dorosłych, które mogą fizycznie przebywać w pokoju. Ta wartość powinna być większa lub równa wszystkim wartościom NumberOfGuests, które przesyłasz wraz ze stawkami.
Wartość |
| Transaction / PropertyDataSet / RoomData / ChildCapacity | 0..1 | integer | Maksymalna liczba dzieci, które mogą fizycznie przebywać w pokoju.
Wartość |
| Transaction / PropertyDataSet / RoomData / OccupancySettings | 0..1 | OccupancySettings | Ustawienia, które mogą ograniczać lub modyfikować wymagania dotyczące zajętości pomieszczenia.
Element
<OccupancySettings> <MinOccupancy>2</MinOccupancy> <MinAge>16</MinAge> </OccupancySettings> Nie wszystkie elementy podrzędne muszą być uwzględnione. |
| Transaction / PropertyDataSet / RoomData / PhotoURL | 0..n | PhotoURL | Adres URL i opcjonalny podpis zdjęcia danego pokoju lub zestawu pokoi. Możesz określić więcej niż 1 <PhotoURL> dla pokoju lub pakietu pokoi.
Ten element przyjmuje te elementy podrzędne:
<PhotoURL> <URL>http://www.example.com/image1.jpg</URL> <Caption> <Text text="A bright way to enjoy your mornin' cuppa tea." language="en"/> <Text text="Une façon lumineuse pour profiter de votre tasse de thé." language="fr"/> </Caption> </PhotoURL> |
| Transaction / PropertyDataSet / RoomData / RoomFeatures | 0..1 | <RoomFeatures> |
Zawiera informacje o funkcjach pokoju. |
| Transaction / PropertyDataSet / RoomData / RoomFeatures / JapaneseHotelRoomStyle | 0..1 | enum | Określa styl pokoju w japońskim hotelu. Prawidłowe wartości to:
|
| Transaction / PropertyDataSet / RoomData / RoomFeatures / Beds | 0..1 | Object | Zawiera tyle symboli <Bed>, ile jest pokoi. Pamiętaj, że japońskie futony nie powinny być tu uwzględniane.
Każdy element
<Bed> ma te elementy podrzędne:
<Beds>
<Bed size="double">
<Width unit="cm" number="140"/>
<Length unit="cm" number="195"/>
</Bed>
<Bed/> <!-- Size unknown -->
</Beds> |
| Transaction / PropertyDataSet / RoomData / RoomFeatures / Suite | 0.. | enum | Podaj ten element, jeśli pokój jest apartamentem. |
| Transaction / PropertyDataSet / RoomData / RoomFeatures / Capsule | 0..1 | enum | Podaj ten element, jeśli pokój jest kapsułą. |
| Transaction / PropertyDataSet / RoomData / RoomFeatures / Roomsharing | 0..1 | enum | Czy ten pokój jest współdzielony z innymi osobami, np. właścicielami lub innymi gośćmi. Prawidłowe wartości to shared i private. |
| Transaction / PropertyDataSet / RoomData / RoomFeatures / Outdoor | 0..1 | enum | Podaj ten element, jeśli pokój jest miejscem noclegowym na świeżym powietrzu, które nie ma stałych ścian, instalacji wodno-kanalizacyjnej ani klimatyzacji. Na przykład pokoje hotelowe nie są obiektami noclegowymi na świeżym powietrzu, natomiast pola namiotowe, na których goście nocują w namiotach, i kempingi, na których goście przyjeżdżają własnymi kamperami, są obiektami noclegowymi na świeżym powietrzu. |
| Transaction / PropertyDataSet / RoomData / RoomFeatures / MobileAccessible | 0..1 | enum | Podaj ten element, jeśli pokój jest przystosowany do potrzeb osób z ograniczoną mobilnością. |
| Transaction / PropertyDataSet / RoomData / RoomFeatures / Smoking | 0..1 | enum | Czy w tym pokoju obowiązuje zakaz palenia. Prawidłowe wartości to non_smoking i smoking. |
| Transaction / PropertyDataSet / RoomData / RoomFeatures / BathAndToilet | 0..1 | Object | Zawiera informacje o wannie i toalecie w pokoju.
Atrybut:
Element może opcjonalnie zawierać te elementy podrzędne:
Przykład: <BathAndToilet relation="separate">
<Bath bathtub="1" shower="1"/>
<Toilet
electronic_bidet="1"
mobility_accessible="1"/>
</BathAndToilet> |
| Transaction / PropertyDataSet / RoomData / RoomFeatures / OpenAirBath | 0..1 | enum | Podaj ten element, jeśli w pokoju znajduje się prywatna łaźnia na świeżym powietrzu. |
| Transaction / PropertyDataSet / RoomData / RoomFeatures / AirConditioning | 0..1 | enum | Podaj ten element, jeśli pokój jest klimatyzowany. |
| Transaction / PropertyDataSet / RoomData / RoomFeatures / Balcony | 0..1 | enum | Podaj ten element, jeśli pokój ma balkon lub werandę. |
| Transaction / PropertyDataSet / RoomData / RoomFeatures / Views | 0..1 | Object | Prawidłowe opcje:
|
| Transaction / PropertyDataSet / PackageData | 0..n | PackageData | Kontener elementów opisujących cechy i warunki ceny, które nie są częścią opisu fizycznego pokoju. Uwaga: wymagana jest co najmniej jedna z tych właściwości: |
| Transaction / PropertyDataSet / PackageData / PackageID | 1 | string | PackageID w tych wiadomościach odpowiada elementowi RatePlanCode w wiadomościach OTA_HotelRateAmountNotifRQ i OTA_HotelAvailNotifRQ. |
| Transaction / PropertyDataSet / PackageData / Name | 1 | Name | Kontener z nazwą pakietu w co najmniej 1 języku. |
| Transaction / PropertyDataSet / PackageData / Name / Text | 1..n | Text | Określa nazwę pakietu w jednym języku. |
| Transaction / PropertyDataSet / PackageData / Name / Text / @text | 1..n | string | Nazwa pakietu w języku określonym przez atrybut language. |
| Transaction / PropertyDataSet / PackageData / Description | 1 | Description | Kontener opisu pakietu w co najmniej 1 języku. |
| Transaction / PropertyDataSet / PackageData / Description / Text | 1..n | Text | Określa opis pakietu w jednym języku. |
| Transaction / PropertyDataSet / PackageData / Description / Text / @text | 1..n | string | Opis pakietu w języku określonym przez atrybut language. |
| Transaction / PropertyDataSet / PackageData / Description / Text / @language | 1..n | string | Dwuliterowy kod języka. |
| Transaction / PropertyDataSet / PackageData / AllowableRoomIDs | 0..1 | AllowableRoomIDs | Kontener elementów <AllowableRoomID>.
Jeśli podano element Jeśli element Używaj właściwości |
| Transaction / PropertyDataSet / PackageData / AllowableRoomIDs / AllowableRoomID | 1..n | AllowableRoomID | Określa identyfikator RoomID typu pokoju, który można połączyć z tym planem cenowym. Typ pokoju jest zdefiniowany w elemencie <RoomData>.
|
| Transaction / PropertyDataSet / PackageData / MilesIncluded | 0..1 | MilesIncluded | Dodaj informacje o punktach lojalnościowych do pakietów na podstawie sposobu zdefiniowania planów cenowych lub pakietów. Określ element <MilesIncluded> w elemencie <PackageData>, który definiuje plan cenowy.
<MilesIncluded> ma ten element podrzędny:
|
| Transaction / PropertyDataSet / PackageData / Refundable | 0..1 | Refundable | Umożliwia oznaczenie stawki jako w pełni podlegającej zwrotowi lub anulowaniu. Jeśli nie podasz tej wartości, nie będą wyświetlane żadne informacje o zwrocie środków.
Uwaga: zalecamy ustawienie wszystkich atrybutów. Komunikat ostrzegawczy o stanie pliku danych jest generowany, gdy co najmniej 1 atrybut nie jest ustawiony. Jeśli nie ustawisz żadnych atrybutów, cena nie będzie wyświetlana jako podlegająca zwrotowi. Podczas ustawiania atrybutów pamiętaj o tych kwestiach:
|
| Transaction / PropertyDataSet / PackageData / Refundable / @available | 1 | boolean | (Wymagany) Ustaw wartość 1 lub true, aby wskazać, czy stawka umożliwia pełny zwrot środków. W przeciwnym razie ustaw wartość 0 lub false. |
| Transaction / PropertyDataSet / PackageData / Refundable / @refundable_until_days | 0..1 | integer | (Wymagane, jeśli available ma wartość true) Określa liczbę dni przed zameldowaniem, w przypadku których można poprosić o pełny zwrot środków. Wartość refundable_until_days
musi być liczbą całkowitą z zakresu od 0 do 330 (włącznie). |
| Transaction / PropertyDataSet / PackageData / Refundable / @refundable_until_time | 0.. | Time | (Zdecydowanie zalecane, jeśli available to true) Określa najpóźniejszą porę dnia (według lokalnego czasu hotelu), w której uwzględniona zostanie prośba o pełny zwrot środków. Można go połączyć z parametrem refundable_until_days, aby określić na przykład, że „zwrot środków jest możliwy do godziny 16:00 na 2 dni przed zameldowaniem”. Jeśli nie ustawisz wartości refundable_until_time, domyślnie zostanie przyjęta północ. |
| Transaction / PropertyDataSet / PackageData / BreakfastIncluded | 0..1 | boolean | Określa, czy ten typ pokoju obejmuje śniadanie.
Prawidłowe wartości to 0 (lub false) i 1 (lub true).
Zalecamy używanie atrybutu |
| Transaction / PropertyDataSet / PackageData / CheckinTime | 0..1 | Time | Najwcześniejsza możliwa godzina zameldowania w czasie lokalnym hotelu. Czas musi być krótszy niż 24:00. |
| Transaction / PropertyDataSet / PackageData / CheckoutTime | 0..1 | Time | Najpóźniejsza możliwa godzina wymeldowania w czasie lokalnym hotelu. |
| Transaction / PropertyDataSet / PackageData / InternetIncluded | 0..1 | boolean | Określa, czy pokój obejmuje bezpłatny dostęp do internetu, podczas gdy inne pokoje nie mają tego udogodnienia. Nie ustawiaj tego elementu w przypadku hotelu, który zapewnia bezpłatny internet we wszystkich pokojach. Ten element nie dotyczy przewodowego internetu w pokoju ani bezprzewodowego internetu, który nie jest dostępny w pokojach gości. Prawidłowe wartości to 0 (lub false) i 1 (lub true).
|
| Transaction / PropertyDataSet / PackageData / Meals | 0..1 | Object | Zawiera informacje o posiłkach w tym pakiecie.
Element
Atrybuty opcjonalne są używane tylko wtedy, gdy wartość Aby filtry posiłków ( |
| Transaction / PropertyDataSet / PackageData / ParkingIncluded | 0..1 | boolean | Czy pokój obejmuje bezpłatny parking, w przypadku gdy w tym hotelu parking jest usługą płatną. Nie podawaj wartości tego elementu w przypadku hotelu, który oferuje bezpłatny parking.
Prawidłowe wartości to 0 (lub false) i 1 (lub true). Wartością domyślną jest false.
|
| Transaction / PropertyDataSet / PackageData / PhotoURL | 0..1 | Object | (Tak samo jak <PhotoURL> w <RoomData>, ale w przypadku pakietu, np. zdjęć posiłków).
|
Przykłady
Dane o pokojach i pakietach
Poniżej znajdziesz podstawowy przykład definiowania danych o pokoju i pakiecie usługi w wiadomości Transaction (Property Data) (Transakcja (dane usługi)). Atrybut overlay
służy do zapewnienia, że jeśli jakieś dane już istnieją, zostaną usunięte i zastąpione danymi z tego komunikatu:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2020-05-18T16:20:00-04:00"
id="12345678"
partner="partner_key">
<PropertyDataSet action="overlay">
<Property>Property_1</Property>
<RoomData>
<RoomID>RoomID_1</RoomID>
<Name>
<Text text="King" language="en"/>
</Name>
<Description>
<Text text="Room with a king bed" language="en"/>
</Description>
<Capacity>2</Capacity>
<PhotoURL>
<URL>http://www.foo.com/static/bar/image.jpg</URL>
<Caption>
<Text text="Room with a king bed" language="en"/>
</Caption>
</PhotoURL>
</RoomData>
<RoomData>
<RoomID>RoomID_2</RoomID>
<Name>
<Text text="Double" language="en"/>
</Name>
<!-- Additional RoomData child elements omitted. -->
</RoomData>
<PackageData>
<PackageID>PackageID_1</PackageID>
<Name>
<Text text="Standard" language="en"/>
</Name>
<Description>
<Text text="Standard rate" language="en"/>
</Description>
<MilesIncluded>
<LoyaltyCampaignID>my_campaign</LoyaltyCampaignID>
</MilesIncluded>
<Refundable available="true" refundable_until_days="7" refundable_until_time="18:00:00"/>
<BreakfastIncluded>0</BreakfastIncluded>
</PackageData>
<PackageData>
<PackageID>PackageID_2</PackageID>
<Name>
<Text text="Free Breakfast" language="en"/>
</Name>
<Description>
<Text text="Free breakfast rate" language="en"/>
</Description>
<Refundable available="true" refundable_until_days="7" refundable_until_time="18:00:00"/>
<BreakfastIncluded>1</BreakfastIncluded>
</PackageData>
</PropertyDataSet>
</Transaction>
Dodawanie typu pomieszczenia
Poniżej znajdziesz przykład dodawania typu pokoju i pakietu do istniejących danych <Transaction>:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2020-07-18T16:20:00-04:00"
id="12345678"
partner="partner_key">
<PropertyDataSet action="delta">
<Property>Property_1</Property>
<RoomData>
<RoomID>RoomID_3</RoomID>
<Name>
<Text text="Queen" language="en"/>
</Name>
<!-- Additional RoomData child elements omitted. -->
</RoomData>
<PackageData>
<PackageID>PackageID_3</PackageID>
<Name>
<Text text="Non-Refundable" language="en"/>
</Name>
<!-- Additional PackageData child elements omitted. -->
<Refundable available="false"/>
</PackageData>
</PropertyDataSet>
</Transaction>
Usuwanie typów pokoi
Poniżej znajdziesz przykład usuwania dotychczasowych typów pokoi i pakietów. W tym scenariuszu, jeśli wiadomości w sekcjach „Dane o pokoju i pakiecie” i „Dodaj typ pokoju” zostały wcześniej wysłane do Google, po otrzymaniu przez Google pokazanej wiadomości typy pokoi King i Double przestaną istnieć. Pamiętaj, że usunięcie danych pakietu wpływa na ogólny plan cenowy zdefiniowany w wiadomościach Transaction (Property Data), OTA_HotelRateAmountNotifRQ i OTA_HotelAvailNotifRQ (przez odwoływanie się do tej samej wartości PackageID), a tym samym odpowiednie aktualizacje przy użyciu innych typów wiadomości mogą być wymagane, aby odzwierciedlić fakt, że PackageID_2 i PackageID_3 nie są już tutaj zdefiniowane.
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2020-08-18T16:20:00-04:00"
id="12345678"
partner="partner_key">
<PropertyDataSet action="overlay">
<Property>Property_1</Property>
<RoomData>
<RoomID>RoomID_1</RoomID>
<Name>
<Text text="Queen" language="en"/>
</Name>
<!-- Additional RoomData child elements omitted. -->
<Capacity>2</Capacity>
<PhotoURL>
<URL>http://www.foo.com/static/bar/image.jpg</URL>
<Caption>
<Text text="Room with a queen bed" language="en"/>
</Caption>
</PhotoURL>
</RoomData>
<PackageData>
<PackageID>PackageID_1</PackageID>
<Name>
<Text text="Refundable" language="en"/>
</Name>
<!-- Additional PackageData child elements omitted. -->
<Refundable available="true" refundable_until_days="7" refundable_until_time="18:00:00"/>
<BreakfastIncluded>0</BreakfastIncluded>
</PackageData>
</PropertyDataSet>
</Transaction>
Ograniczanie planów taryfowych
Poniżej znajdziesz przykład użycia elementu <AllowablePackageIDs>
do ograniczenia planów cenowych dozwolonych w przypadku danego typu pokoju. W tym przykładzie Queentyp pokoju (RoomID_2) można połączyć tylko z pakietem i planem cenowym oznaczonym jako PackageID_1.
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2020-12-18T16:20:00-04:00"
id="12345678"
partner="partner_key">
<PropertyDataSet action="overlay">
<Property>Property_1</Property>
<RoomData>
<RoomID>RoomID_1</RoomID>
<Name>
<Text text="King" language="en"/>
</Name>
<!-- Additional RoomData child elements omitted. -->
</RoomData>
<RoomData>
<RoomID>RoomID_2</RoomID>
<Name>
<Text text="Queen" language="en"/>
</Name>
<AllowablePackageIDs>
<AllowablePackageID>PackageID_1</AllowablePackageID>
</AllowablePackageIDs>
<!-- Additional RoomData child elements omitted. -->
</RoomData>
<PackageData>
<PackageID>PackageID_1</PackageID>
<Name>
<Text text="Standard" language="en"/>
</Name>
<!-- Additional PackageData child elements omitted. -->
<Refundable available="true" refundable_until_days="7" refundable_until_time="18:00:00"/>
<BreakfastIncluded>0</BreakfastIncluded>
</PackageData>
<PackageData>
<PackageID>PackageID_2</PackageID>
<Name>
<Text text="Free Breakfast" language="en"/>
</Name>
<!-- Additional PackageData child elements omitted. -->
<Refundable available="true" refundable_until_days="7" refundable_until_time="18:00:00"/>
<BreakfastIncluded>1</BreakfastIncluded>
</PackageData>
</PropertyDataSet>
</Transaction>
Ograniczanie pojemności sali
Poniżej znajdziesz przykład użycia elementów <Capacity>, <AdultCapacity> i <ChildCapacity> do ustawienia ograniczeń dotyczących pojemności pomieszczeń.
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2020-12-18T16:20:00-04:00"
id="12345678"
partner="partner_key">
<PropertyDataSet action="overlay">
<Property>Property_1</Property>
<RoomData>
<RoomID>RoomID_1</RoomID>
<Name>
<Text text="Double" language="en"/>
</Name>
<Capacity>4</Capacity>
<AdultCapacity>4</AdultCapacity>
<ChildCapacity>3</ChildCapacity>
<!-- Additional RoomData child elements omitted. -->
</RoomData>
</PropertyDataSet>
</Transaction>
Pokój dwuosobowy (RoomID_1) może pomieścić maksymalnie 4 osoby. Dodatkowo może w nim przebywać maksymalnie 4 osoby dorosłe i 3 dzieci. Aby można było zarezerwować salę, muszą być spełnione wszystkie 3 wymagania dotyczące pojemności. Ta konfiguracja przedstawia typowy pokój z 2 łóżkami, z których każde może pomieścić 2 osoby. Pojemność dla dzieci jest o 1 mniejsza od całkowitej pojemności, ponieważ w pomieszczeniu musi być co najmniej 1 osoba dorosła.
Rozwinięte przykłady z <RoomFeatures> i posiłkami
JapaneseHotelRoomStyle nie ma wartości domyślnej.
Pominięcie wartości nie powoduje błędu XML, ale Twoja oferta nie jest wyświetlana w wynikach wyszukiwania, gdy użytkownik filtruje według stylu pokoju lub liczby łóżek.
2 łóżka pojedyncze
Poniższy przykład pokazuje, jak używać funkcji <RoomFeatures>:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>1234</Property>
<RoomData>
<RoomID>RoomID_1</RoomID>
<RoomFeatures>
<JapaneseHotelRoomStyle>western</JapaneseHotelRoomStyle>
<Beds> <!-- Two single beds -->
<Bed size="single">
<Width unit="cm" number="97"/>
<Length unit="cm" number="195"/>
</Bed>
<Bed size="single">
<Width unit="cm" number="97"/>
<Length unit="cm" number="195"/>
</Bed>
</Beds>
<Suite/>
<Capsule/>
<Roomsharing>private</Roomsharing>
<Outdoor/>
<MobilityAccessible/>
<Smoking>non_smoking</Smoking>
<BathAndToilet relation="separate">
<Bath bathtub="1" shower="1"/>
<Toilet electronic_bidet="1" mobility_accessible="1"/>
</BathAndToilet>
<OpenAirBath/>
<AirConditioning/>
<Balcony/>
<Views>
<LakeView/>
<MarinaView/>
<BeachView/>
<ForestView/>
<MountainView/>
<NatureView/>
</Views>
</RoomFeatures>
</RoomData>
</PropertyDataSet>
</Transaction>
2 łóżka podwójne
Poniżej znajdziesz przykład pokoju w stylu western z 2 łóżkami double.
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-07-23T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>1234</Property>
<RoomData>
<RoomID>RoomID_1</RoomID>
<RoomFeatures>
<JapaneseHotelRoomStyle>western</JapaneseHotelRoomStyle>
<Beds> <!-- Two double beds-->
<Bed size="double"></Bed>
<Bed size="double"></Bed>
</Beds>
</RoomFeatures>
</RoomData>
</PropertyDataSet>
</Transaction>
Pokój w stylu japońskim bez łóżka
Poniżej znajdziesz przykład pokoju w stylu japońskim bez łóżka. Informacje o łóżkach nie są wymagane w przypadku pokoju w stylu japanese.
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-07-23T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>1234</Property>
<RoomData>
<RoomID>RoomID_1</RoomID>
<RoomFeatures>
<JapaneseHotelRoomStyle>japanese</JapaneseHotelRoomStyle>
</RoomFeatures>
</RoomData>
</PropertyDataSet>
</Transaction>
Pokój japoński w stylu zachodnim z łóżkiem
Poniżej znajdziesz przykład pokoju w stylu japanese_western z łóżkiem o rozmiarze king.
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-07-23T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>1234</Property>
<RoomData>
<RoomID>RoomID_1</RoomID>
<RoomFeatures>
<JapaneseHotelRoomStyle>japanese_western</JapaneseHotelRoomStyle>
<Beds>
<Bed size="king"></Bed>
</Beds>
</RoomFeatures>
</RoomData>
</PropertyDataSet>
</Transaction>
Jeśli partner nie ma informacji o liczbie łóżek w sekcji japanese_westernrooms, zapoznaj się z tym przykładem:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-07-23T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>1234</Property>
<RoomData>
<RoomID>RoomID_1</RoomID>
<RoomFeatures>
<JapaneseHotelRoomStyle>japanese_western</JapaneseHotelRoomStyle>
</RoomFeatures>
</RoomData>
</PropertyDataSet>
</Transaction>
Posiłki
W przykładzie poniżej zdefiniowano metadane pokoju i pakietu dotyczące posiłków, zdjęć oraz godzin zameldowania i wymeldowania:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>1234</Property>
<PackageData>
<PackageID>PackageID_1</PackageID>
<Name>
<Text text="Meals Included" language="en"/>
</Name>
<PhotoURL>
<Caption>
<Text text="Breakfast" language="en"/>
<Text text="朝食" language="ja"/>
</Caption>
<URL>http://example.com/static/bar/image1234.jpg</URL>
</PhotoURL>
<Meals>
<!-- Guests can choose to have breakfast in their room or in another
space to avoid contact with other guests. -->
<Breakfast included="1" in_room="1" in_private_space="1"/>
<Dinner included="1" buffet="1"/>
</Meals>
<CheckinTime>15:00</CheckinTime>
<CheckoutTime>11:00</CheckoutTime>
</PackageData>
</PropertyDataSet>
</Transaction>
Tylko śniadanie
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>1234</Property>
<PackageData>
<PackageID>PackageID_1</PackageID>
<Name>
<Text text="Breakfast Included" language="en"/>
</Name>
<PhotoURL>
<Caption>
<Text text="Breakfast" language="en"/>
<Text text="朝食" language="ja"/>
</Caption>
<URL>http://example.com/static/bar/image1234.jpg</URL>
</PhotoURL>
<Meals>
<Breakfast included="true"/>
<!-- Dinner not included needs to be explicitly specified -->
<Dinner included="false"/>
</Meals>
<CheckinTime>15:00</CheckinTime>
<CheckoutTime>11:00</CheckoutTime>
</PackageData>
</PropertyDataSet>
</Transaction>
Odpowiedzi
Składnia
Wiadomość TransactionResponse (Property Data) ma tę składnię:
<?xml version="1.0" encoding="UTF-8"?>
<TransactionResponse timestamp="timestamp"
id="message_ID"
partner="partner_key">
<!-- Either Success or Issues will be populated. -->
<Success/>
<Issues>
<Issue code="issue_code" status="issue_type">issue_description</Issue>
</Issues>
</TransactionResponse>
Elementy i atrybuty
Wiadomość TransactionResponse (Property Data) ma te elementy i atrybuty:
| Element / @Attribute | Wystąpienia | Typ | Opis |
|---|---|---|---|
| TransactionResponse | 1 | Complex element | Element główny wskazujący, czy otrzymana wiadomość z żądaniem transakcji została przetworzona prawidłowo, czy wystąpiły problemy. |
| TransactionResponse / @timestamp | 1 | DateTime | Data i godzina utworzenia tej wiadomości. |
| TransactionResponse / @id | 1 | string | Unikalny identyfikator z powiązanego komunikatu Transaction. |
| TransactionResponse / @partner | 1 | string | Konto partnera, do którego należy ta wiadomość. |
| TransactionResponse / Success | 0..1 | Success | Wskazuje, że wiadomość o transakcji została przetworzona bez ostrzeżeń, błędów lub awarii.
W każdej wiadomości występuje wartość |
| TransactionResponse / Issues | 0..1 | Issues | Kontener na co najmniej 1 problem napotkany podczas przetwarzania wiadomości o transakcji.
W każdej wiadomości występuje wartość |
| TransactionResponse / Issues / Issue | 1..n | Issue | Opis ostrzeżenia, błędu lub niepowodzenia napotkanego podczas przetwarzania wiadomości o transakcji. Szczegółowe informacje o tych problemach znajdziesz w artykule Komunikaty o błędach stanu pliku danych. |
| TransactionResponse / Issues / Issue / @code | 1 | integer | Identyfikator problemu. |
| TransactionResponse / Issues / Issue / @status | 1 | enum | Rodzaj napotkanego problemu. Prawidłowe wartości to |
Przykłady
Sukces
Poniżej znajdziesz odpowiedź na wiadomość Transaction, która została przetworzona.
<?xml version="1.0" encoding="UTF-8"?>
<TransactionResponse timestamp="2020-05-18T16:20:00-04:00"
id="12345678"
partner="partner_key">
<Success/>
</TransactionResponse>
Problemy
Poniżej znajduje się odpowiedź na wiadomość o transakcji, która nie została przetworzona z powodu błędów.
<?xml version="1.0" encoding="UTF-8"?>
<TransactionResponse timestamp="2020-05-18T16:20:00-04:00"
id="12345678"
partner="partner_key">
<Issues>
<Issue code="1001" status="error">Example</Issue>
</Issues>
</TransactionResponse>