Übersicht
Mit dieser API können Sie mögliche Rabatte angeben. Von den angegebenen Angeboten wendet Google das infrage kommende Angebot oder die infrage kommenden Angebote an, die zum niedrigsten Preis führen. Wenn Sie eine API suchen, die beliebige Preisanpassungen unterstützt, die den Preis entweder erhöhen oder senken können, wenn die Bedingungen erfüllt sind, sollten Sie unsere Preisänderungs-API in Betracht ziehen. Wenn beide APIs vorhanden sind, werden Preisänderungen vor Angeboten 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, percentage_of_base, 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" percentage_of_base="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 folgende 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 „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 der Unterkunft. Dieser Wert muss mit der Hotel-ID übereinstimmen, die mit
<id> im Element <listing> im Hotellistenfeed angegeben wird. Die Hotel-ID ist auch im Hotel Center aufgelistet. |
Promotions / HotelPromotions / @action | 0..1 | enum | Falls angegeben, muss der Wert Falls nicht angegeben, bestehen für jedes in der aktuellen Nachricht angegebene Angebot folgende Möglichkeiten:
|
Promotions / HotelPromotions / Promotion | 0..99 | Promotion | Ein einzelnes Angebot für eine Unterkunft. 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 | Falls angegeben, muss der Wert Wenn |
Promotions / HotelPromotions / Promotion / BookingDates | 0..1 | BookingDates | Ein Container für einen oder mehrere Zeiträume, in denen festgelegt wird, wann eine Buchung erfolgen muss, damit das Angebot angewendet wird. |
Promotions / HotelPromotions / Promotion / BookingDates / DateRange | 1..99 | DateRange | Ein Zeitraum, der angibt, wann eine Buchung erfolgen muss, damit das Angebot angewendet wird. |
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @start | 0..1 | Date oder DateTime | Das einschließliche Startdatum oder das Startdatum und die Startzeit (basierend auf der Zeitzone der Unterkunft) des Zeitraums.
|
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @end | 0..1 | Date oder DateTime | Das einschließliche Enddatum oder das Enddatum und die Endzeit (basierend auf der Zeitzone der Unterkunft) des Zeitraums.
|
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @days_of_week | 0..1 | string | Die Wochentage, die im Zeitraum zulässig sind. Falls nicht angegeben, sind alle Tage im Zeitraum zulässig. Jedes Zeichen im String gibt einen Tag an. Beispiel: „MTWHF“ gibt an, dass Wochentage im Zeitraum zulässig sind. Folgende Zeichen sind zulässig:
Jede Zeichenkombination ist gültig. |
Promotions / HotelPromotions / Promotion / BookingWindow | 0..1 | BookingWindow | Gibt den Zeitraum an, in dem die Reservierung in Bezug auf das Check-in-Datum erfolgen muss (basierend auf der Zeitzone der Unterkunft). Beispielsweise kann der Reservierungszeitraum auf mindestens 7 Tage und maximal 180 Tage vor dem Check-in festgelegt werden. |
Promotions / HotelPromotions / Promotion / BookingWindow / @min | 0..1 | integer or duration | Die Mindestdauer vor dem Check-in, wann eine Buchung erfolgen muss, damit das Angebot angewendet wird. Wenn dieser Wert nicht angegeben oder 0 ist, gibt es keine Mindestanzahl.
Folgende Werttypen sind gültig:
|
Promotions / HotelPromotions / Promotion / BookingWindow / @max | 0..1 | integer or duration | Die maximale Anzahl von Tagen vor dem Check-in, wann eine Buchung erfolgen muss, damit das Angebot angewendet wird. Wenn dieser Wert nicht angegeben oder 0 ist, gibt es keine maximale Anzahl.
Folgende Werttypen sind gültig:
|
Promotions / HotelPromotions / Promotion / Ceiling | 0..1 | Ceiling |
Definiert Einschränkungen für den maximalen Wert, auf den ein Preis festgelegt werden kann, nachdem Angebote angewendet wurden. Für Angebote muss immer eine Wenn die Möglichkeit zum Stapeln konfiguriert ist, können mehrere Angebote mit Beispiel: Preis für eine Übernachtung, wobei
Die Reihenfolge der Berechnungen:
Die Tatsache, dass 60 eine strengere Obergrenze ist, ist irrelevant, da sie nur für das jeweilige Angebot gilt. Es kann keine einzige Obergrenze geben, die den gesamten Angebotsstapel umfasst. |
Promotions / HotelPromotions / Promotion / Ceiling / @amount_per_night | 1 | float |
Der maximale Betrag, auf den ein Übernachtungspreis nach Abzug 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 festgelegt werden kann, nachdem Angebote angewendet wurden. Für Angebote muss immer eine Die Wenn die Möglichkeit zum Stapeln konfiguriert ist, können mehrere Angebote mit Beispiel: Preis für eine Übernachtung, wobei
Die Reihenfolge der Berechnungen:
Die Tatsache, dass 90 % ein strengerer Gesamtgrenzwert ist, ist irrelevant, da er nur für das jeweilige Angebot gilt. Es kann keinen einzelnen Grenzwert geben, der den gesamten Angebotsstapel abdeckt. |
Promotions / HotelPromotions / Promotion / Floor / @amount_per_night | 1 | float |
Der Mindestbetrag, auf den ein Übernachtungspreis nach Abzug 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 der 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 prinzipiell 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 nach dem start -Datum liegen oder mit diesem übereinstimmen. Wird end nicht angegeben, ist der Zeitraum in Bezug auf das Enddatum nahezu unbegrenzt. |
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @days_of_week | 0..1 | string | Die Wochentage, die im Zeitraum zulässig sind. Falls nicht angegeben, sind alle Tage im Zeitraum zulässig. Jedes Zeichen im String gibt einen Tag an. Beispiel: „MTWHF“ gibt an, dass Wochentage im Zeitraum zulässig sind. Folgende Zeichen sind zulässig:
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 prinzipiell 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 nach dem start -Datum liegen oder mit diesem übereinstimmen. Wird end nicht angegeben, ist der Zeitraum in Bezug auf das Enddatum nahezu unbegrenzt. |
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @days_of_week | 0..1 | string | Die Wochentage, die im Zeitraum zulässig sind. Falls nicht angegeben, sind alle Tage im Zeitraum zulässig. Jedes Zeichen im String gibt einen Tag an. Beispiel: „MTWHF“ gibt an, dass Wochentage im Zeitraum zulässig sind. Folgende Zeichen sind zulässig:
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 beliebigen Geräten der ermäßigte Preis angeboten. |
Promotions / HotelPromotions / Promotion / Devices / Device | 1..3 | Device | Definiert einen Typ des Nutzergeräts, 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 | Es muss genau eine der beiden Optionen angegeben werden. Gibt den Rabatt an, der für dieses Angebot angewendet werden soll. |
Promotions / HotelPromotions / Promotion / Discount / @percentage | 0..1 | float | Es ist genau eines der folgenden Properties erforderlich: Dezimalwert von 0 bis 100, der den Rabatt in Prozent angibt.
Er wird auf Beispiele:
|
Promotions / HotelPromotions / Promotion / Discount / @percentage_of_base | 0..1 | float | Es ist genau eines der folgenden Properties erforderlich: Dezimalwert von 0 bis 100, der den Prozentsatz des Basisrabatts angibt. Ähnlich wie bei Im Gegensatz zu Beispiel:
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_amount | 0..1 | float | Es ist genau eines der folgenden Properties erforderlich: Festbetrag, der von der Summe der Beispiele:
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_amount_per_night | 0..1 | float | Es ist genau eines der folgenden Properties erforderlich: Ein fester Rabatt, der auf jeden Beispiele:
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_price | 0..1 | float | Es ist genau eines der folgenden Properties erforderlich: Wenn Wenn Beispiele:
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_price_per_night | 0..1 | float | Es ist genau eines der folgenden Properties erforderlich: Wenn Wenn Wenn Beispiele:
|
Promotions / HotelPromotions / Promotion / Discount / @applied_nights | 0..1 | integer | Dieser Wert 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. Falls nicht angegeben, wird der Rabatt auf alle Übernachtungen angewendet. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights | 0..1 | FreeNights | Hiermit wird ein Rabatt für bestimmte Nächte eines Aufenthalts angegeben, wenn eine Mindestaufenthaltsdauer erfüllt ist. Attribute auf dem übergeordneten Element Discount sind nicht zulässig, wenn dieses Element verwendet wird. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @stay_nights | 1 | integer | Anzahl der Übernachtungen, die erforderlich sind, damit der Rabatt angewendet werden kann. Jeder Rabatt wird auf ein separates Segment der Aufenthaltsnächte angewendet. Bei einem Aufenthalt von 10 Übernachtungen, bei dem |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_nights | 1 | integer | Die Anzahl der ermäßigten Übernachtungen in jedem Segment der Aufenthaltsdauer. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_percentage | 1 | float | Der Rabatt, der auf die ermäßigten Übernachtungen angewendet wird. Wenn dieser Wert 50 ist, erhalten Sie für jede ausgewählte Nacht 50% Rabatt. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @night_selection | 1 | string | Muss entweder cheapest oder last sein. Wenn last , werden die Nächte am Ende des Aufenthaltszeitraums vergünstigt. Wenn cheapest , werden die günstigsten Nächte im Segment der Aufenthaltsnächte vergünstigt. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @repeats | 1 | boolean | Ob der Rabatt auf mehrere Segmente mit Übernachtungen angewendet werden kann. Wenn Wenn |
Promotions / HotelPromotions / Promotion / Discount / @rank | 0..1 | integer | Dieses Angebot wird einem Rang zugewiesen und für die sortierte Auswahl aktiviert. Dabei wird nur das Angebot mit dem niedrigsten Rang angewendet. Die Werte müssen zwischen 1 und 99 liegen. Wenn mehrere Angebote denselben Rang haben, wird eines nach dem Zufallsprinzip ausgewählt und angewendet. |
Promotions / HotelPromotions / Promotion / BestDailyDiscount | 1 | Discount | Es muss genau eine der beiden Optionen angegeben werden. Gibt einen Tagesrabatt an, der auf eine Übernachtung angewendet werden kann. Das ist im Gegensatz zu Jede Property kann eine einzelne Gruppe von Angeboten haben, die als „Best Daily“ eingestuft werden. Das bedeutet, dass für jede Übernachtung das beste Tagesangebot ausgewählt und angewendet werden kann, das für diese Nacht infrage kommt und den höchsten Rabatt bietet.
|
Promotions / HotelPromotions / Promotion / BestDailyDiscount / @percentage | 0..1 | float | Es muss genau ein Wert von Dezimalwert von 0 bis 100, der den Rabatt in Prozent angibt.
Er wird auf Beispiele:
|
Promotions / HotelPromotions / Promotion/ BestDailyDiscount / @fixed_amount | 0..1 | float | Es muss genau ein Wert von Festbetrag, der von einem einzelnen Beispiele:
|
Promotions / HotelPromotions / Promotion/ BestDailyDiscount / @fixed_price | 0..1 | float | Es muss genau ein Wert von Wenn Beispiele:
|
Promotions / HotelPromotions / Promotion / InventoryCount | 0..1 | InventoryCount | Definiert Einschränkungen für die Anzahl der Zimmer, die verfügbar sein müssen, damit das Angebot angewendet werden kann. Der Rabatt wird nur auf Übernachtungen angewendet, die der Beschränkung entsprechen. In Verbindung mit dem Rabatt 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 der Zimmer, die verfügbar sein müssen, damit das Angebot auf den Übernachtungspreis angewendet werden kann. Falls nicht angegeben, gibt es keine Mindestanzahl. |
Promotions / HotelPromotions / Promotion / InventoryCount / @max | 0..1 | integer | Die maximale Anzahl der Zimmer, die verfügbar sein müssen, damit das Angebot auf den Übernachtungspreis angewendet werden kann. Falls nicht angegeben, gibt es keine maximale Anzahl. |
Promotions / HotelPromotions / Promotion / LengthOfStay | 0..1 | LengthOfStay | Definiert die Länge der Aufenthaltsdauer, in der 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 werden kann. Falls 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. Falls nicht angegeben, gibt es keine maximale Anzahl. |
Promotions / HotelPromotions / Promotion / MembershipRateRule | 0..1 | MembershipRateRule |
Container für eine Regel für Mitgliederpreise, 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 |
Die 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 werden kann. |
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 haben, damit der Rabatt angewendet werden kann. |
Promotions / HotelPromotions / Promotion / Occupancy / @max | 0..1 | integer | Die vom Nutzer angegebene Belegung darf höchstens diesem Wert entsprechen, damit der Rabatt angewendet werden kann. |
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, die in den Nachrichten „Transaktion (Unterkunftsdaten)“, „OTA_HotelRateAmountNotifRQ“ und „OTA_HotelAvailNotifRQ“ definiert und durch die PackageID identifiziert wird. |
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> sowie <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 nicht angegeben, wird „type“ als 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 wird die Reihe von Angeboten, die den größten Rabatt ermöglichen, 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.
Wenn Sie den |
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 prinzipiell unbegrenzt.
Sie sollten den Wert |
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 nach dem start -Datum liegen oder mit diesem übereinstimmen. Wird end nicht angegeben, ist der Zeitraum ab dem start praktisch unbegrenzt.
Sie sollten den Wert |
Promotions / HotelPromotions / Promotion / StayDates / DateRange / @days_of_week | 0..1 | string | Die Wochentage, die im Zeitraum zulässig sind. Falls nicht angegeben, sind alle Tage im Zeitraum zulässig. Jedes Zeichen im String gibt einen Tag an. Beispiel: „MTWHF“ gibt an, dass Wochentage im Zeitraum zulässig sind. Folgende Zeichen sind zulässig:
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 „UserCountries“ Wenn „UserCountries“ Wenn „UserCountries“ |
Promotions / HotelPromotions / Promotion / UserCountries / Country | 1..300 | Country | Definiert ein Land, in dem Nutzer für das Angebot berechtigt sind. |
Promotions / HotelPromotions / Promotion / UserCountries / Country / @code | 1 | string | Ein CLDR-Ländercode, z. B. DE oder FR . Bei einigen Ländern ist der CLDR-Ländercode nicht identisch mit dem aus zwei Buchstaben bestehenden ISO-Ländercode. Regionale CLDR-Codes werden nicht unterstützt. |
Beispiele
Pro Unterkunft sind nur bis zu 500 Werbeeinträge zulässig. Im Beispiel „Ein Angebot löschen“ erfahren Sie, wie Sie Angebote aus einer Unterkunft entfernen.
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>
Inventarzustand
Das folgende Beispiel zeigt, wie Sie einen Rabatt erstellen, wenn vor dem Ankunftsdatum mehr 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
Im folgenden Beispiel wird gezeigt, 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 Angebote löschen
Im folgenden Beispiel wird gezeigt, 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 überlagern
Im folgenden Beispiel wird gezeigt, wie <HotelPromotions>
für eine Unterkunft mit einem oder mehreren neuen Angeboten überlagert wird. Bei action="overlay"
werden alle gespeicherten Angebote gelöscht, bevor die in der aktuellen Nachricht angegebenen Angebote gespeichert 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">
<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 Originalpreis 100 $betrug, würde der Rabattpreis 72,90 $betragen.
<?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>
Keiner – Stapeltyp
Im folgenden Beispiel wird das Angebot none
verwendet, da die Kombination anderer Angebote einen geringeren Rabatt bietet. Wenn der Originalpreis 100 € betrug, würde der reduzierte Preis 75 € betragen.
<?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>
Grenzen für die Dauer des Reservierungszeitraums
Das folgende Beispiel zeigt einen Fall, in dem das Element BookingWindow
verwendet wird und dessen Start- und Endzeit als ISO 8601-Dauertyp definiert sind. Bei dieser Einschränkung des Buchungszeitraums muss die Buchung am Tag vor der Ankunft bis spätestens 18:00 Uhr und am 2. Tag vor der Ankunft ab 12:00 Uhr 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">
<BookingWindow min="P1DT6H" max="P2DT12H"/>
<Discount percentage="20"/>
</Promotion>
</HotelPromotions>
</Promotions>
Buchungsdatum – Zeitangaben
Das folgende Beispiel zeigt einen Fall, in dem das Element BookingDates
mit den Attributen start
und end
als DateTime-Typen verwendet wird. Aufgrund dieser Einschränkung für das Buchungsdatum muss die Buchung zwischen dem 01.07.2020, 06:30 Uhr und dem 02.07.2020, 18:45 Uhr 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 Jahresangabe
Im folgenden Beispiel enthält das CheckInDates
-Element DateRanges
-Elemente mit start
- und end
-Feldern ohne Jahre. In diesem Beispiel gilt das Angebot unabhängig vom Jahr für Check-in-Daten zwischen dem 29. Dezember und dem 2. Januar. Zeiträume ohne Jahresangabe, die die Grenze zum neuen Jahr überschreiten, sind ungültig. Daher wird der Zeitraum als zwei benachbarte Zeiträume angegeben.
<?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 jede Buchung von vier Übernachtungen im angegebenen Zeitraum einen Rabatt von 50% auf zwei Übernachtungen. Bei einem Reiseplan mit zehn Übernachtungen erhalten Sie für insgesamt vier Übernachtungen einen Rabatt von 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>
Im nächsten Beispiel erhalten Sie für jede drei Übernachtungen in den angegebenen Zeiträumen einen Rabatt von 50% auf eine Übernachtung. Nur die überlappenden Übernachtungen werden für den Rabatt berücksichtigt. Für den folgenden Reiseplan mit Anreise am 01.01.2022 und Abreise am 07.01.2022 werden die infrage kommenden Übernachtungen und Rabatte wie unten beschrieben angewendet.
- 2022-01-01 (stay)
- 2022-01-02 (stay)
- 2022-01-03
- 2022-01-04 (discounted)
- 2022-01-05 (stay)
- 2022-01-06 (stay)
<?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>
Rangfolge auswählen
Im folgenden Beispiel werden zwei Rabatte angeboten, einer von 20% und einer von 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 Rabatt für einen Aufenthalt von zwei Nächten gewährt, indem BestDailyDiscount
mit Discount
kombiniert 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>
Angenommen, Sie buchen einen Aufenthalt von zwei Nächten vom 30. April 2023 bis 2. Mai 2023. Bei der Berechnung wird zuerst die Kombination der besten Tagesrabatte ermittelt, die den höchsten Rabatt ergibt.
Für die erste Übernachtung ist das allgemeine Angebot der einzige infrage kommende Betrag mit einem festen Rabatt von 20 %.
Für die zweite Nacht bietet das Angebot „Mai“ einen höheren Rabatt als der „allgemeine“ Rabatt. Wenn also „may“ (kann) ausgewählt ist, beträgt der feste Rabattbetrag 50.
Für den Aufenthalt wird der Rabatt für das Angebot „Fiesta“ auf 5 € pro Nacht oder 10 € insgesamt reduziert. Er kann mit der Kombination der besten Tagesrabatte kombiniert werden, da für „fiesta“ der Stapeltyp auf any
festgelegt ist. Wenn sie auf base
festgelegt ist, wird nur die Kombination aus den besten täglichen Rabatten oder der „Fiesta“-Rabatt angewendet. Weitere Informationen finden Sie in der Beschreibung von Stacking
.
Insgesamt erhält der Preis für den Aufenthalt einen Rabatt in Höhe von 20 + 50 + 10 = 80.
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 folgende 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 Promotions-Nachricht. |
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 bzw. der bei der Verarbeitung der Nachricht „Angebote“ aufgetreten ist. Weitere Informationen zu diesen Problemen finden Sie unter Fehlercodes für den Feedstatus. |
PromotionsResponse / Issues / Issue / @code | 1 | integer | Die Kennung des Problems. |
PromotionsResponse / Issues / Issue / @status | 1 | enum | Die Art des Problems, das aufgetreten ist. Gültige Werte sind |
Beispiele
Erfolg
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>