Żądania
Składnia
Komunikat Transaction (Property Data)
ma taką 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>
<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ść transakcji (dane usługi) składa się z tych elementów i atrybutów:
Element / @Atrybut | Wystąpienia | Typ | Opis |
---|---|---|---|
Transaction | 1 | Complex element | W implementacji ARI jest to element główny wiadomości definiującej typy pokojów i pakiety w pojedynczej usłudze. |
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, z którego pochodzi 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 odpowiadać wartości atrybutu |
Transaction / PropertyDataSet | 1.. | PropertyDataSet | Kontener do definiowania rodzajów pokojów i pakietów w pojedynczej usłudze. |
Transaction / PropertyDataSet / @action | 0..1 | enum | Typ aktualizacji, która ma zostać zastosowana do definicji stawek za pokój. Prawidłowe wartości to:
Ten atrybut jest opcjonalny i domyślnie ma wartość |
Transaction / PropertyDataSet / Property | 1 | string | Unikalny identyfikator usługi. Ta wartość musi być zgodna z identyfikatorem hotelu podanym za pomocą
<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 pomieszczenie. Uwaga: wymagana jest co najmniej 1 z tych właściwości: |
Transaction / PropertyDataSet / RoomData / RoomID | 1 | RoomID | Unikalny identyfikator typu pomieszczenia. Do tej wartości odwołuje się atrybut InvTypeCode w elemencie <StatusApplicationControl> w komunikatach <OTA_HotelAvailNotifRQ> i <OTA_HotelRateAmountNotifRQ> . |
Transaction / PropertyDataSet / RoomData / Name | 1 | Name | Kontener nazwy kategorii pokoju w co najmniej jednym 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 w atrybucie language . |
Transaction / PropertyDataSet / RoomData / Description | 1 | Name | Kontener na opis 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 w atrybucie 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ślisz właściwość Jeśli parametr Możesz użyć właściwości |
Transaction / PropertyDataSet / RoomData / AllowablePackageIDs / AllowablePackageID | 1..n | AllowablePackageID | Określa identyfikator PackageID abonamentu, który można łączyć z pokojem tego typu. Plan stawek jest określany na podstawie kombinacji pakietu, stawek i dostępności. PackageID odpowiada RatePlanCode w komunikatach OTA_HotelRateAmountNotifRQ i OTA_HotelAvailNotifRQ.
|
Transaction / PropertyDataSet / RoomData / Capacity | 0..1 | integer | Maksymalna liczba osób dorosłych i dzieci, które fizycznie mogą pomieścić w pomieszczeniu. Powinna być równa lub większa od wszystkich wartości NumberOfGuests przesyłanych ze stawkami.
Wartość Uwaga: jeśli zasada |
Transaction / PropertyDataSet / RoomData / AdultCapacity | 0..1 | integer | Maksymalna liczba osób dorosłych, które fizycznie mieszczą się w sali. Powinna być równa lub większa od wszystkich wartości NumberOfGuests przesyłanych ze stawkami.
Wartość |
Transaction / PropertyDataSet / RoomData / ChildCapacity | 0..1 | integer | Maksymalna liczba dzieci, które fizycznie mieszczą się w sali.
Wartość |
Transaction / PropertyDataSet / RoomData / OccupancySettings | 0..1 | OccupancySettings | Ustawienia, które mogą ograniczać lub modyfikować wymagania dotyczące liczby osób w sali.
Element
<OccupancySettings> <MinOccupancy>2</MinOccupancy> <MinAge>16</MinAge> </OccupancySettings> Nie trzeba uwzględniać wszystkich elementów podrzędnych. |
Transaction / PropertyDataSet / RoomData / PhotoURL | 0..n | PhotoURL | Adres URL i opcjonalny podpis zdjęcia danego pokoju lub zestawu pokoi. Dla pokoju lub zestawu pokoi możesz określić więcej niż 1 <PhotoURL> .
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 | Wskazuje styl japońskiego pokoju hotelowego. Prawidłowe wartości to:
|
Transaction / PropertyDataSet / RoomData / RoomFeatures / Beds | 0..1 | Object | Zawiera tyle elementów typu <Bed> , ile jest w sali. Pamiętaj, że japońskie futony nie powinny tu być 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 jest to pokój typu suite. |
Transaction / PropertyDataSet / RoomData / RoomFeatures / Capsule | 0..1 | enum | Podaj ten element, jeśli jest to pokój kapsułowy. |
Transaction / PropertyDataSet / RoomData / RoomFeatures / Roomsharing | 0..1 | enum | Określa, czy pokój jest udostępniany innym osobom, np. właścicielom lub gościom. Prawidłowe wartości to shared i private . |
Transaction / PropertyDataSet / RoomData / RoomFeatures / Outdoor | 0..1 | enum | Wybierz ten element, jeśli jest to pokój hotelowy na świeżym powietrzu, który nie ma stałych ścian, instalacji hydraulicznych ani klimatyzacji. Na przykład pokoje hotelowe nie są przeznaczone do zakwaterowania na świeżym powietrzu, natomiast kempingi, w przypadku których goście zatrzymują się w namiotach, oraz parkingi dla kamperów, do których goście przynoszą swój kamper, znajdują się na świeżym powietrzu. |
Transaction / PropertyDataSet / RoomData / RoomFeatures / MobileAccessible | 0..1 | enum | Stosuj ten element, jeśli pomieszczenie jest dostosowane do potrzeb osób poruszających się. |
Transaction / PropertyDataSet / RoomData / RoomFeatures / Smoking | 0..1 | enum | Określa, czy jest to pokój dla niepalących czy dla palących. Prawidłowe wartości to non_smoking i smoking . |
Transaction / PropertyDataSet / RoomData / RoomFeatures / BathAndToilet | 0..1 | Object | Zawiera informacje o łazience i toalecie w pokoju.
Ten atrybut to:
Element opcjonalnie przyjmuje 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 | Użyj tego elementu, jeśli pokój ma prywatną łaźnię na świeżym powietrzu. |
Transaction / PropertyDataSet / RoomData / RoomFeatures / AirConditioning | 0..1 | enum | Użyj tego elementu, jeśli pokój jest klimatyzowany. |
Transaction / PropertyDataSet / RoomData / RoomFeatures / Balcony | 0..1 | enum | Użyj tego elementu, jeśli pokój ma balkon lub werandę. |
Transaction / PropertyDataSet / RoomData / RoomFeatures / Views | 0..1 | Object | Możliwe opcje to:
|
Transaction / PropertyDataSet / PackageData | 0..n | PackageData | Kontener na elementy opisujące funkcje związane z ceną i warunki, które nie są częścią opisu fizycznego pokoju. Uwaga: wymagana jest co najmniej 1 z tych właściwości: |
Transaction / PropertyDataSet / PackageData / PackageID | 1 | string | PackageID w tych komunikatach odpowiada RatePlanCode w komunikatach OTA_HotelRateAmountNotifRQ i OTA_HotelAvailNotifRQ. |
Transaction / PropertyDataSet / PackageData / Name | 1 | Name | Kontener na nazwę pakietu w co najmniej jednym 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 w atrybucie language . |
Transaction / PropertyDataSet / PackageData / Description | 1 | Description | Kontener na opis pakietu w jednym lub kilku językach. |
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 w atrybucie 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 określisz właściwość Jeśli atrybut Możesz użyć właściwości |
Transaction / PropertyDataSet / PackageData / AllowableRoomIDs / AllowableRoomID | 1..n | AllowableRoomID | Określa identyfikator pokoju typu pokoju, który można połączyć z tym abonamentem. Typ pomieszczenia jest zdefiniowany w elemencie <RoomData> .
|
Transaction / PropertyDataSet / PackageData / Refundable | 0..1 | Refundable | Umożliwia wyświetlanie informacji o cenie jako podlegającej pełnym zwrotowi lub możliwości anulowania. Jeśli jej nie podasz, nie pojawią się żadne informacje o zwrocie środków.
Uwaga: zalecamy skonfigurowanie wszystkich atrybutów. Jeśli nie ustawisz co najmniej jednego atrybutu, pojawi się komunikat z ostrzeżeniem o stanie pliku danych. Jeśli nie ustawisz żadnych atrybutów, stawka 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 | (Wymagane) Ustaw wartość 1 lub true , aby wskazać, czy stawka umożliwia pełny zwrot środków. W przeciwnym razie ustaw 0 lub false . |
Transaction / PropertyDataSet / PackageData / Refundable / @refundable_until_days | 0..1 | integer | (Wymagane, jeśli
available to true ) Określa, na ile dni przed zameldowaniem 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 ostatnią godzinę (według lokalnego czasu hotelu), aby uwzględnić prośbę o pełny zwrot środków. Możesz go połączyć z właściwością refundable_until_days , aby na przykład określić, że „Zwroty środków są dostępne do 16:00 2 dni przed datą zameldowania”. Jeśli refundable_until_time nie jest ustawiony, domyślną wartością jest północ. |
Transaction / PropertyDataSet / PackageData / BreakfastIncluded | 0..1 | boolean | Określa, czy w pokoju tego typu jest śniadanie.
Prawidłowe wartości to 0 (lub false ) i 1 (lub true ).
Zalecamy używanie |
Transaction / PropertyDataSet / PackageData / CheckinTime | 0..1 | Time | Najwcześniejszy możliwy czas zameldowania w czasie lokalnym w hotelu. Godzina musi być mniejsza niż 24:00. |
Transaction / PropertyDataSet / PackageData / CheckoutTime | 0..1 | Time | Najpóźniejszy możliwy czas wymeldowania według lokalnego czasu hotelu. |
Transaction / PropertyDataSet / PackageData / InternetIncluded | 0..1 | boolean | Określa, czy w pokoju jest bezpłatny dostęp do internetu, a pozostałe pokoje nie zawierają tego udogodnień. Nie umieszczaj tego elementu w hotelach, w których we wszystkich pokojach jest bezpłatny dostęp do internetu. Ten element nie dotyczy przewodowego lub bezprzewodowego internetu w pokoju, który nie jest dostępny w pokojach dla 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 tej paczce.
Element
Atrybuty opcjonalne są używane tylko wtedy, gdy Aby filtry posiłków ( |
Transaction / PropertyDataSet / PackageData / ParkingIncluded | 0..1 | boolean | Określa, czy pokój obejmuje wliczony w cenę parking, w przypadku których parking w innym przypadku byłby płatną usługą w tym hotelu. Nie określaj wartości tego elementu w przypadku hotelu, w którym parking jest wliczony w cenę.
Prawidłowe wartości to 0 (lub false ) i 1 (lub true ). Wartość domyślna to false .
|
Transaction / PropertyDataSet / PackageData / PhotoURL | 0..1 | Object | (Tak samo jak <PhotoURL> w <RoomData> , ale w przypadku opakowania (np. zdjęć posiłków).
|
Przykłady
Dane dotyczące pomieszczeń i pakietów
Poniżej pokazujemy podstawowy przykład definiowania danych dotyczących pokoju i pakietu usługi w wiadomości transakcji (dane usługi). Atrybut overlay
służy do zapewnienia, że jeśli jakiekolwiek dane już nieoczekiwanie istnieją, zostaną usunięte wszystkie istniejące dane i zastąpione danymi z tej wiadomości:
<?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>
<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>
Dodaj typ pomieszczenia
Poniższy przykład pokazuje, jak dodać typ pokoju i pakiet 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>
Usuń typy pomieszczeń
Poniżej znajdziesz przykład usuwania istniejących typów pokojów i pakietów. W tej sytuacji, jeśli wiadomości w polach „Dane sal i pakietów” i „Dodaj typ pokoju” zostały już wcześniej wysłane do Google, to po wyświetleniu wiadomości przez Google typy pokoi King
i Double
nie będą już istniały. Pamiętaj, że usunięcie danych pakietu ma wpływ na ogólny abonament według definicji w transakcjach (dane o obiekcie), wiadomościach OTA_HotelRateAmountNotifRQ i OTA_HotelAvailNotifRQ
(odwoływanie się do tej samej wartości PackageID
). Dlatego może być konieczne powiązane aktualizacje przy użyciu innych typów wiadomości, aby odzwierciedlały to, że PackageID_2
i PackageID_3
nie są już tu 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>
Ogranicz plany stawek
Poniżej pokazujemy, jak za pomocą elementu <AllowablePackageIDs>
ograniczyć plany stawek dozwolone w przypadku konkretnego typu pokoju. W tym przykładzie typ pokoju Queen
(RoomID_2
) można połączyć tylko z abonamentem i abonamentem, które są oznaczone 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>
Ogranicz pojemność sali
Poniżej znajdziesz przykład użycia elementów <Capacity>
, <AdultCapacity>
i <ChildCapacity>
do ustawiania ograniczeń dotyczących pojemności sal.
<?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ć do 4 osób. Może on pomieścić do 4 dorosłych i 3 dzieci. Aby można było zarezerwować ten pokój, muszą być spełnione wszystkie 3 wymagania dotyczące liczby miejsc. Ta konfiguracja reprezentuje typowy pokój z 2 łóżkami, które mogą pomieścić 2 osoby. Liczba miejsc dla dzieci jest o 1 mniejsza od łącznej pojemności, ponieważ w pomieszczeniu musi być co najmniej 1 osoba dorosła.
Rozszerzone przykłady zawierające atrybut <RoomFeatures>
i posiłki
JapaneseHotelRoomStyle
nie ma wartości domyślnej.
Pominięcie wartości nie powoduje błędu XML, ale wizytówka nie wyświetla się w wynikach wyszukiwania, gdy użytkownik filtruje według stylu pokoju lub łóżek.
2 łóżka pojedyncze
Poniższy przykład pokazuje, jak używać atrybutu <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>
Japoński styl bez łóżka
Poniżej znajdziesz przykład pokoju w stylu japońskim bez łóżka. W pokoju typu japanese
nie są wymagane informacje o łóżku.
<?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>
Japoński western 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 japanese_western
pokoju, skorzystaj z tego przykładu:
<?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
Poniższy przykład zawiera metadane dotyczące pokoju i pakietu 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
Komunikat TransactionResponse (Property Data)
ma taką 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)
składa się z tych elementów i atrybutów:
Element / @Atrybut | Wystąpienia | Typ | Opis |
---|---|---|---|
TransactionResponse | 1 | Complex element | Element główny wskazujący na powodzenie lub problemy z odebraną wiadomością z żądaniem transakcji. |
TransactionResponse / @timestamp | 1 | DateTime | Data i godzina utworzenia tej wiadomości. |
TransactionResponse / @id | 1 | string | Unikalny identyfikator powiązanej wiadomości transakcji. |
TransactionResponse / @partner | 1 | string | Konto partnera, z którego pochodzi ta wiadomość. |
TransactionResponse / Success | 0..1 | Success | Wskazuje, że wiadomość dotycząca transakcji została przetworzona bez ostrzeżeń, błędów i niepowodzeń.
Każda wiadomość zawiera element |
TransactionResponse / Issues | 0..1 | Issues | Kontener rozwiązania co najmniej jednego problemu, który wystąpił podczas przetwarzania wiadomości dotyczącej transakcji.
Każda wiadomość zawiera element |
TransactionResponse / Issues / Issue | 1..n | Issue | Opis ostrzeżenia, błędu lub błędu napotkanych podczas przetwarzania wiadomości dotyczącej 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 | Typ napotkanego problemu. Prawidłowe wartości to |
Przykłady
Gotowe
Poniżej znajdziesz odpowiedź na pomyślnie przetworzony komunikat dotyczący transakcji.
<?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 znajdziesz odpowiedź na komunikat dotyczący transakcji, który nie został przetworzony 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>