Werbeaktionen

Ü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 ID im Element <RequestorID> der Nachrichten <OTA_HotelRateAmountNotifRQ> und <OTA_HotelAvailNotifRQ> für dasselbe Konto übereinstimmen.

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 <Stacking> nicht verwendet wird, wird das Angebot mit dem größten Rabatt auf die Buchung angewendet, wenn mehrere Angebote infrage kommen.

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 "overlay" sein. Wenn der Wert "overlay" ist, werden alle gespeicherten Angebote gelöscht, bevor die in der aktuellen Nachricht angegebenen Angebote gespeichert werden.

Wenn nicht angegeben, hat jedes in der aktuellen Nachricht angegebene Angebot eines der folgenden Angebote:

  • Added (wenn keines der gespeicherten Angebote dieselbe id hat)
  • Updated (wenn ein gespeichertes Angebot dieselbe id hat)
  • Deleted (wenn ein gespeichertes Angebot dieselbe id hat und der Wert des Attributs action für das in der aktuellen Nachricht angegebene Angebot "delete" ist)
Promotions / HotelPromotions / Promotion 0..99 Promotion

Ein einzelnes Angebot für eine Unterkunft. Hinweis: Wenn action="overlay" und <Promotion> nicht angegeben sind, werden alle Angebote für die Property gelöscht.

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 delete sein. Wenn nicht angegeben und kein Angebot mit derselben id gespeichert wird, wird dieses Angebot gespeichert. Wenn nicht angegeben und ein Angebot mit derselben id gespeichert wird, wird das vorhandene Angebot aktualisiert.

Wenn delete angegeben ist, wird das gespeicherte Angebot mit derselben id gelöscht. Wenn du delete verwendest, füge keine untergeordneten Elemente in <Promotion> ein. Außerdem ist delete in Verbindung mit <HotelPromotions action="overlay"/> nicht zulässig.

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.

  • Das in start angegebene Datum oder Datum und Uhrzeit müssen vor dem in end angegebenen Datum oder der Uhrzeit liegen oder mit diesem identisch sein.
  • Wird start nicht angegeben, ist der Bereich in Bezug auf die Startzeit praktisch unbegrenzt.
  • Wenn für start das Datum „JJJJ-MM-TT“ angegeben ist, wird es als Datum und Uhrzeit „JJJJ-MM-TTT00:00:00“ interpretiert.
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.

  • Das in end angegebene Datum oder Datum und Uhrzeit muss nach dem in start angegebenen Datum oder Datum liegen oder mit diesem identisch sein.
  • Wird end nicht angegeben, ist der Bereich in Bezug auf die Endzeit praktisch unbegrenzt.
  • Wenn end als Datum „JJJJ-MM-TT“ angegeben ist, wird es als Datum/Uhrzeit „JJJJ-MM-TTT23:59:59“ interpretiert.
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:

  • M für Montag
  • T für Dienstag
  • W für Mittwoch
  • H für Donnerstag
  • F für Freitag
  • S für Samstag
  • U für Sonntag

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:

  • Ganzzahl:Die Anzahl der Tage vor dem Check-in-Datum. Der Wert 30 gibt beispielsweise an, dass das Angebot nur für Buchungen gilt, die mindestens 30 Tage vor dem Check-in-Datum erfolgen.
  • ISO 8601-Dauer (Tage, Stunden und Minuten): Die Anzahl der Tage (und optional Stunden/Minuten) vor dem Check-in-Datum. Der Wert P30D gibt beispielsweise an, dass das Angebot nur für Buchungen gilt, die mindestens 30 Tage vor dem Check-in-Datum gebucht werden. Bei einem Wert von P30DT6H muss eine Buchung spätestens ab 18:00 Uhr am 30. Tag vor der Ankunft erfolgen.
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:

  • Ganzzahl:Die Anzahl der Tage vor dem Check-in-Datum. Der Wert 30 gibt beispielsweise an, dass das Angebot nur für Buchungen gilt, die höchstens 30 Tage vor dem Check-in-Datum erfolgen.
  • ISO 8601-Dauer (Tage, Stunden und Minuten): Die Anzahl der Tage (und optional Stunden/Minuten) vor dem Check-in-Datum. Der Wert P30D gibt beispielsweise an, dass das Angebot nur für Buchungen gilt, die maximal 30 Tage vor dem Check-in-Datum gebucht werden. Der Wert P30DT6H setzt voraus, dass eine Buchung ab 18:00 Uhr am 30. Tag vor der Ankunft erfolgt.
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 <Discount> oder <BestDailyDiscount> angeben. Wenn du also ein Angebot erstellen möchtest, das nur eine <Ceiling> anwendet, kannst du eine <Discount> mit einem percentage von 0 festlegen.

Wenn eine Stapelung konfiguriert ist, können mehrere Angebote mit <Ceiling> für einen einzelnen Aufenthalt gelten. Auf jedes Angebot wird der jeweilige Rabatt angewendet, unmittelbar gefolgt von der Obergrenze. Das folgende Beispiel zeigt, wie jeder Höchstwert bei der Berechnung der nächsten Promotion im Stapel berücksichtigt wird.

Beispiel:

Der Preis für eine Übernachtung beträgt bei AmountBeforeTax 100. Es gibt zwei Angebote:

  1. Angebot mit dem Stapeltyp base, einem fixed_amount von 25 und einer Obergrenze von amount_per_night von 60
  2. Angebot mit Stapeltyp second, fixed_amount von 25 und einer Obergrenze von amount_per_night von 90

Hier ist die Reihenfolge der Berechnung:

  1. Das Angebot base wird zuerst angewendet und AmountBeforeTax wird auf 75 reduziert, aber dann wird es durch die Obergrenze auf 60 gesenkt.
  2. Durch das second-Angebot wird der AmountBeforeTax von 60 auf 35 reduziert. Dieser Wert liegt unterhalb des Höchstwerts von 90, sodass die zweite Obergrenze nicht angewendet wird. Der endgültige Preis beträgt 35.

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 <Floor>-Element angegeben ist, muss dieses auf einen Wert festgelegt werden, der größer oder gleich dem Attribut amount_per_night in <Floor> ist.

amount_per_night wird auf Steuern und Gebühren angewendet, wenn sie mit AmountAfterTax im Übernachtungspreis enthalten sind, nicht aber auf die mit TaxFeeInfo angegebenen Steuern.

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 <Discount> oder <BestDailyDiscount> angeben. Wenn du also ein Angebot erstellen möchtest, das nur eine <Floor> anwendet, kannst du eine <Discount> mit einem percentage von 0 festlegen.

Die <Floor>-Logik gilt weiterhin für <FreeNights>-Rabatte, auch wenn auf die kostenlose Nacht ein Rabatt von 100% angewendet wird.

Wenn eine Stapelung konfiguriert ist, können mehrere Angebote mit <Floor> für einen einzelnen Aufenthalt gelten. Auf jedes Angebot wird der jeweilige Rabatt angewendet, unmittelbar gefolgt vom Mindestpreis. Das folgende Beispiel zeigt, wie jeder Mindestbetrag zur Berechnung der nächsten Promotion im Stapel beiträgt.

Beispiel:

Der Preis für eine Übernachtung beträgt bei AmountBeforeTax 100. Es gibt zwei Angebote:

  1. Angebot mit dem Stapeltyp base, einem fixed_amount von 25 und einer Etage amount_per_night von 90
  2. Angebot mit Stapeltyp second, fixed_amount von 25 und amount_per_night von 60.

Hier ist die Reihenfolge der Berechnung:

  1. Das Angebot base wird zuerst angewendet und AmountBeforeTax wird auf 75 reduziert, aber dann wird es auf 90 erhöht.
  2. Durch das second-Angebot wird der AmountBeforeTax von 90 auf 65 rabattiert. Diese Ebene liegt über der 60-Etage, sodass die zweite Etage nicht angewendet wird. Der endgültige Preis beträgt 65.

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 <Ceiling>-Element angegeben ist, muss dieses auf einen Wert festgelegt werden, der kleiner oder gleich dem Attribut amount_per_night in <Ceiling> ist.

amount_per_night wird auf Steuern und Gebühren angewendet, wenn sie mit AmountAfterTax im Übernachtungspreis enthalten sind, nicht aber auf die mit TaxFeeInfo angegebenen Steuern.

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.

  • Wenn entweder start oder end ein Datum ohne Jahresangabe ist, müssen beide Werte als Datum ohne Jahresangabe angegeben werden.
  • Zeiträume ohne Jahre dürfen nicht um das neue Jahr gelegt werden. Stellen Sie den Zeitraum stattdessen als zwei nebeneinanderliegende Zeiträume dar. {"12-29", "01-05"} kann beispielsweise als {"12-29", "12-31"} und {"01-01", "01-05"} dargestellt werden.
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:

  • M für Montag
  • T für Dienstag
  • W für Mittwoch
  • H für Donnerstag
  • F für Freitag
  • S für Samstag
  • U für Sonntag

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.

  • Wenn start oder end ein Datum ohne Jahresangabe ist, müssen beide Werte als Datum ohne Jahresangabe angegeben werden.
  • Zeiträume ohne Jahre dürfen nicht um das neue Jahr gelegt werden. Stellen Sie den Zeitraum stattdessen als zwei nebeneinanderliegende Zeiträume dar. {"12-29", "01-05"} kann beispielsweise als {"12-29", "12-31"} und {"01-01", "01-05"} dargestellt werden.
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:

  • M für Montag
  • T für Dienstag
  • W für Mittwoch
  • H für Donnerstag
  • F für Freitag
  • S für Samstag
  • U für Sonntag

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 Discount oder BestDailyDiscount muss angegeben werden.

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: percentage, fixed_amount, fixed_amount_per_night, fixed_price oder fixed_price_per_night.

Ein Dezimalwert zwischen 0 und 100, der den Rabatt in Prozent angibt. Sie wird auf AmountAfterTax angewendet (oder AmountBeforeTax, wenn AmountAfterTax nicht angegeben ist).

Beispiele:

  • Wenn AmountAfterTax 100 und percentage 20 ist, dann gilt:

    Angebotspreis = AmountAfterTax × (1 − Rabatt in Prozent)

    80,00 = 100 * (1 - 0,2)

  • Wenn AmountBeforeTax 100 ist, percentage 20 ist und TaxFeeInfo eine Steuer von 10 angibt, gilt:

    Angebotspreis = AmountBeforeTax * (1 - Rabatt in %) + Steuern

    90,00 = 100 * (1 - 0,2) + 10

Promotions / HotelPromotions / Promotion / Discount / @fixed_amount 0..1 float

Genau eines der folgenden Werte ist erforderlich: percentage, fixed_amount, fixed_amount_per_night, fixed_price oder fixed_price_per_night.

Ein fester Betrag, der von der Summe der AmountAfterTax-Übernachtungspreise subtrahiert wird (oder der Summe der AmountBeforeTax-Übernachtungspreise, wenn AmountAfterTax nicht angegeben ist). Es wird davon ausgegangen, dass die Währung mit der Währung der Übernachtungspreise übereinstimmt. Wenn dieser Wert größer als die Summe der Übernachtungspreise ist, ist der resultierende Wert null.

Beispiele:

  • Berechnung des Preises für eine Übernachtung, wobei AmountBeforeTax 90, AmountAfterTax 100 und fixed_amount 20 ist:

    Angebotspreis = AmountAfterTax – fester Rabatt

    80,00 = 100 - 20

  • Berechnung des Preises für eine Übernachtung, wobei AmountBeforeTax 100 ist, fixed_amount 20 ist und TaxFeeInfo eine Steuer von 8 % angibt:

    Angebotspreis = (AmountBeforeTax - fester Rabatt) * (1 + Steuern in Prozent)

    86,40 = (100 - 20) * 1,08

  • Berechnung des Preises für eine Übernachtung, wobei AmountBeforeTax 50 ist, fixed_amount 60 ist und TaxFeeInfo eine Steuer von 10 angibt:

    Angebotspreis = (AmountBeforeTax - fester Rabatt) * Steuern

    10,00 = 0 + 10

  • Berechnung des Preises für drei Übernachtungen, wobei die AmountAfterTax-Werte 100, 110 und 120 sind und fixed_amount 150 ist:

    Angebotspreis = Summe(AmountAfterTax) - (fester Rabatt)

    180,00 = (100 + 110 + 120) - 150

Promotions / HotelPromotions / Promotion / Discount / @fixed_amount_per_night 0..1 float

Genau eines der folgenden Werte ist erforderlich: percentage, fixed_amount, fixed_amount_per_night, fixed_price oder fixed_price_per_night.

Ein fester Rabatt, der auf jeden der AmountAfterTax-Übernachtungspreise angewendet wird (oder den günstigsten N, wenn applied_nights angegeben ist). Wenn AmountAfterTax nicht angegeben ist, wird er auf AmountBeforeTax angewendet. Es wird davon ausgegangen, dass die Währung mit der Währung der Übernachtungspreise übereinstimmt. Wenn fixed_amount_per_night größer als ein Übernachtungspreis ist, wird dieser Übernachtungspreis auf null reduziert. Der Rabatt kann nicht dazu führen, dass ein Übernachtungspreis negativ wird.

Beispiele:

  • Berechnung des Preises für drei Übernachtungen, wobei die AmountAfterTax-Werte 100, 110 und 120 sind und fixed_amount_per_night 10 ist:

    Angebotspreis = Summe(AmountBeforeTax - Festbetragsrabatt)

    300,00 = ((100 - 10) + (110 - 10) + (120 - 10))

  • Berechnung des Preises für drei Übernachtungen, wobei die AmountAfterTax-Werte 10, 50 und 100 sind und fixed_amount_per_night 20 ist:

    Angebotspreis = Summe(AmountAfterTax - Festbetragsrabatt)

    110,00 = (0 + (50 - 20) + (100 - 20))

Promotions / HotelPromotions / Promotion / Discount / @fixed_price 0..1 float

Genau eines der folgenden Werte ist erforderlich: percentage, fixed_amount, fixed_amount_per_night, fixed_price oder fixed_price_per_night.

Wenn Übernachtungspreise für AmountAfterTax angegeben sind, wird dadurch der Preis für den Aufenthalt, einschließlich Steuern und Gebühren, auf den angegebenen Wert festgelegt. Wenn AmountBeforeTax angegeben ist und AmountAfterTax nicht angegeben ist, wird der Preis vor Steuern für den Aufenthalt auf den angegebenen Wert gesetzt. Es wird davon ausgegangen, dass die Währung mit der Währung der Übernachtungspreise übereinstimmt.

Wenn AmountAfterTax einen Steuersatz in Prozent darstellen soll, kann das Festlegen eines Festpreises für AmountBeforeTax zu ungenauen Steuern und Gebühren führen. Im Allgemeinen wird dringend empfohlen, TaxFeeInfo zu verwenden, um die Steuern und Gebühren einer Unterkunft anzugeben.

Beispiele:

  • Wenn wir den Preis für eine Übernachtung berechnen, wobei AmountBeforeTax 90, AmountAfterTax 100 und fixed_price 80 ist, beträgt der Angebotspreis 80.
  • Berechnung des Preises für eine Übernachtung, wobei AmountBeforeTax 100 ist, fixed_amount 80 ist und TaxFeeInfo eine Steuer von 8 % angibt:

    Angebotspreis = Festpreis * (1 + Steuern in Prozent)

    86,40 = 80 * 1,08

  • Berechnung des Preises für drei Übernachtungen, wobei die AmountAfterTax-Werte 100, 110 und 120 sind und fixed_amount 300 ist:

    Angebotspreis = 300

Promotions / HotelPromotions / Promotion / Discount / @fixed_price_per_night 0..1 float

Genau eines der folgenden Werte ist erforderlich: percentage, fixed_amount, fixed_amount_per_night, fixed_price oder fixed_price_per_night.

Wenn Übernachtungspreise für AmountAfterTax angegeben sind, wird der Preis für jede Übernachtung, einschließlich Steuern und Gebühren, auf den angegebenen Wert gesetzt. Wenn AmountBeforeTax angegeben ist und AmountAfterTax nicht angegeben ist, wird der Preis vor Steuern für jede Übernachtung auf den angegebenen Wert gesetzt. Es wird davon ausgegangen, dass die Währung mit der Währung der Übernachtungspreise übereinstimmt.

Wenn AmountAfterTax einen Steuersatz in Prozent darstellen soll, kann das Festlegen eines Festpreises für AmountBeforeTax zu ungenauen Steuern und Gebühren führen. Im Allgemeinen wird dringend empfohlen, TaxFeeInfo zu verwenden, um die Steuern und Gebühren einer Unterkunft anzugeben.

Wenn applied_nights angegeben ist, wird der neue Preis auf die günstigsten N Nächte angewendet.

Beispiele:

  • Wenn wir den Preis für einen Aufenthalt mit zwei Übernachtungen berechnen, wobei die AmountBeforeTax-Werte 90, 90, die AmountAfterTax-Werte 100 und 100 und fixed_price 80 sind, dann beträgt der Angebotspreis 80 + 80 = 160.
  • Wenn wir den Preis für zwei Übernachtungen berechnen, wobei AmountBeforeTax 100 und 100 beträgt, fixed_amount 80 ist und TaxFeeInfo eine Steuer von 8 % angibt, beträgt der Angebotspreis (80 + 80) × 1,08 = 172,8.
  • Wenn wir den Preis für einen Aufenthalt von drei Übernachtungen berechnen, wobei die AmountAfterTax-Werte 100, 110 und 120 sind und fixed_amount 110 ist, beträgt der Angebotspreis 110 × 3 = 330.
Promotions / HotelPromotions / Promotion / Discount / @applied_nights 0..1 integer

Sollte nur mit percentage oder fixed_amount_per_night verwendet werden.

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 stay_nights 4 ist (und repeats „wahr“ ist), gibt es zwei Nachtsegmente: die 1. bis 4. Nächte und die 5. bis 8. Nächte. Die 9. und 10. Nächte gehören nicht zum Segment „Übernachtung/Übernachtung“.

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 false wird nur das Segment der Übernachtungen zu Beginn des Reiseplans rabattiert. Wenn true, gilt für jedes Segment der Übernachtungen ein Rabatt.

Beispiel: Wenn stay_nights 4 ist und der Reiseplan 10 Nächte beträgt und repeats den Wert true hat, werden zwei Segmente rabattiert (Nächte 1–4 und Übernachtungen 5–8). Wenn repeats jedoch false ist, gilt nur für ein Segment (Übernachtungen 1–4).

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 Discount oder BestDailyDiscount muss angegeben werden.

Gibt einen täglichen Rabatt an, der auf eine Übernachtung angewendet werden kann. Im Gegensatz dazu bietet Discount Rabatte auf ganze Aufenthalte an.

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.

Stacking kann nicht mit BestDailyDiscount angegeben werden. Die „besten täglichen“ Rabatte, die den höchsten Rabatt für jede Nacht liefern, werden kombiniert und als Rabatt für einen einzelnen Aufenthalt (z.B. Discount) behandelt, wobei der Stapeltyp auf base festgelegt ist. Dieser kombinierte Rabatt wird mit anderen infrage kommenden <Discount>-Angeboten verglichen und kann kombiniert werden, um das Angebot oder die Kombination mit dem höchsten Rabatt zu finden. Es wird entweder die Kombination aus BestDailyDiscount oder eine einzelne Discount, je nachdem, welcher Preis den niedrigeren Preis ergibt, ausgewählt und auf den Stapeltyp base angewendet.

StayDates kann mit dieser Art von Rabatt angegeben werden, aber application muss auf overlap festgelegt sein

.
Promotions / HotelPromotions / Promotion / BestDailyDiscount / @percentage 0..1 float

Genau eines der Attribute percentage, fixed_amount oder fixed_price ist erforderlich.

Ein Dezimalwert zwischen 0 und 100, der den Rabatt in Prozent angibt. Sie wird auf AmountAfterTax angewendet (oder AmountBeforeTax, wenn AmountAfterTax nicht angegeben ist).

Beispiele:

  • Wenn AmountAfterTax für eine Übernachtung 100 und percentage 20 ist, dann:

    Angebotspreis = AmountAfterTax × (1 − Rabatt in Prozent)

    80,00 = 100 * (1 - 0,2)

  • Wenn AmountBeforeTax für eine Aufenthaltsdauer 100 ist, percentage 20 ist und TaxFeeInfo eine Steuer von 10 angibt, gilt:

    Angebotspreis = AmountBeforeTax * (1 - Rabatt in %) + Steuern

    90,00 = 100 * (1 - 0,2) + 10

Promotions / HotelPromotions / Promotion/ BestDailyDiscount / @fixed_amount 0..1 float

Genau eines der Attribute percentage, fixed_amount oder fixed_price ist erforderlich.

Ein fester Betrag, der von einem einzelnen AmountAfterTax-Übernachtungspreis subtrahiert wird (oder AmountBeforeTax-Übernachtungspreis, wenn AmountAfterTax nicht angegeben ist). Es wird davon ausgegangen, dass die Währung mit der Währung der Übernachtungspreise übereinstimmt. Wenn dieser Wert größer als die Summe der Übernachtungspreise ist, ist der resultierende Wert null.

Beispiele:

  • Wenn AmountBeforeTax für eine einzelne Nacht 90 ist, AmountAfterTax 100 und fixed_amount 20 ist, dann:

    Angebotspreis = AmountAfterTax – fester Rabatt

    80,00 = 100 - 20

  • Wenn AmountBeforeTax für eine einzelne Nacht 100 ist, fixed_amount 20 ist und TaxFeeInfo eine Steuer von 8 % angibt, gilt:

    Angebotspreis = (AmountBeforeTax - fester Rabatt) * (1 + Steuern in Prozent)

    86,40 = (100 - 20) * 1,08

Promotions / HotelPromotions / Promotion/ BestDailyDiscount / @fixed_price 0..1 float

Genau eines der Attribute percentage, fixed_amount oder fixed_price ist erforderlich.

Wenn Übernachtungspreise für AmountAfterTax angegeben sind, wird dadurch der Preis für die Übernachtung, einschließlich Steuern und Gebühren, auf den angegebenen Wert festgelegt. Wenn AmountBeforeTax angegeben ist und AmountAfterTax nicht angegeben ist, wird der Preis vor Steuern für den Aufenthalt auf den angegebenen Wert gesetzt. Es wird davon ausgegangen, dass die Währung mit der Währung der Übernachtungspreise übereinstimmt.

Beispiele:

  • Wenn AmountBeforeTax für eine einzelne Nacht 90 ist, AmountAfterTax 100 und fixed_price 80 ist, beträgt der Angebotspreis 80.
  • Wenn AmountBeforeTax für eine einzelne Nacht 100 ist, fixed_amount 80 ist und TaxFeeInfo eine Steuer von 8 % angibt, gilt:

    Angebotspreis = Festpreis * (1 + Steuern in Prozent)

    86,40 = 80 * 1,08

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, <Discount> ist ebenfalls angegeben.

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:

  • any: Kann mit anderen Angeboten (außer none) kombiniert werden. Die Reihenfolge, in der die Angebote angewendet werden, ist jedoch nicht garantiert.
  • base: Das beste infrage kommende base-Angebot wird zuerst ausgewählt und angewendet. Vor allen anderen Angeboten. Früher hieß sie base_only.
  • second: Das am besten geeignete second-Angebot wird ausgewählt und nach einem base-Angebot (falls zutreffend) und vor dem any-Angebot ausgewählt und angewendet.
  • none: nicht mit anderen Angeboten kombinierbar.

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:

  • all: Das Angebot wird auf jede Übernachtung im Reiseplan angewendet, wenn sich alle Datumsangaben im Reiseplan mit den Aufenthaltsdaten überschneiden.
  • any: Das Angebot wird auf alle Übernachtungen im Reiseplan angewendet, wenn sich ein Datum im Reiseplan mit einem Datum im Aufenthaltszeitraum überschneidet.
  • overlap: Das Angebot wird nur auf die Übernachtungen im Reiseplan angewendet, die sich mit einem Datum im Aufenthaltszeitraum überschneiden.

Dieses Attribut muss immer angegeben werden.

  • Wenn <Discount> percentage angibt und application auf all oder any festgelegt ist, wird der Rabatt als Prozentsatz des vollen Aufenthalts angewendet.
  • Wenn <Discount> percentage angibt und application auf overlap gesetzt ist, wird der Rabatt als Prozentsatz der Übernachtungspreise für sich überschneidende Übernachtungen angewendet.
  • <Discount>, bei dem fixed_amount und application auf overlap festgelegt sind, ist eine ungültige Kombination.
  • <FreeNights> unterstützt alle application-Werte. Beachten Sie, dass bei overlap nur Übernachtungen, die sich überschneiden, bei den Rabattanforderungen berücksichtigt 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 start oder end ein Datum ohne Jahresangabe ist, müssen beide Werte als Datum ohne Jahresangabe angegeben werden.
  • Zeiträume ohne Jahre dürfen nicht um das neue Jahr gelegt werden. Stellen Sie den Zeitraum stattdessen als zwei nebeneinanderliegende Zeiträume dar. {"12-29", "01-05"} kann beispielsweise als {"12-29", "12-31"} und {"01-01", "01-05"} dargestellt werden.
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:

  • M für Montag
  • T für Dienstag
  • W für Mittwoch
  • H für Donnerstag
  • F für Freitag
  • S für Samstag
  • U für Sonntag

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 include und exclude.

Wenn für „UserCountry“ type der Wert include festgelegt ist, gilt das Angebot für Nutzer aus den aufgeführten Ländern.

Wenn der type der Nutzerländer exclude ist, gilt das Angebot für Nutzer außerhalb der aufgeführten Länder.

Wenn „UserCountry“ (type) nicht konfiguriert ist, wird es als include behandelt und das Angebot auf Nutzer aus den aufgeführten Ländern angewendet.

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 <Success> oder <Issues> ist in jeder Nachricht enthalten.

PromotionsResponse / Issues 0..1 Issues Ein Container für ein oder mehrere Probleme, die bei der Verarbeitung der Nachricht „Angebote“ aufgetreten sind.

Entweder <Success> oder <Issues> ist in jeder Nachricht enthalten.

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 warning, error und failure.

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>