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 |
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 |
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ą Jeśli została określona, wartość musi wynosić |
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:
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:
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:
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:
|
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:
|
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:
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:
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 Jeśli zasada Jeśli Jeśli zasada |
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 |
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 |
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 |
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>