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 |
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 |
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ść Jeśli została określona, wartość musi wynosić |
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:
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:
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:
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:
|
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 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:
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:
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 Jeśli Jeśli Jeśli nie ma wartości atrybutu |
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 |
RateModificationsResponse / Issues | 0..1 | Issues | Kontener dla co najmniej jednego problemu napotkanego podczas przetwarzania
Komunikat RateModifications.
Dozwolone wartoś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 |
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>