Werbung

Übersicht

Mit dieser API können Sie mögliche Rabatte angeben. Von den angegebenen Angeboten wendet Google das entsprechende Angebot oder die Gruppe von Angeboten an, die zum niedrigsten Preis führen. Wenn Sie nach einer API suchen, die beliebige Ratenanpassungen unterstützt, mit denen der Preis bei Erfüllung der Bedingungen entweder erhöht oder gesenkt werden kann, sollten Sie unsere Rate Modifications API in Betracht ziehen. Wenn beide APIs vorhanden sind, werden Preisänderungen vor Hochstufungen angewendet.

Anfragen

Syntax

Die Promotions-Nachricht 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 / @Attribute Häufigkeit Typ Beschreibung
Promotions 1 Complex element Das Stammelement einer Nachricht „Angebote“.
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 du ein Back-End hast, das Feeds für mehrere Konten bereitstellt, muss dieser Wert mit dem Attributwert ID übereinstimmen, der im Element <RequestorID> der Nachrichten <OTA_HotelRateAmountNotifRQ> und <OTA_HotelAvailNotifRQ> für dasselbe Konto angegeben ist.

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> im Hotellistenfeed angegeben wird. Die Hotel-ID ist auch im Hotel Center aufgeführt.
Promotions / HotelPromotions / @action 0..1 enum

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

Wenn nicht angegeben, ist jedes in der aktuellen Nachricht angegebene Angebot entweder:

  • Added (wenn keines der gespeicherten Angebote dasselbe id hat)
  • Updated (wenn ein gespeichertes Angebot dieselbe id hat)
  • Deleted (wenn ein gespeichertes Angebot denselben id-Wert hat und der Wert des action-Attributs 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 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

Wenn angegeben, muss der Wert delete sein. Wenn nicht angegeben und ein Angebot mit derselben id nicht 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, solltest du in <Promotion> keine untergeordneten Elemente einfügen. 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 wird.
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 das Datum (einschließlich) des Bereichs (basierend auf der Zeitzone der Unterkunft).

  • Das durch start angegebene Datum oder der Datum/Uhrzeit muss vor dem in end angegebenen Datum oder Datum/Uhrzeit liegen oder diesem entsprechen.
  • Wenn start nicht angegeben ist, 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/Uhrzeit „JJJJ-MM-TTT00:00:00“ interpretiert.
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @end 0..1 Date oder DateTime

Das Enddatum oder das Datum (einschließlich) des Bereichs (basierend auf der Zeitzone der Unterkunft).

  • Das durch end angegebene Datum oder der Datum/Uhrzeit muss nach dem in start angegebenen Datum oder Datum/Uhrzeit liegen oder diesem entsprechen.
  • Wenn end nicht angegeben ist, ist der Bereich in Bezug auf die Endzeit 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. Beispiel: „MTWHF“ gibt an, dass Wochentage im Zeitraum zulässig sind.

Folgende Zeichen sind zulässig:

  • 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). Der Reservierungszeitraum kann beispielsweise auf einen Zeitraum von mindestens 7 Tagen, 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, ab der eine Buchung erfolgen muss, damit das Angebot angewendet wird. Wenn dies nicht angegeben ist oder der Wert 0 ist, gibt es keine Mindestanzahl.

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 mindestens 30 Tage vor dem Anreisedatum gilt.
  • Dauer nach ISO 8601 (Tage, Stunden und Minuten): Die Anzahl der Tage (und optional Stunden/Minuten) vor dem Check-in-Datum. Ein Wert von P30D gibt beispielsweise an, dass das Angebot nur für Buchungen gilt, die mindestens 30 Tage vor dem Anreisedatum erfolgen. Bei einem Wert von P30DT6H ist eine Buchung am 30. Tag vor der Ankunft um 18:00 Uhr erforderlich.
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 dies nicht angegeben ist oder der 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 von höchstens 30 Tagen vor dem Anreisedatum gilt.
  • 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 von höchstens 30 Tagen vor dem Anreisedatum gilt. Bei einem Wert von P30DT6H ist eine Buchung ab 18:00 Uhr am 30. Tag vor der Ankunft erforderlich.
Promotions / HotelPromotions / Promotion / Ceiling 0..1 Ceiling

Definiert Einschränkungen für den Maximalwert, den ein Preis festlegen kann, nachdem Angebote angewendet wurden.

Angebote müssen immer eine <Discount> oder <BestDailyDiscount> angeben. Wenn Sie also ein Angebot erstellen möchten, das nur <Ceiling> anwendet, besteht eine Möglichkeit darin, ein <Discount> mit einem percentage von 0 festzulegen.

Wenn das Stapeln konfiguriert ist, können mehrere Angebote mit <Ceiling> auf einen einzelnen Aufenthalt angewendet werden. Auf jedes Angebot wird der Rabatt angewendet, unmittelbar gefolgt vom Höchstwert. Das folgende Beispiel zeigt, wie jede Obergrenze zur nächsten Berechnung der Werbeaktion im Stapel beiträgt.

Beispiel:

Preise für eine Übernachtung, wobei AmountBeforeTax 100 beträgt und es zwei Angebote gibt:

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

Gehen Sie bei der Berechnung folgendermaßen vor:

  1. Das Angebot base wird zuerst angewendet und AmountBeforeTax wird auf 75 reduziert, aber dann wird es auf 60 gesenkt.
  2. Das Angebot second senkt den AmountBeforeTax von 60 auf 35. Dies liegt unterhalb der Höchstgrenze von 90, sodass die zweite Obergrenze nicht angewendet wird. Der endgültige Preis beträgt 35.

Die Tatsache, dass 60 insgesamt eine höhere Obergrenze sind, ist irrelevant, da sie nur für eigene Angebote gilt und es keine 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 festgelegt werden kann, nachdem der Rabatt angewendet wurde.

Wenn auch ein <Floor>-Element angegeben ist, muss dieses auf einen Wert festgelegt werden, der größer oder gleich dem amount_per_night-Attribut in <Floor> ist.

amount_per_night wird auf Steuern und Gebühren angewendet, wenn diese mit AmountAfterTax im Übernachtungspreis enthalten sind. Die mit TaxFeeInfo angegebenen Steuern und Gebühren werden nicht berücksichtigt.

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

Definiert Einschränkungen für den Mindestwert, der für einen Preis festgelegt werden kann, nachdem Angebote angewendet wurden.

Angebote müssen immer eine <Discount> oder <BestDailyDiscount> angeben. Wenn Sie also ein Angebot erstellen möchten, das nur <Floor> anwendet, besteht eine Möglichkeit darin, ein <Discount> mit einem percentage von 0 festzulegen.

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

Wenn das Stapeln konfiguriert ist, können mehrere Angebote mit <Floor> auf einen einzelnen Aufenthalt angewendet werden. Auf jede Werbeaktion wird der Rabatt angewendet, unmittelbar gefolgt vom Mindestpreis. Das folgende Beispiel zeigt, wie jeder Mindestpreis zur nächsten Berechnung im Stapel beiträgt.

Beispiel:

Preise für eine Übernachtung, wobei AmountBeforeTax 100 beträgt und es zwei Angebote gibt:

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

Gehen Sie bei der Berechnung folgendermaßen vor:

  1. Das Angebot base wird zuerst angewendet und AmountBeforeTax wird auf 75 reduziert, aber dann wird es durch den Mindestpreis auf 90 erhöht.
  2. Das Angebot second senkt den AmountBeforeTax von 90 auf 65. Dieser liegt über dem Mindestbetrag von 60, sodass der zweite Stock nicht angewendet wird. Der endgültige Preis beträgt 65.

Die Tatsache, dass 90 insgesamt ein strengerer Mindestpreis sind, ist irrelevant, da er nur für eigene Angebote gilt und es keinen einzelnen Mindestpreis geben kann, der sich über den gesamten Angebotspaket erstreckt.

Promotions / HotelPromotions / Promotion / Floor / @amount_per_night 1 float

Der Mindestbetrag, auf den ein Übernachtungspreis festgelegt werden kann, nachdem der Rabatt angewendet wurde.

Wenn auch ein <Ceiling>-Element angegeben ist, muss dieses auf einen Wert festgelegt werden, der kleiner oder gleich dem amount_per_night-Attribut in <Ceiling> ist.

amount_per_night wird auf Steuern und Gebühren angewendet, wenn diese mit AmountAfterTax im Übernachtungspreis enthalten sind. Die mit TaxFeeInfo angegebenen Steuern und Gebühren werden nicht berücksichtigt.

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 start oder end ein Datum ohne Jahresangabe ist, müssen beide als Datumsangaben ohne Jahresangabe ausgefüllt werden.
  • Zeiträume ohne Jahresangabe dürfen nicht um das neue Jahr herum umlaufen. Stellen Sie den Bereich stattdessen als zwei benachbarte 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ßende Startdatum des Zeitraums (basierend auf der Zeitzone der Unterkunft). Dieses Datum muss vor dem Datum end liegen oder mit diesem übereinstimmen. Wenn start nicht angegeben ist, ist der Zeitraum in Bezug auf das Startdatum praktisch unbegrenzt.
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @end 0..1 Date or YearlessDate Das eingeschlossene Enddatum des Zeitraums (basierend auf der Zeitzone der Unterkunft). Dieses Datum muss mit dem Datum start übereinstimmen oder danach liegen. Wenn end nicht angegeben ist, 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. Beispiel: „MTWHF“ gibt an, dass Wochentage im Zeitraum zulässig sind.

Folgende Zeichen sind zulässig:

  • 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 möchten.

Das Format YearlessDate wird ebenfalls unterstützt.

  • Wenn start oder end ein Datum ohne Jahresangabe ist, müssen beide als Datumsangaben ohne Jahresangabe ausgefüllt werden.
  • Zeiträume ohne Jahresangabe dürfen nicht um das neue Jahr herum umlaufen. Stellen Sie den Bereich stattdessen als zwei benachbarte 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ßende Startdatum des Zeitraums (basierend auf der Zeitzone der Unterkunft). Dieses Datum muss vor dem Datum end liegen oder mit diesem übereinstimmen. Wenn start nicht angegeben ist, ist der Zeitraum in Bezug auf das Startdatum praktisch unbegrenzt.
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @end 0..1 Date or YearlessDate Das eingeschlossene Enddatum des Zeitraums (basierend auf der Zeitzone der Unterkunft). Dieses Datum muss mit dem Datum start übereinstimmen oder danach liegen. Wenn end nicht angegeben ist, 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. Beispiel: „MTWHF“ gibt an, dass Wochentage im Zeitraum zulässig sind.

Folgende Zeichen sind zulässig:

  • 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 des Nutzergeräts, für den das Angebot gilt.
Promotions / HotelPromotions / Promotion / Devices / Device / @type 1 enum Ein Gerätetyp. Der Wert muss desktop, tablet oder mobile sein.
Promotions / HotelPromotions / Promotion / Discount 1 Discount

Es muss genau entweder 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

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

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

Beispiele:

  • Wenn AmountAfterTax 100 und percentage 20 ist:

    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, dann:

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

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

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

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

Ein fester Betrag, der von der Summe der AmountAfterTax-Übernachtungspreise abgezogen 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 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, 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, fixed_amount 60 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 Attribute ist percentage, fixed_amount, fixed_amount_per_night, fixed_price oder fixed_price_per_night erforderlich.

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 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 dieser Preis 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 Attribute ist percentage, fixed_amount, fixed_amount_per_night, fixed_price oder fixed_price_per_night erforderlich.

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

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

Beispiele:

  • Wenn wir einen Preis für eine Übernachtung berechnen, bei der AmountBeforeTax 90, AmountAfterTax 100 und fixed_price 80 ist, beträgt der Angebotspreis 80.
  • Berechnung des Preises für eine Übernachtung, wobei AmountBeforeTax 100, fixed_amount 80 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:

    Promotion-Rate = 300

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

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

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

Wenn AmountAfterTax einen prozentualen Steuersatz wiedergeben soll, kann das Festlegen eines Festpreises für AmountBeforeTax zu ungenauen Steuern und Gebühren führen. Generell 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 Übernachtungen angewendet.

Beispiele:

  • Wenn wir einen Preis für einen Aufenthalt mit zwei Übernachtungen berechnen, wobei die AmountBeforeTax-Werte 90 und 90, die AmountAfterTax-Werte 100 und 100 und für fixed_price 80 sind, dann ist die Angebotsrate 80 + 80 = 160.
  • Berechnung des Preises für einen Aufenthalt von zwei Übernachtungen, wobei AmountBeforeTax 100, 100 ist, fixed_amount 80 ist und TaxFeeInfo eine Steuer von 8 % angibt, beträgt der Angebotspreis (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, dann ist die Angebotsrate 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 nicht angegeben, wird der Rabatt auf alle Übernachtungen angewendet.

Promotions / HotelPromotions / Promotion / Discount / FreeNights 0..1 FreeNights Gibt einen Rabatt für bestimmte Übernachtungen eines Aufenthalts 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 Übernachtungen, für die der Rabatt angewendet wird. Jeder Rabatt wird auf ein separates Segment von Übernachtungen angewendet.

Für einen Aufenthalt mit 10 Nächten, bei dem stay_nights 4 ist (und repeats wahr ist), gibt es zwei Aufenthaltsübernachtungen: die 1. bis 4. Nächte und die 5. bis 8. Nächte. Die 9. und 10. Übernachtung sind nicht Teil eines Aufenthalts/Nachtsegments.

Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_nights 1 integer Die Anzahl der ermäßigten Übernachtungen in jedem Aufenthaltssegment.
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 für jede ausgewählte Übernachtung 50% Rabatt.
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @night_selection 1 string Muss entweder cheapest oder last sein. Bei last werden die Übernachtungen am Ende des Aufenthaltssegments rabattiert. Bei cheapest wird ein Rabatt auf die günstigsten Übernachtungen im Segment der Übernachtungen angewendet.
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @repeats 1 boolean

Gibt an, ob der Rabatt auf mehrere Segmente für Aufenthalte angewendet werden kann. Bei false wird nur für das Segment der Übernachtungen am Anfang des Reiseplans ein Rabatt gewährt. Bei true wird ein Rabatt für alle Aufenthaltssegmente gewährt.

Beispiel: Wenn stay_nights 4 ist und der Reiseplan 10 Nächte umfasst, dann wird, wenn repeats auf true gesetzt ist, ein Rabatt für 2 Segmente berechnet (Nächte 1–4 und 5–8 Nächte). Wenn repeats jedoch false ist, wird nur für 1 Segment ein Rabatt gewährt (1–4 Übernachtungen).

Promotions / HotelPromotions / Promotion / Discount / @rank 0..1 integer Weist dieser Werbeaktion einen Rang zu und nimmt eine Rangauswahl vor. Dabei wird nur das Angebot mit dem niedrigsten Rang angewendet. Werte müssen zwischen 1 und 99 (jeweils einschließlich) liegen. Wenn mehrere Angebote denselben Rang haben, wird eine willkürlich ausgewählt und angewendet.
Promotions / HotelPromotions / Promotion / BestDailyDiscount 1 Discount

Es muss genau entweder Discount oder BestDailyDiscount angegeben werden.

Gibt einen Tagesrabatt an, der für eine Übernachtung gilt. Das steht im Gegensatz zu Discount, bei dem Rabatte auf ganze Aufenthalte angewendet werden.

Für jede Unterkunft kann es eine einzelne Gruppe von Angeboten geben, die als „beste täglich“ eingestuft werden. Das bedeutet, dass für jede Übernachtung das „beste tägliche“ Angebot ausgewählt und angewendet werden kann, das den höchsten Rabatt für diese Nacht bietet.

Stacking darf nicht zusammen mit BestDailyDiscount angegeben werden. Die „besten Tagesrabatte“ mit dem größten Rabatt für jede Nacht werden kombiniert und als Rabatt für einen Einzelaufenthalt (Discount) behandelt, wobei der Stapeltyp auf base festgelegt ist. Dieser kombinierte Rabatt wird mit anderen infrage kommenden <Discount>-Angeboten verglichen und kann mit ihnen kombiniert werden, um diejenige oder Kombination zu finden, die den größten Rabatt bietet. Es wird entweder die Kombination aus BestDailyDiscount oder einer einzelnen Discount – je nachdem, welcher Preis niedriger ist – ausgewählt und für den Stapeltyp base angewendet.

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

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

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

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

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:

    Angebotspreis = AmountBeforeTax * (1 - Rabatt in Prozent) + 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 abgezogen wird (oder AmountBeforeTax-Nachtpreis, wenn AmountAfterTax nicht angegeben ist). Es wird davon ausgegangen, dass die Währung mit der Währung der Übernachtungspreise übereinstimmt. Wenn dieser 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:

    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:

    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 Sie AmountAfterTax-Übernachtungspreise angeben, wird damit der Preis für die Übernachtung, einschließlich Steuern und Gebühren, auf den angegebenen Wert festgelegt. Wenn AmountBeforeTax angegeben ist, unabhängig davon, ob AmountAfterTax angegeben ist oder nicht, wird der Preis vor Steuern für den Aufenthalt auf den angegebenen Wert festgelegt. 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:

    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 Übernachtungen angewendet, die die Einschränkung erfüllen. In Verbindung mit dem fixed_amount-Rabatt 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 werden kann. Wird kein Wert 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. Wird kein Wert angegeben, gibt es keine maximale Anzahl.
Promotions / HotelPromotions / Promotion / LengthOfStay 0..1 LengthOfStay Definiert die Längen der 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. Wird kein Wert 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 kein Wert angegeben, gibt es keine Obergrenze.
Promotions / HotelPromotions / Promotion / MembershipRateRule 0..1 MembershipRateRule

Container für eine Preisregel für die Mitgliedschaft, 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 Belegungen, 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 benutzerdefinierte Belegung muss mindestens dieser Wert betragen, damit der Rabatt angewendet wird.
Promotions / HotelPromotions / Promotion / Occupancy / @max 0..1 integer Die benutzerdefinierte Belegung darf höchstens diesen Wert betragen, damit der Rabatt angewendet werden kann.
Promotions / HotelPromotions / Promotion / RatePlans 0..1 RatePlans Container für eine Liste von Preisplänen, für die das Angebot gilt. Wenn <RatePlans> nicht angegeben ist, gilt das Angebot für alle Preispläne.
Promotions / HotelPromotions / Promotion / RatePlans / RatePlan 1..n RatePlan Gibt einen Preisplan an. Ein Preisplan wird durch eine Kombination aus Paket, Preisen und Verfügbarkeit definiert, wie in den Nachrichten Transaction (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 dem 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 mit seinem <RoomID>-Wert referenziert. (Sein <RoomID>-Wert wird in OTA_HotelRateAmountNotifRQ-Nachrichten auch vom Attribut InvTypeCode 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 für „type“ angenommen, dass es sich um base handelt.
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 jedem anderen Angebot (außer none) kombiniert werden. Es ist jedoch nicht garantiert, in welcher Reihenfolge die Angebote angewendet werden sollen.
  • base: Das beste geeignete base-Angebot wird ausgewählt und vor anderen Angeboten angewendet. Dies hieß zuvor base_only.
  • second: Das beste geeignete second-Angebot wird ausgewählt und nach einem base-Angebot (falls zutreffend) und vor any-Angeboten angewendet.
  • none: Nicht mit anderen Angeboten kombinierbar.

Von den zulässigen Kombinationen wird die Gruppe von Angeboten mit dem höchsten Rabatt 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 gesetzt ist, wird der Rabatt als Prozentsatz des gesamten Aufenthalts angewendet.
  • Wenn <Discount> percentage angibt und application auf overlap gesetzt ist, wird der Rabatt als Prozentsatz der Übernachtungspreise für sich überschneidende Nächte 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 überlappende Übernachtungen für die 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 als Datumsangaben ohne Jahresangabe ausgefüllt werden.
  • Zeiträume ohne Jahresangabe dürfen nicht um das neue Jahr herum umlaufen. Stellen Sie den Bereich stattdessen als zwei benachbarte 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ßende Startdatum des Zeitraums (basierend auf der Zeitzone der Unterkunft). Dieses Datum muss vor dem Datum end liegen oder mit diesem übereinstimmen. Wenn start nicht angegeben ist, ist der Zeitraum in Bezug auf das Startdatum praktisch unbegrenzt.
Promotions / HotelPromotions / Promotion / StayDates / DateRange / @end 0..1 Date or YearlessDate Das eingeschlossene Enddatum des Zeitraums (basierend auf der Zeitzone der Unterkunft). Dieses Datum muss mit dem Datum start übereinstimmen oder danach liegen. Wenn end nicht angegeben ist, 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. Beispiel: „MTWHF“ gibt an, dass Wochentage im Zeitraum zulässig sind.

Folgende Zeichen sind zulässig:

  • 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 UserLänder-Spezifikation.

Gültige Werte sind include und exclude.

Wenn das Feld „UserCountry“ type auf include gesetzt ist, gilt das Angebot für Nutzer aus den aufgeführten Ländern.

Wenn das Feld „UserCountry“ type auf exclude gesetzt ist, gilt das Angebot für Nutzer außerhalb der aufgeführten Länder.

Wenn das Feld „UserCountry“ type nicht konfiguriert ist, wird es als include behandelt und das Angebot gilt für Nutzer aus den aufgeführten Ländern.

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 wie DE oder FR. Hinweis: Bei einigen Ländern ist der CLDR-Ländercode nicht mit dem aus zwei Buchstaben bestehenden ISO-Ländercode identisch. 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 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 Sie ein Angebot für eine Unterkunft löschen:

<?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 sehen Sie, 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 sehen Sie, wie <HotelPromotions> für eine Unterkunft mit einem oder mehreren neuen Angeboten überlagert wird. Bei action="overlay" werden alle gespeicherten Angebote gelöscht, bevor die in der aktuellen Nachricht angegebenen Angebote gespeichert werden:

<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
            id="123_abc"
            timestamp="2020-05-18T16:20:00-04:00">
  <HotelPromotions hotel_id="Property_1" action="overlay">
    <Promotion id="1">
      <BookingDates>
         <DateRange start="2020-09-01" end="2020-09-30"/>
      </BookingDates>
      <Discount percentage="10"/>
      <RoomTypes>
         <RoomType id="123"/>
         <RoomType id="456"/>
      </RoomTypes>
      <RatePlans>
         <RatePlan id="234"/>
         <RatePlan id="567"/>
      </RatePlans>
      <Stacking type="base"/>
    </Promotion>
  </HotelPromotions>
</Promotions>

3 verschiedene Stapeltypen

Im folgenden Beispiel werden drei verschiedene Angebote angewendet (base, second, any). Das Angebot none wird nicht angewendet, da die anderen Angebote einen besseren Rabatt bieten. Wenn der ursprüngliche Preis 100 $betrug, beträgt der rabattierte 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>


Kein Stapeltyp

Im folgenden Beispiel wird das Angebot none verwendet, da die Kombination anderer Angebote einen kleineren Rabatt bietet. Wenn der ursprüngliche Preis 100 $betrug, beträgt der rabattierte 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>



Grenzen der Dauer des Buchungsfensters

Im folgenden Beispiel wird das Element BookingWindow verwendet, wobei die Start- und Endgrenzen als Dauertyp nach ISO 8601 definiert sind. Aufgrund dieser Einschränkung des Buchungsfensters müssen Sie am oder vor 18:00 Uhr am Tag vor der Ankunft und am oder nach 12:00 Uhr am 2. Tag vor der Ankunft buchen.

<?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. Aufgrund dieser Einschränkung des Buchungszeitraums muss die Buchung zwischen 06:30 Uhr am 01.07.2020 und 18:45 Uhr am 02.07.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>


Jahreslose Zeiträume

Das folgende Beispiel zeigt einen Fall, in 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 Check-in-Daten zwischen dem 29.12. und dem 2. Januar. Jahreslose Zeiträume, die die Neujahrsgrenze überschreiten, sind ungültig. Daher wird „DateRange“ als zwei benachbarte 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 werden zwei Übernachtungen um 50% für jeweils vier Übernachtungen im angegebenen Buchungszeitraum reduziert. Bei einem Reiseplan mit zehn Übernachtungen wird ein Rabatt von 50 % auf insgesamt vier Übernachtungen berechnet.

<?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 Nacht um 50% für alle drei Übernachtungen in den angegebenen Aufenthaltszeitraums gewährt. Nur die sich überschneidenden Übernachtungen werden angerechnet, um den Rabatt zu erhalten. Für den folgenden Reiseplan mit Check-in am 01.01.2022 und Check-out am 07.01.2022 gelten die folgenden Übernachtungen und Rabatte:

  • 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

Das folgende Beispiel bietet zwei Rabatte: einen mit 20% und einen mit 15 %. Während der Bewertung wird nur der Rabatt von 15% angewendet, da er einen niedrigeren Rang hat.

<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
            id="123_abc"
            timestamp="2020-05-18T16:20:00-04:00">
  <HotelPromotions hotel_id="Property_1">
    <Promotion id="1">
      <Discount percentage="15" rank="25"/>
    </Promotion>
    <Promotion id="2">
      <Discount percentage="20" rank="50"/>
    </Promotion>
  </HotelPromotions>
</Promotions>

BestDailyDiscount

Im folgenden Beispiel wird ein Rabatt für einen Aufenthalt von zwei Übernachtungen angewendet, indem BestDailyDiscount zusammen 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>

Ziehen Sie einen Aufenthalt von zwei Übernachtungen zwischen dem 30. April 2023 und dem 2. Mai 2023 in Betracht. Zur Berechnung wird zuerst die Kombination der besten Tagesrabatte gefunden, bei denen der höchste Rabatt gewährt wird.

In der ersten Nacht ist das Angebot „Allgemein“ der einzige zulässige Betrag mit einem festen Rabatt von 20.

Für die zweite Nacht bietet das Angebot „Mai“ einen größeren Rabatt als der „allgemeine“ Rabatt. Wird „kann“ ausgewählt, beträgt der feste Rabattbetrag 50.

Für den Aufenthalt wird das „Fiesta“-Angebot dann auf 5 pro Übernachtung oder insgesamt 10 Rabatte gewährt. Es kann mit der Kombination der besten Tagesrabatte kombiniert werden, da für „Fiesta“ der Stapeltyp any festgelegt ist. Wenn base festgelegt ist, wird nur die Kombination aus besten Tagesrabatten oder dem Fiesta-Rabatt angewendet. Weitere Informationen finden Sie in der Beschreibung von Stacking.

`Insgesamt erhält der Preis des Aufenthalts einen Festbetragsrabatt von 20 + 50 + 10 = 80.

Antworten

Syntax

Die PromotionsResponse-Nachricht 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 PromotionsResponse-Meldung enthält die folgenden Elemente und Attribute:

Element / @Attribute Häufigkeit Typ Beschreibung
PromotionsResponse 1 Complex element Das Stammelement, das den Erfolg oder Probleme für eine empfangene Nachricht „Promotions“ angibt.
PromotionsResponse / @timestamp 1 DateTime Erstellungsdatum und -uhrzeit der Nachricht.
PromotionsResponse / @id 1 string Die eindeutige Kennung aus der verknüpften 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.

In jeder Nachricht ist entweder <Success> oder <Issues> vorhanden.

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

In jeder Nachricht ist entweder <Success> oder <Issues> vorhanden.

PromotionsResponse / Issues / Issue 1..n Issue Die Beschreibung einer Warnung oder eines Fehlers, der beim Verarbeiten 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 aufgetretenen 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>