RateModifications

Przegląd

Ten interfejs API umożliwia definiowanie sposobów dynamicznego stosowania działań do ceny, gdy zostaną spełnione określone warunki, np. dostosowanie ceny lub włączenie możliwości zwrotu środków. W przeciwieństwie do interfejsu 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 / @Atrybut Wystąpienia Typ Opis
RateModifications 1 Complex element Element główny wiadomości o modyfikacjach stawek.
RateModifications / @partner 1 string Konto partnera, do którego należy ta wiadomość. Ta wartość ciągu znaków to wartość „Klucz partnera” podana na stronie Ustawienia konta w Hotel Center.

Uwaga: jeśli masz backend, który udostępnia pliki danych dla wielu kont, ta wartość musi być zgodna z wartością atrybutu 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 – (łącznik).
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 gwarantujemy żadnej konkretnej kolejności.

RateModifications / HotelRateModifications / @hotel_id 1 string Unikalny identyfikator usługi. Ta wartość musi być zgodna z identyfikatorem hotelu określonym za pomocą elementu <id> w elemencie <listing> w pliku danych z listą hoteli. Identyfikator hotelu jest też podany w Hotel Center.
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), - (łącznik) i . (kropka).
RateModifications / HotelRateModifications / ItineraryRateModification / @action 0..1 enum

Jeśli nie jest określona i nie jest przechowywana modyfikacja stawki z tym samym id, ta modyfikacja stawki jest przechowywana. W przeciwnym razie, jeśli nie zostanie określona i zostanie zapisana modyfikacja stawki z tym samym 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 parametrem id zostanie usunięta. Jeśli używasz elementu "delete", nie umieszczaj w nim żadnych elementów podrzędnych.<ItineraryRateModification> Ponadto nie zezwalamy na używanie "delete" w połączeniu z <HotelRateModifications action="overlay"/>.

RateModifications / HotelRateModifications / ItineraryRateModification / BookingDates 0..1 BookingDates Kontener zawierający co najmniej jeden zakres dat określający, kiedy musi nastąpić rezerwacja, aby 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łącznie) w strefie czasowej usługi. Musi ona przypadać w dniu start lub później. Jeśli nie podasz wartości end, zakres dat będzie w zasadzie 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 przypadku piątku
  • S w sobotę
  • U w niedzielę

Dopuszczalna jest dowolna kombinacja znaków.

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, który określa, 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ę stawki.
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łącznie) w strefie czasowej usługi. Musi ona przypadać w dniu start lub później. Jeśli nie podasz wartości end, zakres dat będzie w zasadzie 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 przypadku piątku
  • S w sobotę
  • U w niedzielę

Dopuszczalna jest dowolna kombinacja znaków.

RateModifications / HotelRateModifications / ItineraryRateModification / CheckoutDates 0..1 CheckoutDates Kontener zawierający co najmniej jeden zakres dat określający, 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ę stawki.
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łącznie) w strefie czasowej usługi. Musi ona przypadać w dniu start lub później. Jeśli nie podasz wartości end, zakres dat będzie w zasadzie 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 przypadku piątku
  • S w sobotę
  • U w niedzielę

Dopuszczalna jest dowolna kombinacja znaków.

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 są 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ł stawek, jest uznawany za niekwalifikujący się.
Informacje o różnych wersjach interfejsu stawek 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 jest wyświetlana jako podlegająca zwrotowi.
  • Jeśli wartość atrybutu available to 0 lub false, pozostałe atrybuty są ignorowane. Stawka nie będzie wyświetlana jako podlegająca zwrotowi, nawet jeśli ustawiony jest jeden lub oba pozostałe atrybuty.
  • 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 to 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 noclegów, która musi być uwzględniona 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 noclegów, w przypadku których można zastosować modyfikację 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 elemencie <PackageData> w komunikacie transakcji (dane obiektu) oraz w atrybucie RatePlanCode w elemencie <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 nie podasz wartości <RoomTypes>, modyfikacja stawki będzie dotyczyć wszystkich pokoi.
RateModifications / HotelRateModifications / ItineraryRateModification / RoomTypes / RoomType 1..n RoomType Określa typ pokoju. Typ pokoju jest zdefiniowany w elemencie <RoomData> w wiadomości Transakcja (dane o obiekcie) i jest do niego odwoływany za pomocą wartości <RoomID>. (Jego wartość <RoomID> jest też używana w atrybucie 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 na 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) w strefie czasowej usługi. Musi to być data start lub późniejsza. Jeśli nie podasz wartości end, zakres dat będzie w zasadzie 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 przypadku piątku
  • S w sobotę
  • U w niedzielę

Dopuszczalna jest dowolna kombinacja znaków.

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 określisz tu żadnej wartości, modyfikacja stawki będzie stosowana 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 zastosować modyfikację stawki.
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 2-literowy kod kraju ISO. Kody regionów CLDR również nie są obsługiwane.

Przykłady

Podstawowa wiadomość

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

Przykład poniżej 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 / @Atrybut Wystąpienia Typ Opis
RateModifications 1 Complex element Element główny wskazujący, czy otrzymana wiadomość z żądaniem RateModifications została przetworzona prawidłowo, 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, do którego należy ta wiadomość.
RateModificationsResponse / Success 0..1 Success Wskazuje, że komunikat RateModifications został przetworzony bez ostrzeżeń, błędów ani awarii.

W każdej wiadomości występuje element <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 znajdziesz 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>