Werbung

Ü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 Ratenanpassungen unterstützt, mit denen der Preis bei Erfüllung bestimmter Bedingungen erhöht oder gesenkt werden kann, sollten Sie sich unsere Rate Modifications API ansehen. Wenn beide APIs vorhanden sind, werden Ratenä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 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 höchsten 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> im Hotellistenfeed angegeben wird. Die Hotel-ID ist auch im Hotel Center aufgeführt.
Promotions / HotelPromotions / @action 0..1 enum

Falls angegeben, muss der Wert "overlay" sein. Wenn der Wert "overlay" ist, werden alle gespeicherten Angebote gelöscht, bevor die in der aktuellen Nachricht angegebenen Angebote gespeichert werden.

Falls nicht angegeben, bestehen für jedes in der aktuellen Nachricht angegebene Angebot folgende Möglichkeiten:

  • Added (wenn keines der gespeicherten Angebote dieselbe id hat)
  • Updated (wenn ein gespeichertes Angebot dieselbe id hat)
  • Deleted (wenn ein gespeichertes Angebot die gleiche 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. Wenn action="overlay" und <Promotion> nicht angegeben sind, werden alle Angebote für die Unterkunft 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

Falls angegeben, muss der Wert delete sein. Falls dieser Wert nicht angegeben ist und ein Angebot mit derselben id nicht gespeichert wird, wird dieses Angebot gespeichert. Falls dieser Wert nicht angegeben ist 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 Sie delete verwenden, sollten Sie keine untergeordneten Elemente in <Promotion> einbeziehen. 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 Zeiträume, die definieren, 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 die Startzeit (basierend auf der Zeitzone der Unterkunft) des Zeitraums.

  • Das von start angegebene Datum oder die angegebene Datums-/Uhrzeitangabe muss vor dem (oder gleich dem) von end angegebenen Datum oder der angegebenen Datums-/Uhrzeitangabe liegen.
  • Wird start nicht angegeben, ist der Zeitraum in Bezug auf die Startzeit prinzipiell unbegrenzt.
  • Wenn start als Datum „JJJJ-MM-TT“ angegeben wird, wird es als Datum/Uhrzeit „JJJJ-MM-TT00:00:00“ interpretiert.
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @end 0..1 Date oder DateTime

Das einschließliche Enddatum oder die End-Datetime (basierend auf der Zeitzone der Unterkunft) des Zeitraums.

  • Das durch end angegebene Datum oder die angegebene Datetime muss nach dem durch start angegebenen Datum oder der angegebenen Datetime liegen oder mit diesem übereinstimmen.
  • Wird end nicht angegeben, ist der Zeitraum in Bezug auf die Endzeit nahezu unbegrenzt.
  • Wenn end als Datum „JJJJ-MM-TT“ angegeben wird, wird es als „JJJJ-MM-TT23:59:59“ interpretiert.
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.

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 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 Der Mindestzeitraum vor dem Check-in, innerhalb dessen eine Buchung erfolgen muss, damit das Angebot angewendet wird. Falls nicht angegeben oder der Wert 0 ist, gibt es keine Mindestanzahl.

Folgende Werttypen sind gültig:

  • Ganzzahl: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.
  • Dauer nach ISO 8601 (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 erfolgen. Der Wert P30DT6H erfordert eine Buchung am oder vor 18:00 Uhr am 30. Tag vor der Ankunft.
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. Falls nicht angegeben oder der Wert 0 ist, gibt es keine maximale Anzahl.

Folgende Werttypen sind gültig:

  • Ganzzahl:Anzahl der Tage vor dem Check-in-Datum. Der Wert 30 gibt beispielsweise an, dass das Angebot nur für Buchungen gilt, die maximal 30 Tage vor dem Check-in-Datum erfolgen.
  • Dauer nach ISO 8601 (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 erfolgen. Der Wert P30DT6H erfordert eine Buchung am 30. Tag vor der Ankunft ab 18:00 Uhr.
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.

Für Angebote muss immer ein <Discount> oder ein <BestDailyDiscount> angegeben werden. Wenn Sie also ein Angebot erstellen möchten, bei dem nur ein <Ceiling> angewendet wird, können Sie ein <Discount> mit einem percentage von 0 festlegen.

Wenn das Kombinieren von Angeboten konfiguriert ist, können mehrere Angebote mit <Ceiling> auf einen einzelnen Aufenthalt angewendet werden. Bei jedem Angebot wird zuerst der Rabatt und dann die Obergrenze angewendet. Das folgende Beispiel zeigt, wie sich die einzelnen Obergrenzen auf die nächste Angebotsberechnung im Stapel auswirken.

Beispiel:

Berechnung des Preises für eine Übernachtung, wobei AmountBeforeTax 100 ist und zwei Angebote kombiniert werden:

  1. Werbeaktion mit dem Stacking-Typ base, einem fixed_amount von 25 und einem Höchstbetrag von amount_per_night von 60
  2. Angebot mit dem Stacking-Typ second, fixed_amount von 25 und einer Obergrenze von amount_per_night = 90

So wird der Wert berechnet:

  1. Die base-Aktion wird zuerst angewendet und reduziert die AmountBeforeTax auf 75. Dann wird die Obergrenze auf 60 gesenkt.
  2. Durch das Angebot second wird der Preis für AmountBeforeTax von 60 € auf 35 € gesenkt. Das liegt unter der Obergrenze von 90, daher wird die zweite Obergrenze nicht angewendet. Der endgültige Preis beträgt 35.

Die Tatsache, dass 60 eine strengere Obergrenze ist, ist irrelevant, da sie nur für das eigene Angebot gilt und es keine einzelne Obergrenze geben kann, die den gesamten Angebotsstapel umfasst.

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

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

Promotions / HotelPromotions / Promotion / Floor 0..1 Floor

Definiert Einschränkungen für den Mindestwert, auf den ein Preis nach Anwendung von Angeboten festgelegt werden kann.

Für Angebote muss immer ein <Discount> oder ein <BestDailyDiscount> angegeben werden. Wenn Sie also ein Angebot erstellen möchten, bei dem nur ein <Floor> angewendet wird, können Sie ein <Discount> mit einem percentage von 0 festlegen.

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

Wenn das Kombinieren von Angeboten konfiguriert ist, können mehrere Angebote mit <Floor> auf einen einzelnen Aufenthalt angewendet werden. Bei jedem Angebot wird zuerst der Rabatt und dann der Mindestpreis angewendet. Das folgende Beispiel zeigt, wie jeder Floor zur nächsten Angebotsberechnung im Stapel beiträgt.

Beispiel:

Berechnung des Preises für eine Übernachtung, wobei AmountBeforeTax 100 ist und zwei Angebote kombiniert werden:

  1. Angebot mit dem Stacking-Typ base, einem fixed_amount von 25 und einem Mindestwert amount_per_night von 90
  2. Angebot mit dem Stacking-Typ second, fixed_amount = 25 und einem Mindestbetrag amount_per_night = 60

So wird der Wert berechnet:

  1. Die base-Werbeaktion wird zuerst angewendet und reduziert die AmountBeforeTax auf 75. Der Mindestpreis erhöht sie dann aber auf 90.
  2. Durch das Angebot second wird der Preis für AmountBeforeTax von 90 auf 65 € gesenkt. Das liegt über dem Mindestwert von 60, daher wird der zweite Mindestwert nicht angewendet. Die endgültige Rate ist 65.

Dass 90 € ein strengerer Mindestumsatz ist, ist irrelevant, da er nur für die eigene Promotion gilt und es keinen einzelnen Mindestumsatz geben kann, der den gesamten Promotions-Stack umfasst.

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 wird, muss es auf einen Wert kleiner oder gleich dem Attribut amount_per_night in <Ceiling> festgelegt werden.

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

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.

  • Wenn es sich bei start oder end um ein Datum ohne Jahresangabe handelt, müssen beide als Datum ohne Jahresangabe ausgefüllt werden.
  • Zeiträume ohne Jahresangabe dürfen sich nicht über das neue Jahr erstrecken. Stellen Sie den Bereich stattdessen als zwei angrenzende 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 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.

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 es sich bei start oder end um ein Datum ohne Jahresangabe handelt, müssen beide als Datum ohne Jahresangabe ausgefüllt werden.
  • Zeiträume ohne Jahresangabe dürfen sich nicht über das neue Jahr erstrecken. Stellen Sie den Bereich stattdessen als zwei angrenzende 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 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.

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 beliebigen Geräten der ermäßigte Preis angeboten.
Promotions / HotelPromotions / Promotion / Devices / Device 1..3 Device Gibt einen Typ des Nutzergeräts an, 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 eines von Discount oder BestDailyDiscount 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 eine der folgenden Optionen erforderlich: percentage, percentage_of_base, fixed_amount, fixed_amount_per_night, fixed_price oder fixed_price_per_night.

Dezimalwert von 0 bis 100, der den Rabatt in Prozent angibt. Er wird auf AmountAfterTax angewendet (oder AmountBeforeTax, wenn AmountAfterTax nicht angegeben ist).

Beispiele:

  • Wenn AmountAfterTax 100 und percentage 20 ist:

    Angebotspreis = AmountAfterTax * (1 - Rabatt in %)

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

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

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

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

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

Es ist genau eine der folgenden Optionen erforderlich: percentage, percentage_of_base, fixed_amount, fixed_amount_per_night, fixed_price oder fixed_price_per_night.

Dezimalwert von 0 bis 100, der den Rabatt in Prozent angibt. Ähnlich wie percentage wird er auf AmountAfterTax angewendet (oder AmountBeforeTax, wenn AmountAfterTax nicht angegeben ist).

Im Gegensatz zu percentage wird dieser Rabatt immer als Prozentsatz der Basisraten berechnet, unabhängig von vorherigen Angeboten, die nacheinander angewendet wurden.

Beispiel:

  • Angenommen, zwei Angebote werden nacheinander auf eine Übernachtung angewendet, die 100 kostet. Der erste ist ein regulärer Rabatt von 10 % und der zweite ein Rabatt von 10% des Basispreises. Der Rabattpreis beträgt dann 80, da bei beiden Angeboten 10 € abgezogen werden. Wenn das zweite Angebot ebenfalls ein regulärer prozentualer Rabatt wäre, würde der Rabattpreis 81 betragen, da beim zweiten Angebot 10% von 90 € abgezogen werden.
Promotions / HotelPromotions / Promotion / Discount / @fixed_amount 0..1 float

Es ist genau eine der folgenden Optionen erforderlich: percentage, percentage_of_base, 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 + Steuer in %)

    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) * Steuer

    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

Es ist genau eine der folgenden Optionen erforderlich: percentage, percentage_of_base, fixed_amount, fixed_amount_per_night, fixed_price oder fixed_price_per_night.

Ein fester Rabatt, der auf jeden AmountAfterTax-Übernachtungspreis angewendet wird (oder den günstigsten N, wenn applied_nights angegeben wird). Wenn AmountAfterTax nicht angegeben ist, wird sie 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 der Ü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

Es ist genau eine der folgenden Optionen erforderlich: percentage, percentage_of_base, fixed_amount, fixed_amount_per_night, fixed_price oder fixed_price_per_night.

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

Wenn AmountAfterTax eine prozentuale Steuer widerspiegeln soll, kann die Festlegung eines Festpreises für AmountBeforeTax zu ungenauen Steuern und Gebühren führen. Im Allgemeinen wird dringend empfohlen, TaxFeeInfo zu verwenden, um Steuern und Gebühren für eine Unterkunft anzugeben.

Beispiele:

  • Berechnung des Preises für eine Übernachtung, wobei AmountBeforeTax 90, AmountAfterTax 100 und fixed_price 80 ist:
  • 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 + Steuer in %)

    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

Es ist genau eine der folgenden Optionen erforderlich: percentage, percentage_of_base, fixed_amount, fixed_amount_per_night, fixed_price oder fixed_price_per_night.

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

Wenn AmountAfterTax eine prozentuale Steuer widerspiegeln soll, kann die Festlegung eines Festpreises für AmountBeforeTax zu ungenauen Steuern und Gebühren führen. Im Allgemeinen wird dringend empfohlen, TaxFeeInfo zu verwenden, um Steuern und Gebühren für eine Unterkunft anzugeben.

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

Beispiele:

  • Berechnung des Preises für zwei Übernachtungen, wobei die AmountBeforeTax-Werte 90, 90 sind, die AmountAfterTax-Werte 100, 100 sind und fixed_price 80 ist: Der Angebotsrate beträgt 80 + 80 = 160.
  • Berechnung des Preises für zwei Übernachtungen, wobei AmountBeforeTax 100, 100 ist, fixed_amount 80 ist und TaxFeeInfo eine Steuer von 8 % angibt: Der Aktionspreis ist (80 + 80) * 1,08 = 172,8.
  • Berechnung des Preises für drei Übernachtungen, wobei die AmountAfterTax-Werte 100, 110 und 120 sind und fixed_amount 110 ist: Der Aktionspreis beträgt 110 * 3 = 330.
Promotions / HotelPromotions / Promotion / Discount / @applied_nights 0..1 integer

Dieser Wert 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. Falls nicht angegeben, wird der Rabatt auf alle Übernachtungen angewendet.

Promotions / HotelPromotions / Promotion / Discount / FreeNights 0..1 FreeNights Gibt einen Rabatt für bestimmte Nächte eines Aufenthalts an, wenn eine Mindestaufenthaltsdauer erreicht wird. Attribute für das übergeordnete Discount-Element 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 werden kann. Jeder Rabatt wird auf ein separates Segment von Übernachtungen angewendet.

Beispiel: Bei einem Aufenthalt von 10 Nächten, bei dem stay_nights = 4 (und repeats = true) ist, gibt es zwei Segmente für die Aufenthaltsnächte: die 1. bis 4. Nacht und die 5. bis 8. Nacht. Die 9. und 10. Nacht sind nicht Teil eines Segments für die Aufenthaltsnächte.

Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_nights 1 integer Die Anzahl der Nächte mit Rabatt in jedem Segment der Aufenthaltsnächte.
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_percentage 1 float Der Rabatt, der auf die Rabattnächte angewendet wird. Wenn dieser Wert 50 ist, erhalten Sie 50% Rabatt auf jede ausgewählte Übernachtung.
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @night_selection 1 string Muss entweder cheapest oder last sein. Falls last, werden die Nächte am Ende des Aufenthaltssegments mit Übernachtungen rabattiert. Falls cheapest, werden die günstigsten Nächte innerhalb des Segments der Aufenthaltsnächte rabattiert.
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @repeats 1 boolean

Gibt an, ob der Rabatt auf mehrere Segmente von Übernachtungen angewendet werden kann. Wenn false, wird nur das Segment der Übernachtungen am Anfang des Reiseplans rabattiert. Falls true, wird jedes Segment von Übernachtungen rabattiert.

Wenn stay_nights beispielsweise 4 und die Reiseroute 10 Übernachtungen umfasst und repeats true ist, werden 2 Segmente rabattiert (Übernachtungen 1 bis 4 und Übernachtungen 5 bis 8). Wenn repeats false ist, wird nur 1 Segment rabattiert (Übernachtungen 1 bis 4).

Promotions / HotelPromotions / Promotion / Discount / @rank 0..1 integer Weist diesem Angebot einen Rang zu und aktiviert die Auswahl nach Rang. In diesem Fall wird nur das Angebot mit dem niedrigsten Rang ausgewählt. 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 eines von Discount oder BestDailyDiscount angegeben werden.

Gibt einen täglichen Rabatt an, der auf eine Übernachtung angewendet werden kann. Das ist anders als bei Discount, wo Rabatte auf den gesamten Aufenthalt angewendet werden.

Für jede Property kann es nur eine Gruppe von Angeboten geben, die als „Tagesbestes“ gelten. Das bedeutet, dass für jede Übernachtung das einzelne „beste Tagesangebot“ ausgewählt und angewendet wird, das infrage kommt und den höchsten Rabatt für diese Nacht bietet.

Stacking kann mit BestDailyDiscount angegeben werden. Es muss entweder auf base oder none gesetzt sein. Die „Best Daily“-Rabatte, die den höchsten Rabatt für jede Nacht ergeben, werden kombiniert und als einzelner Rabatt für den Aufenthalt (d.h. Discount) behandelt, wobei der konfigurierte Stacking-Typ berücksichtigt wird. Dieser kombinierte Rabatt wird mit anderen infrage kommenden <Discount>-Angeboten verglichen und kann mit ihnen kombiniert werden, um den höchsten Rabatt zu erzielen. Entweder die Kombination aus BestDailyDiscount oder ein einzelner Discount-Rabatt wird ausgewählt und für den Stacking-Typ base angewendet, je nachdem, welcher Preis niedriger ist.

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

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

Es muss genau einer der Werte percentage, fixed_amount oder fixed_price angegeben werden.

Dezimalwert von 0 bis 100, der den Rabatt in Prozent angibt. Er wird auf AmountAfterTax angewendet (oder AmountBeforeTax, wenn AmountAfterTax nicht angegeben ist).

Beispiele:

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

    Angebotspreis = AmountAfterTax * (1 - Rabatt in %)

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

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

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

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

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

Es muss genau ein Wert von percentage, fixed_amount oder fixed_price angegeben werden.

Festbetrag, der von einem einzelnen AmountAfterTax-Übernachtungspreis subtrahiert wird (bzw. dem 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 Übernachtung 90 ist, AmountAfterTax 100 ist und fixed_amount 20 ist:

    Angebotspreis = AmountAfterTax – fester Rabatt

    80,00 = 100 – 20

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

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

    86,40 = (100 – 20) × 1,08

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

Es muss genau einer der Werte percentage, fixed_amount oder fixed_price angegeben werden.

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

Beispiele:

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

    Angebotspreis = Festpreis * (1 + Steuer in %)

    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 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 Mitgliedschaftspreise, 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

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 Belegungen, für die dieses Angebot angewendet wird. Das Angebot wird nicht angewendet, wenn die Belegung außerhalb der Mindest- und Höchstwerte liegt.

Angebote gelten für den Preis der Fahrstrecke. Es ist nicht möglich, einen maximalen Rabatt pro Person festzulegen.

Promotions / HotelPromotions / Promotion / Occupancy / @min 0..1 integer Die vom Nutzer angegebene Belegung muss mindestens diesen Wert erreichen, damit der Rabatt angewendet wird.
Promotions / HotelPromotions / Promotion / Occupancy / @max 0..1 integer Die vom Nutzer angegebene Belegung darf höchstens diesen Wert haben, 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, 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:

  • any: Kann mit beliebigen anderen Angeboten kombiniert werden (außer none). Die Reihenfolge, in der die Angebote angewendet werden, wird jedoch nicht garantiert.
  • base: Das beste berechtigte base-Angebot wird vor anderen Angeboten ausgewählt und angewendet. Diese Funktion hieß früher base_only.
  • second: Das beste infrage kommende second-Angebot wird nach einem base-Angebot (falls zutreffend) und vor any-Angeboten ausgewählt und angewendet.
  • none: Nicht mit anderen Angeboten kombinierbar.

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:

  • all: Das Angebot wird auf jede Übernachtung im Reiseplan angewendet, wenn alle Datumsangaben im Reiseplan sich mit den Aufenthaltsdaten überschneiden.
  • any: Das Angebot gilt für alle Übernachtungen im Reiseplan, wenn sich ein beliebiges 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 vollständigen Aufenthalts angewendet.
  • Wenn <Discount> den Wert percentage angibt und application auf overlap festgelegt 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. Bei overlap werden für die Rabattanforderungen nur sich überschneidende Übernachtungen berücksichtigt.
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 es sich bei start oder end um ein Datum ohne Jahresangabe handelt, müssen beide als Datum ohne Jahresangabe ausgefüllt werden.
  • Zeiträume ohne Jahresangabe dürfen sich nicht über das neue Jahr erstrecken. Stellen Sie den Bereich stattdessen als zwei angrenzende Zeiträume dar. {"12-29", "01-05"} kann beispielsweise als {"12-29", "12-31"} und {"01-01", "01-05"} dargestellt werden.

Wenn Sie den StayDates-Bereich so festlegen möchten, dass das Angebot an bestimmten Wochentagen verfügbar ist, sollten Sie das start-Datum als aktuelles Datum ohne end festlegen, damit das Angebot nicht abläuft.

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 start angeben, wenn der Wert end nicht angegeben ist.

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-Datum prinzipiell unbegrenzt.

Sie sollten den Wert end angeben, wenn der Wert start nicht angegeben ist.

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.

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 UserCountries type auf include gesetzt ist, gilt das Angebot für Nutzer aus den aufgeführten Ländern.

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

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

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 Werbeangebote zulässig. Im Beispiel unter „Ein Angebot löschen“ wird gezeigt, wie Angebote für eine Unterkunft entfernt werden.

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 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 Stacking-Typen

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 Sonderangebotspreis 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>


Kein Stacking-Typ

Im folgenden Beispiel wird das Angebot none verwendet, da die Kombination anderer Angebote einen geringeren Rabatt bietet. Wenn der ursprüngliche Preis 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>



Grenzwerte für die Dauer des Reservierungszeitraums

Das folgende Beispiel zeigt einen Fall, in dem das BookingWindow-Element mit seinen Start- und Endgrenzen verwendet wird, die als ISO 8601-Dauer definiert sind. Diese Einschränkung des Buchungszeitraums erfordert eine Buchung am Tag vor der Ankunft bis 18:00 Uhr und am zweiten Tag vor der Ankunft ab 12:00 Uhr.

<?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>


Booking Dates DateTime Bounds

Im folgenden Beispiel wird das Element BookingDates mit den Attributen start und end als DateTime-Typen verwendet. Diese Einschränkung des Buchungsdatums erfordert, dass die Buchung zwischen dem 01.07.2020 um 06:30 Uhr und dem 02.07.2020 um 18:45 Uhr erfolgt.

<?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 Element CheckInDates DateRanges mit den Feldern start und end ohne Jahresangaben. In diesem Beispiel gilt das Angebot für Check-in-Daten zwischen dem 29.12. und dem 2.1., unabhängig vom Jahr. Zeiträume ohne Jahresangabe, die die Jahresgrenze überschreiten, sind ungültig. Daher wird der DateRange als zwei angrenzende 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>



Rabatt für kostenlose Nächte

Im folgenden Beispiel werden zwei Nächte für jeweils vier Nächte, die im angegebenen Zeitraum gebucht wurden, um 50% reduziert. Bei einem Reiseplan mit zehn Übernachtungen würden insgesamt vier Übernachtungen mit 50 % Rabatt angeboten.

<?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 wird eine Übernachtung um 50% reduziert, wenn der Gast drei Nächte im angegebenen Zeitraum übernachtet. Nur die sich überschneidenden Übernachtungen des Aufenthalts werden für den Rabatt berücksichtigt. Für die folgende Reiseroute mit Check-in am 01.01.2022 und Check-out am 07.01.2022 werden die berechtigten Übernachtungen und Rabatte wie folgt angewendet.

  • 2022-01-01 (Aufenthalt)
  • 02.01.2022 (Aufenthalt)
  • 2022-01-03
  • 04.01.2022 (mit Rabatt)
  • 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>


Auswahl nach Rang

Im folgenden Beispiel werden zwei Rabatte angeboten: einer mit 20% Rabatt und einer mit 15% Rabatt. Bei der Auswertung 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 Nächten rabattiert, indem BestDailyDiscount in Kombination mit einem Discount 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>

Angenommen, Sie möchten vom 30. April 2023 bis zum 2. Mai 2023 zwei Nächte bleiben. Für die Berechnung wird zuerst die Kombination der besten Tagesrabatte ermittelt, die den höchsten Rabatt ergibt.

Für die erste Nacht ist nur das „allgemeine“ Angebot mit einem festen Rabatt von 20 € verfügbar.

In der zweiten Nacht bietet das Angebot „may“ einen höheren Rabatt als der „general“-Rabatt. Wenn „may“ ausgewählt ist, beträgt der feste Rabattbetrag 50.

Für den Aufenthalt wird der Rabatt aus dem Angebot „Fiesta“ auf 5 € pro Nacht oder insgesamt 10 € angewendet. Er kann mit der Kombination der besten Tagesrabatte kombiniert werden, da für „Fiesta“ der Stacking-Typ auf any festgelegt ist. Wenn sie auf base festgelegt wäre, würde nur die Kombination aus den besten Tagesrabatten oder dem „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 „Promotions“ 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 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 warning, error und failure.

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 wird.

<?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>