RateModifications

Przegląd

Ten interfejs API umożliwia definiowanie sposobów dynamicznego stosowania działań do ceny, gdy zostaną spełnione warunki, np. dostosowywanie ceny lub włączanie możliwości zwrotu środków. W przeciwieństwie do Promotions API, który może stosować tylko kwalifikujące się promocje z największymi rabatami, ten interfejs API stosuje wszelkie działania po spełnieniu określonych warunków, w tym korekty cen, które mogą ostatecznie zwiększyć cenę końcową.

Żądania

Składnia

Wiadomość RateModifications ma tę składnię:

<?xml version="1.0" encoding="UTF-8"?>
<RateModifications partner="partner_key"
                      id="message_ID"
                      timestamp="timestamp">
  <HotelRateModifications hotel_id="HotelID" action="[overlay]">
    <ItineraryRateModification id="ModificationID" action="[delete]">
      <BookingDates>
        <DateRange start="YYYY-MM-DD" end="YYYY-MM-DD" days_of_week=""MTWHFSU_or_subset""/>
        <DateRange start="YYYY-MM-DD" end="YYYY-MM-DD" days_of_week=""MTWHFSU_or_subset""/>
      </BookingDates>
      <BookingWindow min="integer" max="integer"/>
      <CheckinDates>
        <DateRange start="YYYY-MM-DD" end="YYYY-MM-DD" days_of_week=""MTWHFSU_or_subset""/>
      </CheckinDates>
      <CheckoutDates>
        <DateRange start="YYYY-MM-DD" end="YYYY-MM-DD" days_of_week=""MTWHFSU_or_subset""/>
      </CheckoutDates>
      <Devices>
        <Device type="[desktop|tablet|mobile]"/>
      </Devices>
      <LengthOfStay min="integer" max="integer"/>
      <MinimumAmount before_discount="integer"/>
      <RatePlans>
        <RatePlan id="PackageID_1"/>
        <RatePlan id="PackageID_2"/>
      </RatePlans>
      <RoomTypes>
        <RoomType id="RoomID_1"/>
        <RoomType id="RoomID_2"/>
      </RoomTypes>
      <StayDates application="[all|any]">
        <DateRange start="YYYY-MM-DD" end="YYYY-MM-DD" days_of_week=""MTWHFSU_or_subset""/>
      </StayDates>
      <UserCountries type="[include|exclude]">
        <Country code="country_code"/>
      </UserCountries>
      <ModificationActions>
        <PriceAdjustment multiplier="float"/>
        <RateRule id="RateRuleID"/>
        <Refundable available="[false|true]"
                       refundable_until_days="number_of_days"
                       refundable_until_time="time"/>
        <Availability status="[unavailable]"/>
      </ModificationActions>
    </ItineraryRateModification>
  </HotelRateModifications>
</RateModifications>
.

Elementy i atrybuty

Wiadomość RateModifications zawiera te elementy i atrybuty:

Element / @Attribute Wystąpienia Typ Opis
RateModifications 1 Complex element Element główny wiadomości o modyfikacjach stawek.
RateModifications / @partner 1 string Konto partnera dla tej wiadomości. 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 ID w elemencie <RequestorID> wiadomości <OTA_HotelRateAmountNotifRQ> i <OTA_HotelAvailNotifRQ> dla tego samego konta.

RateModifications / @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 – (myślnik).
RateModifications / @timestamp 1 DateTime Data i godzina utworzenia tej wiadomości.
RateModifications / HotelRateModifications 0..n HotelRateModifications

modyfikacje stawek w przypadku usługi. Każda modyfikacja stawki dotyczy jednej usługi.

Uwaga: jeśli do tej samej stawki można zastosować kilka modyfikacji, zostaną one wszystkie zastosowane. Nie ma gwarancji, że będą one wyświetlane w określonej kolejności.

RateModifications / HotelRateModifications / @hotel_id 1 string Unikalny identyfikator usługi. Ta wartość musi być zgodna z identyfikatorem hotelu określonym za pomocą <id> w elemencie <listing> w pliku danych z listą hoteli. Identyfikator hotelu jest też podany w Hotel Center.
RateModifications / HotelRateModifications / @action 0..1 enum

Jeśli element action nie jest określony, modyfikacje w tym elemencie są dodawane lub aktualizowane w przypadku tego hotelu. Jeśli określono action="overlay", wszystkie wcześniej zdefiniowane modyfikacje tego hotelu zostaną najpierw usunięte. Następnie zapisywane są modyfikacje określone w tym miejscu. Jeśli użyjesz elementu action="overlay" i nie określisz w nim żadnych modyfikacji, wszystkie modyfikacje dotyczące tego hotelu zostaną usunięte.

RateModifications / HotelRateModifications / ItineraryRateModification 0..200 ItineraryRateModification

Pojedyncza modyfikacja ceny w przypadku usługi.

Uwaga: modyfikacje stawek są trudne do debugowania, dlatego zalecamy ich oszczędne stosowanie. W przypadku zastosowań, które wymagają więcej niż 200 modyfikacji stawek, skontaktuj się z przedstawicielem Technicznej obsługi klienta.

RateModifications / HotelRateModifications / ItineraryRateModification / @id 1 string Unikalny identyfikator modyfikacji stawki. Maksymalna dozwolona liczba znaków to 40. Dozwolone znaki to a–z, A–Z, 0–9, _ (podkreślenie), - (myślnik) i . (kropka).
RateModifications / HotelRateModifications / ItineraryRateModification / @action 0..1 enum

Jeśli nie podasz wartości, a modyfikacja stawki z tym samym parametrem id nie jest przechowywana, ta modyfikacja stawki zostanie zapisana. W przeciwnym razie, jeśli nie zostanie określona i zostanie zapisana modyfikacja stawki z tym samym parametrem id, istniejąca modyfikacja stawki zostanie zaktualizowana.

Jeśli została określona, wartość musi wynosić "delete". Jeśli określono wartość "delete", zapisana modyfikacja stawki z tym samym identyfikatorem id zostanie usunięta. Jeśli używasz elementu "delete", nie umieszczaj w nim żadnych elementów podrzędnych.<ItineraryRateModification> Ponadto nie można używać "delete" w połączeniu z <HotelRateModifications action="overlay"/>.

RateModifications / HotelRateModifications / ItineraryRateModification / BookingDates 0..1 BookingDates Kontener na co najmniej jeden zakres dat określający, kiedy musi nastąpić rezerwacja, aby można było zastosować modyfikację ceny.
RateModifications / HotelRateModifications / ItineraryRateModification / BookingDates / DateRange 1..99 DateRange Zakres dat określający, kiedy musi nastąpić rezerwacja, aby zastosować modyfikację ceny.
RateModifications / HotelRateModifications / ItineraryRateModification / BookingDates / DateRange / @start 0..1 Date Data rozpoczęcia zakresu dat (włącznie) w strefie czasowej usługi. Ta data musi być wcześniejsza niż data end lub taka sama jak ona. Jeśli zasada start nie jest określona, zakres dat jest w zasadzie nieograniczony pod względem daty rozpoczęcia.
RateModifications / HotelRateModifications / ItineraryRateModification / BookingDates / DateRange / @end 0..1 Date Data zakończenia zakresu dat (w strefie czasowej usługi), włącznie z wartościami granicznymi. Ta data musi być taka sama jak data start lub późniejsza. Jeśli nie podasz wartości end, zakres dat będzie w praktyce nieograniczony pod względem daty zakończenia.
RateModifications / HotelRateModifications / ItineraryRateModification / BookingDates / DateRange / @days_of_week 0..1 string

Dni tygodnia dozwolone w zakresie dat. Jeśli nie określisz dni, wszystkie dni w zakresie dat będą dozwolone. Każdy znak w ciągu określa dzień. Na przykład „MTWHF” oznacza, że w zakresie dat dozwolone są dni powszednie.

Prawidłowe znaki to:

  • M w przypadku poniedziałku
  • T – wtorek
  • W na środę
  • H w przypadku czwartku
  • F w piątek
  • S w sobotę
  • U w niedzielę

Dowolna kombinacja znaków jest prawidłowa.

RateModifications / HotelRateModifications / ItineraryRateModification / BookingWindow 0..1 BookingWindow Określa okres, w którym musi nastąpić rezerwacja w stosunku do daty zameldowania (na podstawie strefy czasowej obiektu). Na przykład okno rezerwacji może być ustawione na co najmniej 7 dni, ale nie więcej niż 180 dni przed zameldowaniem.
RateModifications / HotelRateModifications / ItineraryRateModification / BookingWindow / @min 0..1 integer Minimalna liczba dni przed zameldowaniem, w których musi nastąpić rezerwacja, aby zastosować modyfikację ceny. Jeśli nie określisz tu żadnej wartości, nie będzie wartości minimalnej.
RateModifications / HotelRateModifications / ItineraryRateModification / BookingWindow / @max 0..1 integer Maksymalna liczba dni przed zameldowaniem, w których musi nastąpić rezerwacja, aby zastosować modyfikację ceny. Jeśli nie podasz żadnej opcji, nie będzie limitu.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckinDates 0..1 CheckinDates Kontener zawierający co najmniej jeden zakres dat określający, kiedy musi nastąpić zameldowanie, aby zastosować modyfikację ceny.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckinDates / DateRange 1..99 DateRange Zakres dat określający, kiedy musi nastąpić zameldowanie, aby zastosować modyfikację ceny. Ten element nie jest wymagany, jeśli usuwasz co najmniej 1 modyfikację ceny.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckinDates / DateRange / @start 0..1 Date Data rozpoczęcia zakresu dat (włącznie) w strefie czasowej usługi. Ta data musi być wcześniejsza niż data end lub taka sama jak ona. Jeśli zasada start nie jest określona, zakres dat jest w zasadzie nieograniczony pod względem daty rozpoczęcia.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckinDates / DateRange / @end 0..1 Date Data zakończenia zakresu dat (w strefie czasowej usługi), włącznie z wartościami granicznymi. Ta data musi być taka sama jak data start lub późniejsza. Jeśli nie podasz wartości end, zakres dat będzie w praktyce nieograniczony pod względem daty zakończenia.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckinDates / DateRange / @days_of_week 0..1 string

Dni tygodnia dozwolone w zakresie dat. Jeśli nie określisz dni, wszystkie dni w zakresie dat będą dozwolone. Każdy znak w ciągu określa dzień. Na przykład „MTWHF” oznacza, że w zakresie dat dozwolone są dni powszednie.

Prawidłowe znaki to:

  • M w przypadku poniedziałku
  • T – wtorek
  • W na środę
  • H w przypadku czwartku
  • F w piątek
  • S w sobotę
  • U w niedzielę

Dowolna kombinacja znaków jest prawidłowa.

RateModifications / HotelRateModifications / ItineraryRateModification / CheckoutDates 0..1 CheckoutDates Kontener na co najmniej jeden zakres dat, który określa, kiedy musi nastąpić wymeldowanie, aby zastosować modyfikację ceny.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckoutDates / DateRange 1..99 DateRange Zakres dat określający, kiedy musi nastąpić wymeldowanie, aby zastosować modyfikację ceny. Ten element nie jest wymagany, jeśli usuwasz co najmniej 1 modyfikację ceny.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckoutDates / DateRange / @start 0..1 Date Data rozpoczęcia zakresu dat (włącznie) w strefie czasowej usługi. Ta data musi być wcześniejsza niż data end lub taka sama jak ona. Jeśli zasada start nie jest określona, zakres dat jest w zasadzie nieograniczony pod względem daty rozpoczęcia.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckoutDates / DateRange / @end 0..1 Date Data zakończenia zakresu dat (w strefie czasowej usługi), włącznie z wartościami granicznymi. Ta data musi być taka sama jak data start lub późniejsza. Jeśli nie podasz wartości end, zakres dat będzie w praktyce nieograniczony pod względem daty zakończenia.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckoutDates / DateRange / @days_of_week 0..1 string

Dni tygodnia dozwolone w zakresie dat. Jeśli nie określisz dni, wszystkie dni w zakresie dat będą dozwolone. Każdy znak w ciągu określa dzień. Na przykład „MTWHF” oznacza, że w zakresie dat dozwolone są dni powszednie.

Prawidłowe znaki to:

  • M w przypadku poniedziałku
  • T – wtorek
  • W na środę
  • H w przypadku czwartku
  • F w piątek
  • S w sobotę
  • U w niedzielę

Dowolna kombinacja znaków jest prawidłowa.

RateModifications / HotelRateModifications / ItineraryRateModification / Devices 0..1 Devices Kontener z listą urządzeń użytkowników, które kwalifikują się do zmiany stawki. Jeśli jest określona, modyfikacja stawki jest stosowana tylko wtedy, gdy użytkownik korzysta z jednego z wymienionych urządzeń. Jeśli nie określisz tu żadnej wartości, nie będzie to ograniczać stosowania modyfikacji stawki.
RateModifications / HotelRateModifications / ItineraryRateModification / Devices / Device 1..3 Device Określa 1 typ urządzenia użytkownika, który kwalifikuje się do modyfikacji stawki.
RateModifications / HotelRateModifications / ItineraryRateModification / Devices / Device / @type 1 enum Typ urządzenia. Wartość musi wynosić desktop, tablet lub mobile.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions 1 ModificationActions

Działania, które są stosowane do stawki, jeśli wszystkie określone warunki zostaną spełnione.

RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / PriceAdjustment 0..1 PriceAdjustment Modyfikuje stawkę, mnożąc zarówno AmountBeforeTax, jak i AmountAfterTax przez określony mnożnik.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / PriceAdjustment / @multiplier 1 float Zarówno AmountBeforeTax, jak i AmountAfterTax są mnożone przez tę wartość.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / RateRule 0..1 RateRule Modyfikuje cenę, stosując do niej podany identyfikator reguły dotyczącej ceny.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / RateRule / @id 1 string Ten identyfikator dopasowuje stawkę do definicji w pliku Definicja reguły stawki. Uwaga:
  • Limit znaków w tym polu wynosi 40.
  • Każda stawka może być powiązana tylko z 1 regułą stawki.
  • Jeśli istnieje wiele modyfikacji stosujących identyfikator reguły dotyczącej ceny, do ceny przypisywany jest identyfikator reguły dotyczącej ceny, który jest najmniejszy pod względem leksykograficznym.
  • Jeśli ten identyfikator nie pasuje do reguły stawki w pliku definicji reguły stawki, jest uznawany za niekwalifikujący się.
Informacje o różnych interfejsach użytkownika dotyczących cen prywatnych znajdziesz w  tym artykule.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / Refundable 0..1 Refundable Zastępuje możliwość zwrotu środków za stawkę określoną wartością.

Podczas ustawiania atrybutów pamiętaj o tych kwestiach:

  • Ta operacja modyfikacji całkowicie zastępuje ustawienie Refundable kwalifikującej się stawki, a nie tylko wypełnione pola.
  • Jeśli zasada available lub refundable_until_days nie jest ustawiona, stawka nie wyświetla się jako podlegająca zwrotowi.
  • Jeśli wartość atrybutu available to 0 lub false, pozostałe atrybuty są ignorowane. Nawet jeśli ustawisz jeden lub oba pozostałe atrybuty, stawka nie będzie wyświetlana jako podlegająca zwrotowi.
  • Zalecamy ustawienie wartości refundable_until_time. Jeśli nie zostanie ona skonfigurowana, użyjemy najwcześniejszej godziny (północy).
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / 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).
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / Refundable / @refundable_until_time 0..1 Time (Zalecane, jeśli available to true) Określa najpóźniejszą godzinę w ciągu dnia (według lokalnego czasu hotelu), do której uwzględniana jest 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.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / Availability 0..1 Availability Zastępuje dostępność stawki określoną wartością. Obsługujemy tylko ustawienie stawki na unavailable.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / Availability / @status 1 enum Jeśli wartość to status="unavailable", stawka jest traktowana jako niedostępna, niezależnie od tego, czy istnieje dla niej prawidłowa cena.
RateModifications / HotelRateModifications / ItineraryRateModification / LengthOfStay 0..1 LengthOfStay Określa limity długości pobytu, w ramach których można zastosować tę modyfikację ceny. Modyfikacja stawki nie jest stosowana, gdy długość pobytu jest poza minimalnym i maksymalnym limitem.
RateModifications / HotelRateModifications / ItineraryRateModification / LengthOfStay / @min 0..1 integer Minimalna liczba nocy, które muszą być uwzględnione w pobycie, aby można było zastosować modyfikację ceny. Jeśli nie określisz tego parametru, nie będzie wartości minimalnej.
RateModifications / HotelRateModifications / ItineraryRateModification / LengthOfStay / @max 0..1 integer Maksymalna liczba nocy pobytu, po której zastosowana zostanie modyfikacja ceny. Jeśli nie podasz żadnej opcji, nie będzie limitu.
RateModifications / HotelRateModifications / ItineraryRateModification / MinimumAmount 0..1 MinimumAmount Określa minimalną sumę dziennych cen pokoju (przy użyciu większej z wartości AmountBeforeTax lub AmountAfterTax), która musi zostać przekroczona, aby zastosować modyfikację ceny.
RateModifications / HotelRateModifications / ItineraryRateModification / MinimumAmount / @before_discount 1 integer Wartość, którą należy przekroczyć, aby zastosować modyfikację stawki.
RateModifications / HotelRateModifications / ItineraryRateModification / RatePlans 0..1 RatePlans Kontener z listą planów taryfowych, do których ma zastosowanie modyfikacja stawki. Jeśli nie podasz wartości <RatePlans>, modyfikacja stawki będzie dotyczyć wszystkich planów cenowych.
RateModifications / HotelRateModifications / ItineraryRateModification / RatePlans / RatePlan 1..n RatePlan Określa abonament. Plan cenowy jest określany przez kombinację pakietu, stawek i dostępności zdefiniowanych w wiadomościach Transaction (Property Data), OTA_HotelRateAmountNotifRQ i OTA_HotelAvailNotifRQ oraz identyfikowanych przez PackageID.
RateModifications / HotelRateModifications / ItineraryRateModification / RatePlans / RatePlan / @id 1 string Unikalny identyfikator planu cenowego. Ta wartość jest mapowana na wartość PackageID w <PackageData> w komunikacie transakcji (dane obiektu) oraz na atrybut RatePlanCode<StatusApplicationControl> w komunikatach <OTA_HotelRateAmountNotifRQ><OTA_HotelAvailNotifRQ>. Maksymalna dozwolona liczba znaków to 50.
RateModifications / HotelRateModifications / ItineraryRateModification / RoomTypes 0..1 RoomTypes Kontener z listą typów pokoi, do których ma zastosowanie modyfikacja ceny. Modyfikacja stawki jest stosowana do każdego określonego <RoomType>. Jeśli <RoomTypes> nie jest określony, modyfikacja stawki dotyczy wszystkich pokoi.
RateModifications / HotelRateModifications / ItineraryRateModification / RoomTypes / RoomType 1..n RoomType Określa typ pomieszczenia. Typ pokoju jest zdefiniowany w elemencie <RoomData> w wiadomości Transaction (Property Data) i jest do niego odwoływany za pomocą wartości <RoomID>. (Jego wartość <RoomID> jest też przywoływana przez atrybut InvTypeCode w wiadomościach OTA_HotelRateAmountNotifRQ).
RateModifications / HotelRateModifications / ItineraryRateModification / RoomTypes / RoomType / @id 1 string Unikalny identyfikator asortymentu (rodzaju pokoju). Ta wartość jest mapowana na <RoomID> w wiadomości Transaction (Property Data). Maksymalna dozwolona liczba znaków to 50.
RateModifications / HotelRateModifications / ItineraryRateModification / StayDates 0..1 StayDates Kontener zawierający co najmniej 1 zakres dat, który określa sposób stosowania modyfikacji stawki, np. w celu uwzględnienia cen sezonowych.
RateModifications / HotelRateModifications / ItineraryRateModification / StayDates / @application 1 enum

Opisuje, jak należy zastosować modyfikację stawki.

Prawidłowe wartości to:

  • all: stosuje modyfikację stawki do każdej nocy w planie podróży, jeśli wszystkie daty w planie podróży pokrywają się z datami pobytu.
  • any: stosuje modyfikację stawki do wszystkich nocy w planie podróży, jeśli jakakolwiek data w planie podróży pokrywa się z datą w zakresie dat pobytu.

Ten atrybut musi być zawsze określony.

RateModifications / HotelRateModifications / ItineraryRateModification / StayDates / DateRange 1..99 DateRange Zakres dat określający, kiedy ma być stosowana modyfikacja stawki.
RateModifications / HotelRateModifications / ItineraryRateModification / StayDates / DateRange / @start 0..1 Date Data rozpoczęcia zakresu dat (włącznie) w strefie czasowej usługi. Ta data musi być wcześniejsza niż data end lub taka sama jak ona. Jeśli zasada start nie jest określona, zakres dat jest w zasadzie nieograniczony pod względem daty rozpoczęcia.
RateModifications / HotelRateModifications / ItineraryRateModification / StayDates / DateRange / @end 0..1 Date Data zakończenia zakresu dat (włącznie) na podstawie strefy czasowej usługi. Musi to być data start lub późniejsza. Jeśli nie podasz wartości end, zakres dat będzie w praktyce nieograniczony pod względem daty zakończenia.
RateModifications / HotelRateModifications / ItineraryRateModification / StayDates / DateRange / @days_of_week 0..1 string

Dni tygodnia dozwolone w zakresie dat. Jeśli nie określisz dni, wszystkie dni w zakresie dat będą dozwolone. Każdy znak w ciągu określa dzień. Na przykład „MTWHF” oznacza, że w zakresie dat dozwolone są dni powszednie.

Prawidłowe znaki to:

  • M w przypadku poniedziałku
  • T – wtorek
  • W na środę
  • H w przypadku czwartku
  • F w piątek
  • S w sobotę
  • U w niedzielę

Dowolna kombinacja znaków jest prawidłowa.

RateModifications / HotelRateModifications / ItineraryRateModification / UserCountries 0..1 UserCountries Jeśli zostanie określona, modyfikacja stawki jest stosowana tylko wtedy, gdy użytkownik znajduje się w jednym z określonych krajów. Jeśli nie zostanie określona, modyfikacja stawki zostanie zastosowana niezależnie od lokalizacji użytkownika.
RateModifications / HotelRateModifications / ItineraryRateModification / UserCountries / @type 0..1 enum Typ specyfikacji UserCountries.

Prawidłowe wartości to include i exclude.

Jeśli parametr UserCountries type ma wartość include, modyfikacja stawki dotyczy użytkowników z wymienionych krajów.

Jeśli UserCountries type ma wartość exclude, modyfikacja stawki dotyczy użytkowników spoza wymienionych krajów.

Jeśli parametr UserCountries type nie jest skonfigurowany, jest traktowany jako include, a modyfikacja stawki ma zastosowanie do użytkowników z wymienionych krajów.

RateModifications / HotelRateModifications / ItineraryRateModification / UserCountries / Country 1..300 Country Określa kraj użytkownika, w którym można zmodyfikować stawkę.
RateModifications / HotelRateModifications / ItineraryRateModification / UserCountries / Country / @code 1 string Kod kraju CLDR, np. DE lub FR. Pamiętaj, że w przypadku niektórych krajów kod kraju CLDR nie jest taki sam jak dwuliterowy kod kraju ISO. Kody regionów CLDR nie są też obsługiwane.

Przykłady

Wiadomość podstawowa

Poniższy przykład przedstawia podstawowy komunikat RateModifications:

<?xml version="1.0" encoding="UTF-8"?>
<RateModifications partner="account_xyz"
                   id="123_abc"
                   timestamp="2023-05-22T16:20:00-04:00">
  <HotelRateModifications hotel_id="Property_1">
    <ItineraryRateModification id="1">
      <BookingDates>
         <DateRange start="2023-07-01" end="2023-07-31" days_of_week="MTWHF"/>
         <DateRange start="2023-09-01" end="2023-09-30"/>
      </BookingDates>
      <BookingWindow min="7" max="330"/>
      <CheckinDates>
         <DateRange start="2023-10-01" end="2023-10-31" days_of_week="FSU"/>
      </CheckinDates>
      <CheckoutDates>
         <DateRange start="2023-10-08" end="2023-11-07" days_of_week="FSU"/>
      </CheckoutDates>
      <Devices>
        <Device type="mobile"/>
        <Device type="tablet"/>
      </Devices>
      <LengthOfStay min="2" max="14"/>
      <RatePlans>
         <RatePlan id="234"/>
         <RatePlan id="567"/>
      </RatePlans>
      <RoomTypes>
         <RoomType id="123"/>
         <RoomType id="456"/>
      </RoomTypes>
      <UserCountries>
        <Country code="US"/>
        <Country code="GB"/>
      </UserCountries>
      <ModificationActions>
        <PriceAdjustment multiplier="1.2"/>
      </ModificationActions>
    </ItineraryRateModification>
  </HotelRateModifications>
</RateModifications>


Usuwanie jednej modyfikacji stawki

Poniższy przykład pokazuje, jak usunąć jedną modyfikację ceny w przypadku obiektu:

<?xml version="1.0" encoding="UTF-8"?>
<RateModifications partner="account_xyz"
                   id="123_abc"
                   timestamp="2023-05-22T16:20:00-04:00">
  <HotelRateModifications hotel_id="Property_1">
    <ItineraryRateModification id="1" action="delete"/>
  </HotelRateModifications>
</RateModifications>

Usuwanie wszystkich modyfikacji stawek

Poniższy przykład pokazuje, jak usunąć wszystkie modyfikacje stawek dla obiektu:

<?xml version="1.0" encoding="UTF-8"?>
<RateModifications partner="account_xyz"
                   id="123_abc"
                   timestamp="2023-05-22T16:20:00-04:00">
  <HotelRateModifications hotel_id="Property_1" action="overlay"/>
</RateModifications>


Nakładanie wszystkich modyfikacji stawek

Poniższy przykład pokazuje, jak zastąpić właściwość <HotelRateModifications> za pomocą co najmniej 1 nowej modyfikacji stawki. Gdy action="overlay", wszystkie zapisane modyfikacje stawek są usuwane przed zapisaniem modyfikacji stawek określonych w bieżącej wiadomości:

<?xml version="1.0" encoding="UTF-8"?>
<RateModifications partner="account_xyz"
                   id="123_abc"
                   timestamp="2023-05-22T16:20:00-04:00">
  <HotelRateModifications hotel_id="Property_1" action="overlay"/>
    <ItineraryRateModification id="1">
      <BookingDates>
         <DateRange start="2023-09-01" end="2023-09-30"/>
      </BookingDates>
      <ModificationActions>
        <PriceAdjustment multiplier="1.2"/>
      </ModificationActions>
      <RoomTypes>
         <RoomType id="123"/>
         <RoomType id="456"/>
      </RoomTypes>
      <RatePlans>
         <RatePlan id="234"/>
         <RatePlan id="567"/>
      </RatePlans>
    </ItineraryRateModification>
  </HotelRateModifications>
</RateModifications>

Wiele działań modyfikujących

Poniższy przykład pokazuje, jak wykonać kilka działań modyfikacji naraz:

<?xml version="1.0" encoding="UTF-8"?>
<RateModifications partner="account_xyz"
                   id="123_abc"
                   timestamp="2023-05-22T16:20:00-04:00">
  <HotelRateModifications hotel_id="Property_1">
    <ItineraryRateModification id="1">
      <BookingDates>
         <DateRange start="2023-01-01" end="2023-02-28"/>
      </BookingDates>
      <ModificationActions>
        <PriceAdjustment multiplier=".95"/>
        <Refundable available="true"
                    refundable_until_days="1"
                    refundable_until_time="12:00:00"/>
      </ModificationActions>
    </ItineraryRateModification>
  </HotelRateModifications>
</RateModifications>


Wyłączanie abonamentu w krajach użytkowników

Poniższy przykład pokazuje, jak ograniczyć plan cenowy tylko do użytkowników z Japonii (JP):

<?xml version="1.0" encoding="UTF-8"?>
<RateModifications partner="account_xyz"
                   id="123_abc"
                   timestamp="2023-05-22T16:20:00-04:00">
  <HotelRateModifications hotel_id="Property_1">
    <ItineraryRateModification id="1">
      <RatePlans>
         <RatePlan id="jp_only"/>
      </RatePlans>
      <UserCountries type="exclude">
        <Country code="JP"/>
      </UserCountries>
      <ModificationActions>
        <Availability status="unavailable"/>
      </ModificationActions>
    </ItineraryRateModification>
  </HotelRateModifications>
</RateModifications>


Odpowiedzi

Składnia

Wiadomość RateModificationsResponse ma tę składnię:

<?xml version="1.0" encoding="UTF-8"?>
<RateModificationsResponse timestamp="timestamp"
                    id="message_ID"
                    partner="partner_key">
  <!-- Either Success or Issues will be populated. -->
  <Success/>
  <Issues>
    <Issue code="issue_code" status="issue_type"><var>issue_description</var></Issue>
  </Issues>
</RateModificationsResponse>

Elementy i atrybuty

Wiadomość RateModificationsResponse ma te elementy i atrybuty:

Element / @Attribute Wystąpienia Typ Opis
RateModifications 1 Complex element Element główny wskazujący, czy otrzymana wiadomość z żądaniem RateModifications zakończyła się powodzeniem, czy wystąpiły problemy.
RateModificationsResponse / @timestamp 1 DateTime Data i godzina utworzenia tej wiadomości.
RateModificationsResponse / @id 1 string Unikalny identyfikator z powiązanej wiadomości RateModifications.
RateModificationsResponse / @partner 1 string Konto partnera dla tej wiadomości.
RateModificationsResponse / Success 0..1 Success Wskazuje, że komunikat RateModifications został przetworzony bez ostrzeżeń, błędów lub niepowodzeń.

W każdej wiadomości występuje wartość <Success> lub <Issues>.

RateModificationsResponse / Issues 0..1 Issues Kontener zawierający co najmniej 1 problem napotkany podczas przetwarzania wiadomości RateModifications.

W każdej wiadomości występuje element <Success> lub <Issues>.

RateModificationsResponse / Issues / Issue 1..n Issue Opis ostrzeżenia, błędu lub awarii napotkanych podczas przetwarzania wiadomości RateModifications. Szczegółowe informacje o tych problemach znajdziesz w artykule Komunikaty o błędach stanu pliku danych.
RateModificationsResponse / Issues / Issue / @code 1 integer Identyfikator problemu.
RateModificationsResponse / Issues / Issue / @status 1 enum

Rodzaj napotkanego problemu.

Prawidłowe wartości to warning, error i failure.

Przykłady

Sukces

Poniżej znajduje się odpowiedź na prawidłowo przetworzoną wiadomość RateModifications.

<?xml version="1.0" encoding="UTF-8"?>
<RateModificationsResponse timestamp="2023-05-22T16:20:00-04:00"
                    id="12345678"
                    partner="partner_key">
  <Success/>
</RateModificationsResponse>

Problemy

Poniżej znajduje się odpowiedź na komunikat RateModifications, który nie został przetworzony z powodu błędów.

<?xml version="1.0" encoding="UTF-8"?>
<RateModificationsResponse timestamp="2023-05-22T16:20:00-04:00"
                    id="12345678"
                    partner="partner_key">
  <Issues>
    <Issue code="1001" status="error">Example</Issue>
  </Issues>
</RateModificationsResponse>