Omówienie
Ten interfejs API pozwala określić możliwe rabaty. spośród określonych promocji, Google stosuje kwalifikującą się promocję lub zestaw promocji, które prowadzą do najniższą cenę. Jeśli szukasz interfejsu API, który obsługuje dowolne stawki korekty, które mogą podnieść lub obniżyć cenę, gdy określone warunki to zastanów się nad Rate Modifications API. Jeśli dostępne są oba interfejsy API, zmiany stawek zostaną zastosowane przed promocji.
Żądania
Składnia
Komunikat Promotions
ma taką składnię:
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner= "partner_key"
id="message_ID"
timestamp="timestamp">
<HotelPromotions hotel_id="HotelID" action="[overlay]">
<Promotion id="PromotionID" action="[delete]">
<BookingDates>
<DateRange start="YYYY-MM-DD[THH:mm:ss]" end="YYYY-MM-DD[THH:mm:ss]"
days_of_week="MTWHFSU_or_subset"/>
<DateRange start="YYYY-MM-DD[THH:mm:ss]" end="YYYY-MM-DD[THH:mm:ss]"
days_of_week="MTWHFSU_or_subset"/>
</BookingDates>
<BookingWindow min="integer_or_duration" max="integer_or_duration"/>
<Ceiling amount_per_night="float"/>
<Floor amount_per_night="float"/>
<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>
<!-- Specify only one of percentage, fixed_amount, fixed_amount_per_night,
fixed_price, or fixed_price_per_night; applied_nights is only used
with percentage, fixed_amount_per_night, and fixed_price_per_night. -->
<Discount percentage="float" fixed_amount="float" fixed_amount_per_night="float"
fixed_price="float" fixed_price_per_night="float"
applied_nights="integer_1_to_99" rank="integer_1_to_99">
<!-- FreeNights may not be used in conjunction with attributes on Discount -->
<FreeNights stay_nights="integer" discount_nights="integer"
discount_percentage="float" night_selection="[cheapest|last]"
repeats="boolean"/>
</Discount>
<!-- Exactly one of Discount or BestDailyDiscount must be specified.
Specify only one of percentage, fixed_amount, or fixed_price. -->
<BestDailyDiscount percentage="float" fixed_amount="float" fixed_price="float"/>
<Devices>
<Device type="[desktop|tablet|mobile]"/>
</Devices>
<InventoryCount min="integer" max="integer"/>
<LengthOfStay min="integer" max="integer"/>
<MembershipRateRule id="RateRuleID"/>
<MinimumAmount before_discount="integer"/>
<Occupancy min="integer" max="integer"/>
<RatePlans>
<RatePlan id="PackageID_1"/>
<RatePlan id="PackageID_2"/>
</RatePlans>
<RoomTypes>
<RoomType id="RoomID_1"/>
<RoomType id="RoomID_2"/>
</RoomTypes>
<Stacking type="[any|base|none|second]"/>
<StayDates application="[all|any|overlap]">
<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>
</Promotion>
</HotelPromotions>
</Promotions>
Elementy i atrybuty
Wiadomość z promocjami składa się z tych elementów i atrybutów:
Element / @Atrybut | Wystąpienia | Typ | Opis |
---|---|---|---|
Promotions | 1 | Complex element | Główny element komunikatu promocyjnego. |
Promotions / @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.
Jeśli masz backend, który dostarcza pliki danych dla
dla wielu kont, ta wartość musi odpowiadać |
Promotions / @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). |
Promotions / @timestamp | 1 | DateTime | Data i godzina utworzenia tej wiadomości. |
Promotions / HotelPromotions | 0..n | HotelPromotions | Promocje obiektu. Każda promocja dotyczy jednej usłudze. Jeśli nie jest używany identyfikator |
Promotions / HotelPromotions / @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. |
Promotions / HotelPromotions / @action | 0..1 | enum | Jeśli została określona, wartość musi być
Jeśli nie podasz żadnej promocji, każda promocja określona w bieżącej wiadomość to:
|
Promotions / HotelPromotions / Promotion | 0..99 | Promotion | Pojedyncza promocja obiektu. Pamiętaj, że jeśli
Jeśli chcesz wykorzystać więcej niż 99 promocji, skontaktuj się z technicznym menedżerem konta (TAM). |
Promotions / HotelPromotions / Promotion / @id | 1 | string | Unikalny identyfikator promocji. Maksymalna liczba dozwolona liczba znaków to 40. Dozwolone znaki to a–z, A–Z, 0–9, _ (podkreślenie), - (myślnik) i . (kropka). |
Promotions /HotelPromotions / Promotion / @action | 0..1 | enum | Jeśli została określona, wartość musi wynosić Jeśli określony jest atrybut |
Promotions / HotelPromotions / Promotion / BookingDates | 0..1 | BookingDates | Kontener na co najmniej 1 zakres, który określa, kiedy musi mieć miejsce rezerwacja aby można było skorzystać z promocji. |
Promotions / HotelPromotions / Promotion / BookingDates / DateRange | 1..99 | DateRange | Zakres określający, kiedy wymagana jest rezerwacja, aby promocja się zakończyła zastosowano. |
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @start | 0..1 | Date lub DateTime | datę rozpoczęcia lub datę i godzinę (na podstawie strefy czasowej usługi); włącznie z zakresu.
|
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @end | 0..1 | Date lub DateTime | datę zakończenia lub datę i godzinę (na podstawie strefy czasowej usługi); włącznie z zakresu.
|
Promotions / HotelPromotions / Promotion / 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. |
Promotions / HotelPromotions / Promotion / 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. |
Promotions / HotelPromotions / Promotion / BookingWindow / @min | 0..1 | integer or duration | Minimalny czas trwania rezerwacji, przed którą należy się zameldować
, aby zastosować promocję. Jeśli nie został określony lub jego wartość
wynosi 0 , nie ma minimalnej wartości.
Prawidłowe typy wartości to:
|
Promotions / HotelPromotions / Promotion / BookingWindow / @max | 0..1 | integer or duration | Maksymalna liczba dni przed datą zameldowania, w której możliwa jest rezerwacja
, aby zastosować promocję. Jeśli nie został określony lub jego wartość
wynosi 0 , nie ma maksymalnej wartości.
Prawidłowe typy wartości to:
|
Promotions / HotelPromotions / Promotion / Ceiling | 0..1 | Ceiling |
Określa ograniczenia dotyczące maksymalnej wartości stawki po zastosowaniu promocji. Promocje muszą zawsze określać atrybut Jeśli skonfigurowano stosowanie, wiele promocji z
Przykład: Cena pobytu na 1 noc w miejscu, w którym jest
Oto kolejność obliczeń:
Fakt, że 60 to węższy pułap ogólny, nie ma znaczenia, jest ważna tylko dla własnej promocji i nie może być na cały stos promocji. |
Promotions / HotelPromotions / Promotion / Ceiling / @amount_per_night | 1 | float |
Maksymalna kwota, jaką można ustawić cenę za noc po zostanie zastosowany rabat. Jeśli określono również element Kwota |
Promotions / HotelPromotions / Promotion / Floor | 0..1 | Floor |
Określa ograniczenia dotyczące minimalnej wartości, na którą można ustawić stawkę po zastosowaniu promocji. Promocje muszą zawsze określać atrybut Do działania ma nadal zastosowanie logika Jeśli skonfigurowano stosowanie, wiele promocji z
Przykład: Cena pobytu na 1 noc w miejscu, w którym jest
Oto kolejność obliczeń:
Fakt, że 90 to bardziej rygorystyczna ogólna cena minimalna nie ma znaczenia, jest ważna tylko dla własnej promocji i nie może być który obejmuje cały stos promocji. |
Promotions / HotelPromotions / Promotion / Floor / @amount_per_night | 1 | float |
Minimalna kwota, jaką można ustawić cenę za noc po zostanie zastosowany rabat. Jeśli określono również element Kwota |
Promotions / HotelPromotions / Promotion / CheckinDates | 0..1 | CheckinDates | kontener dla jednego lub kilku zakresów dat, które określają, kiedy należy się zameldować. . |
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange | 1..20 | DateRange | Zakres dat, w którym należy się zameldować w celu skorzystania z promocji można zastosować. Ten element nie jest wymagany, jeśli usuwasz co najmniej jeden promocji. Obsługiwany jest też format YearlessDate.
|
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @start | 0..1 | Date or YearlessDate | 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. |
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @end | 0..1 | Date or YearlessDate | 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. |
Promotions / HotelPromotions / Promotion / 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. |
Promotions / HotelPromotions / Promotion / CheckoutDates | 0..1 | CheckoutDates | Kontener na co najmniej jeden zakres dat, który określa moment realizacji transakcji musi wystąpić, aby promocja została zastosowana. |
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange | 1..20 | DateRange | Zakres dat, w którym należy dokonać płatności, aby promocja można zastosować. Ten element nie jest wymagany, jeśli: usuwania co najmniej jednej promocji. Obsługiwany jest też format YearlessDate.
|
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @start | 0..1 | Date or YearlessDate | 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. |
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @end | 0..1 | Date or YearlessDate | 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. |
Promotions / HotelPromotions / Promotion / 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. |
Promotions / HotelPromotions / Promotion / Devices | 0..1 | Devices | Kontener do wyświetlania listy urządzeń użytkowników, które spełniają wymagania promocji. Jeśli została określona, tylko kwalifikujący się użytkownicy na wymienionych urządzeniach zaoferujemy obniżoną stawkę. Jeśli nie określono tego ustawienia, kwalifikujący się użytkownicy urządzenia otrzymują obniżoną cenę. |
Promotions / HotelPromotions / Promotion / Devices / Device | 1..3 | Device | Określa jeden typ urządzenia użytkownika, które kwalifikuje się do promocji. |
Promotions / HotelPromotions / Promotion / Devices / Device / @type | 1 | enum | Typ urządzenia. Wartością musi być desktop ,
tablet lub mobile . |
Promotions / HotelPromotions / Promotion / Discount | 1 | Discount | Dokładnie jedno z tych elementów: Określa rabat stosowany w przypadku tej promocji. |
Promotions / HotelPromotions / Promotion / Discount / @percentage | 0..1 | float | Dokładnie jeden z tych elementów: Wartość dziesiętna od 0 do 100, która określa rabat procentowy.
Zostanie on zastosowany do Przykłady:
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_amount | 0..1 | float | Dokładnie jeden z tych elementów: Ustalona kwota do odjęcia od sumy wartości
Przykłady:
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_amount_per_night | 0..1 | float | Dokładnie jeden z tych elementów: Stały rabat stosowany do każdego z tych elementów: Przykłady:
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_price | 0..1 | float | Dokładnie jeden z tych elementów: Jeśli określono stawki za noc w usłudze Jeśli Przykłady:
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_price_per_night | 0..1 | float | Dokładnie jeden z tych elementów: Jeśli określono stawki za noc w usłudze Jeśli Jeśli określono Przykłady:
|
Promotions / HotelPromotions / Promotion / Discount / @applied_nights | 0..1 | integer | Należy go używać tylko z:
Liczba nocy, do których stosowany jest rabat, zaczynając od najtańszym rozwiązaniem. Musi być liczbą całkowitą z zakresu od 1 do 99. Jeśli nie podasz żadnej wartości, Rabat dotyczy wszystkich nocy. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights | 0..1 | FreeNights | Określa rabat na określone noce w przypadku minimalnej długości pobytu
jest osiągana. Atrybuty nadrzędnego elementu Discount
są niedozwolone, jeśli ten element jest używany. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @stay_nights | 1 | integer | Liczba nocy wymaganych do zastosowania rabatu. Każdy zostanie zastosowany do osobnego segmentu noclegów. Na przykład jeśli chodzi o nocleg na 10 nocy, w którym jest |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_nights | 1 | integer | Liczba nocy ze zniżką w poszczególnych segmentach noclegów. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_percentage | 1 | float | Rabat stosowany do nocy, w których obowiązują rabaty. Jeśli ta wartość
jest 50 , każda wybrana noc jest niższa o 50%. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @night_selection | 1 | string | Musi to być wartość cheapest lub last . Jeśli
last , a potem noce na koniec segmentu pobytu
Noce są objęte rabatem. Jeśli cheapest , to najtańsza opcja
noce w ramach segmentu pobytów są objęte rabatem. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @repeats | 1 | boolean | Możliwość zastosowania rabatu na wiele noclegów
segmentów niestandardowych. Jeśli Na przykład: jeśli |
Promotions / HotelPromotions / Promotion / Discount / @rank | 0..1 | integer | Przypisuje tej promocji pozycję i umożliwia jej wybór na liście wyników, przy czym zostanie zastosowana tylko promocja o najniższej pozycji. Wartości musi mieścić się w przedziale od 1 do 99 włącznie. Jeśli wiele promocji zawiera te same w rankingu, wartość ta jest wybierana i zastosowana losowo. |
Promotions / HotelPromotions / Promotion / BestDailyDiscount | 1 | Discount | Dokładnie jedno z tych elementów: Określa rabat dzienny, który można zastosować w przypadku noclegu
na dłużej. Jest to sprzeczne z zasadą Każdy obiekt może mieć 1 grupę promocji, które są uważanych za „najlepsze codziennie”. Oznacza to, że dla każdej nocy singiel „najlepsze codziennie” kwalifikującą się promocję i głęboką został wybrany rabat za tę noc i może zostać zastosowany.
Dla tego typu rabatu można określić |
Promotions / HotelPromotions / Promotion / BestDailyDiscount / @percentage | 0..1 | float | Dokładnie jeden z tych elementów: Wartość dziesiętna od 0 do 100, która określa rabat procentowy.
Zostanie on zastosowany do Przykłady:
|
Promotions / HotelPromotions / Promotion/ BestDailyDiscount / @fixed_amount | 0..1 | float | Dokładnie jeden z tych elementów: Ustalona kwota do odjęcia od pojedynczej wartości
Przykłady:
|
Promotions / HotelPromotions / Promotion/ BestDailyDiscount / @fixed_price | 0..1 | float | Dokładnie jeden z tych elementów: Jeśli określono stawki za noc w usłudze Przykłady:
|
Promotions / HotelPromotions / Promotion / InventoryCount | 0..1 | InventoryCount | Określa ograniczenia liczby pomieszczeń, w których muszą być dostępne
aby promocja mogła zostać zastosowana. Rabat jest stosowany tylko do
które spełniają wymagania. Niedozwolone w:
Rabat fixed_amount . Pamiętaj, że liczba dostępnych
sal jest określone za pomocą:
OTA_HotelInvCountNotifRQ (InvCount )
lub OTA_HotelAvailNotifRQ
(BookingLimit ). |
Promotions / HotelPromotions / Promotion / InventoryCount / @min | 0..1 | integer | Minimalna liczba sal, jaka musi być dostępna w ramach promocji który zostanie zastosowany do stawki za noc. Jeśli nie podasz żadnej wartości, nie będzie wartość minimalną. |
Promotions / HotelPromotions / Promotion / InventoryCount / @max | 0..1 | integer | Maksymalna liczba sal, które muszą być dostępne w ramach promocji który zostanie zastosowany do stawki za noc. Jeśli nie podasz żadnej wartości, nie będzie maksimum. |
Promotions / HotelPromotions / Promotion / LengthOfStay | 0..1 | LengthOfStay | Określa limity długości pobytu, w ramach których można skorzystać z promocji zastosowano. Promocja nie jest stosowana, jeśli długość pobytu jest poza między limitami minimalną i maksymalną. |
Promotions / HotelPromotions / Promotion / LengthOfStay / @min | 0..1 | integer | Minimalna liczba nocy dozwolona w trakcie pobytu w okresie obowiązywania promocji zastosowano. Jeśli ta wartość nie zostanie określona, nie ma minimalnej wartości. |
Promotions / HotelPromotions / Promotion / LengthOfStay / @max | 0..1 | integer | Maksymalna dozwolona liczba nocy w trakcie pobytu w ramach promocji zastosowano. Jeśli nie podasz żadnej wartości, nie będzie maksymalnej wartości. |
Promotions / HotelPromotions / Promotion / MembershipRateRule | 0..1 | MembershipRateRule |
Kontener na regułę dotyczącą ceny członkostwa, która uruchamia określony interfejs użytkownika dotyczące powiązanego rabatu. Tego elementu nie należy określać, chyba że
Podano także |
Promotions / HotelPromotions / Promotion / MembershipRateRule / @id | 1 | string |
Identyfikator reguła cenowa powiązana z programem członkostwa. |
Promotions / HotelPromotions / Promotion / 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 można było zastosować promocję. |
Promotions / HotelPromotions / Promotion / MinimumAmount / @before_discount | 1 | integer | Wartość, którą należy przekroczyć, aby zastosować promocję. |
Promotions / HotelPromotions / Promotion / Occupancy | 0..1 | Occupancy | Określa ograniczenia dotyczące liczby osób, w przypadku których obowiązuje ta promocja zastosowano. Promocja nie jest stosowana, gdy liczba osób jest poza minimalny i maksymalny limit. |
Promotions / HotelPromotions / Promotion / Occupancy / @min | 0..1 | integer | Liczba osób określona przez użytkownika musi wynosić co najmniej tę wartość, aby który ma zostać zastosowany. |
Promotions / HotelPromotions / Promotion / Occupancy / @max | 0..1 | integer | Liczba osób określona przez użytkownika musi wynosić maksymalnie tę wartość, aby który ma zostać zastosowany. |
Promotions / HotelPromotions / Promotion / RatePlans | 0..1 | RatePlans | Kontener listy planów stawek, których dotyczy promocja.
Jeśli nie określisz wartości <RatePlans> , zostanie zastosowana promocja.
dotyczy wszystkich planów stawek. |
Promotions / HotelPromotions / Promotion / 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. |
Promotions / HotelPromotions / Promotion / RatePlans / RatePlan / @id | 1 | string | Unikalny identyfikator abonamentu. Ta wartość jest mapowana na wartość
Wartość PackageID w <PackageData>
w komunikacie Transakcja (dane usługi) oraz w
Atrybut RatePlanCode w
<StatusApplicationControl> w obu przypadkach
<OTA_HotelRateAmountNotifRQ> i
Wiadomości: <OTA_HotelAvailNotifRQ> .
Maksymalna dozwolona liczba znaków to 50. |
Promotions / HotelPromotions / Promotion / RoomTypes | 0..1 | RoomTypes | Kontener przeznaczony na listę typów pomieszczeń, do których ma zastosowanie promocja.
Promocja jest stosowana do każdego <RoomType>
określone dane. Jeśli nie podasz <RoomTypes> , parametr
Promocja dotyczy wszystkich pokojów. |
Promotions / HotelPromotions / Promotion / 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.) |
Promotions / HotelPromotions / Promotion / 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. |
Promotions / HotelPromotions / Promotion / Stacking | 0..1 | Stacking | Określa sposób łączenia promocji. Jeśli nie określono tej wartości, pole „type”
jest traktowana jako base . |
Promotions / HotelPromotions / Promotion / Stacking / @type | 1 | enum | Do jednej stawki można zastosować wiele promocji w zależności od to ustawienie:
Spośród dozwolonych kombinacji zestaw promocji, który generuje do stawki stosowany jest największy rabat. |
Promotions / HotelPromotions / Promotion / StayDates | 0..1 | StayDates | kontenera dla jednego lub kilku zakresów dat, które określają sposób stosowana jest promocja, np. aby uwzględnić rabaty sezonowe. |
Promotions / HotelPromotions / Promotion / StayDates / @application | 1 | enum | Opisuje sposób stosowania promocji. Prawidłowe wartości to:
Ten atrybut musi być zawsze określony.
|
Promotions / HotelPromotions / Promotion / StayDates / DateRange | 1..99 | DateRange | Zakres dat określający daty zastosowania promocji. Obsługiwany jest też format YearlessDate.
|
Promotions / HotelPromotions / Promotion / StayDates / DateRange / @start | 0..1 | Date or YearlessDate | 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. |
Promotions / HotelPromotions / Promotion / StayDates / DateRange / @end | 0..1 | Date or YearlessDate | 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. |
Promotions / HotelPromotions / Promotion / 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. |
Promotions / HotelPromotions / Promotion / UserCountries | 0..1 | UserCountries | Kontener do wyświetlania odpowiednich lokalizacji użytkowników (krajów) dotyczących promocji. Jeśli została określona, tylko uprawnieni użytkownicy z listy krajów oferujemy obniżoną stawkę. Jeśli nie określono tego ustawienia, kwalifikuje się użytkownicy z dowolnego kraju otrzymują obniżoną cenę. |
Promotions / HotelPromotions / Promotion / 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 |
Promotions / HotelPromotions / Promotion / UserCountries / Country | 1..300 | Country | Określa jeden kraj, w którym użytkownicy mogą skorzystać z promocji. |
Promotions / HotelPromotions / Promotion / UserCountries / Country / @code | 1 | string | Kraj 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
Obowiązuje limit 500 promocji na usługę. Więcej informacji znajdziesz w sekcji „Usuwanie jednego”. „promocja” przykład usuwania promocji z usługi.
Podstawowa wiadomość
Ten przykład przedstawia podstawowy komunikat Promotions
:
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<BookingDates>
<DateRange start="2020-07-01" end="2020-07-31" days_of_week="MTWHF"/>
<DateRange start="2020-09-01" end="2020-09-30"/>
</BookingDates>
<BookingWindow min="7" max="330"/>
<CheckinDates>
<DateRange start="2020-10-01" end="2020-10-31" days_of_week="FSU"/>
</CheckinDates>
<CheckoutDates>
<DateRange start="2020-10-08" end="2020-11-07" days_of_week="FSU"/>
</CheckoutDates>
<Devices>
<Device type="mobile"/>
<Device type="tablet"/>
</Devices>
<Discount percentage="20" applied_nights="2"/>
<LengthOfStay min="2" max="14"/>
<RatePlans>
<RatePlan id="234"/>
<RatePlan id="567"/>
</RatePlans>
<RoomTypes>
<RoomType id="123"/>
<RoomType id="456"/>
</RoomTypes>
<Stacking type="base"/>
<UserCountries>
<Country code="US"/>
<Country code="GB"/>
</UserCountries>
</Promotion>
</HotelPromotions>
</Promotions>
Stan zasobów reklamowych
Przykład poniżej pokazuje, jak utworzyć rabat w przypadku nadmiaru produktów asortyment w najbliższym czasie dostawy:
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<BookingWindow max="7"/>
<Discount percentage="10"/>
<InventoryCount min="3"/>
</Promotion>
</HotelPromotions>
</Promotions>
Usuwanie jednej promocji
Poniższy przykład pokazuje, jak usunąć 1 promocję usługi:
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1" action="delete"/>
</HotelPromotions>
</Promotions>
Usuń wszystkie promocje
Poniższy przykład pokazuje, jak usunąć wszystkie promocje w usłudze:
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1" action="overlay"/>
</Promotions>
Nałóż wszystkie promocje
Poniższy przykład pokazuje, jak nałożyć element <HotelPromotions>
na usługę
z co najmniej jedną nową promocją. Gdy action="overlay"
, wszystkie zapisane
promocji określonych w
aktualna wiadomość:
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1" action="overlay">
<Promotion id="1">
<BookingDates>
<DateRange start="2020-09-01" end="2020-09-30"/>
</BookingDates>
<Discount percentage="10"/>
<RoomTypes>
<RoomType id="123"/>
<RoomType id="456"/>
</RoomTypes>
<RatePlans>
<RatePlan id="234"/>
<RatePlan id="567"/>
</RatePlans>
<Stacking type="base"/>
</Promotion>
</HotelPromotions>
</Promotions>
3 różne typy układania
Poniższy przykład pokazuje przypadek, w którym byłyby 3 różne promocje.
zastosowano (base
, second
, any
). Pamiętaj, że promocja none
nie będzie
zostanie zastosowane, ponieważ inne promocje zapewniają lepszy rabat. Jeśli oryginał
cena wynosi 100 zł, obniżona cena – 72,90 zł.
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<Discount percentage="10"/>
<Stacking type="base"/>
</Promotion>
<Promotion id="2">
<Discount percentage="10"/>
<Stacking type="second"/>
</Promotion>
<Promotion id="3">
<Discount percentage="10"/>
<Stacking type="any"/>
</Promotion>
<Promotion id="4">
<Discount percentage="25"/>
<Stacking type="none"/>
</Promotion>
</HotelPromotions>
</Promotions>
Typ układania: brak
Poniższy przykład pokazuje zastosowanie promocji none
, ponieważ:
połączenie innych promocji zapewnia mniejszy rabat. Jeśli
pierwotna cena wynosiła 100 zł, obniżona cena – 75 zł.
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<Discount percentage="10"/>
<Stacking type="base"/>
</Promotion>
<Promotion id="2">
<Discount percentage="10"/>
<Stacking type="any"/>
</Promotion>
<Promotion id="3">
<Discount percentage="25"/>
<Stacking type="none"/>
</Promotion>
</HotelPromotions>
</Promotions>
Ograniczenia czasu trwania okresu rezerwacji
Poniższy przykład pokazuje przypadek, w którym BookingWindow
element jest używany z granicami początkowymi i końcowymi zdefiniowanymi jako czas trwania w standardzie ISO 8601
typu. To ograniczenie okresu rezerwacji wymaga rezerwacji do 18:00
dnia przed przylotem i 12:00 lub po nim drugiego dnia przed przylotem
przylot.
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<BookingWindow min="P1DT6H" max="P2DT12H"/>
<Discount percentage="20"/>
</Promotion>
</HotelPromotions>
</Promotions>
Ograniczenia daty i godziny rezerwacji
Poniższy przykład pokazuje przypadek, w którym BookingDates
element jest używany z atrybutami start
i end
jako
Typy DateTime. To ograniczenie daty rezerwacji wymaga dokonania rezerwacji
między 06:30 w 1 lipca 2020 r. a 18:45 2 lipca 2020 r.
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<BookingDates>
<DateRange start="2020-07-01T06:30:00" end="2020-07-02T18:45:00"/>
</BookingDates>
<Discount percentage="20"/>
</Promotion>
</HotelPromotions>
</Promotions>
Zakresy dat bez roku
Poniższy przykład pokazuje przypadek, w którym CheckInDates
element zawiera DateRanges
z wartościami start
i
end
pól bez lat. W tym przykładzie promocja ma zastosowanie
od 29.12 do 2.01, niezależnie od roku. Bez roku
zakresy dat, które przekraczają granicę nowego roku, są nieprawidłowe, więc zakres dat
jest wyrażony jako dwa sąsiednie zakresy dat.
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<CheckInDates>
<DateRange start="12-29" end="12-31"/>
<DateRange start="01-01" end="01-02"/>
</CheckInDates>
<Discount percentage="20"/>
</Promotion>
</HotelPromotions>
</Promotions>
Rabat na FreeNights
W przykładzie poniżej zniżka 50% na 2 noce za każdą 4 noclegi w określonym zakresie dat. W przypadku planu podróży z 10 nocami łącznie: cztery noce będą objęte rabatem w wysokości 50%.
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<BookingDates>
<DateRange start="2022-01-01" end="2022-05-31"/>
</BookingDates>
<Discount>
<FreeNights stay_nights="4" discount_nights="2" discount_percentage="50" night_selection="cheapest" repeats="true"/>
</Discount>
</Promotion>
</HotelPromotions>
</Promotions>
W kolejnym przykładzie rabatów wynosi 1 noc 50% za każdą 3 noclegi noclegowe w określonych zakresach dat pobytu. Pod uwagę brane są tylko pokrywające się noce pobytu aby kwalifikować się do skorzystania z rabatu. W przypadku tego planu podróży z zameldowaniem 1 stycznia 2022 r. i wymeldowanie 7 stycznia 2022 r., zakwalifikowany pobyt i rabaty są stosowane w następujący sposób.
- 1.01.2022 (pobyt)
- 2.01.2022 r. (nocleg)
- 2022-01-03
- 4.01.2022 r. (obniżka)
- 5.01.2022 r. (pobyt)
- 6.01.2022 (za pobyt)
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<StayDates application="overlap">
<DateRange start="2022-01-01" end="2022-01-02"/>
<DateRange start="2022-01-04" end="2022-01-06"/>
</StayDates>
<Discount>
<FreeNights stay_nights="3" discount_nights="1" discount_percentage="50" night_selection="last" repeats="true"/>
</Discount>
</Promotion>
</HotelPromotions>
</Promotions>
Wybór według rankingu
W przykładzie poniżej podano 2 rabaty: jeden 20% taniej, a drugi 20% z rabatem 15%. Podczas oceny stosowany jest tylko rabat w wysokości 15% ponieważ ma niższą pozycję.
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<Discount percentage="15" rank="25"/>
</Promotion>
<Promotion id="2">
<Discount percentage="20" rank="50"/>
</Promotion>
</HotelPromotions>
</Promotions>
BestDailyDiscount
W przykładzie poniżej podajemy rabat za pobyt na 2 noce przez zastosowanie
Tabela BestDailyDiscount
została połączona z kolumną Discount
.
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="HotelID" action="overlay">
<Promotion id="general">
<BestDailyDiscount fixed_amount="20"/>
</Promotion>
<Promotion id="may">
<BestDailyDiscount fixed_amount="50"/>
<StayDates application="overlap">
<DateRange start="2023-05-01" end="2023-05-31"/>
</StayDates>
</Promotion>
<Promotion id="fiesta">
<Discount fixed_amount_per_night="5"/>
<Stacking type="any"/>
</Promotion>
</HotelPromotions>
</Promotions>
Rozważ pobyt na 2 noce w okresie od 30 kwietnia do 2 maja 2023 r. Do obliczeń stanowi kombinację najlepszych rabatów dziennych, która daje jako pierwszy znajduje się najniższy rabat.
Pierwszej nocy: „ogólne” to jedyna kwalifikująca się kwota z stały rabat w wysokości 20,
Drugiej nocy „może” daje większy rabat niż „ogólny” rabatem. Kiedy „może” wybrano rabat stały kwota to 50.
Potem podczas pobytu rabatowe do 5 za noc lub
Łącznie 10. Można ją łączyć z najlepszymi rabatami dziennymi.
bo „fiesta” ma typ stosu ustawiony na any
. Jeśli było ustawione
do base
, a następnie tylko kombinację najlepszych rabatów dziennych lub
„fiesta” zostanie zastosowany rabat. Zobacz opis
Stacking
, aby uzyskać więcej informacji.
Ogólnie cena pobytu otrzymuje stałą kwotę 20 + 50 + 10 = 80 rabatem.
Odpowiedzi
Składnia
Komunikat PromotionsResponse
ma taką składnię:
<?xml version="1.0" encoding="UTF-8"?>
<PromotionsResponse timestamp="timestamp"
id="message_ID"
partner="partner_key">
<!-- Either Success or Issues are populated. -->
<Success/>
<Issues>
<Issue code="issue_code"
status="issue_type">
issue_description
</Issue>
</Issues>
</PromotionsResponse>
Elementy i atrybuty
Wiadomość PromotionsResponse
zawiera te elementy i atrybuty:
Element / @Atrybut | Wystąpienia | Typ | Opis |
---|---|---|---|
PromotionsResponse | 1 | Complex element | Element główny wskazujący na powodzenie lub problemy odebrane Wiadomość z prośbą o promocję. |
PromotionsResponse / @timestamp | 1 | DateTime | Data i godzina utworzenia tej wiadomości. |
PromotionsResponse / @id | 1 | string | Unikalny identyfikator powiązanej wiadomości o promocjach. |
PromotionsResponse / @partner | 1 | string | Konto partnera, z którego pochodzi ta wiadomość. |
PromotionsResponse / Success | 0..1 | Success | Wskazuje, że wiadomość o promocjach została przetworzona
bez ostrzeżeń, błędów i błędów.
Dozwolone wartości |
PromotionsResponse / Issues | 0..1 | Issues | Kontener dla co najmniej jednego problemu napotkanego podczas przetwarzania
Komunikat promocyjny.
Dozwolone wartości |
PromotionsResponse / Issues / Issue | 1..n | Issue | Opis ostrzeżenia, błędu lub błędu napotkanych podczas przetwarza wiadomość o promocjach. Szczegóły dotyczące tych problemów można znaleźć cale Komunikaty o błędach dotyczące stanu pliku danych. |
PromotionsResponse / Issues / Issue / @code | 1 | integer | Identyfikator problemu. |
PromotionsResponse / Issues / Issue / @status | 1 | enum | Typ napotkanego problemu. Prawidłowe wartości to |
Przykłady
Sukces
Poniżej znajdziesz odpowiedź na pomyślnie przetworzoną wiadomość z promocjami.
<?xml version="1.0" encoding="UTF-8"?>
<PromotionsResponse timestamp="2020-05-18T16:20:00-04:00"
id="12345678"
partner="partner_key">
<Success/>
</PromotionsResponse>
Problemy
Poniżej znajdziesz odpowiedź na wiadomość o promocjach, która nie została przetworzona z powodu .
<?xml version="1.0" encoding="UTF-8"?>
<PromotionsResponse timestamp="2020-05-18T16:20:00-04:00"
id="12345678"
partner="partner_key">
<Issues>
<Issue code="1001" status="error">Example</Issue>
</Issues>
</PromotionsResponse>