Przegląd
Ten interfejs API umożliwia definiowanie sposobów dynamicznego stosowania działań do ceny, gdy zostaną spełnione określone warunki, np. dostosowanie ceny lub włączenie możliwości zwrotu środków. W przeciwieństwie do interfejsu Promotions API, który może stosować tylko kwalifikujące się promocje z największymi rabatami, ten interfejs API stosuje wszelkie działania po spełnieniu określonych warunków, w tym korekty cen, które mogą ostatecznie zwiększyć cenę końcową.
Żądania
Składnia
Wiadomość RateModifications ma tę 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 i atrybuty:
| Element / @Atrybut | Wystąpienia | Typ | Opis |
|---|---|---|---|
| RateModifications | 1 | Complex element | Element główny wiadomości o modyfikacjach stawek. |
| RateModifications / @partner | 1 | string | Konto partnera, do którego należy 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 być zgodna z 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 stawek w przypadku usługi. Każda modyfikacja stawki dotyczy jednej usługi. Uwaga: jeśli do tej samej stawki można zastosować kilka modyfikacji, zostaną one wszystkie zastosowane. Nie gwarantujemy żadnej konkretnej kolejności. |
| RateModifications / HotelRateModifications / @hotel_id | 1 | string | Unikalny identyfikator usługi. Ta wartość musi być zgodna z identyfikatorem hotelu określonym za pomocą elementu
<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 element |
| RateModifications / HotelRateModifications / ItineraryRateModification | 0..200 | ItineraryRateModification | Pojedyncza modyfikacja ceny w przypadku usługi. Uwaga: modyfikacje stawek są trudne do debugowania, dlatego zalecamy ich oszczędne stosowanie. W przypadku zastosowań, które wymagają więcej niż 200 modyfikacji stawek, skontaktuj się z przedstawicielem Technicznej obsługi klienta. |
| RateModifications / HotelRateModifications / ItineraryRateModification / @id | 1 | string | Unikalny identyfikator modyfikacji stawki. Maksymalna dozwolona liczba znaków to 40. Dozwolone znaki to a–z, A–Z, 0–9, _ (podkreślenie), - (łącznik) i . (kropka). |
| RateModifications / HotelRateModifications / ItineraryRateModification / @action | 0..1 | enum | Jeśli nie jest określona i nie jest przechowywana modyfikacja stawki z tym samym Jeśli została określona, wartość musi wynosić |
| RateModifications / HotelRateModifications / ItineraryRateModification / BookingDates | 0..1 | BookingDates | Kontener zawierający co najmniej jeden zakres dat określający, kiedy musi nastąpić rezerwacja, aby zastosować modyfikację ceny. |
| RateModifications / HotelRateModifications / ItineraryRateModification / BookingDates / DateRange | 1..99 | DateRange | Zakres dat określający, kiedy musi nastąpić rezerwacja, aby zastosować modyfikację ceny. |
| RateModifications / HotelRateModifications / ItineraryRateModification / BookingDates / DateRange / @start | 0..1 | Date | Data rozpoczęcia zakresu dat (włącznie) w strefie czasowej usługi. Ta data musi być wcześniejsza niż data end lub taka sama jak ona. Jeśli zasada start nie jest określona, zakres dat jest w zasadzie nieograniczony pod względem daty rozpoczęcia. |
| RateModifications / HotelRateModifications / ItineraryRateModification / BookingDates / DateRange / @end | 0..1 | Date | Data zakończenia zakresu dat (włącznie) w strefie czasowej usługi. Musi ona przypadać w dniu start lub później. Jeśli nie podasz wartości end, zakres dat będzie w zasadzie nieograniczony pod względem daty zakończenia. |
| RateModifications / HotelRateModifications / ItineraryRateModification / BookingDates / DateRange / @days_of_week | 0..1 | string | Dni tygodnia dozwolone w zakresie dat. Jeśli nie określisz dni, wszystkie dni w zakresie dat będą dozwolone. Każdy znak w ciągu określa dzień. Na przykład „MTWHF” oznacza, że w zakresie dat dozwolone są dni powszednie. Prawidłowe znaki to:
Dopuszczalna jest dowolna kombinacja znaków. |
| RateModifications / HotelRateModifications / ItineraryRateModification / BookingWindow | 0..1 | BookingWindow | Określa okres, w którym musi nastąpić rezerwacja w stosunku do daty zameldowania (na podstawie strefy czasowej obiektu). Na przykład okno rezerwacji może być ustawione 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 zameldowaniem, w których musi nastąpić rezerwacja, aby zastosować modyfikację ceny. Jeśli nie określisz tu żadnej wartości, nie będzie wartości minimalnej. |
| RateModifications / HotelRateModifications / ItineraryRateModification / BookingWindow / @max | 0..1 | integer | Maksymalna liczba dni przed zameldowaniem, w których musi nastąpić rezerwacja, aby zastosować modyfikację ceny. Jeśli nie podasz żadnej opcji, nie będzie limitu. |
| RateModifications / HotelRateModifications / ItineraryRateModification / CheckinDates | 0..1 | CheckinDates | Kontener zawierający co najmniej jeden zakres dat, który określa, kiedy musi nastąpić zameldowanie, aby zastosować modyfikację ceny. |
| RateModifications / HotelRateModifications / ItineraryRateModification / CheckinDates / DateRange | 1..99 | DateRange | Zakres dat określający, kiedy musi nastąpić zameldowanie, aby zastosować modyfikację ceny. 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 zakresu dat (włącznie) w strefie czasowej usługi. Ta data musi być wcześniejsza niż data end lub taka sama jak ona. Jeśli zasada start nie jest określona, zakres dat jest w zasadzie nieograniczony pod względem daty rozpoczęcia. |
| RateModifications / HotelRateModifications / ItineraryRateModification / CheckinDates / DateRange / @end | 0..1 | Date | Data zakończenia zakresu dat (włącznie) w strefie czasowej usługi. Musi ona przypadać w dniu start lub później. Jeśli nie podasz wartości end, zakres dat będzie w zasadzie nieograniczony pod względem daty zakończenia. |
| RateModifications / HotelRateModifications / ItineraryRateModification / CheckinDates / DateRange / @days_of_week | 0..1 | string | Dni tygodnia dozwolone w zakresie dat. Jeśli nie określisz dni, wszystkie dni w zakresie dat będą dozwolone. Każdy znak w ciągu określa dzień. Na przykład „MTWHF” oznacza, że w zakresie dat dozwolone są dni powszednie. Prawidłowe znaki to:
Dopuszczalna jest dowolna kombinacja znaków. |
| RateModifications / HotelRateModifications / ItineraryRateModification / CheckoutDates | 0..1 | CheckoutDates | Kontener zawierający co najmniej jeden zakres dat określający, kiedy musi nastąpić wymeldowanie, aby zastosować modyfikację ceny. |
| RateModifications / HotelRateModifications / ItineraryRateModification / CheckoutDates / DateRange | 1..99 | DateRange | Zakres dat określający, kiedy musi nastąpić wymeldowanie, aby zastosować modyfikację ceny. 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 zakresu dat (włącznie) w strefie czasowej usługi. Ta data musi być wcześniejsza niż data end lub taka sama jak ona. Jeśli zasada start nie jest określona, zakres dat jest w zasadzie nieograniczony pod względem daty rozpoczęcia. |
| RateModifications / HotelRateModifications / ItineraryRateModification / CheckoutDates / DateRange / @end | 0..1 | Date | Data zakończenia zakresu dat (włącznie) w strefie czasowej usługi. Musi ona przypadać w dniu start lub później. Jeśli nie podasz wartości end, zakres dat będzie w zasadzie nieograniczony pod względem daty zakończenia. |
| RateModifications / HotelRateModifications / ItineraryRateModification / CheckoutDates / DateRange / @days_of_week | 0..1 | string | Dni tygodnia dozwolone w zakresie dat. Jeśli nie określisz dni, wszystkie dni w zakresie dat będą dozwolone. Każdy znak w ciągu określa dzień. Na przykład „MTWHF” oznacza, że w zakresie dat dozwolone są dni powszednie. Prawidłowe znaki to:
Dopuszczalna jest dowolna 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 jest określona, modyfikacja stawki jest stosowana tylko wtedy, gdy użytkownik korzysta z jednego z wymienionych urządzeń. Jeśli nie określisz tu żadnej wartości, nie będzie to ograniczać stosowania modyfikacji stawki. |
| RateModifications / HotelRateModifications / ItineraryRateModification / Devices / Device | 1..3 | Device | Określa 1 typ urządzenia użytkownika, który kwalifikuje się do modyfikacji stawki. |
| RateModifications / HotelRateModifications / ItineraryRateModification / Devices / Device / @type | 1 | enum | Typ urządzenia. Wartość musi wynosić desktop, tablet lub mobile. |
| RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions | 1 | ModificationActions | Działania, 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ą mnożone przez tę wartość. |
| RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / RateRule | 0..1 | RateRule | Modyfikuje cenę, 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 Definicja reguły stawki.
Uwaga:
|
| RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / Refundable | 0..1 | Refundable | Zastępuje możliwość zwrotu środków za stawkę określoną wartością.
Podczas ustawiania atrybutów pamiętaj o tych kwestiach:
|
| RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / Refundable / @available | 1 | boolean | (Wymagany) Ustaw wartość 1 lub true, aby wskazać, czy stawka umożliwia pełny zwrot środków. W przeciwnym razie ustaw wartość 0 lub false. |
| Transaction / PropertyDataSet / PackageData / Refundable / @refundable_until_days | 0..1 | integer | (Wymagane, jeśli available ma wartość true) Określa liczbę dni przed zameldowaniem, w przypadku których 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 najpóźniejszą godzinę w ciągu dnia (według lokalnego czasu hotelu), do której uwzględniana jest prośba o pełny zwrot środków. Można to połączyć z parametrem refundable_until_days, aby określić na przykład, że „zwrot środków jest możliwy do godziny 16:00 na 2 dni przed zameldowaniem”. Jeśli nie ustawisz wartości refundable_until_time, domyślnie zostanie przyjęta północ. |
| RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / Availability | 0..1 | Availability | Zastępuje dostępność stawki określoną wartością.
Obsługujemy tylko ustawienie stawki na unavailable. |
| RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / Availability / @status | 1 | enum | Jeśli wartość to status="unavailable", stawka jest traktowana jako niedostępna, niezależnie od tego, czy istnieje dla niej prawidłowa cena. |
| RateModifications / HotelRateModifications / ItineraryRateModification / LengthOfStay | 0..1 | LengthOfStay | Określa limity długości pobytu, w ramach których można zastosować tę modyfikację ceny. Modyfikacja stawki nie jest stosowana, gdy długość pobytu jest poza minimalnym i maksymalnym limitem. |
| RateModifications / HotelRateModifications / ItineraryRateModification / LengthOfStay / @min | 0..1 | integer | Minimalna liczba noclegów, która musi być uwzględniona w pobycie, aby można było zastosować modyfikację ceny. Jeśli nie określisz tego parametru, nie będzie wartości minimalnej. |
| RateModifications / HotelRateModifications / ItineraryRateModification / LengthOfStay / @max | 0..1 | integer | Maksymalna liczba noclegów, w przypadku których można zastosować modyfikację ceny. Jeśli nie podasz żadnej opcji, nie będzie limitu. |
| RateModifications / HotelRateModifications / ItineraryRateModification / MinimumAmount | 0..1 | MinimumAmount | Określa minimalną sumę dziennych cen pokoju (przy użyciu większej z wartości AmountBeforeTax lub AmountAfterTax), która musi zostać przekroczona, aby zastosować modyfikację ceny. |
| RateModifications / HotelRateModifications / ItineraryRateModification / MinimumAmount / @before_discount | 1 | integer | Wartość, którą należy przekroczyć, aby zastosować modyfikację stawki. |
| RateModifications / HotelRateModifications / ItineraryRateModification / RatePlans | 0..1 | RatePlans | Kontener z listą planów taryfowych, do których ma zastosowanie modyfikacja stawki. Jeśli nie podasz wartości <RatePlans>, modyfikacja stawki będzie dotyczyć wszystkich planów cenowych. |
| RateModifications / HotelRateModifications / ItineraryRateModification / RatePlans / RatePlan | 1..n | RatePlan | Określa abonament. Plan cenowy jest określany przez kombinację pakietu, stawek i dostępności zdefiniowanych w wiadomościach Transaction (Property Data), OTA_HotelRateAmountNotifRQ i OTA_HotelAvailNotifRQ oraz identyfikowanych przez PackageID. |
| RateModifications / HotelRateModifications / ItineraryRateModification / RatePlans / RatePlan / @id | 1 | string | Unikalny identyfikator planu cenowego. Ta wartość jest mapowana na wartość PackageID w elemencie <PackageData> w komunikacie transakcji (dane obiektu) oraz w atrybucie RatePlanCode w elemencie <StatusApplicationControl> w komunikatach <OTA_HotelRateAmountNotifRQ> i <OTA_HotelAvailNotifRQ>.
Maksymalna dozwolona liczba znaków to 50. |
| RateModifications / HotelRateModifications / ItineraryRateModification / RoomTypes | 0..1 | RoomTypes | Kontener z listą typów pokoi, do których ma zastosowanie modyfikacja ceny.
Modyfikacja stawki jest stosowana do każdego określonego <RoomType>. Jeśli nie podasz wartości <RoomTypes>, modyfikacja stawki będzie dotyczyć wszystkich pokoi. |
| RateModifications / HotelRateModifications / ItineraryRateModification / RoomTypes / RoomType | 1..n | RoomType | Określa typ pokoju. Typ pokoju jest zdefiniowany w elemencie <RoomData> w wiadomości Transakcja (dane o obiekcie) i jest do niego odwoływany za pomocą wartości <RoomID>. (Jego wartość <RoomID> jest też używana w atrybucie InvTypeCode w wiadomościach OTA_HotelRateAmountNotifRQ). |
| RateModifications / HotelRateModifications / ItineraryRateModification / RoomTypes / RoomType / @id | 1 | string | Unikalny identyfikator asortymentu (rodzaju pokoju). Ta wartość jest mapowana na <RoomID> w wiadomości Transaction (Property Data).
Maksymalna dozwolona liczba znaków to 50. |
| RateModifications / HotelRateModifications / ItineraryRateModification / StayDates | 0..1 | StayDates | Kontener na co najmniej 1 zakres dat, który określa sposób stosowania modyfikacji stawki, np. w celu uwzględnienia cen sezonowych. |
| RateModifications / HotelRateModifications / ItineraryRateModification / StayDates / @application | 1 | enum | Opisuje, jak należy zastosować modyfikację stawki. Prawidłowe wartości to:
Ten atrybut musi być zawsze określony. |
| RateModifications / HotelRateModifications / ItineraryRateModification / StayDates / DateRange | 1..99 | DateRange | Zakres dat określający, kiedy ma być stosowana modyfikacja stawki. |
| RateModifications / HotelRateModifications / ItineraryRateModification / StayDates / DateRange / @start | 0..1 | Date | Data rozpoczęcia zakresu dat (włącznie) w strefie czasowej usługi. Ta data musi być wcześniejsza niż data end lub taka sama jak ona. Jeśli zasada start nie jest określona, zakres dat jest w zasadzie nieograniczony pod względem daty rozpoczęcia. |
| RateModifications / HotelRateModifications / ItineraryRateModification / StayDates / DateRange / @end | 0..1 | Date | Data zakończenia zakresu dat (włącznie) w strefie czasowej usługi. Musi to być data start lub późniejsza. Jeśli nie podasz wartości end, zakres dat będzie w zasadzie nieograniczony pod względem daty zakończenia. |
| RateModifications / HotelRateModifications / ItineraryRateModification / StayDates / DateRange / @days_of_week | 0..1 | string | Dni tygodnia dozwolone w zakresie dat. Jeśli nie określisz dni, wszystkie dni w zakresie dat będą dozwolone. Każdy znak w ciągu określa dzień. Na przykład „MTWHF” oznacza, że w zakresie dat dozwolone są dni powszednie. Prawidłowe znaki to:
Dopuszczalna jest dowolna kombinacja znaków. |
| RateModifications / HotelRateModifications / ItineraryRateModification / UserCountries | 0..1 | UserCountries | Jeśli zostanie określona, modyfikacja stawki jest stosowana tylko wtedy, gdy użytkownik znajduje się w jednym z określonych krajów. Jeśli nie określisz tu żadnej wartości, modyfikacja stawki będzie stosowana niezależnie od lokalizacji użytkownika. |
| RateModifications / HotelRateModifications / ItineraryRateModification / UserCountries / @type | 0..1 | enum | Typ specyfikacji UserCountries.
Prawidłowe wartości to Jeśli parametr UserCountries Jeśli UserCountries Jeśli parametr UserCountries |
| RateModifications / HotelRateModifications / ItineraryRateModification / UserCountries / Country | 1..300 | Country | Określa kraj użytkownika, w którym można zastosować modyfikację stawki. |
| RateModifications / HotelRateModifications / ItineraryRateModification / UserCountries / Country / @code | 1 | string | kod kraju CLDR, np. DE lub FR; Pamiętaj, że w przypadku niektórych krajów kod kraju CLDR nie jest taki sam jak 2-literowy kod kraju ISO. Kody regionów CLDR również nie są obsługiwane. |
Przykłady
Podstawowa wiadomość
Poniższy przykład przedstawia 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>
Usuwanie jednej modyfikacji stawki
Poniższy przykład pokazuje, jak usunąć jedną modyfikację ceny w przypadku obiektu:
<?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>
Usuwanie wszystkich modyfikacji stawek
Przykład poniżej pokazuje, jak usunąć wszystkie modyfikacje stawek dla obiektu:
<?xml version="1.0" encoding="UTF-8"?>
<RateModifications partner="account_xyz"
id="123_abc"
timestamp="2023-05-22T16:20:00-04:00">
<HotelRateModifications hotel_id="Property_1" action="overlay"/>
</RateModifications>
Nakładanie wszystkich modyfikacji stawek
Poniższy przykład pokazuje, jak zastąpić właściwość <HotelRateModifications> za pomocą co najmniej 1 nowej modyfikacji stawki. Gdy action="overlay", wszystkie zapisane modyfikacje stawek są usuwane przed zapisaniem modyfikacji stawek określonych w bieżącej wiadomości:
<?xml version="1.0" encoding="UTF-8"?>
<RateModifications partner="account_xyz"
id="123_abc"
timestamp="2023-05-22T16:20:00-04:00">
<HotelRateModifications hotel_id="Property_1" action="overlay"/>
<ItineraryRateModification id="1">
<BookingDates>
<DateRange start="2023-09-01" end="2023-09-30"/>
</BookingDates>
<ModificationActions>
<PriceAdjustment multiplier="1.2"/>
</ModificationActions>
<RoomTypes>
<RoomType id="123"/>
<RoomType id="456"/>
</RoomTypes>
<RatePlans>
<RatePlan id="234"/>
<RatePlan id="567"/>
</RatePlans>
</ItineraryRateModification>
</HotelRateModifications>
</RateModifications>
Wiele działań modyfikujących
Poniższy przykład pokazuje, jak wykonać kilka działań modyfikacji naraz:
<?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 w krajach użytkowników
Poniższy przykład pokazuje, jak ograniczyć plan cenowy tylko do użytkowników 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
Wiadomość RateModificationsResponse ma tę 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 ma te elementy i atrybuty:
| Element / @Atrybut | Wystąpienia | Typ | Opis |
|---|---|---|---|
| RateModifications | 1 | Complex element | Element główny wskazujący, czy otrzymana wiadomość z żądaniem RateModifications została przetworzona prawidłowo, czy wystąpiły problemy. |
| RateModificationsResponse / @timestamp | 1 | DateTime | Data i godzina utworzenia tej wiadomości. |
| RateModificationsResponse / @id | 1 | string | Unikalny identyfikator z powiązanej wiadomości RateModifications. |
| RateModificationsResponse / @partner | 1 | string | Konto partnera, do którego należy ta wiadomość. |
| RateModificationsResponse / Success | 0..1 | Success | Wskazuje, że komunikat RateModifications został przetworzony bez ostrzeżeń, błędów ani awarii.
W każdej wiadomości występuje element |
| RateModificationsResponse / Issues | 0..1 | Issues | Kontener zawierający co najmniej 1 problem napotkany podczas przetwarzania wiadomości RateModifications.
W każdej wiadomości występuje element |
| RateModificationsResponse / Issues / Issue | 1..n | Issue | Opis ostrzeżenia, błędu lub awarii 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 | Rodzaj napotkanego problemu. Prawidłowe wartości to |
Przykłady
Sukces
Poniżej znajdziesz odpowiedź na prawidłowo 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 znajduje się 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>