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 zwrot środków; 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

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>


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>

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>


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>

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>


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

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>

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>