Zmiany reguł

Omówienie

Ten interfejs API umożliwia definiowanie sposobów dynamicznego stosowania działań do stawki za każdym razem, są spełnione warunki, takie jak dostosowanie ceny czy włączenie zwrotu środków. W przeciwieństwie do interfejsu Promotions API, który może być stosowany tylko kwalifikujące się promocje z największymi rabatami, ten interfejs API stosuje wszystkie działania gdy zostaną spełnione określone warunki, w tym dostosowania cen, które mogą ostatecznie podniesienie ostatecznej 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 zawiera te elementy oraz atrybuty:

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 parametr „Klucz partnera” wartość podana na Strona Ustawienia konta w Hotel Center.

Uwaga: jeśli masz backend, który dostarcza pliki danych dla dla wielu kont, ta wartość musi odpowiadać wartości w kolumnie ID wartość atrybutu określona w tagu <RequestorID> element <OTA_HotelRateAmountNotifRQ> i <OTA_HotelAvailNotifRQ> wiadomości dotyczących tego samego koncie.

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 cen w usłudze. Obowiązuje każda zmiana stawki do pojedynczej usługi.

Uwaga: jeśli można zastosować wiele modyfikacji stawek z jednakową szybkością, zastosowane zostaną wszystkie zmiany. Brak konkretnego zamówienia gwarantowane.

RateModifications / HotelRateModifications / @hotel_id 1 string Unikalny identyfikator usługi. Ta wartość musi pasować do Identyfikator hotelu określony za pomocą atrybutu <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 nie określono action, modyfikacje są dodawane lub aktualizowane w przypadku tego hotelu. Jeśli Określono action="overlay", a następnie wszystkie wcześniej zdefiniowane Modyfikacje tego hotelu najpierw zostają usunięte. Następnie modyfikacje określone tutaj są zapisywane. Jeśli używana jest właściwość action="overlay" i w tym elemencie nie są określone żadne modyfikacje, wówczas wszystkie Modyfikacje tego hotelu zostaną usunięte.

RateModifications / HotelRateModifications / ItineraryRateModification 0..200 ItineraryRateModification

Jedna zmiana stawki za obiekt.

Uwaga: debugowanie zmian stawek jest trudne, dlatego dlatego warto z nich korzystać oszczędnie. Skontaktuj się z technicznym menedżerem konta (TAM) w przypadkach, w których wymagać ponad 200 zmian stawek.

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

Jeśli nie podano tej wartości i zmianę stawki z taką samą Wartość id nie jest przechowywana, a zmiana stawki jest przechowywana. W przeciwnym razie, jeśli nie zostanie określona, i w przypadku zmiany stawki o tej samej wartości Zachowana zostanie kwota id, a obecna zmiana stawki zostanie zachowana Zaktualizowano.

Jeśli została określona, wartość musi wynosić "delete". Jeśli określono "delete", zmiana przedpłaconej stawki z tą samą wartością id zostanie usunięta. Jeśli używasz parametru "delete", nie umieszczaj w nim żadnych elementów podrzędnych <ItineraryRateModification> Poza tym "delete" nie dozwolone w połączeniu z zasadą <HotelRateModifications action="overlay"/>.

RateModifications / HotelRateModifications / ItineraryRateModification / BookingDates 0..1 BookingDates Kontener dla co najmniej jednego zakresu dat, który określa, kiedy rezerwacja w celu zastosowania zmiany stawki.
RateModifications / HotelRateModifications / ItineraryRateModification / BookingDates / DateRange 1..99 DateRange Zakres dat określający, kiedy należy dokonać rezerwacji w przypadku ceny modyfikacja do zastosowania.
RateModifications / HotelRateModifications / ItineraryRateModification / BookingDates / DateRange / @start 0..1 Date Data rozpoczęcia (na podstawie strefy czasowej usługi) włącznie z datą rozpoczęcia zakres dat. Ta data nie może być wcześniejsza niż Data: end. Jeśli nie określono start, data jest faktycznie nieograniczony w zakresie daty rozpoczęcia.
RateModifications / HotelRateModifications / ItineraryRateModification / BookingDates / DateRange / @end 0..1 Date Data zakończenia (na podstawie strefy czasowej usługi) włącznie z datą zakończenia zakresu dat. Ta data musi być taka sama jak data lub później Data: start. Jeśli nie określono end, data jest faktycznie nieograniczony w zakresie 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, oznacza to, że w zakresie dat dozwolone są wszystkie dni. Każdy wskazuje dzień. Na przykład „MTWHF”. określa że dni powszednie są dozwolone w danym zakresie dat.

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 data zameldowania (według strefy czasowej obiektu). Na przykład parametr 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 Minimalna liczba dni przed zameldowaniam w momencie dokonania rezerwacji , aby zastosować zmianę stawki. Jeśli nie podasz żadnej wartości, zostanie nie jest niczym minimalnym.
RateModifications / HotelRateModifications / ItineraryRateModification / BookingWindow / @max 0..1 integer Maksymalna liczba dni przed datą zameldowania, w której możliwa jest rezerwacja , aby zastosować zmianę stawki. Jeśli nie podasz żadnej wartości, zostanie nie ma maksymalnej wartości.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckinDates 0..1 CheckinDates kontener dla jednego lub kilku zakresów dat, które określają, kiedy należy się zameldować. w przypadku zmiany stawki, która ma zostać zastosowana.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckinDates / DateRange 1..99 DateRange Zakres dat określający, kiedy należy się zameldować w przypadku tej ceny modyfikacja do zastosowania. Ten element nie jest wymagany, jeśli: usunięcie co najmniej jednej modyfikacji 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 zakres dat. Ta data nie może być wcześniejsza niż Data: end. Jeśli nie określono start, data jest faktycznie nieograniczony w zakresie daty rozpoczęcia.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckinDates / DateRange / @end 0..1 Date Data zakończenia (na podstawie strefy czasowej usługi) włącznie z datą zakończenia zakresu dat. Ta data musi być taka sama jak data lub później Data: start. Jeśli nie określono end, data jest faktycznie nieograniczony w zakresie 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, oznacza to, że w zakresie dat dozwolone są wszystkie dni. Każdy wskazuje dzień. Na przykład „MTWHF”. określa że dni powszednie są dozwolone w danym zakresie dat.

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 na co najmniej jeden zakres dat, który określa moment realizacji transakcji musi wystąpić, aby zmiana stawki została zastosowana.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckoutDates / DateRange 1..99 DateRange Zakres dat, w którym musi nastąpić wymeldowanie w przypadku stawki modyfikacja do zastosowania. Ten element nie jest wymagany, jeśli: usunięcie co najmniej jednej modyfikacji 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 zakres dat. Ta data nie może być wcześniejsza niż Data: end. Jeśli nie określono start, data jest faktycznie nieograniczony w zakresie daty rozpoczęcia.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckoutDates / DateRange / @end 0..1 Date Data zakończenia (na podstawie strefy czasowej usługi) włącznie z datą zakończenia zakresu dat. Ta data musi być taka sama jak data lub później Data: start. Jeśli nie określono end, data jest faktycznie nieograniczony w zakresie 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, oznacza to, że w zakresie dat dozwolone są wszystkie dni. Każdy wskazuje dzień. Na przykład „MTWHF”. określa że dni powszednie są dozwolone w danym zakresie dat.

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 do wyświetlania listy urządzeń użytkowników, które spełniają wymagania zmiany stawki. Jeśli została określona, zmiana stawki będzie miała wartość jest stosowana, gdy użytkownik pasuje do jednego z urządzeń na liście. Jeśli nie podasz żadnej wartości, nie ogranicza to zastosowania zmiany stawki.
RateModifications / HotelRateModifications / ItineraryRateModification / Devices / Device 1..3 Device Określa jeden typ urządzenia użytkownika, które kwalifikuje się do danej stawki modyfikacji.
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 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ą pomnożonego 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 na Twoim koncie z definicją reguły dotyczącej 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.
  • Jeśli ten identyfikator nie pasuje do reguły dotyczącej ceny w definicji reguły dotyczącej ceny plik nie spełnia wymagań.
Zobacz w tym artykule znajdziesz informacje o różnych interfejsach dotyczących cen prywatnych. terapii.
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 kwoty podlegającej zwrotowi stawki podlegającej zwrotowi a nie tylko wypełnione pola.
  • Jeśli available lub refundable_until_days to nie jest ustawiona, stawka nie jest wyświetlana jako podlegająca zwrotowi.
  • Jeśli available to 0 lub false, a pozostałe atrybuty są ignorowane. Stawka nie jest wyświetlana jako podlega zwrotowi, nawet jeśli skonfigurowano co najmniej jeden z pozostałych atrybutów.
  • Zalecane jest ustawienie refundable_until_time. jeśli nie używana jest najwcześniejsza godzina (północ).
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / Refundable / @available 1 boolean (Wymagane) Ustaw na 1 lub true wskazuje, czy stawka zezwala na pełne refund; w przeciwnym razie ma wartość 0 lub false.
Transaction / PropertyDataSet / PackageData / Refundable / @refundable_until_days 0..1 integer (Wymagane, jeśli available to true) Wskazuje liczbę dni przed datą zameldowania, na które można otrzymać pełny zwrot środków. poproszono o dostęp. 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 ma wartość true) Określa o ostatniej porze dnia, według lokalnego czasu hotelu, Żądanie zwrotu kosztów zostało uwzględnione. Może to być połączone z refundable_until_days do określenia, dla Na przykład: „Zwroty środków są dostępne do 16:00 dwa dni przed zameldowania”. Jeśli refundable_until_time nie jest ustawiony, wartość ustawiana jest domyślnie 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 status="unavailable", stawka jest traktowana tak, jakby była niedostępna, niezależnie od tego, czy obowiązuje prawidłowa cena .
RateModifications / HotelRateModifications / ItineraryRateModification / LengthOfStay 0..1 LengthOfStay Określa limity długości pobytu, w ramach których zmiana ceny może można zastosować. Zmiana stawki nie jest stosowana, gdy długość pobytu wynosi poza limitami minimalnymi i maksymalnymi.
RateModifications / HotelRateModifications / ItineraryRateModification / LengthOfStay / @min 0..1 integer Minimalna liczba noclegów w pokoju, o której możliwa jest zmiana ceny zastosowano. 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 zmieni się na zastosowano. 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 (stosując większą z AmountBeforeTax lub AmountAfterTax), który musi zostanie przekroczony, aby zastosować zmianę stawki.
RateModifications / HotelRateModifications / ItineraryRateModification / MinimumAmount / @before_discount 1 integer Wartość, która musi zostać przekroczona, aby zmiana stawki została zmieniona zastosowano.
RateModifications / HotelRateModifications / ItineraryRateModification / RatePlans 0..1 RatePlans Kontener listy planów stawek, do których ma zostać zmieniona stawka ma zastosowanie. Jeśli nie podasz <RatePlans>, stawka zostanie użyta zmiana dotyczy wszystkich planów stawek.
RateModifications / HotelRateModifications / ItineraryRateModification / RatePlans / RatePlan 1..n RatePlan Określa plan stawek. Plan stawek jest definiowany przez pakiet, stawki i dostępność, zgodnie z definicją w transakcji (dane obiektu), OTA_HotelRateAmountNotifRQ i OTA_HotelAvailNotifRQ zgodnie z identyfikatorem PackageID.
RateModifications / HotelRateModifications / ItineraryRateModification / RatePlans / RatePlan / @id 1 string Unikalny identyfikator abonamentu. Ta wartość jest mapowana na wartość Wartość PackageID w <PackageData> w komunikacie transakcji (dane usługi) i w polu RatePlanCode w <StatusApplicationControl> w obu przypadkach <OTA_HotelRateAmountNotifRQ> i <OTA_HotelAvailNotifRQ> wiadomości. 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: <RoomType> określone dane. Jeśli nie podasz <RoomTypes>, parametr zmiana stawki dotyczy wszystkich pokoi.
RateModifications / HotelRateModifications / ItineraryRateModification / RoomTypes / RoomType 1..n RoomType Określa typ pomieszczenia. Typ pokoju jest określony w <RoomData> element w Transakcja (dane usługi) i jest można się odwoływać za pomocą wartości <RoomID>. (Jest Do wartości <RoomID> odwołują się również Atrybut InvTypeCode w OTA_HotelRateAmountNotifRQ messages.)
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 kontenera dla jednego lub kilku zakresów dat, które określają sposób zmiana 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 zmienioną stawkę do każdej nocy w miesiącu plan podróży, jeśli wszystkie daty w planie podróży się pokrywają z datami pobytu.
  • any: stosuje zmienioną stawkę do wszystkich nocy w miesiącu plan podróży, jeśli którakolwiek data w planie podróży pokrywa się z datą zakres dat pobytu.

Ten atrybut musi być zawsze określony.

RateModifications / HotelRateModifications / ItineraryRateModification / StayDates / DateRange 1..99 DateRange Zakres dat, w którym ma nastąpić zmiana stawki zastosowano.
RateModifications / HotelRateModifications / ItineraryRateModification / StayDates / DateRange / @start 0..1 Date Data rozpoczęcia (na podstawie strefy czasowej usługi) włącznie z datą rozpoczęcia zakres dat. Ta data nie może być wcześniejsza niż Data: end. Jeśli nie określono start, data jest faktycznie nieograniczony w zakresie daty rozpoczęcia.
RateModifications / HotelRateModifications / ItineraryRateModification / StayDates / DateRange / @end 0..1 Date Data zakończenia (na podstawie strefy czasowej usługi) włącznie z datą zakończenia zakresu dat. Ta data musi być taka sama jak start lub później datę. Jeśli nie określono end, data jest faktycznie nieograniczony w zakresie 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, oznacza to, że w zakresie dat dozwolone są wszystkie dni. Każdy wskazuje dzień. Na przykład „MTWHF”. określa że dni powszednie są dozwolone w danym zakresie dat.

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 została określona, zmiana stawki zostanie zastosowana tylko wtedy, gdy użytkownik które znajdują się w jednym z określonych krajów. Jeśli nie podasz stawki, Modyfikacja jest stosowana 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 – kraj użytkownika jest ustawiony jako include, zmiana stawki dotyczy użytkowników z wymienionych krajów.

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

Jeśli nie ma wartości atrybutu type User Kraje, jest ona traktowana jako include i 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 przypadku niektórych krajów, kod kraju CLDR różni się od dwuliterowego kodu ISO dla danego 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

Poniższy przykład pokazuje, jak usunąć jedną zmianę stawki dla usługa:

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

Poniższy przykład pokazuje, jak usunąć wszystkie modyfikacje stawek w przypadku usługa:

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

Poniższy przykład pokazuje, jak nałożyć <HotelRateModifications> na obiekt z co najmniej jedną nową zmianą stawki. Kiedy action="overlay", wszystkie zapisane zmiany stawek są usuwane przed zachowywanie zmian stawki 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ą

Przykład poniżej pokazuje, jak wykonać wiele działań modyfikujących za jednym razem:

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

Przykład poniżej pokazuje, jak ograniczyć plan stawek tylko do Użytkownicy 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

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 zawiera te elementy elementy i atrybuty:

Element / @Atrybut Wystąpienia Typ Opis
RateModifications 1 Complex element Element główny wskazujący na powodzenie lub problemy odebrane Komunikat z prośbą o zmianę stawki 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 komunikat RateModifications został przetworzony bez ostrzeżeń, błędów i błędów.

Dozwolone wartości <Success> albo <Issues> w każdej wiadomości.

RateModificationsResponse / Issues 0..1 Issues Kontener dla co najmniej jednego problemu napotkanego podczas przetwarzania Komunikat RateModifications.

Dozwolone wartości <Success> albo <Issues> w każdej wiadomości.

RateModificationsResponse / Issues / Issue 1..n Issue Opis ostrzeżenia, błędu lub błędu napotkanych podczas przetwarzania wiadomości RateModifications. Szczegóły dotyczące tych problemów można znaleźć znaleziono w Błąd stanu pliku danych Wiadomości.
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

Sukces

Poniżej znajduje się odpowiedź na poprawnie przetworzone zmiany wartości 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 nieprzetworzoną wiadomość RateModifications 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>