Überblick
Mit dieser API können Sie mögliche Rabatte angeben. Von den angegebenen Angeboten wendet Google das infrage kommende oder eine Reihe von Angeboten an, die zum niedrigsten Preis führen. Wenn Sie nach einer API suchen, die beliebige Ratenanpassungen unterstützt, die zu einer Preiserhöhung oder Senkung führen können, wenn die Bedingungen erfüllt sind, sollten Sie unsere Rate Modifications API in Betracht ziehen. Wenn beide APIs vorhanden sind, werden Preisänderungen vor Hochstufungen angewendet.
Anfragen
Syntax
Die Nachricht Promotions
verwendet die folgende Syntax:
<?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>
Elemente und Attribute
Die Nachricht „Angebote“ enthält die folgenden Elemente und Attribute:
Element / @Attribut | Häufigkeit | Typ | Beschreibung |
---|---|---|---|
Promotions | 1 | Complex element | Das Stammelement einer Angebotsnachricht. |
Promotions / @partner | 1 | string | Das Partnerkonto für diese Nachricht. Dieser Stringwert ist der Wert für „Partnerschlüssel“, der im Hotel Center auf der
Seite „Kontoeinstellungen“ aufgeführt ist.
Wenn Sie ein Backend haben, das Feeds für mehrere Konten bereitstellt, muss dieser Wert mit dem Attributwert |
Promotions / @id | 1 | string | Eine eindeutige Kennung für diese Anfragenachricht. Dieser Wert wird in der Antwortnachricht zurückgegeben. Zulässige Zeichen sind a–z, A–Z, 0–9, _ (Unterstrich) und - (Bindestrich). |
Promotions / @timestamp | 1 | DateTime | Erstellungsdatum und -uhrzeit der Nachricht. |
Promotions / HotelPromotions | 0..n | HotelPromotions | Angebote für eine Unterkunft. Jedes Angebot gilt für eine einzelne Unterkunft. Sofern |
Promotions / HotelPromotions / @hotel_id | 1 | string | Die eindeutige Kennung für die Unterkunft. Dieser Wert muss mit der Hotel-ID übereinstimmen, die mit
<id> im Element <listing> des Hotellistenfeeds angegeben wurde. Die Hotel-ID ist auch im Hotel Center aufgeführt. |
Promotions / HotelPromotions / @action | 0..1 | enum | Wenn der Wert angegeben wird, muss er Wenn nicht angegeben, hat jedes in der aktuellen Nachricht angegebene Angebot eines der folgenden Angebote:
|
Promotions / HotelPromotions / Promotion | 0..99 | Promotion | Ein einzelnes Angebot für eine Unterkunft. Hinweis: Wenn Wenn Sie mehr als 99 Angebote verwenden müssen, wenden Sie sich an Ihren Technical Account Manager (TAM). |
Promotions / HotelPromotions / Promotion / @id | 1 | string | Eine eindeutige Kennung für das Angebot. Es sind maximal 40 Zeichen zulässig. Zulässige Zeichen sind a–z, A–Z, 0–9, _ (Unterstrich), - (Bindestrich) und . (Punkt). |
Promotions /HotelPromotions / Promotion / @action | 0..1 | enum | Wenn angegeben, muss der Wert Wenn |
Promotions / HotelPromotions / Promotion / BookingDates | 0..1 | BookingDates | Ein Container für einen oder mehrere Bereiche, die definieren, wann eine Buchung erfolgen muss, damit das Angebot angewendet werden kann. |
Promotions / HotelPromotions / Promotion / BookingDates / DateRange | 1..99 | DateRange | Ein Bereich, der angibt, wann eine Buchung erfolgen muss, damit das Angebot angewendet wird. |
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @start | 0..1 | Date oder DateTime | Das Startdatum oder Datum und Uhrzeit (basierend auf der Zeitzone der Unterkunft), einschließlich des Datums, des Zeitraums.
|
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @end | 0..1 | Date oder DateTime | Das Enddatum oder Datum und Uhrzeit (basierend auf der Zeitzone der Unterkunft), einschließlich des Enddatums oder Datums, des Zeitraums.
|
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @days_of_week | 0..1 | string | Die Wochentage, die im Zeitraum zulässig sind. Wenn nicht angegeben, sind alle Tage im Zeitraum zulässig. Jedes Zeichen im String gibt einen Tag an. Beispielsweise gibt „MTWHF“ an, dass Wochentage im Zeitraum zulässig sind. Gültige Zeichen sind:
Jede Zeichenkombination ist gültig. |
Promotions / HotelPromotions / Promotion / BookingWindow | 0..1 | BookingWindow | Gibt den Zeitraum an, in dem die Buchung relativ zum Check-in-Datum erfolgen muss (basierend auf der Zeitzone der Unterkunft). Beispielsweise kann der Reservierungszeitraum auf mindestens 7 Tage, aber nicht mehr als 180 Tage vor dem Check-in festgelegt werden. |
Promotions / HotelPromotions / Promotion / BookingWindow / @min | 0..1 | integer or duration | Die Mindestdauer vor dem Check-in, zu der eine Buchung erfolgen muss, damit das Angebot angewendet wird. Wenn diese nicht angegeben ist oder ihr Wert 0 ist, gibt es kein Minimum.
Folgende Werttypen sind gültig:
|
Promotions / HotelPromotions / Promotion / BookingWindow / @max | 0..1 | integer or duration | Die maximale Anzahl von Tagen vor dem Check-in, an denen eine Buchung erfolgen muss, damit das Angebot angewendet wird. Wenn diese nicht angegeben ist oder ihr Wert 0 ist, gibt es kein Maximum.
Folgende Werttypen sind gültig:
|
Promotions / HotelPromotions / Promotion / Ceiling | 0..1 | Ceiling |
Definiert Einschränkungen für den Höchstwert, auf den ein Preis nach Anwendung von Angeboten festgelegt werden kann. Angebote müssen immer einen Wenn eine Stapelung konfiguriert ist, können mehrere Angebote mit Beispiel: Der Preis für eine Übernachtung beträgt bei
Hier ist die Reihenfolge der Berechnung:
Die Tatsache, dass die Obergrenze von 60 insgesamt strenger ist, ist irrelevant, da sie nur für eigene Werbeaktionen gilt und es keine einheitliche Obergrenze geben kann, die sich über den gesamten Angebotspaket erstreckt. |
Promotions / HotelPromotions / Promotion / Ceiling / @amount_per_night | 1 | float |
Der maximale Betrag, auf den ein Übernachtungspreis nach Anwendung des Rabatts festgelegt werden kann. Wenn auch ein
|
Promotions / HotelPromotions / Promotion / Floor | 0..1 | Floor |
Definiert Einschränkungen für den Mindestwert, auf den ein Preis nach dem Anwenden von Angeboten festgelegt werden kann. Angebote müssen immer einen Die Wenn eine Stapelung konfiguriert ist, können mehrere Angebote mit Beispiel: Der Preis für eine Übernachtung beträgt bei
Hier ist die Reihenfolge der Berechnung:
Die Tatsache, dass 90 ein strengerer Mindestwert ist, ist irrelevant, da er nur für seine eigene Werbeaktion gilt und es keine einzelne Untergrenze geben kann, die sich über den gesamten Angebotspaket erstreckt. |
Promotions / HotelPromotions / Promotion / Floor / @amount_per_night | 1 | float |
Der Mindestbetrag, auf den ein Übernachtungspreis nach Anwendung des Rabatts festgelegt werden kann. Wenn auch ein
|
Promotions / HotelPromotions / Promotion / CheckinDates | 0..1 | CheckinDates | Ein Container für einen oder mehrere Zeiträume, die definieren, wann ein Check-in erfolgen muss, damit das Angebot angewendet wird. |
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange | 1..20 | DateRange | Ein Zeitraum, der angibt, wann ein Check-in erfolgen muss, damit das Angebot angewendet wird. Dieses Element ist nicht erforderlich, wenn Sie ein oder mehrere Angebote löschen. Das Format YearlessDate wird ebenfalls unterstützt.
|
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @start | 0..1 | Date or YearlessDate | Das einschließliche Startdatum (basierend auf der Zeitzone der Unterkunft) des Zeitraums. Dieses Datum muss vor dem end -Datum liegen oder mit diesem übereinstimmen. Wird start nicht angegeben, ist der Zeitraum in Bezug auf das Startdatum praktisch unbegrenzt. |
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @end | 0..1 | Date or YearlessDate | Das einschließliche Enddatum (basierend auf der Zeitzone der Unterkunft) des Zeitraums. Dieses Datum muss mit dem Datum start übereinstimmen oder danach liegen. Wird end nicht angegeben, ist der Zeitraum in Bezug auf das Enddatum praktisch unbegrenzt. |
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @days_of_week | 0..1 | string | Die Wochentage, die im Zeitraum zulässig sind. Wenn nicht angegeben, sind alle Tage im Zeitraum zulässig. Jedes Zeichen im String gibt einen Tag an. Beispielsweise gibt „MTWHF“ an, dass Wochentage im Zeitraum zulässig sind. Gültige Zeichen sind:
Jede Zeichenkombination ist gültig. |
Promotions / HotelPromotions / Promotion / CheckoutDates | 0..1 | CheckoutDates | Ein Container für einen oder mehrere Zeiträume, die definieren, wann der Check-out erfolgen muss, damit das Angebot angewendet wird. |
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange | 1..20 | DateRange | Ein Zeitraum, der angibt, wann ein Check-out erfolgen muss, damit das Angebot angewendet wird. Dieses Element ist nicht erforderlich, wenn Sie ein oder mehrere Angebote löschen. Das Format YearlessDate wird ebenfalls unterstützt.
|
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @start | 0..1 | Date or YearlessDate | Das einschließliche Startdatum (basierend auf der Zeitzone der Unterkunft) des Zeitraums. Dieses Datum muss vor dem end -Datum liegen oder mit diesem übereinstimmen. Wird start nicht angegeben, ist der Zeitraum in Bezug auf das Startdatum praktisch unbegrenzt. |
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @end | 0..1 | Date or YearlessDate | Das einschließliche Enddatum (basierend auf der Zeitzone der Unterkunft) des Zeitraums. Dieses Datum muss mit dem Datum start übereinstimmen oder danach liegen. Wird end nicht angegeben, ist der Zeitraum in Bezug auf das Enddatum praktisch unbegrenzt. |
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @days_of_week | 0..1 | string | Die Wochentage, die im Zeitraum zulässig sind. Wenn nicht angegeben, sind alle Tage im Zeitraum zulässig. Jedes Zeichen im String gibt einen Tag an. Beispielsweise gibt „MTWHF“ an, dass Wochentage im Zeitraum zulässig sind. Gültige Zeichen sind:
Jede Zeichenkombination ist gültig. |
Promotions / HotelPromotions / Promotion / Devices | 0..1 | Devices | Container zum Auflisten der Nutzergeräte, für die das Angebot gilt. Wenn angegeben, wird nur berechtigten Nutzern auf den aufgeführten Geräten der ermäßigte Preis angeboten. Wenn nicht angegeben, wird berechtigten Nutzern auf jedem Gerät der ermäßigte Preis angeboten. |
Promotions / HotelPromotions / Promotion / Devices / Device | 1..3 | Device | Definiert einen Typ von Nutzergerät, für den das Angebot gilt. |
Promotions / HotelPromotions / Promotion / Devices / Device / @type | 1 | enum | Ein Gerätetyp. Der Wert muss desktop , tablet oder mobile sein. |
Promotions / HotelPromotions / Promotion / Discount | 1 | Discount | Genau entweder Gibt den Rabatt an, der auf dieses Angebot angewendet werden soll. |
Promotions / HotelPromotions / Promotion / Discount / @percentage | 0..1 | float | Genau eines der folgenden Werte ist erforderlich: Ein Dezimalwert zwischen 0 und 100, der den Rabatt in Prozent angibt.
Sie wird auf Beispiele:
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_amount | 0..1 | float | Genau eines der folgenden Werte ist erforderlich: Ein fester Betrag, der von der Summe der Beispiele:
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_amount_per_night | 0..1 | float | Genau eines der folgenden Werte ist erforderlich: Ein fester Rabatt, der auf jeden der Beispiele:
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_price | 0..1 | float | Genau eines der folgenden Werte ist erforderlich: Wenn Übernachtungspreise für Wenn Beispiele:
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_price_per_night | 0..1 | float | Genau eines der folgenden Werte ist erforderlich: Wenn Übernachtungspreise für Wenn Wenn Beispiele:
|
Promotions / HotelPromotions / Promotion / Discount / @applied_nights | 0..1 | integer | Sollte nur mit Die Anzahl der Übernachtungen, auf die der Rabatt angewendet wird, beginnend mit dem günstigsten Preis. Muss eine Ganzzahl zwischen 1 und 99 sein. Wenn keine Angabe erfolgt, wird der Rabatt auf alle Nächte angewendet. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights | 0..1 | FreeNights | Gibt einen Rabatt für bestimmte Übernachtungen an, wenn eine Mindestaufenthaltsdauer erreicht ist. Attribute für das übergeordnete Element Discount sind nicht zulässig, wenn dieses Element verwendet wird. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @stay_nights | 1 | integer | Anzahl der erforderlichen Übernachtungen, damit der Rabatt angewendet wird. Jeder Rabatt wird auf ein separates Segment der Übernachtungen angewendet. Beispiel: Bei einem Aufenthalt von 10 Übernachtungen, bei dem |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_nights | 1 | integer | Die Anzahl der rabattierten Übernachtungen in jedem Segment der Übernachtungen. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_percentage | 1 | float | Der Rabatt, der auf die Rabattnächte angewendet wird. Bei einem Wert von 50 gilt für jede ausgewählte Nacht ein Rabatt von 50 %. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @night_selection | 1 | string | Muss entweder cheapest oder last sein. Wenn last , werden die Übernachtungen am Ende des Segments der Übernachtungen rabattiert. Wenn cheapest , werden die günstigsten Übernachtungen im Segment der Übernachtungen rabattiert. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @repeats | 1 | boolean | Gibt an, ob der Rabatt auf Segmente mit mehreren Übernachtungen angewendet werden kann. Bei Beispiel: Wenn |
Promotions / HotelPromotions / Promotion / Discount / @rank | 0..1 | integer | Weist diesem Angebot einen Rang zu und aktiviert es für die Rangauswahl, in der nur die Werbung mit dem niedrigsten Rang zum Anwenden ausgewählt wird. Die Werte müssen zwischen 1 und 99 (einschließlich) liegen. Falls mehrere Angebote denselben Rang haben, wird eines willkürlich ausgewählt und angewendet. |
Promotions / HotelPromotions / Promotion / BestDailyDiscount | 1 | Discount | Genau entweder Gibt einen täglichen Rabatt an, der auf eine Übernachtung angewendet werden kann. Im Gegensatz dazu bietet Für jede Unterkunft kann es eine einzelne Gruppe von Angeboten geben, die als „Tagesbeste“ gelten. Das bedeutet, dass für jede Übernachtung das einzige „beste täglich“-Angebot ausgewählt wird, das den höchsten Rabatt für diese Nacht bietet und angewendet werden kann.
|
Promotions / HotelPromotions / Promotion / BestDailyDiscount / @percentage | 0..1 | float | Genau eines der Attribute Ein Dezimalwert zwischen 0 und 100, der den Rabatt in Prozent angibt.
Sie wird auf Beispiele:
|
Promotions / HotelPromotions / Promotion/ BestDailyDiscount / @fixed_amount | 0..1 | float | Genau eines der Attribute Ein fester Betrag, der von einem einzelnen Beispiele:
|
Promotions / HotelPromotions / Promotion/ BestDailyDiscount / @fixed_price | 0..1 | float | Genau eines der Attribute Wenn Übernachtungspreise für Beispiele:
|
Promotions / HotelPromotions / Promotion / InventoryCount | 0..1 | InventoryCount | Definiert Einschränkungen für die Anzahl der Zimmer, die verfügbar sein müssen, damit dieses Angebot angewendet wird. Der Rabatt wird nur auf die Übernachtungen angewendet, die die Einschränkung erfüllen. In Kombination mit dem Rabatt von fixed_amount nicht zulässig. Die Anzahl der verfügbaren Zimmer wird entweder mit OTA_HotelInvCountNotifRQ (InvCount ) oder OTA_HotelAvailNotifRQ (BookingLimit ) angegeben. |
Promotions / HotelPromotions / Promotion / InventoryCount / @min | 0..1 | integer | Die Mindestanzahl von Zimmern, die verfügbar sein müssen, damit das Angebot auf den Übernachtungspreis angewendet wird. Wenn dies nicht angegeben ist, gibt es keine Mindestanzahl. |
Promotions / HotelPromotions / Promotion / InventoryCount / @max | 0..1 | integer | Die maximale Anzahl von Zimmern, die verfügbar sein müssen, damit das Angebot auf den Übernachtungspreis angewendet wird. Wenn nicht angegeben, gibt es kein Maximum. |
Promotions / HotelPromotions / Promotion / LengthOfStay | 0..1 | LengthOfStay | Definiert die Limits für die Aufenthaltsdauer, innerhalb derer dieses Angebot angewendet werden kann. Das Angebot wird nicht angewendet, wenn die Aufenthaltsdauer außerhalb der Mindest- und Höchstwerte liegt. |
Promotions / HotelPromotions / Promotion / LengthOfStay / @min | 0..1 | integer | Die Mindestanzahl von Übernachtungen, die während des Aufenthalts erlaubt sind, damit das Angebot angewendet wird. Wenn nicht angegeben, gibt es keine Mindestanzahl. |
Promotions / HotelPromotions / Promotion / LengthOfStay / @max | 0..1 | integer | Die maximale Anzahl von Übernachtungen, die während des Aufenthalts erlaubt sind, damit das Angebot angewendet wird. Wird keine Angabe gemacht, gibt es kein Maximum. |
Promotions / HotelPromotions / Promotion / MembershipRateRule | 0..1 | MembershipRateRule |
Container für eine Preisregel für Mitglieder, die eine bestimmte UI-Anzeige für den zugehörigen Rabatt auslöst. Dieses Element sollte nicht angegeben werden, es sei denn, |
Promotions / HotelPromotions / Promotion / MembershipRateRule / @id | 1 | string |
ID der Preisregel, die mit einem Mitgliedschaftsprogramm verknüpft ist. |
Promotions / HotelPromotions / Promotion / MinimumAmount | 0..1 | MinimumAmount | Gibt die Mindestsumme der täglichen Zimmerpreise (mit dem größeren Wert von AmountBeforeTax oder AmountAfterTax ) an, die überschritten werden muss, damit das Angebot angewendet wird. |
Promotions / HotelPromotions / Promotion / MinimumAmount / @before_discount | 1 | integer | Der Wert, der überschritten werden muss, damit das Angebot angewendet wird. |
Promotions / HotelPromotions / Promotion / Occupancy | 0..1 | Occupancy | Definiert Einschränkungen für die Belegung, für die dieses Angebot gilt. Das Angebot wird nicht angewendet, wenn die Belegung außerhalb der Mindest- und Höchstwerte liegt. |
Promotions / HotelPromotions / Promotion / Occupancy / @min | 0..1 | integer | Die vom Nutzer angegebene Belegung muss mindestens diesen Wert betragen, damit der Rabatt angewendet wird. |
Promotions / HotelPromotions / Promotion / Occupancy / @max | 0..1 | integer | Die vom Nutzer angegebene Belegung darf höchstens diesem Wert entsprechen, damit der Rabatt angewendet wird. |
Promotions / HotelPromotions / Promotion / RatePlans | 0..1 | RatePlans | Container für eine Liste von Preisplänen, für die das Angebot gilt.
Wenn <RatePlans> nicht angegeben ist, gilt das Angebot für alle Preispläne. |
Promotions / HotelPromotions / Promotion / RatePlans / RatePlan | 1..n | RatePlan | Gibt einen Preisplan an. Ein Preisplan wird durch eine Kombination aus Paket, Preisen und Verfügbarkeit definiert, wie in den Nachrichten Transaktionen (Unterkunftsdaten), OTA_HotelRateAmountNotifRQ und OTA_HotelAvailNotifRQ definiert und durch die PackageID identifiziert. |
Promotions / HotelPromotions / Promotion / RatePlans / RatePlan / @id | 1 | string | Die eindeutige Kennung für den Preisplan. Dieser Wert ist dem PackageID-Wert in <PackageData> in einer Nachricht Transaktion (Unterkunftsdaten) und im Attribut RatePlanCode in <StatusApplicationControl> in den Nachrichten <OTA_HotelRateAmountNotifRQ> und <OTA_HotelAvailNotifRQ> zugeordnet.
Es sind maximal 50 Zeichen zulässig. |
Promotions / HotelPromotions / Promotion / RoomTypes | 0..1 | RoomTypes | Container für eine Liste von Zimmertypen, für die das Angebot gilt.
Das Angebot wird auf jeden angegebenen <RoomType> angewendet. Wenn <RoomTypes> nicht angegeben ist, gilt das Angebot für alle Zimmer. |
Promotions / HotelPromotions / Promotion / RoomTypes / RoomType | 1..n | RoomType | Gibt einen Zimmertyp an. Ein Zimmertyp wird in einem <RoomData> -Element in einer Nachricht Transaktion (Unterkunftsdaten) definiert und wird mit seinem <RoomID> -Wert referenziert. (Sein <RoomID> -Wert wird auch durch das Attribut InvTypeCode in OTA_HotelRateAmountNotifRQ-Nachrichten referenziert.) |
Promotions / HotelPromotions / Promotion / RoomTypes / RoomType / @id | 1 | string | Die eindeutige Kennung für das Inventar (Zimmertyp). Dieser Wert ist <RoomID> in einer Nachricht „Transaktion (Unterkunftsdaten)“ zugeordnet.
Es sind maximal 50 Zeichen zulässig. |
Promotions / HotelPromotions / Promotion / Stacking | 0..1 | Stacking | Gibt an, wie Angebote kombiniert werden können. Wenn keine Angabe erfolgt, wird für „type“ standardmäßig base angenommen. |
Promotions / HotelPromotions / Promotion / Stacking / @type | 1 | enum | Abhängig von dieser Einstellung können mehrere Angebote auf einen einzigen Preis angewendet werden:
Von den zulässigen Kombinationen werden die Angebote, die den höchsten Rabatt bieten, auf den Preis angewendet. |
Promotions / HotelPromotions / Promotion / StayDates | 0..1 | StayDates | Ein Container für einen oder mehrere Zeiträume, die bestimmen, wie das Angebot angewendet wird, z. B. für saisonale Rabatte. |
Promotions / HotelPromotions / Promotion / StayDates / @application | 1 | enum | Beschreibt, wie das Angebot angewendet werden soll. Gültige Werte sind:
Dieses Attribut muss immer angegeben werden.
|
Promotions / HotelPromotions / Promotion / StayDates / DateRange | 1..99 | DateRange | Ein Zeitraum, der angibt, wann das Angebot angewendet werden soll. Das Format YearlessDate wird ebenfalls unterstützt.
|
Promotions / HotelPromotions / Promotion / StayDates / DateRange / @start | 0..1 | Date or YearlessDate | Das einschließliche Startdatum (basierend auf der Zeitzone der Unterkunft) des Zeitraums. Dieses Datum muss vor dem end -Datum liegen oder mit diesem übereinstimmen. Wird start nicht angegeben, ist der Zeitraum in Bezug auf das Startdatum praktisch unbegrenzt. |
Promotions / HotelPromotions / Promotion / StayDates / DateRange / @end | 0..1 | Date or YearlessDate | Das einschließliche Enddatum (basierend auf der Zeitzone der Unterkunft) des Zeitraums. Dieses Datum muss mit dem Datum start übereinstimmen oder danach liegen. Wird end nicht angegeben, ist der Zeitraum in Bezug auf das Enddatum praktisch unbegrenzt. |
Promotions / HotelPromotions / Promotion / StayDates / DateRange / @days_of_week | 0..1 | string | Die Wochentage, die im Zeitraum zulässig sind. Wenn nicht angegeben, sind alle Tage im Zeitraum zulässig. Jedes Zeichen im String gibt einen Tag an. Beispielsweise gibt „MTWHF“ an, dass Wochentage im Zeitraum zulässig sind. Gültige Zeichen sind:
Jede Zeichenkombination ist gültig. |
Promotions / HotelPromotions / Promotion / UserCountries | 0..1 | UserCountries | Container zum Auflisten der Nutzerstandorte (Länder), für die das Angebot gilt. Wenn angegeben, wird nur berechtigten Nutzern in den aufgeführten Ländern der ermäßigte Preis angeboten. Wenn nicht angegeben, wird berechtigten Nutzern in jedem Land der ermäßigte Preis angeboten. |
Promotions / HotelPromotions / Promotion / UserCountries / @type | 0..1 | enum | Der Typ der Usercountries-Spezifikation.
Gültige Werte sind Wenn für „UserCountry“ Wenn der Wenn „UserCountry“ ( |
Promotions / HotelPromotions / Promotion / UserCountries / Country | 1..300 | Country | Definiert ein Land, in dem Nutzer das Angebot in Anspruch nehmen können. |
Promotions / HotelPromotions / Promotion / UserCountries / Country / @code | 1 | string | Einen CLDR-Ländercode wie DE oder FR . Beachten Sie, dass der CLDR-Ländercode bei einigen Ländern nicht mit dem zweistelligen ISO-Ländercode übereinstimmt. Außerdem werden CLDR-Regionscodes nicht unterstützt. |
Beispiele
Einfache Nachricht
Das folgende Beispiel zeigt eine einfache Promotions
-Nachricht:
<?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>
Inventarbedingung
Das folgende Beispiel zeigt, wie Sie einen Rabatt erstellen, wenn kurz vor dem Ankunftsdatum überschüssiges Inventar vorhanden ist:
<?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>
Ein Angebot löschen
Das folgende Beispiel zeigt, wie ein Angebot für eine Unterkunft gelöscht wird:
<?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>
Alle Werbeaktionen löschen
Das folgende Beispiel zeigt, wie alle Angebote für eine Unterkunft gelöscht werden:
<?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>
Alle Angebote einblenden
Das folgende Beispiel zeigt, wie <HotelPromotions>
für eine Unterkunft mit einem oder mehreren neuen Angeboten eingeblendet wird. Wenn action="overlay"
, werden alle gespeicherten Angebote vor dem Speichern der in der aktuellen Nachricht angegebenen Angebote gelöscht:
<?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 verschiedene Stapeltypen
Im folgenden Beispiel werden drei verschiedene Angebote angewendet (base
, second
, any
). Das Angebot none
wird nicht angewendet, da die anderen Angebote einen besseren Rabatt bieten. Wenn der ursprüngliche Preis 100 $betrug, beträgt der reduzierte Preis 72,90 $.
<?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>
Keine Angabe zum Stapeln
Das folgende Beispiel zeigt einen Fall, bei dem das Angebot none
verwendet wird, weil die Kombination aus anderen Angeboten einen geringeren Rabatt ermöglicht. Wenn der ursprüngliche Preis 100 $beträgt, beträgt der reduzierte Preis 75 $.
<?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>
Grenzwerte für die Dauer des Buchungsfensters
Im folgenden Beispiel wird das Element BookingWindow
verwendet, wobei Start- und Endgrenzen als Dauer gemäß ISO 8601 definiert sind. Diese Einschränkung des Buchungszeitraums erfordert eine Buchung ab 18:00 Uhr am Tag vor der Ankunft und ab 12:00 Uhr am zweiten Tag vor der Ankunft.
<?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>
Datum/Uhrzeit-Grenzen für Buchungsdaten
Im folgenden Beispiel wird das Element BookingDates
mit den Attributen start
und end
als DateTime-Typen verwendet. Bei dieser Einschränkung des Buchungsdatums muss die Buchung zwischen 06:30 Uhr am 1. Juli 2020 und 18:45 Uhr am 2. Juli 2020 erfolgen.
<?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>
Zeiträume ohne Jahre
Das folgende Beispiel zeigt einen Fall, bei dem das Element CheckInDates
DateRanges
mit den Feldern start
und end
ohne Jahre enthält. In diesem Beispiel gilt das Angebot unabhängig vom Jahr für das Check-in-Datum zwischen dem 29.12. und dem 2.1. Jährliche Zeiträume, die die Neujahrsgrenze überschreiten, sind ungültig. Daher wird DateRange als zwei nebeneinanderliegende Zeiträume ausgedrückt.
<?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>
FreeNights-Rabatt
Im folgenden Beispiel erhalten Sie für zwei Übernachtungen im angegebenen Zeitraum von 50 % pro Aufenthalt von vier Übernachtungen einen Rabatt von 50 %. Bei einem Reiseplan mit zehn Übernachtungen wäre ein Rabatt von insgesamt vier Übernachtungen mit 50 % rabattiert.
<?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>
Im nächsten Beispiel erhalten Sie für eine Übernachtung im angegebenen Zeitraum 50% pro Aufenthalt von drei Übernachtungen. Nur die sich überschneidenden Übernachtungen werden auf den Rabatt angerechnet. Für den folgenden Reiseplan mit Check-in am 01.01.2022 und Check-out am 07.01.2022 werden die qualifizierten Übernachtungen und Rabatte wie folgt angewendet.
- 01.01.2022 (Aufenthalt)
- 02.01.2022 (Aufenthalt)
- 2022-01-03
- 04.01.2022 (rabattiert)
- 05.01.2022 (Aufenthalt)
- 06.01.2022 (Aufenthalt)
<?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>
Geordnete Auswahl
Im folgenden Beispiel werden zwei Rabatte angeboten: einer für 20% und einen für 15 %. Bei der Bewertung wird nur der Rabatt von 15% angewendet, da er einen niedrigeren Rang hat.
<?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
Im folgenden Beispiel wird ein Aufenthalt von zwei Übernachtungen günstiger, wenn BestDailyDiscount
mit einem Discount
gestapelt angewendet wird.
<?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>
Beispiel für einen Aufenthalt mit zwei Übernachtungen vom 30. April 2023 bis zum 2. Mai 2023 Bei der Berechnung wird zuerst die Kombination der besten Tagesrabatte ermittelt, die den höchsten Rabatt liefert.
Für die erste Nacht ist das „allgemeine“ Angebot der einzige gültige Betrag mit einem festen Rabatt von 20.
Für die zweite Nacht bietet das „Mai“-Angebot einen höheren Rabatt als der „allgemeine“ Rabatt. Wenn Sie „Vielleicht“ auswählen, beträgt der Rabattbetrag 50.
Für den Aufenthalt erhalten Sie im Rahmen des Angebots „Fiesta“ 5 Rabatte pro Nacht bzw. 10 insgesamt. Er kann mit der Kombination der besten täglichen Rabatte gestapelt werden, da für „fiesta“ der Stapeltyp auf any
festgelegt ist. Wenn base
festgelegt ist, wird nur die Kombination aus den besten Tagesrabatten oder dem „Fiesta“-Rabatt angewendet. Weitere Informationen finden Sie in der Beschreibung von Stacking
.
Insgesamt erhalten Sie für den Preis des Aufenthalts einen Rabatt von 20 + 50 + 10 = 80 Festbetrag.
Antworten
Syntax
Die Nachricht PromotionsResponse
verwendet die folgende Syntax:
<?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>
Elemente und Attribute
Die Nachricht PromotionsResponse
enthält die folgenden Elemente und Attribute:
Element / @Attribut | Häufigkeit | Typ | Beschreibung |
---|---|---|---|
PromotionsResponse | 1 | Complex element | Das Stammelement, das den Erfolg oder Probleme für eine empfangene Anfragenachricht „Angebote“ angibt. |
PromotionsResponse / @timestamp | 1 | DateTime | Erstellungsdatum und -uhrzeit der Nachricht. |
PromotionsResponse / @id | 1 | string | Die eindeutige Kennung der zugehörigen Nachricht „Angebote“. |
PromotionsResponse / @partner | 1 | string | Das Partnerkonto für diese Nachricht. |
PromotionsResponse / Success | 0..1 | Success | Gibt an, dass die Nachricht „Angebote“ ohne Warnungen oder Fehler erfolgreich verarbeitet wurde.
Entweder |
PromotionsResponse / Issues | 0..1 | Issues | Ein Container für ein oder mehrere Probleme, die bei der Verarbeitung der Nachricht „Angebote“ aufgetreten sind.
Entweder |
PromotionsResponse / Issues / Issue | 1..n | Issue | Die Beschreibung einer Warnung oder eines Fehlers, die bei der Verarbeitung der Nachricht „Angebote“ aufgetreten ist. Details zu diesen Problemen finden Sie unter Fehlermeldungen zum Feedstatus. |
PromotionsResponse / Issues / Issue / @code | 1 | integer | Die Kennung des Problems. |
PromotionsResponse / Issues / Issue / @status | 1 | enum | Die Art des Problems. Gültige Werte sind |
Beispiele
Abgeschlossen
Im Folgenden finden Sie eine Antwort auf eine erfolgreich verarbeitete Nachricht „Angebote“.
<?xml version="1.0" encoding="UTF-8"?>
<PromotionsResponse timestamp="2020-05-18T16:20:00-04:00"
id="12345678"
partner="partner_key">
<Success/>
</PromotionsResponse>
Probleme
Im Folgenden finden Sie eine Antwort auf eine Nachricht „Angebote“, die aufgrund von Fehlern nicht verarbeitet wurde.
<?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>