Zmiany reguł

Przegląd

Ten interfejs API umożliwia definiowanie sposobów dynamicznego stosowania działań do stawki, gdy są spełnione warunki, takie jak dostosowywanie ceny czy włączanie zwrotu środków. W odróżnieniu od interfejsu API promocji, który może stosować tylko kwalifikujące się promocje z największymi rabatami, ten interfejs API stosuje wszystkie działania w przypadku spełnienia określonych warunków, w tym korekty cen, które mogą doprowadzić do ostatecznego wzrostu ceny.

Żądania

Składnia

Komunikat RateModifications ma taką 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 składa się z tych elementów i atrybutów:

Element / @Atrybut Wystąpienia Typ Opis
RateModifications 1 Complex element Element główny wiadomości o modyfikacji stawek.
RateModifications / @partner 1 string Konto partnera, z którego pochodzi ta wiadomość. Ta wartość ciągu znaków to wartość „Klucz partnera” podana na stronie Ustawienia konta w Hotel Center.

Uwaga: jeśli masz backend, który udostępnia pliki danych dla wielu kont, ta wartość musi odpowiadać wartości atrybutu ID określonej 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 cen w usłudze. Każda zmiana stawki dotyczy 1 usługi.

Uwaga: jeśli do tej samej stawki można zastosować wiele modyfikacji stawek, zostaną zastosowane wszystkie zmiany. Nie jest gwarantowane żadne konkretne zamówienie.

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

Jeśli action nie jest określony, zmiany w tym elemencie są dodawane lub aktualizowane w przypadku tego hotelu. Jeśli podasz action="overlay", wszystkie wcześniej zdefiniowane zmiany dla tego hotelu zostaną najpierw usunięte. Następnie zapisywane są tu określone tu modyfikacje. Jeśli używana jest właściwość action="overlay", a w tym elemencie nie określono żadnych modyfikacji, wszystkie zmiany dotyczące tego hotelu zostaną usunięte.

RateModifications / HotelRateModifications / ItineraryRateModification 0..200 ItineraryRateModification

Jedna zmiana stawki za obiekt.

Uwaga: debugowanie zmian stawek jest trudne i zalecamy oszczędne stosowanie tych zmian. 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 zmiany 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 wartość nie zostanie określona, a zmiana stawki z tą samą wartością id nie zostanie zapisana, zostanie zachowana zmiana stawki. W przeciwnym razie, jeśli nie podasz żadnej wartości i zostanie zapisana zmiana stawki z tą samą wartością id, obecna zmiana stawki zostanie zaktualizowana.

Jeśli została określona, wartość musi wynosić "delete". Jeśli podasz "delete", zmiana środków przedpłaconych z tą samą wartością id zostanie usunięta. Jeśli używasz właściwości "delete", nie umieszczaj w polu <ItineraryRateModification> żadnych elementów podrzędnych. Znak "delete" nie jest też dozwolony w połączeniu z właściwością <HotelRateModifications action="overlay"/>.

RateModifications / HotelRateModifications / ItineraryRateModification / BookingDates 0..1 BookingDates Kontener dla co najmniej 1 zakresu dat, który określa, kiedy nastąpi rezerwacja, aby zmiana stawki została zastosowana.
RateModifications / HotelRateModifications / ItineraryRateModification / BookingDates / DateRange 1..99 DateRange Zakres dat, w którym musi zostać dokonana rezerwacja, aby zmiana stawki mogła zostać zastosowana.
RateModifications / HotelRateModifications / ItineraryRateModification / BookingDates / DateRange / @start 0..1 Date Data rozpoczęcia (na podstawie strefy czasowej usługi) włącznie z datą rozpoczęcia zakresu dat. Ta data nie może być wcześniejsza niż data end. Jeśli nie określisz wartości start, zakres dat będzie w praktyce nieograniczony.
RateModifications / HotelRateModifications / ItineraryRateModification / BookingDates / DateRange / @end 0..1 Date Data końcowa z zakresu dat (na podstawie strefy czasowej usługi). Ta data musi być taka sama jak data start lub później. Jeśli nie określisz wartości end, zakres dat będzie nieograniczony, jeśli chodzi o datę zakończenia.
RateModifications / HotelRateModifications / ItineraryRateModification / BookingDates / DateRange / @days_of_week 0..1 string

Dni tygodnia, które są dozwolone w zakresie dat. Jeśli go nie podasz, dozwolone będą wszystkie dni w zakresie dat. Każdy znak w ciągu określa dzień. Na przykład ciąg „MTWHF” wskazuje, że w zakresie dat dozwolone są dni robocze.

Prawidłowe znaki to:

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

Obowiązuje każda kombinacja znaków.

RateModifications / HotelRateModifications / ItineraryRateModification / BookingWindow 0..1 BookingWindow Określa przedział czasu, 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 datą zameldowania.
RateModifications / HotelRateModifications / ItineraryRateModification / BookingWindow / @min 0..1 integer Minimalna liczba dni przed datą zameldowania, zanim zmiana stawki zostanie zastosowana. Jeśli go nie podasz, nie ma minimalnej wartości.
RateModifications / HotelRateModifications / ItineraryRateModification / BookingWindow / @max 0..1 integer Maksymalna liczba dni przed datą zameldowania, która może upłynąć, zanim zmiana stawki zostanie zastosowana. Jeśli nie podasz żadnej wartości, nie będzie maksymalnej wartości.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckinDates 0..1 CheckinDates Kontener na co najmniej 1 zakres dat, który określa, kiedy musi się odprawić, aby zmiana stawki została zastosowana.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckinDates / DateRange 1..99 DateRange Zakres dat, w którym musi się odprawić, zanim zmiana ceny zostanie zastosowana. 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 (na podstawie strefy czasowej usługi) włącznie z datą rozpoczęcia zakresu dat. Ta data nie może być wcześniejsza niż data end. Jeśli nie określisz wartości start, zakres dat będzie w praktyce nieograniczony.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckinDates / DateRange / @end 0..1 Date Data końcowa z zakresu dat (na podstawie strefy czasowej usługi). Ta data musi być taka sama jak data start lub później. Jeśli nie określisz wartości end, zakres dat będzie nieograniczony, jeśli chodzi o datę zakończenia.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckinDates / DateRange / @days_of_week 0..1 string

Dni tygodnia, które są dozwolone w zakresie dat. Jeśli go nie podasz, dozwolone będą wszystkie dni w zakresie dat. Każdy znak w ciągu określa dzień. Na przykład ciąg „MTWHF” wskazuje, że w zakresie dat dozwolone są dni robocze.

Prawidłowe znaki to:

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

Obowiązuje każda kombinacja znaków.

RateModifications / HotelRateModifications / ItineraryRateModification / CheckoutDates 0..1 CheckoutDates Kontener dla co najmniej jednego zakresu dat, który określa moment wymeldowania, aby możliwe było zastosowanie zmiany stawki.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckoutDates / DateRange 1..99 DateRange Zakres dat, w którym musi nastąpić wymeldowanie, zanim nastąpi zmiana stawki. 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 (na podstawie strefy czasowej usługi) włącznie z datą rozpoczęcia zakresu dat. Ta data nie może być wcześniejsza niż data end. Jeśli nie określisz wartości start, zakres dat będzie w praktyce nieograniczony.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckoutDates / DateRange / @end 0..1 Date Data końcowa z zakresu dat (na podstawie strefy czasowej usługi). Ta data musi być taka sama jak data start lub później. Jeśli nie określisz wartości end, zakres dat będzie nieograniczony, jeśli chodzi o datę zakończenia.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckoutDates / DateRange / @days_of_week 0..1 string

Dni tygodnia, które są dozwolone w zakresie dat. Jeśli go nie podasz, dozwolone będą wszystkie dni w zakresie dat. Każdy znak w ciągu określa dzień. Na przykład ciąg „MTWHF” wskazuje, że w zakresie dat dozwolone są dni robocze.

Prawidłowe znaki to:

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

Obowiązuje każda 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 określisz stawkę, zmiana stawki zostanie zastosowana tylko wtedy, gdy użytkownik pasuje do jednego z urządzeń na liście. Jeśli nie zostanie określona, nie ogranicza zastosowania modyfikacji stawki.
RateModifications / HotelRateModifications / ItineraryRateModification / Devices / Device 1..3 Device Określa jeden typ urządzenia użytkownika, które kwalifikuje się do zmiany stawki.
RateModifications / HotelRateModifications / ItineraryRateModification / Devices / Device / @type 1 enum Typ urządzenia. Wartością musi być desktop, tablet lub mobile.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions 1 ModificationActions

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

RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / PriceAdjustment 0..1 PriceAdjustment Modyfikuje stawkę, mnożąc wartość AmountBeforeTax i AmountAfterTax przez podany 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 stawkę, 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 definicji reguł dotyczących stawek. Uwaga:
  • Limit znaków w tym polu to 40 znaków.
  • Każda stawka może być powiązana tylko z jedną regułą dotyczącą ceny.
  • Jeśli identyfikator reguły dotyczącej ceny ma zastosowanie do wielu modyfikacji, do stawki zostanie 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, uznaje się, że się nie kwalifikuje.
W tym artykule znajdziesz informacje o różnych sposobach postępowania w przypadku cen prywatnych.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / Refundable 0..1 Refundable Zastępuje możliwość zwrotu stawki określoną wartość.

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

  • Ta zmiana powoduje całkowite zastąpienie ustawienia „Możliwość zwrotu środków” stawki kwalifikującej się do zwrotu, a nie tylko wypełnione pola.
  • Jeśli nie ustawiono wartości available lub refundable_until_days, stawka nie jest 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.
  • Zalecane jest 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 wartość 1 lub true, aby wskazać, czy stawka umożliwia pełny zwrot środków. W przeciwnym razie ustaw 0 lub false.
Transaction / PropertyDataSet / PackageData / Refundable / @refundable_until_days 0..1 integer (Wymagane, jeśli available to true) Określa, na ile dni przed zameldowaniem można poprosić o pełny zwrot środków. Wartość refundable_until_days musi być liczbą całkowitą z zakresu od 0 do 330 włącznie.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / Refundable / @refundable_until_time 0..1 Time (Zalecane, jeśli available to true) Określa ostatnią godzinę (czas lokalny w hotelu), w której ma być uwzględniana prośba o pełny zwrot środków. Możesz go połączyć z właściwością refundable_until_days, aby na przykład określić, że „Zwroty środków są dostępne do 16:00 2 dni przed datą zameldowania”. Jeśli refundable_until_time nie jest ustawiony, domyślną wartością jest północ.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / Availability 0..1 Availability Zastępuje dostępność stawki określoną wartością. Możesz ustawić stawkę tylko na unavailable.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / Availability / @status 1 enum Jeśli stawka status="unavailable" jest traktowana, tak jakby była niedostępna, niezależnie od tego, czy obowiązuje w niej prawidłowa cena.
RateModifications / HotelRateModifications / ItineraryRateModification / LengthOfStay 0..1 LengthOfStay Określa limity długości pobytu, w ramach których można zmienić stawkę. Zmiana stawki nie jest stosowana, gdy długość pobytu wykracza poza limity minimalnej i maksymalnej.
RateModifications / HotelRateModifications / ItineraryRateModification / LengthOfStay / @min 0..1 integer Minimalna liczba noclegów w trakcie pobytu, która obowiązuje w przypadku zmiany stawki. Jeśli ta wartość nie zostanie określona, nie ma minimalnej wartości.
RateModifications / HotelRateModifications / ItineraryRateModification / LengthOfStay / @max 0..1 integer Maksymalna liczba nocy w trakcie pobytu, która obowiązuje, gdy cena zostanie zmieniona. Jeśli nie podasz żadnej wartości, nie będzie maksymalnej wartości.
RateModifications / HotelRateModifications / ItineraryRateModification / MinimumAmount 0..1 MinimumAmount Określa minimalną sumę dziennych stawek za pokój (większą z wartości AmountBeforeTax lub AmountAfterTax), którą należy przekroczyć, aby zmiana stawki została zastosowana.
RateModifications / HotelRateModifications / ItineraryRateModification / MinimumAmount / @before_discount 1 integer Wartość, która musi zostać przekroczona, aby zmiana stawki została zastosowana.
RateModifications / HotelRateModifications / ItineraryRateModification / RatePlans 0..1 RatePlans Kontener listy planów stawek, których dotyczy zmiana stawek. Jeśli nie określisz wartości <RatePlans>, zmiana stawki zostanie zastosowana do wszystkich planów stawek.
RateModifications / HotelRateModifications / ItineraryRateModification / RatePlans / RatePlan 1..n RatePlan Określa plan stawek. Plan stawek jest definiowany przez połączenie pakietu, stawek i dostępności zgodnie z definicją w danych transakcji (danych obiektu), komunikatach OTA_HotelRateAmountNotifRQ i OTA_HotelAvailNotifRQ oraz określa identyfikator pakietu.
RateModifications / HotelRateModifications / ItineraryRateModification / RatePlans / RatePlan / @id 1 string Unikalny identyfikator abonamentu. Ta wartość jest mapowana na wartość PackageID w <PackageData> w komunikacie transakcji (dane usługi) i w atrybucie RatePlanCode w <StatusApplicationControl> zarówno w komunikatach <OTA_HotelRateAmountNotifRQ>, jak i <OTA_HotelAvailNotifRQ>. Maksymalna dozwolona liczba znaków to 50.
RateModifications / HotelRateModifications / ItineraryRateModification / RoomTypes 0..1 RoomTypes Kontener zawierający listę typów pokojów, których dotyczy zmiana stawki. Zmiana stawki jest stosowana do każdego podanego <RoomType>. Jeśli nie określisz wartości <RoomTypes>, zmiana stawki zostanie zastosowana do wszystkich pokoi.
RateModifications / HotelRateModifications / ItineraryRateModification / RoomTypes / RoomType 1..n RoomType Określa typ pomieszczenia. Typ pokoju jest zdefiniowany w elemencie <RoomData> w komunikacie Transakcja (dane usługi) i jest przywoływany 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 pomieszczenia). 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 na co najmniej jeden zakres dat, który określa sposób zmiany stawki, np. aby uwzględnić ceny sezonowe.
RateModifications / HotelRateModifications / ItineraryRateModification / StayDates / @application 1 enum

Opisuje sposób zmiany stawki.

Prawidłowe wartości to:

  • all: stosuje zmianę stawki do każdej nocy w planie podróży, jeśli wszystkie daty w planie podróży pokrywają się z datami pobytu.
  • any: stosuje zmianę stawki do wszystkich nocy w planie podróży, jeśli dowolna 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, w którym ma zostać zastosowana zmiana stawki.
RateModifications / HotelRateModifications / ItineraryRateModification / StayDates / DateRange / @start 0..1 Date Data rozpoczęcia (na podstawie strefy czasowej usługi) włącznie z datą rozpoczęcia zakresu dat. Ta data nie może być wcześniejsza niż data end. Jeśli nie określisz wartości start, zakres dat będzie w praktyce nieograniczony.
RateModifications / HotelRateModifications / ItineraryRateModification / StayDates / DateRange / @end 0..1 Date Data końcowa z zakresu dat (na podstawie strefy czasowej usługi). Ta data musi być taka sama jak data start lub później. Jeśli nie określisz wartości end, zakres dat będzie nieograniczony, jeśli chodzi o datę zakończenia.
RateModifications / HotelRateModifications / ItineraryRateModification / StayDates / DateRange / @days_of_week 0..1 string

Dni tygodnia, które są dozwolone w zakresie dat. Jeśli go nie podasz, dozwolone będą wszystkie dni w zakresie dat. Każdy znak w ciągu określa dzień. Na przykład ciąg „MTWHF” wskazuje, że w zakresie dat dozwolone są dni robocze.

Prawidłowe znaki to:

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

Obowiązuje każda kombinacja znaków.

RateModifications / HotelRateModifications / ItineraryRateModification / UserCountries 0..1 UserCountries Jeśli określisz stawkę, zmiana zostanie zastosowana tylko wtedy, gdy użytkownik znajduje się w jednym z podanych krajów. Jeśli jej nie określisz, 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 zasada type krajów użytkowników ma wartość include, zmiana stawki dotyczy użytkowników z wymienionych krajów.

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

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

RateModifications / HotelRateModifications / ItineraryRateModification / UserCountries / Country 1..300 Country Określa kraj dozwolony dla użytkownika w przypadku zmiany stawki.
RateModifications / HotelRateModifications / ItineraryRateModification / UserCountries / Country / @code 1 string Kod kraju CLDR, na przykład DE lub FR. Pamiętaj, że w niektórych krajach kod kraju CLDR różni się od 2-literowego kodu ISO kraju. Kody regionów CLDR nie są też obsługiwane.

Przykłady

Podstawowa wiadomość

Poniższy przykład pokazuje 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

Ten przykład pokazuje, jak usunąć jedną zmianę 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 modyfikacje stawek

Ten przykład pokazuje, jak usunąć wszystkie zmiany stawek w usłudze:

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


Wszystkie zmiany częstotliwości nakładania

Z przykładu poniżej dowiesz się, jak dodać atrybut <HotelRateModifications> do właściwości z co najmniej 1 nową modyfikacją stawki. W przypadku wartości action="overlay" wszystkie modyfikacje stawek zapisane przed zapisaniem zmian określonych w bieżącej wiadomości są usuwane:

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

Poniższy przykład pokazuje, jak wykonywać wiele działań modyfikujących jednocześnie:

<?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 dla krajów użytkowników

Ten przykład pokazuje, jak ograniczyć plan stawek tylko do użytkowników z języka japońskiego (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 ma taką 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 składa się z tych elementów i atrybutów:

Element / @Atrybut Wystąpienia Typ Opis
RateModifications 1 Complex element Element główny wskazujący powodzenie lub problemy związane z otrzymaną wiadomością z żądaniem RateModifications.
RateModificationsResponse / @timestamp 1 DateTime Data i godzina utworzenia tej wiadomości.
RateModificationsResponse / @id 1 string Unikalny identyfikator powiązanej wiadomości RateModifications.
RateModificationsResponse / @partner 1 string Konto partnera, z którego pochodzi ta wiadomość.
RateModificationsResponse / Success 0..1 Success Wskazuje, że wiadomość RateModifications została przetworzona bez ostrzeżeń, błędów i błędów.

Każda wiadomość zawiera element <Success> lub <Issues>.

RateModificationsResponse / Issues 0..1 Issues Kontener rozwiązania co najmniej jednego problemu, który wystąpił podczas przetwarzania wiadomości RateModifications.

Każda wiadomość zawiera element <Success> lub <Issues>.

RateModificationsResponse / Issues / Issue 1..n Issue Opis ostrzeżenia, błędu lub błędu 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

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>