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 / @Attribute | Wystąpienia | Typ | Opis |
---|---|---|---|
Promotions | 1 | Complex element | Element główny wiadomości z promocjami. |
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żywana opcja |
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ż widoczny 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 podasz wartość |
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 znak w ciągu odpowiada jednemu dniowi. Na przykład „MTWHF” określa, że w zakresie dat dozwolone są dni robocze. 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:
|
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ć dla stawki za noc po zastosowaniu zniżki. Jeśli podano też 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 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 | Pojemnik zawierający co najmniej jeden zakres dat, który określa, kiedy musi nastąpić potwierdzenie, aby promocja mogła zostać zastosowana. |
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 znak w ciągu odpowiada jednemu dniowi. 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 musi być wcześniejsza lub taka sama jak 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 znak w ciągu odpowiada jednemu dniowi. Na przykład „MTWHF”. określa że dni powszednie są dozwolone w danym zakresie dat. Prawidłowe znaki to:
Dozwolona jest dowolna 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.
Jest ona stosowana 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 ma zastosowanie rabat, począwszy od najtańszej. 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. Jeśli użyto tego elementu, atrybuty elementu nadrzędnego Discount są niedozwolone. |
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 objęta 50% rabatem. |
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 | Czy rabat może być stosowany w przypadku wielu segmentów dotyczących liczby nocy pobytu. 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 kilka promocji ma ten sam ranking, losowo wybierana i stosowana jest jedna z nich. |
Promotions / HotelPromotions / Promotion / BestDailyDiscount | 1 | Discount | Musisz podać dokładnie jedną z tych właściwości: Określa
Dzienny rabat, który może zostać zastosowany do noclegu. To jest w
kontrastuje z wartością Każda usługa może mieć jedną grupę promocji, która jest uważana za „najlepszą codzienną”. 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. Pole 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.
Jest ona stosowana do Przykłady:
|
Promotions / HotelPromotions / Promotion/ BestDailyDiscount / @fixed_amount | 0..1 | float | Wymagane jest dokładnie jedno z tych atrybutó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 pokoi jest określana za pomocą parametru 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 pokoi, które muszą być dostępne, aby promocja mogła zostać zastosowana 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 nie określisz tu żadnej wartości, nie będzie limitów. |
Promotions / HotelPromotions / Promotion / LengthOfStay / @max | 0..1 | integer | Maksymalna liczba noclegów, które można wykorzystać w ramach promocji. 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ły dotyczącej stawek powiązanej 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óra musi zostać przekroczona, aby promocja mogła zostać zastosowana. |
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 zarówno w przypadku minimalnej, jak i maksymalnej wartości. |
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 | Aby można było zastosować rabat, liczba osób określona przez użytkownika nie może przekraczać tej wartości. |
Promotions / HotelPromotions / Promotion / RatePlans | 0..1 | RatePlans | Kontener z listą planów cenowych, do których ma zastosowanie 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> . (jej wartość <RoomID> jest też używana przez atrybut InvTypeCode w wiadomościach OTA_HotelRateAmountNotifRQ). |
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 do stawki zostanie zastosowany zestaw promocji, który zapewnia 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.
Jeśli chcesz ustawić zakres funkcji |
Promotions / HotelPromotions / Promotion / StayDates / DateRange / @start | 0..1 | Date or YearlessDate | Data rozpoczęcia (według strefy czasowej usługi) włącznie z zakresem dat. Ta data musi być wcześniejsza lub taka sama jak data end . Jeśli nie określono start , data
jest faktycznie nieograniczony w zakresie daty rozpoczęcia.
Określ wartość |
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 data lub później
Data: start . Jeśli nie podasz wartości end , zakres dat będzie obejmował wszystkie daty od start .
Określ wartość |
Promotions / HotelPromotions / Promotion / StayDates / DateRange / @days_of_week | 0..1 | string | Dni tygodnia dozwolone w wybranym 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:
Dozwolona jest dowolna kombinacja znaków. |
Promotions / HotelPromotions / Promotion / UserCountries | 0..1 | UserCountries | Kontener do wyświetlania listy 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 | 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
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>
Nakładanie wszystkich promocji
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>
Brak typu układania
W tym przykładzie wykorzystano promocję none
, ponieważ kombinacja innych promocji daje 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
Ten przykład pokazuje przypadek, w którym element CheckInDates
zawiera element DateRanges
, który ma pola start
i end
bez lat. W tym przykładzie promocja obowiązuje w dniach zameldowania od 29 grudnia do 2 stycznia, 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 następnym przykładzie każda z 3 nocy jest objęta 50% rabatem w przypadku pobytu w określonych przedziałach dat. Do rabatu wliczane są tylko noce pobytu, które się pokrywają. W przypadku tej trasy z zameldowaniem w dniu 2022-01-01 i wymeldowaniem w dniu 2022-01-07 rabaty i noclegi kwalifikujące się do rabatu są stosowane w następujący sposób:
- 1.01.2022 (pobyt)
- 2.01.2022 r. (nocleg)
- 2022-01-03
- 2022-01-04 (z rabatem)
- 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 jest obniżona o 20 + 50 + 10 = 80 zł.
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.
W każdej wiadomości występuje element |
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 znajduje się 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>