Zmiany reguł

Przegląd

Ten interfejs API umożliwia definiowanie sposobów dynamicznego stosowania działań do stawki za każdym razem, gdy są spełnione warunki, np. dostosowania ceny lub włączenia zwrotu środków. W odróżnieniu od interfejsu Promotions API, który może stosować tylko kwalifikujące się promocje z największymi rabatami, ten interfejs API stosuje wszystkie działania po spełnieniu określonych warunków, w tym dostosowania cen, które mogą doprowadzić do ostatecznego podniesienia ceny końcowej.

Prośby

Składnia

Komunikat RateModifications używa tej 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 ma te elementy i atrybuty:

Element / @Atrybut Wystąpienia Typ Opis
RateModifications 1 Complex element Element główny wiadomości o zmianie stawki.
RateModifications / @partner 1 string Konto partnera, do którego należy ta wiadomość. Wartość ciągu znaków to wartość „Klucz partnera” podana na stronie Ustawienia konta w Hotel Center.

Uwaga: jeśli masz backend, który dostarcza pliki danych dla wielu kont, ta wartość musi być zgodna z wartością atrybutu ID określoną w elemencie <RequestorID> komunikatów <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 usłudze. Każda zmiana stawki dotyczy 1 usługi.

Uwaga: jeśli do tej samej stawki można zastosować wiele zmian stawek, zostaną one zastosowane wszystkie zmiany. Nie ma gwarancji konkretnego zamówienia.

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

Jeśli action nie jest określony, modyfikacje tego elementu zostaną dodane lub zaktualizowane dla tego hotelu. Jeśli podasz action="overlay", wszystkie wcześniej zdefiniowane zmiany dotyczące tego hotelu zostaną najpierw usunięte. Następnie zapisujemy zmiany wprowadzone w tym miejscu. Jeśli używana jest właściwość action="overlay", a w tym elemencie nie określono żadnych modyfikacji, wszystkie modyfikacje tego hotelu zostaną usunięte.

RateModifications / HotelRateModifications / ItineraryRateModification 0..200 ItineraryRateModification

Pojedyncza zmiana ceny miejsca zakwaterowania.

Uwaga: modyfikacje stawek są trudne do debugowania i nie zalecamy korzystania z nich z umiarem. Jeśli potrzebujesz więcej niż 200 zmian stawek, skontaktuj się z technicznym menedżerem konta (TAM).

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) oraz . (kropka).
RateModifications / HotelRateModifications / ItineraryRateModification / @action 0..1 enum

Jeśli jej nie określisz, a zmiana stawki z takim samym atrybutem id nie będzie przechowywana, zmiana ta zostanie zapisana. W przeciwnym razie, jeśli nie podasz żadnej, a zmiana ceny z takim samym atrybutem id będzie przechowywana, obecna zmiana ceny zostanie zaktualizowana.

Jeśli została określona, wartością musi być "delete". Jeśli określono "delete", zmiana ceny zapisanej z takim samym atrybutem id zostanie usunięta. Jeśli używasz "delete", nie dodawaj żadnych elementów podrzędnych <ItineraryRateModification>. Ponadto w połączeniu z właściwością <HotelRateModifications action="overlay"/> nie można używać atrybutu "delete".

RateModifications / HotelRateModifications / ItineraryRateModification / BookingDates 0..1 BookingDates Aby można było zastosować modyfikację ceny, wymagany jest kontener na co najmniej 1 zakres dat, który określa, kiedy należy dokonać rezerwacji.
RateModifications / HotelRateModifications / ItineraryRateModification / BookingDates / DateRange 1..99 DateRange Aby można było zastosować zmianę ceny, należy określić zakres dat, w którym należy dokonać rezerwacji.
RateModifications / HotelRateModifications / ItineraryRateModification / BookingDates / DateRange / @start 0..1 Date Data rozpoczęcia (na podstawie strefy czasowej usługi) włącznie z zakresem dat. Ta data nie może być wcześniejsza niż data end. Jeśli nie podasz start, zakres dat będzie w zasadzie nieograniczony pod względem daty rozpoczęcia.
RateModifications / HotelRateModifications / ItineraryRateModification / BookingDates / DateRange / @end 0..1 Date Data zakończenia (na podstawie strefy czasowej usługi) włącznie z zakresem dat. Ta data musi być taka sama jak data start lub późniejsza. Jeśli nie podasz 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, które są dozwolone w zakresie dat. Jeśli nie podasz żadnej wartości, w zakresie dat dozwolone będą wszystkie dni. Każdy znak w ciągu znaków określa dzień. Na przykład „MTWHF” określa, że w zakresie dat dozwolone są dni powszednie.

Prawidłowe znaki:

  • M na poniedziałek
  • T na wtorek
  • W na środę
  • H na czwartek
  • F na piątek
  • S na sobotę
  • U na niedzielę

Dopuszczalna jest dowolna kombinacja znaków.

RateModifications / HotelRateModifications / ItineraryRateModification / BookingWindow 0..1 BookingWindow Określa czas, w którym należy dokonać rezerwacji, względem daty zameldowania (na podstawie strefy czasowej obiektu). Na przykład okres rezerwacji można ustawić na co najmniej 7 dni, ale nie więcej niż 180 dni przed zameldowaniem.
RateModifications / HotelRateModifications / ItineraryRateModification / BookingWindow / @min 0..1 integer Aby można było zmienić cenę, wymagana jest minimalna liczba dni przed zameldowaniem w przypadku rezerwacji. Jeśli nie podasz żadnej wartości, nie będzie żadnej wartości minimalnej.
RateModifications / HotelRateModifications / ItineraryRateModification / BookingWindow / @max 0..1 integer Aby można było zmienić cenę, maksymalna liczba dni przed zameldowaniem musi nastąpić w przypadku rezerwacji. Jeśli nie podasz żadnej wartości, nie będzie żadnej wartości maksymalnej.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckinDates 0..1 CheckinDates Kontener obejmujący co najmniej 1 zakres dat, który określa, kiedy należy się zameldować, aby można było zastosować zmianę stawki.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckinDates / DateRange 1..99 DateRange Aby można było zastosować zmianę ceny, zakres dat określający, kiedy należy się zameldować. Ten element nie jest wymagany, jeśli usuwasz co najmniej jedną zmianę stawki.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckinDates / DateRange / @start 0..1 Date Data rozpoczęcia (na podstawie strefy czasowej usługi) włącznie z zakresem dat. Ta data nie może być wcześniejsza niż data end. Jeśli nie podasz start, zakres dat będzie w zasadzie nieograniczony pod względem daty rozpoczęcia.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckinDates / DateRange / @end 0..1 Date Data zakończenia (na podstawie strefy czasowej usługi) włącznie z zakresem dat. Ta data musi być taka sama jak data start lub późniejsza. Jeśli nie podasz 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, które są dozwolone w zakresie dat. Jeśli nie podasz żadnej wartości, w zakresie dat dozwolone będą wszystkie dni. Każdy znak w ciągu znaków określa dzień. Na przykład „MTWHF” określa, że w zakresie dat dozwolone są dni powszednie.

Prawidłowe znaki:

  • M na poniedziałek
  • T na wtorek
  • W na środę
  • H na czwartek
  • F na piątek
  • S na sobotę
  • U na niedzielę

Dopuszczalna jest dowolna kombinacja znaków.

RateModifications / HotelRateModifications / ItineraryRateModification / CheckoutDates 0..1 CheckoutDates Kontener obejmujący co najmniej jeden zakres dat, który określa, kiedy należy wymeldować się, aby można było zastosować zmianę stawki.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckoutDates / DateRange 1..99 DateRange Zakres dat określający, kiedy należy wymeldować się, aby została zastosowana zmiana ceny. Ten element nie jest wymagany, jeśli usuwasz co najmniej jedną zmianę stawki.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckoutDates / DateRange / @start 0..1 Date Data rozpoczęcia (na podstawie strefy czasowej usługi) włącznie z zakresem dat. Ta data nie może być wcześniejsza niż data end. Jeśli nie podasz start, zakres dat będzie w zasadzie nieograniczony pod względem daty rozpoczęcia.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckoutDates / DateRange / @end 0..1 Date Data zakończenia (na podstawie strefy czasowej usługi) włącznie z zakresem dat. Ta data musi być taka sama jak data start lub późniejsza. Jeśli nie podasz 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, które są dozwolone w zakresie dat. Jeśli nie podasz żadnej wartości, w zakresie dat dozwolone będą wszystkie dni. Każdy znak w ciągu znaków określa dzień. Na przykład „MTWHF” określa, że w zakresie dat dozwolone są dni powszednie.

Prawidłowe znaki:

  • M na poniedziałek
  • T na wtorek
  • W na środę
  • H na czwartek
  • F na piątek
  • S na sobotę
  • U na niedzielę

Dopuszczalna jest dowolna kombinacja znaków.

RateModifications / HotelRateModifications / ItineraryRateModification / Devices 0..1 Devices Kontener do wyświetlania listy urządzeń użytkowników, które kwalifikują się do zmiany stawki. Jeśli określisz, zmiana stawki zostanie zastosowana tylko wtedy, gdy użytkownik pasuje do jednego z wymienionych urządzeń. Jeśli nie podasz żadnej wartości, nie będzie to ograniczało zastosowania modyfikacji stawki.
RateModifications / HotelRateModifications / ItineraryRateModification / Devices / Device 1..3 Device Określa jeden typ urządzeń użytkownika, które kwalifikują się do zmiany 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 stosowane do stawki po spełnieniu wszystkich określonych warunków.

RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / PriceAdjustment 0..1 PriceAdjustment Modyfikuje stawkę, mnożąc AmountBeforeTax i AmountAfterTax przez określony mnożnik
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / PriceAdjustment / @multiplier 1 float Wartości AmountBeforeTax i AmountAfterTax są mnożone przez tę wartość.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / RateRule 0..1 RateRule Modyfikuje stawkę, stosując do niej określony identyfikator reguły dotyczącej ceny.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / RateRule / @id 1 string Ten identyfikator pasuje do stawki do definicji w pliku definicji reguły stawki. Uwaga:
  • Limit znaków w tym polu to 40 znaków.
  • Każda cena może być powiązana tylko z jedną regułą dotyczącą ceny.
  • Jeśli identyfikator reguły stawki jest objęty wieloma zmianami, do stawki jest przypisany najmniejszy leksykograficznie identyfikator tej reguły.
  • Jeśli ten identyfikator nie pasuje do reguły dotyczącej ceny w pliku definicji reguły dotyczącej ceny, nie spełnia warunków.
W tym artykule znajdziesz informacje o różnych metodach stosowania stawek prywatnych.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / Refundable 0..1 Refundable Zastępuje możliwość zwrotu środków dla stawki określoną wartością.

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

  • To działanie związane z modyfikacją całkowicie zmienia ustawienie kwalifikującej się stawki „Zwrot środków”, a nie tylko wypełnione pola.
  • Jeśli wartość available lub refundable_until_days nie jest ustawiona, stawka nie będzie wyświetlana jako podlegająca zwrotowi.
  • Jeśli available ma wartość 0 lub false, pozostałe atrybuty są ignorowane. Stawka nie jest wyświetlana jako podlegająca zwrotowi, nawet jeśli ustawiono co najmniej jeden z pozostałych atrybutów.
  • Zalecamy ustawienie refundable_until_time. Jeśli nie jest skonfigurowane, używana jest najwcześniejsza godzina (północ).
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / Refundable / @available 1 boolean (Wymagane) Ustaw jako 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 to true) Określa liczbę dni przed zameldowaniem, na które 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, do ostatniej godziny (według lokalnego czasu hotelu) prośba o pełny zwrot środków jest uwzględniana. Możesz go połączyć z polem refundable_until_days, aby na przykład określić, że „Zwroty środków są dostępne do 16:00 na 2 dni przed datą zameldowania”. Jeśli zasada refundable_until_time nie jest ustawiona, domyślnie przyjmuje się północ.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / Availability 0..1 Availability Zastępuje dostępność stawki określoną wartością. Można ustawić tylko stawkę na unavailable.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / Availability / @status 1 enum Jeśli wartość to status="unavailable", stawka jest traktowana tak, jakby była niedostępna, niezależnie od tego, czy istnieje 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ę zmianę stawki. Zmiana stawki nie jest stosowana, gdy długość pobytu przekracza limit minimalny i maksymalny.
RateModifications / HotelRateModifications / ItineraryRateModification / LengthOfStay / @min 0..1 integer Minimalna dozwolona liczba nocy w hotelu po zmianie ceny. Jeśli nie podasz żadnej wartości, nie będzie minimalna.
RateModifications / HotelRateModifications / ItineraryRateModification / LengthOfStay / @max 0..1 integer Maksymalna dozwolona liczba nocy w hotelu po zmianie ceny. Jeśli nie podasz żadnej wartości, nie będzie żadnej wartości maksymalnej.
RateModifications / HotelRateModifications / ItineraryRateModification / MinimumAmount 0..1 MinimumAmount Określa minimalną sumę dziennych stawek za pokój (większą wartość z AmountBeforeTax lub AmountAfterTax), która musi zostać przekroczona, aby została zastosowana zmiana ceny.
RateModifications / HotelRateModifications / ItineraryRateModification / MinimumAmount / @before_discount 1 integer Wartość, która musi zostać przekroczona, aby została zastosowana zmiana stawki.
RateModifications / HotelRateModifications / ItineraryRateModification / RatePlans 0..1 RatePlans Kontener listy planów stawek, do których ma zastosowanie zmiana stawki. Jeśli nie podasz <RatePlans>, zmiana stawki będzie obowiązywać w przypadku wszystkich abonamentów.
RateModifications / HotelRateModifications / ItineraryRateModification / RatePlans / RatePlan 1..n RatePlan Określa plan stawek. Plan taryfowy zależy od kombinacji pakietu, stawek i dostępności, zgodnie z definicją podaną w komunikatach dotyczących transakcji (dane obiektu), OTA_HotelRateAmountNotifRQ i OTA_HotelAvailNotifRQ oraz zgodnie z identyfikatorem PackageID.
RateModifications / HotelRateModifications / ItineraryRateModification / RatePlans / RatePlan / @id 1 string Unikalny identyfikator planu stawek. Ta wartość jest mapowana na wartość PackageID w elemencie <PackageData> w komunikacie transakcji (dane usługi) i w atrybucie RatePlanCode w komunikacie <StatusApplicationControl> zarówno w wiadomościach <OTA_HotelRateAmountNotifRQ>, jak i <OTA_HotelAvailNotifRQ>. Maksymalna dozwolona liczba znaków to 50.
RateModifications / HotelRateModifications / ItineraryRateModification / RoomTypes 0..1 RoomTypes Kontener listy rodzajów pokojów, do których obowiązuje zmiana stawki. Modyfikacja stawki jest stosowana do wszystkich podanych elementów <RoomType>. Jeśli nie podasz <RoomTypes>, zmiana ceny zostanie zastosowana do wszystkich sal.
RateModifications / HotelRateModifications / ItineraryRateModification / RoomTypes / RoomType 1..n RoomType Określa typ pokoju. Rodzaj pokoju jest zdefiniowany w elemencie <RoomData> w komunikacie transakcji (dane usługi) i odwoła się do niego za pomocą wartości <RoomID>. (Do jej wartości <RoomID> odwołuje się też atrybut InvTypeCode w komunikatach OTA_HotelRateAmountNotifRQ).
RateModifications / HotelRateModifications / ItineraryRateModification / RoomTypes / RoomType / @id 1 string Unikalny identyfikator zasobów reklamowych (typ sali). Ta wartość jest mapowana na <RoomID> w komunikacie transakcji (dane usługi). Maksymalna dozwolona liczba znaków to 50.
RateModifications / HotelRateModifications / ItineraryRateModification / StayDates 0..1 StayDates Kontener dla co najmniej jednego zakresu dat, który określa sposób zmiany stawki, np. uwzględniający ceny sezonowe.
RateModifications / HotelRateModifications / ItineraryRateModification / StayDates / @application 1 enum

Opisuje sposób zmiany stawki.

Prawidłowe wartości to:

  • all: stosuje zmianę ceny do każdej nocy w planie podróży, jeśli wszystkie daty w planie podróży pokrywają się z datami pobytu.
  • any: stosuje zmianę ceny do wszystkich nocy w planie podróży, jeśli którakolwiek data w planie podróży pokrywa się z datą z zakresu dat pobytu.

Ten atrybut musi być zawsze określony.

RateModifications / HotelRateModifications / ItineraryRateModification / StayDates / DateRange 1..99 DateRange Zakres dat określający daty, kiedy ma zostać zastosowana zmiana ceny.
RateModifications / HotelRateModifications / ItineraryRateModification / StayDates / DateRange / @start 0..1 Date Data rozpoczęcia (na podstawie strefy czasowej usługi) włącznie z zakresem dat. Ta data nie może być wcześniejsza niż data end. Jeśli nie podasz start, zakres dat będzie w zasadzie nieograniczony pod względem daty rozpoczęcia.
RateModifications / HotelRateModifications / ItineraryRateModification / StayDates / DateRange / @end 0..1 Date Data zakończenia (na podstawie strefy czasowej usługi) włącznie z zakresem dat. Ta data musi być taka sama jak data start lub późniejsza. Jeśli nie podasz 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, które są dozwolone w zakresie dat. Jeśli nie podasz żadnej wartości, w zakresie dat dozwolone będą wszystkie dni. Każdy znak w ciągu znaków określa dzień. Na przykład „MTWHF” określa, że w zakresie dat dozwolone są dni powszednie.

Prawidłowe znaki:

  • M na poniedziałek
  • T na wtorek
  • W na środę
  • H na czwartek
  • F na piątek
  • S na sobotę
  • U na niedzielę

Dopuszczalna jest dowolna kombinacja znaków.

RateModifications / HotelRateModifications / ItineraryRateModification / UserCountries 0..1 UserCountries Jeśli określisz, zmiana stawki zostanie zastosowana tylko w przypadku użytkowników, którzy znajdują się w jednym z wymienionych krajów. Jeśli nie podasz żadnej wartości, zmiana stawki zostanie zastosowana niezależnie od lokalizacji użytkownika.
RateModifications / HotelRateModifications / ItineraryRateModification / UserCountries / @type 0..1 enum Typ specyfikacji krajów użytkowników.

Prawidłowe wartości to include i exclude.

Jeśli type w polu UserKraje ma wartość include, zmiana stawki dotyczy użytkowników z wymienionych krajów.

Jeśli wartość UserKraje type to exclude, zmiana stawki dotyczy użytkowników spoza wymienionych krajów.

Jeśli zasada type użytkowników nie jest skonfigurowana, jest traktowana jako include, a zmiana stawki obowiązuje w przypadku użytkowników z wymienionych krajów.

RateModifications / HotelRateModifications / ItineraryRateModification / UserCountries / Country 1..300 Country Określa dozwolony kraj użytkownika, w którym można modyfikować stawkę.
RateModifications / HotelRateModifications / ItineraryRateModification / UserCountries / Country / @code 1 string Kod kraju CLDR, np. DE lub FR. Pamiętaj, że w niektórych krajach kod kraju CLDR różni się od dwuliterowego kodu ISO kraju. Ponadto kody regionów CLDR nie są obsługiwane.

Przykłady

Podstawowa wiadomość

Ten przykład zawiera 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>


Usuń jedną zmianę stawki

Z przykładu poniżej dowiesz się, jak usunąć jedną modyfikację stawki w przypadku usługi:

<?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>

Usuń wszystkie zmiany stawek

Z przykładu poniżej dowiesz się, jak usunąć wszystkie zmiany stawek w przypadku danej usługi:

<?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 zmian stawki

Z przykładu poniżej dowiesz się, jak dodać właściwość <HotelRateModifications> w przypadku usługi z co najmniej jedną nową zmianą stawki. Jeśli wybierzesz action="overlay", wszystkie zmiany stawek zapisanych 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ń związanych z modyfikacją

Ten przykład pokazuje, jak jednocześnie wykonywać wiele działań związanych z modyfikacją:

<?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 według krajów użytkowników

Ten przykład pokazuje, jak ograniczyć abonament tylko do użytkowników w języku japońskim (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

Komunikat RateModificationsResponse używa następującej 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

Komunikat RateModificationsResponse ma te elementy i atrybuty:

Element / @Atrybut Wystąpienia Typ Opis
RateModifications 1 Complex element Element główny wskazujący powodzenie lub problemy dotyczące odebranej wiadomości z żądaniem RateModifications.
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ń i błędów.

W każdej wiadomości znajduje się <Success> lub <Issues>.

RateModificationsResponse / Issues 0..1 Issues Kontener dla co najmniej 1 problemu, który wystąpił podczas przetwarzania komunikatu RateModifications.

W każdej wiadomości znajduje się <Success> lub <Issues>.

RateModificationsResponse / Issues / Issue 1..n Issue Opis ostrzeżenia, błędu lub niepowodzenia podczas przetwarzania komunikatu RateModifications. Szczegółowe informacje na temat tych problemów znajdziesz w sekcji Komunikaty o błędach związanych ze stanem pliku danych.
RateModificationsResponse / Issues / Issue / @code 1 integer Identyfikator problemu.
RateModificationsResponse / Issues / Issue / @status 1 enum

Typ napotkanego problemu.

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

Przykłady

Gotowe

Poniżej znajdziesz odpowiedź na pomyślnie 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 znajdziesz 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>