Żądania
Składnia
Wiadomość Transaction (Property Data) używa tej 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ść Transakcja (dane usługi) 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, w którym definiuje się typy pokoi i pakiety dla jednej usługi. | 
| Transaction / @timestamp | 1 | DateTime | Data i godzina utworzenia tej wiadomości. | 
| Transaction / @id | 1 | string | Unikalny identyfikator tego komunikatu żądania. 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, na którym jest wysyłana wiadomość. Ta wartość ciągu znaków to wartość „klucza 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 | Kontenery służące do definiowania typów pokoi i pakietów dla jednej usługi. | 
| Transaction / PropertyDataSet / @action | 0..1 | enum | Typ aktualizacji do zastosowania w definicjach stawek za pokój. Prawidłowe wartości to: 
 Ten atrybut jest opcjonalny i jeśli nie zostanie określony, 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ż widoczny w Hotel Center. | 
| Transaction / PropertyDataSet / RoomData | 0..n | RoomData | Opisuje pokój. Uwaga: wymagane jest co najmniej jedno z tych pól:  | 
| Transaction / PropertyDataSet / RoomData / RoomID | 1 | RoomID | Unikalny identyfikator typu pokoju. Odwołuje się do niej za pomocą atrybutu InvTypeCodew elemencie<StatusApplicationControl>w wiadomościach<OTA_HotelAvailNotifRQ>,<OTA_HotelRateAmountNotifRQ>i<OTA_HotelInvCountNotifRQ>. | 
| Transaction / PropertyDataSet / RoomData / Name | 1 | Name | Kontener na 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 na opis kategorii pokoju w co najmniej 1 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 parametr  Jeśli parametr  Używaj właściwości  | 
| Transaction / PropertyDataSet / RoomData / AllowablePackageIDs / AllowablePackageID | 1..n | AllowablePackageID | Określa identyfikator pakietu (PackageID) planu cenowego, który można połączyć z tym typem pokoju. Abonament jest definiowany przez kombinację pakietu, stawek i dostępności. Wartość PackageIDodpowiada wartościRatePlanCodew wiadomościach OTA_HotelRateAmountNotifRQ i OTA_HotelAvailNotifRQ. | 
| Transaction / PropertyDataSet / RoomData / Capacity | 0..1 | integer | Maksymalna liczba dorosłych i dzieci, które fizycznie mieści się w pokoju. Wartość ta powinna być większa lub równa wartościom NumberOfGuestswysyłanym z cenami.Wartość  Uwaga: jeśli parametr  | 
| Transaction / PropertyDataSet / RoomData / AdultCapacity | 0..1 | integer | Maksymalna liczba dorosłych, którą fizycznie może pomieścić pokój. Wartość ta powinna być większa lub równa wartościom parametru NumberOfGuests, które wysyłasz z cenami.Wartość  | 
| Transaction / PropertyDataSet / RoomData / ChildCapacity | 0..1 | integer | Maksymalna liczba dzieci, które fizycznie mogą przebywać w pokoju. Wartość  | 
| Transaction / PropertyDataSet / RoomData / OccupancySettings | 0..1 | OccupancySettings | Ustawienia, które mogą ograniczać lub modyfikować wymagania dotyczące liczby osób w pokoju. 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 do zdjęcia danego pokoju lub pakietu pokoi. Możesz określić więcej niż 1 element <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 | Wskazuje styl japońskiego pokoju hotelowego. Prawidłowe wartości to: 
 | 
| Transaction / PropertyDataSet / RoomData / RoomFeatures / Beds | 0..1 | Object | Zawiera tyle <Bed>, ile jest w pokoju. Pamiętaj, że japońskie futony nie powinny być wliczane.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 pokój jest udostępniony innym użytkownikom, takim jak właściciele lub inni goście. Prawidłowe wartości to sharediprivate. | 
| Transaction / PropertyDataSet / RoomData / RoomFeatures / Outdoor | 0..1 | enum | Podaj ten element, jeśli pokój jest obiektem noclegowym na świeżym powietrzu, który nie ma stałych ścian, instalacji hydraulicznej ani klimatyzacji. Przykładowo: pokoje hotelowe nie są noclegami na świeżym powietrzu, podczas gdy pola namiotowe, na których goście mieszkają w namiotach, oraz kempingi dla przyczep kempingowych, na które goście przyjeżdżają własnymi przyczepami, są noclegami na świeżym powietrzu. | 
| Transaction / PropertyDataSet / RoomData / RoomFeatures / MobileAccessible | 0..1 | enum | Podaj ten element, jeśli pokój jest dostępny dla osób z ograniczoną mobilnością. | 
| Transaction / PropertyDataSet / RoomData / RoomFeatures / Smoking | 0..1 | enum | Czy pokój jest dla palaczy czy niepalących. Prawidłowe wartości to non_smokingismoking. | 
| Transaction / PropertyDataSet / RoomData / RoomFeatures / BathAndToilet | 0..1 | Object | Zawiera informacje o łazience i toalecie w pokoju. Atrybut: 
 Element opcjonalnie może 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 pokój ma prywatną łazienkę 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 | Dostępne opcje: 
           | 
| Transaction / PropertyDataSet / PackageData | 0..n | PackageData | Elementy opisujące funkcje i warunki cenowe, które nie są częścią opisu fizycznego pokoju. Uwaga: wymagane jest co najmniej jedno z tych pól:  | 
| Transaction / PropertyDataSet / PackageData / PackageID | 1 | string | Wartość PackageIDw tych wiadomościach odpowiada wartościRatePlanCodew wiadomościach OTA_HotelRateAmountNotifRQ i OTA_HotelAvailNotifRQ. | 
| Transaction / PropertyDataSet / PackageData / Name | 1 | Name | Kontener na nazwę pakietu w jednym lub większej liczbie języków. | 
| 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 na opis pakietu w co najmniej jednym 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 RoomID typu pokoju, który można połączyć z tym planem stawek. 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 zdefiniowanych planów taryfowych lub pakietów. W elemencie <PackageData>, który definiuje plan taryfowy, określ element<MilesIncluded>.<MilesIncluded>ma ten element podrzędny:
 | 
| Transaction / PropertyDataSet / PackageData / Refundable | 0..1 | Refundable | Umożliwia wyświetlanie stawki jako stawki z możliwością pełnego zwrotu lub anulowania. Jeśli nie podasz tych informacji, nie wyświetli się żadna informacja o zwrocie środków. Uwaga: zalecamy skonfigurowanie wszystkich atrybutów. Jeśli co najmniej 1 atrybut nie jest ustawiony, generowany jest komunikat ostrzeżenia o stanie pliku danych. Jeśli nie ustawisz żadnych atrybutów, stawka nie będzie wyświetlana jako podlegająca zwrotowi. Podczas konfigurowania atrybutów pamiętaj o tych kwestiach: 
 | 
| Transaction / PropertyDataSet / PackageData / Refundable / @available | 1 | boolean | (Wymagane) Ustaw na 1lubtrue, aby wskazać, czy stawka umożliwia pełny zwrot środków; w przeciwnym razie ustaw na0lubfalse. | 
| Transaction / PropertyDataSet / PackageData / Refundable / @refundable_until_days | 0..1 | integer | (wymagany, jeśli availabletotrue) Określa liczbę dni przed zameldowaniem, w których można poprosić o pełny zwrot środków. Wartośćrefundable_until_daysmusi być liczbą całkowitą z zakresu od 0 do 330 włącznie. | 
| Transaction / PropertyDataSet / PackageData / Refundable / @refundable_until_time | 0.. | Time | (szczególnie zalecane, jeśli availabletotrue) określa najpóźniejszą godzinę (według lokalnego czasu hotelu), do której można poprosić o pełny zwrot środków. Możesz go połączyć z tagiemrefundable_until_days, aby określić na przykład, że „zwroty są dostępne do godziny 16:00 2 dni przed zameldowaniem”. Jeśli parametrrefundable_until_timenie jest ustawiony, jego wartością domyślną jest północ. | 
| Transaction / PropertyDataSet / PackageData / BreakfastIncluded | 0..1 | boolean | Określa, czy śniadanie jest wliczone w cenę tego typu pokoju.
        Prawidłowe wartości to 0(lubfalse) i1(lubtrue).Zamiast  | 
| Transaction / PropertyDataSet / PackageData / CheckinTime | 0..1 | Time | Najwcześniejsza możliwa godzina zameldowania według czasu lokalnego hotelu. Czas musi być krótszy niż 24:00. | 
| Transaction / PropertyDataSet / PackageData / CheckoutTime | 0..1 | Time | Najpóźniejszą możliwą godzinę wymeldowania według czasu lokalnego hotelu. | 
| Transaction / PropertyDataSet / PackageData / InternetIncluded | 0..1 | boolean | Określa, czy pokój ma bezpłatny dostęp do internetu, podczas gdy inne pokoje nie mają tego udogodnienia. Nie ustawiaj tego elementu w hotelu, który oferuje 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ścinnych. Prawidłowe wartości to 0(lubfalse) i1(lubtrue). | 
| 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ść atrybutu  Aby filtry posiłków ( | 
| Transaction / PropertyDataSet / PackageData / ParkingIncluded | 0..1 | boolean | czy pokój obejmuje bezpłatny parking, jeśli w hotelu parking jest płatny. W przypadku hotelu, który oferuje bezpłatny parking, nie podawaj wartości tego elementu.
        Dozwolone wartości to 0(lubfalse) oraz1(lubtrue). Wartością domyślną jestfalse. | 
| Transaction / PropertyDataSet / PackageData / PhotoURL | 0..1 | Object | (To samo co <PhotoURL>w<RoomData>,
        ale w przypadku pakietu (np. zdjęcia posiłków).) | 
Przykłady
Dane o pokoju i pakiecie
Poniżej znajdziesz podstawowy przykład definiowania danych o pokoju i pakiecie usługi w wiadomości o transakcji (dane usługi). Atrybut overlay służy do zapewnienia, że jeśli jakiekolwiek 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 pokoju
Oto 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 istniejących typów pokoi i pakietów. W tym scenariuszu, jeśli wcześniej do Google zostały wysłane wiadomości z sekcji „Dane o pokoju i pakiecie” oraz „Dodaj typ pokoju”, typy pokoi King i Double nie będą już dostępne, gdy Google otrzyma pokazaną wiadomość. Pamiętaj, że usunięcie danych pakietu wpływa na ogólny plan stawek zdefiniowany w wiadomościach Transaction (Property Data), OTA_HotelRateAmountNotifRQ i OTA_HotelAvailNotifRQ (poprzez odniesienie do tej samej wartości PackageID). Dlatego może być konieczne wprowadzenie odpowiednich aktualizacji za pomocą innych typów wiadomości, aby odzwierciedlić fakt, że PackageID_2 i PackageID_3 nie są już 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 cennika
Poniżej znajdziesz przykład użycia elementu <AllowablePackageIDs> do ograniczenia dozwolonych planów cenowych dla danego typu pokoju. W tym przykładzie
typ pokoju Queen (RoomID_2) można łączyć tylko z pakietem i planem taryfowym o identyfikatorze 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 liczby osób w pokoju.
<?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 osób. Dodatkowo może ona pomieścić do 4 osób dorosłych i do 3 dzieci. Aby można było zarezerwować ten pokój, musisz spełnić wszystkie 3 wymagania dotyczące liczby miejsc. Ta konfiguracja jest reprezentatywna dla typowego pokoju z 2 łóżkami, na których mogą spać 2 osoby. Pojemność dla dzieci jest o jedną osobę mniejsza niż łączna pojemność, ponieważ w pokoju musi przebywać co najmniej jedna 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 informacja o pokoju nie będzie widoczna 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 typu 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 japońskim stylu bez łóżka
Poniżej znajdziesz przykład pokoju w stylu japońskim bez łóżka. Informacje o łóżku 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>
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 japanese_westernpokoju, 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 tym przykładzie definiujemy 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) używa tej 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) zawiera te elementy i atrybuty:
| Element / @Attribute | Wystąpienia | Typ | Opis | 
|---|---|---|---|
| TransactionResponse | 1 | Complex element | Element rdzenny wskazujący, czy otrzymano wiadomość z powodzeniem, czy z problemami. | 
| 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, na którym jest wysyłana wiadomość. | 
| TransactionResponse / Success | 0..1 | Success | Wskazuje, że komunikat Transaction został przetworzony bez ostrzeżeń, błędów ani niepowodzeń. W każdej wiadomości występuje element  | 
| TransactionResponse / Issues | 0..1 | Issues | Kontener dla co najmniej 1 problemu, który wystąpił podczas przetwarzania wiadomości o transakcji. W każdej wiadomości występuje element  | 
| TransactionResponse / Issues / Issue | 1..n | Issue | Opis ostrzeżenia, błędu lub niepowodzenia napotkanego podczas przetwarzania wiadomości transakcyjnej. Szczegółowe informacje o tych problemach znajdziesz w komunikatach 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
Sukces
Poniżej znajduje się odpowiedź na pomyślnie przetworzone wiadomość Transaction.
<?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 przedstawiamy odpowiedź na wiadomość Transaction, 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>