Preisänderungen

Überblick

Mit dieser API können Sie Möglichkeiten definieren, wie Aktionen dynamisch auf einen Preis angewendet werden, wenn bestimmte Bedingungen erfüllt sind, z. B. durch Anpassen des Preises oder Aktivieren der Erstattungsfähigkeit. Im Gegensatz zur Promotions API, die nur zulässige Angebote mit den höchsten Rabatten anwenden kann, wendet diese API alle Aktionen an, wenn bestimmte Bedingungen erfüllt sind, einschließlich Preisanpassungen, die letztendlich den Endpreis erhöhen können.

Anfragen

Syntax

Die Nachricht RateModifications verwendet die folgende Syntax:

<?xml version="1.0" encoding="UTF-8"?>
<RateModifications partner="partner_key"
                      id="message_ID"
                      timestamp="timestamp">
  <HotelRateModifications hotel_id="HotelID" action="[overlay]">
    <ItineraryRateModification id="ModificationID" action="[delete]">
      <BookingDates>
        <DateRange start="YYYY-MM-DD" end="YYYY-MM-DD" days_of_week=""MTWHFSU_or_subset""/>
        <DateRange start="YYYY-MM-DD" end="YYYY-MM-DD" days_of_week=""MTWHFSU_or_subset""/>
      </BookingDates>
      <BookingWindow min="integer" max="integer"/>
      <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>
      <Devices>
        <Device type="[desktop|tablet|mobile]"/>
      </Devices>
      <LengthOfStay min="integer" max="integer"/>
      <MinimumAmount before_discount="integer"/>
      <RatePlans>
        <RatePlan id="PackageID_1"/>
        <RatePlan id="PackageID_2"/>
      </RatePlans>
      <RoomTypes>
        <RoomType id="RoomID_1"/>
        <RoomType id="RoomID_2"/>
      </RoomTypes>
      <StayDates application="[all|any]">
        <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>
      <ModificationActions>
        <PriceAdjustment multiplier="float"/>
        <RateRule id="RateRuleID"/>
        <Refundable available="[false|true]"
                       refundable_until_days="number_of_days"
                       refundable_until_time="time"/>
        <Availability status="[unavailable]"/>
      </ModificationActions>
    </ItineraryRateModification>
  </HotelRateModifications>
</RateModifications>

Elemente und Attribute

Die Nachricht RateModifications enthält die folgenden Elemente und Attribute:

Element / @Attribut Häufigkeit Typ Beschreibung
RateModifications 1 Complex element Das Stammelement einer Nachricht zu Preisänderungen.
RateModifications / @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.

Hinweis: 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.

RateModifications / @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).
RateModifications / @timestamp 1 DateTime Erstellungsdatum und -uhrzeit der Nachricht.
RateModifications / HotelRateModifications 0..n HotelRateModifications

Preisänderungen für eine Unterkunft. Jede Preisänderung gilt für eine einzelne Unterkunft.

Hinweis: Wenn mehrere Preisänderungen auf denselben Preis angewendet werden können, werden alle Änderungen angewendet. Eine bestimmte Reihenfolge wird nicht garantiert.

RateModifications / HotelRateModifications / @hotel_id 1 string Die eindeutige Kennung für die Unterkunft. Dieser Wert muss mit der Hotel-ID übereinstimmen, die mit <id> im Element <listing> des Hotellistenfeeds angegeben wurde. Die Hotel-ID ist auch im Hotel Center aufgeführt.
RateModifications / HotelRateModifications / @action 0..1 enum

Wenn action nicht angegeben ist, werden die Änderungen in diesem Element für dieses Hotel hinzugefügt oder aktualisiert. Wenn action="overlay" angegeben ist, werden zuerst alle zuvor definierten Änderungen für dieses Hotel gelöscht. Dann werden die hier angegebenen Änderungen geschrieben. Wenn action="overlay" verwendet wird und in diesem Element keine Änderungen angegeben sind, werden alle Änderungen für dieses Hotel gelöscht.

RateModifications / HotelRateModifications / ItineraryRateModification 0..200 ItineraryRateModification

Eine einzelne Preisänderung für eine Unterkunft.

Hinweis:Preisänderungen sind schwierig zu debuggen und sollten daher sparsam eingesetzt werden. Wenden Sie sich bei Anwendungsfällen, für die mehr als 200 Preisänderungen erforderlich sind, an Ihren Technical Account Manager (TAM).

RateModifications / HotelRateModifications / ItineraryRateModification / @id 1 string Eine eindeutige Kennung für die Preisänderung. Es sind maximal 40 Zeichen zulässig. Zulässige Zeichen sind a–z, A–Z, 0–9, _ (Unterstrich), - (Bindestrich) und . (Punkt).
RateModifications / HotelRateModifications / ItineraryRateModification / @action 0..1 enum

Wenn keine Angabe erfolgt und keine Preisänderung mit derselben id gespeichert wird, wird diese Preisänderung gespeichert. Wenn nicht angegeben und eine Preisänderung mit derselben id gespeichert wird, wird die vorhandene Preisänderung aktualisiert.

Wenn angegeben, muss der Wert "delete" sein. Wenn "delete" angegeben ist, wird die gespeicherte Preisänderung mit derselben id gelöscht. Wenn du "delete" verwendest, füge keine untergeordneten Elemente in <ItineraryRateModification> ein. Außerdem ist "delete" in Verbindung mit <HotelRateModifications action="overlay"/> nicht zulässig.

RateModifications / HotelRateModifications / ItineraryRateModification / BookingDates 0..1 BookingDates Ein Container für einen oder mehrere Zeiträume, die definieren, wann eine Buchung erfolgen muss, damit die Preisänderung angewendet wird.
RateModifications / HotelRateModifications / ItineraryRateModification / BookingDates / DateRange 1..99 DateRange Ein Zeitraum, der angibt, wann eine Buchung erfolgen muss, damit die Preisänderung angewendet wird.
RateModifications / HotelRateModifications / ItineraryRateModification / BookingDates / DateRange / @start 0..1 Date Das einschließliche Startdatum (basierend auf der Zeitzone der Unterkunft) des Zeitraums. Dieses Datum muss vor dem end-Datum liegen oder mit diesem übereinstimmen. Wird start nicht angegeben, ist der Zeitraum in Bezug auf das Startdatum praktisch unbegrenzt.
RateModifications / HotelRateModifications / ItineraryRateModification / BookingDates / DateRange / @end 0..1 Date Das einschließliche Enddatum (basierend auf der Zeitzone der Unterkunft) des Zeitraums. Dieses Datum muss mit dem Datum start übereinstimmen oder danach liegen. Wird end nicht angegeben, ist der Zeitraum in Bezug auf das Enddatum praktisch unbegrenzt.
RateModifications / HotelRateModifications / ItineraryRateModification / BookingDates / DateRange / @days_of_week 0..1 string

Die Wochentage, die im Zeitraum zulässig sind. Wenn nicht angegeben, sind alle Tage im Zeitraum zulässig. Jedes Zeichen im String gibt einen Tag an. Beispielsweise gibt „MTWHF“ an, dass Wochentage im Zeitraum zulässig sind.

Gültige Zeichen sind:

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

Jede Zeichenkombination ist gültig.

RateModifications / HotelRateModifications / ItineraryRateModification / BookingWindow 0..1 BookingWindow Gibt den Zeitraum an, in dem die Buchung relativ zum Check-in-Datum erfolgen muss (basierend auf der Zeitzone der Unterkunft). Beispielsweise kann der Reservierungszeitraum auf mindestens 7 Tage, aber nicht mehr als 180 Tage vor dem Check-in festgelegt werden.
RateModifications / HotelRateModifications / ItineraryRateModification / BookingWindow / @min 0..1 integer Die Mindestanzahl von Tagen vor dem Check-in, an denen eine Buchung erfolgen muss, damit die Preisänderung angewendet wird. Wenn keine Angabe gemacht wird, gibt es keine Mindestanzahl.
RateModifications / HotelRateModifications / ItineraryRateModification / BookingWindow / @max 0..1 integer Die maximale Anzahl von Tagen vor dem Check-in, an denen eine Buchung erfolgen muss, damit die Preisänderung angewendet wird. Wenn nicht angegeben, gibt es kein Maximum.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckinDates 0..1 CheckinDates Ein Container für einen oder mehrere Zeiträume, die definieren, wann ein Check-in erfolgen muss, damit die Preisänderung angewendet wird.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckinDates / DateRange 1..99 DateRange Ein Zeitraum, der angibt, wann ein Check-in erfolgen muss, damit die Preisänderung angewendet wird. Dieses Element ist nicht erforderlich, wenn Sie eine oder mehrere Preisänderungen löschen.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckinDates / DateRange / @start 0..1 Date Das einschließliche Startdatum (basierend auf der Zeitzone der Unterkunft) des Zeitraums. Dieses Datum muss vor dem end-Datum liegen oder mit diesem übereinstimmen. Wird start nicht angegeben, ist der Zeitraum in Bezug auf das Startdatum praktisch unbegrenzt.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckinDates / DateRange / @end 0..1 Date Das einschließliche Enddatum (basierend auf der Zeitzone der Unterkunft) des Zeitraums. Dieses Datum muss mit dem Datum start übereinstimmen oder danach liegen. Wird end nicht angegeben, ist der Zeitraum in Bezug auf das Enddatum praktisch unbegrenzt.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckinDates / DateRange / @days_of_week 0..1 string

Die Wochentage, die im Zeitraum zulässig sind. Wenn nicht angegeben, sind alle Tage im Zeitraum zulässig. Jedes Zeichen im String gibt einen Tag an. Beispielsweise gibt „MTWHF“ an, dass Wochentage im Zeitraum zulässig sind.

Gültige Zeichen sind:

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

Jede Zeichenkombination ist gültig.

RateModifications / HotelRateModifications / ItineraryRateModification / CheckoutDates 0..1 CheckoutDates Ein Container für einen oder mehrere Zeiträume, die definieren, wann ein Check-out erfolgen muss, damit die Preisänderung angewendet wird.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckoutDates / DateRange 1..99 DateRange Ein Zeitraum, der angibt, wann ein Check-out erfolgen muss, damit die Preisänderung angewendet wird. Dieses Element ist nicht erforderlich, wenn Sie eine oder mehrere Preisänderungen löschen.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckoutDates / DateRange / @start 0..1 Date Das einschließliche Startdatum (basierend auf der Zeitzone der Unterkunft) des Zeitraums. Dieses Datum muss vor dem end-Datum liegen oder mit diesem übereinstimmen. Wird start nicht angegeben, ist der Zeitraum in Bezug auf das Startdatum praktisch unbegrenzt.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckoutDates / DateRange / @end 0..1 Date Das einschließliche Enddatum (basierend auf der Zeitzone der Unterkunft) des Zeitraums. Dieses Datum muss mit dem Datum start übereinstimmen oder danach liegen. Wird end nicht angegeben, ist der Zeitraum in Bezug auf das Enddatum praktisch unbegrenzt.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckoutDates / DateRange / @days_of_week 0..1 string

Die Wochentage, die im Zeitraum zulässig sind. Wenn nicht angegeben, sind alle Tage im Zeitraum zulässig. Jedes Zeichen im String gibt einen Tag an. Beispielsweise gibt „MTWHF“ an, dass Wochentage im Zeitraum zulässig sind.

Gültige Zeichen sind:

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

Jede Zeichenkombination ist gültig.

RateModifications / HotelRateModifications / ItineraryRateModification / Devices 0..1 Devices Container zum Auflisten der Nutzergeräte, für die eine Preisänderung möglich ist. Wenn angegeben, wird die Preisänderung nur angewendet, wenn der Nutzer einem der aufgeführten Geräte entspricht. Wenn keine Angabe erfolgt, schränkt dies nicht die Anwendung der Preisänderung ein.
RateModifications / HotelRateModifications / ItineraryRateModification / Devices / Device 1..3 Device Definiert einen Typ von Nutzergerät, auf dem die Preisänderung möglich ist.
RateModifications / HotelRateModifications / ItineraryRateModification / Devices / Device / @type 1 enum Ein Gerätetyp. Der Wert muss desktop, tablet oder mobile sein.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions 1 ModificationActions

Aktionen, die auf den Preis angewendet werden, wenn alle angegebenen Bedingungen erfüllt sind.

RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / PriceAdjustment 0..1 PriceAdjustment Ändert den Preis durch Multiplizieren von AmountBeforeTax und AmountAfterTax mit dem angegebenen Multiplikator
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / PriceAdjustment / @multiplier 1 float Sowohl AmountBeforeTax als auch AmountAfterTax werden mit diesem Wert multipliziert.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / RateRule 0..1 RateRule Ändert den Preis durch Anwendung der angegebenen Preisregel-ID.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / RateRule / @id 1 string Diese ID gleicht einen Preis mit einer Definition in Ihrer Datei zur Definition der Preisregel ab. Hinweis:
  • Die maximale Zeichenanzahl für dieses Feld beträgt 40 Zeichen.
  • Jeder Preis darf nur mit einer einzigen Preisregel verknüpft werden.
  • Wenn eine Preisregel-ID von mehreren Änderungen angewendet wird, wird dem Preis die Preisregel-ID zugewiesen, die lexikografisch am kleinsten ist.
  • Wenn diese ID mit keiner Preisregel in der Definitionsdatei für Preisregeln übereinstimmt, wird sie als unzulässig betrachtet.
In diesem Artikel finden Sie Informationen zu den verschiedenen UI-Bearbeitungen für Tarife für bestimmte Zielgruppen.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / Refundable 0..1 Refundable Überschreibt die Erstattungsfähigkeit des Preises mit dem angegebenen Wert.

Beachten Sie beim Festlegen der Attribute Folgendes:

  • Mit dieser Änderungsaktion wird die Einstellung „Erstattbar“ eines gültigen Preises vollständig neu geschrieben, nicht nur die ausgefüllten Felder.
  • Wenn available oder refundable_until_days nicht festgelegt ist, wird der Preis nicht als erstattungsfähig angezeigt.
  • Wenn available den Wert 0 oder false hat, werden die anderen Attribute ignoriert. Der Preis wird nicht als erstattungsfähig angezeigt, auch wenn eines oder beide der anderen Attribute festgelegt sind.
  • Die Einstellung refundable_until_time wird empfohlen. Ist sie nicht konfiguriert, wird der früheste Zeitpunkt (Mitternacht) verwendet.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / Refundable / @available 1 boolean (Erforderlich) Legen Sie 1 oder true fest, um anzugeben, ob für den Preis eine vollständige Erstattung möglich ist. Andernfalls geben Sie 0 oder false an.
Transaction / PropertyDataSet / PackageData / Refundable / @refundable_until_days 0..1 integer (Erforderlich, wenn available den Wert true hat) Gibt die Anzahl der Tage vor dem Check-in an, innerhalb derer eine vollständige Erstattung beantragt werden kann. Der Wert für refundable_until_days muss eine Ganzzahl zwischen 0 und 330 sein.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / Refundable / @refundable_until_time 0..1 Time (Empfohlen, wenn available den Wert true hat) Gibt die späteste Tageszeit in der Ortszeit des Hotels an, bis zu der ein vollständiger Erstattungsantrag berücksichtigt wird. Dies kann mit refundable_until_days kombiniert werden, um beispielsweise anzugeben, dass „Erstattungen bis 16:00 Uhr zwei Tage vor dem Check-in möglich sind“. Wenn refundable_until_time nicht festgelegt ist, wird Mitternacht als Standardeinstellung verwendet.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / Availability 0..1 Availability Überschreibt die Verfügbarkeit des Preises mit dem angegebenen Wert. Die Rate kann nur auf unavailable festgelegt werden.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / Availability / @status 1 enum Bei status="unavailable" wird der Preis so behandelt, als wäre er nicht verfügbar, unabhängig davon, ob dafür ein gültiger Preis vorhanden ist.
RateModifications / HotelRateModifications / ItineraryRateModification / LengthOfStay 0..1 LengthOfStay Definiert die Limits für die Aufenthaltsdauer, innerhalb derer diese Ratenänderung angewendet werden kann. Die Ratenänderung wird nicht angewendet, wenn die Aufenthaltsdauer außerhalb der Mindest- und Höchstwerte liegt.
RateModifications / HotelRateModifications / ItineraryRateModification / LengthOfStay / @min 0..1 integer Die Mindestanzahl von Übernachtungen, die während des Aufenthalts erlaubt sind, damit die Preisänderung angewendet wird. Wenn nicht angegeben, gibt es keine Mindestanzahl.
RateModifications / HotelRateModifications / ItineraryRateModification / LengthOfStay / @max 0..1 integer Die maximale Anzahl von Übernachtungen, die während des Aufenthalts erlaubt sind, damit die Preisänderung angewendet wird. Wird keine Angabe gemacht, gibt es kein Maximum.
RateModifications / HotelRateModifications / ItineraryRateModification / 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 die Preisänderung angewendet wird.
RateModifications / HotelRateModifications / ItineraryRateModification / MinimumAmount / @before_discount 1 integer Der Wert, der überschritten werden muss, damit die Ratenänderung angewendet wird.
RateModifications / HotelRateModifications / ItineraryRateModification / RatePlans 0..1 RatePlans Container für eine Liste von Preisplänen, für die die Preisänderung gilt. Wenn <RatePlans> nicht angegeben ist, gilt die Preisänderung für alle Preispläne.
RateModifications / HotelRateModifications / ItineraryRateModification / RatePlans / RatePlan 1..n RatePlan Gibt einen Preisplan an. Ein Preisplan wird durch eine Kombination aus Paket, Preisen und Verfügbarkeit definiert, wie in den Nachrichten Transaktionen (Unterkunftsdaten), OTA_HotelRateAmountNotifRQ und OTA_HotelAvailNotifRQ definiert und durch die PackageID identifiziert.
RateModifications / HotelRateModifications / ItineraryRateModification / RatePlans / RatePlan / @id 1 string Die eindeutige Kennung für den Preisplan. Dieser Wert ist dem PackageID-Wert in <PackageData> in einer Nachricht „Transaktion (Unterkunftsdaten)“ und im Attribut RatePlanCode in <StatusApplicationControl> in den Nachrichten <OTA_HotelRateAmountNotifRQ> und <OTA_HotelAvailNotifRQ> zugeordnet. Es sind maximal 50 Zeichen zulässig.
RateModifications / HotelRateModifications / ItineraryRateModification / RoomTypes 0..1 RoomTypes Container für eine Liste von Zimmertypen, für die die Preisänderung gilt. Die Preisänderung wird auf jeden angegebenen <RoomType> angewendet. Wenn <RoomTypes> nicht angegeben ist, gilt die Preisänderung für alle Zimmer.
RateModifications / HotelRateModifications / ItineraryRateModification / 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.)
RateModifications / HotelRateModifications / ItineraryRateModification / 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.
RateModifications / HotelRateModifications / ItineraryRateModification / StayDates 0..1 StayDates Ein Container für einen oder mehrere Zeiträume, die bestimmen, wie die Preisänderung angewendet wird, z. B. für saisonale Preise.
RateModifications / HotelRateModifications / ItineraryRateModification / StayDates / @application 1 enum

Beschreibt, wie die Ratenänderung angewendet wird.

Gültige Werte sind:

  • all: Die Preisänderung wird auf jede Übernachtung im Reiseplan angewendet, wenn sich alle Datumsangaben im Reiseplan mit den Aufenthaltsdaten überschneiden.
  • any: Die Preisänderung wird auf alle Übernachtungen im Reiseplan angewendet, wenn sich ein Datum im Reiseplan mit einem Datum im Aufenthaltszeitraum überschneidet.

Dieses Attribut muss immer angegeben werden.

RateModifications / HotelRateModifications / ItineraryRateModification / StayDates / DateRange 1..99 DateRange Ein Zeitraum, der angibt, wann die Preisänderung angewendet werden soll.
RateModifications / HotelRateModifications / ItineraryRateModification / StayDates / DateRange / @start 0..1 Date Das einschließliche Startdatum (basierend auf der Zeitzone der Unterkunft) des Zeitraums. Dieses Datum muss vor dem end-Datum liegen oder mit diesem übereinstimmen. Wird start nicht angegeben, ist der Zeitraum in Bezug auf das Startdatum praktisch unbegrenzt.
RateModifications / HotelRateModifications / ItineraryRateModification / StayDates / DateRange / @end 0..1 Date Das einschließliche Enddatum (basierend auf der Zeitzone der Unterkunft) des Zeitraums. Dieses Datum muss mit dem Datum start übereinstimmen oder danach liegen. Wird end nicht angegeben, ist der Zeitraum in Bezug auf das Enddatum praktisch unbegrenzt.
RateModifications / HotelRateModifications / ItineraryRateModification / StayDates / DateRange / @days_of_week 0..1 string

Die Wochentage, die im Zeitraum zulässig sind. Wenn nicht angegeben, sind alle Tage im Zeitraum zulässig. Jedes Zeichen im String gibt einen Tag an. Beispielsweise gibt „MTWHF“ an, dass Wochentage im Zeitraum zulässig sind.

Gültige Zeichen sind:

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

Jede Zeichenkombination ist gültig.

RateModifications / HotelRateModifications / ItineraryRateModification / UserCountries 0..1 UserCountries Wenn angegeben, wird die Preisänderung nur angewendet, wenn sich der Nutzer in einem der angegebenen Länder befindet. Wenn keine Angabe erfolgt, wird die Preisänderung unabhängig vom Standort des Nutzers angewendet.
RateModifications / HotelRateModifications / ItineraryRateModification / UserCountries / @type 0..1 enum Der Typ der Usercountries-Spezifikation.

Gültige Werte sind include und exclude.

Wenn „UserCountry“-type auf include gesetzt ist, gilt die Preisänderung für Nutzer aus den aufgeführten Ländern.

Wenn „UserCountry“ type den Wert exclude hat, gilt die Preisänderung für Nutzer außerhalb der aufgeführten Länder.

Wenn „UserCountry“ (type) nicht konfiguriert ist, wird es als include behandelt und die Preisänderung gilt für Nutzer aus den aufgeführten Ländern.

RateModifications / HotelRateModifications / ItineraryRateModification / UserCountries / Country 1..300 Country Gibt ein zulässiges Nutzerland für die Preisänderung an.
RateModifications / HotelRateModifications / ItineraryRateModification / UserCountries / Country / @code 1 string Einen CLDR-Ländercode wie DE oder FR. Beachten Sie, dass der CLDR-Ländercode bei einigen Ländern nicht mit dem zweistelligen ISO-Ländercode übereinstimmt. Außerdem werden CLDR-Regionscodes nicht unterstützt.

Beispiele

Einfache Nachricht

Das folgende Beispiel zeigt eine einfache RateModifications`-Nachricht:

<?xml version="1.0" encoding="UTF-8"?>
<RateModifications partner="account_xyz"
                   id="123_abc"
                   timestamp="2023-05-22T16:20:00-04:00">
  <HotelRateModifications hotel_id="Property_1">
    <ItineraryRateModification id="1">
      <BookingDates>
         <DateRange start="2023-07-01" end="2023-07-31" days_of_week="MTWHF"/>
         <DateRange start="2023-09-01" end="2023-09-30"/>
      </BookingDates>
      <BookingWindow min="7" max="330"/>
      <CheckinDates>
         <DateRange start="2023-10-01" end="2023-10-31" days_of_week="FSU"/>
      </CheckinDates>
      <CheckoutDates>
         <DateRange start="2023-10-08" end="2023-11-07" days_of_week="FSU"/>
      </CheckoutDates>
      <Devices>
        <Device type="mobile"/>
        <Device type="tablet"/>
      </Devices>
      <LengthOfStay min="2" max="14"/>
      <RatePlans>
         <RatePlan id="234"/>
         <RatePlan id="567"/>
      </RatePlans>
      <RoomTypes>
         <RoomType id="123"/>
         <RoomType id="456"/>
      </RoomTypes>
      <UserCountries>
        <Country code="US"/>
        <Country code="GB"/>
      </UserCountries>
      <ModificationActions>
        <PriceAdjustment multiplier="1.2"/>
      </ModificationActions>
    </ItineraryRateModification>
  </HotelRateModifications>
</RateModifications>


Eine Preisänderung löschen

Das folgende Beispiel zeigt, wie eine einzelne Preisänderung für eine Unterkunft gelöscht wird:

<?xml version="1.0" encoding="UTF-8"?>
<RateModifications partner="account_xyz"
                   id="123_abc"
                   timestamp="2023-05-22T16:20:00-04:00">
  <HotelRateModifications hotel_id="Property_1">
    <ItineraryRateModification id="1" action="delete"/>
  </HotelRateModifications>
</RateModifications>

Alle Preisänderungen löschen

Das folgende Beispiel zeigt, wie alle Preisänderungen für eine Unterkunft gelöscht werden:

<?xml version="1.0" encoding="UTF-8"?>
<RateModifications partner="account_xyz"
                   id="123_abc"
                   timestamp="2023-05-22T16:20:00-04:00">
  <HotelRateModifications hotel_id="Property_1" action="overlay"/>
</RateModifications>


Alle Preisänderungen überlagern

Das folgende Beispiel zeigt, wie <HotelRateModifications> für eine Unterkunft mit einer oder mehreren neuen Preisänderungen eingeblendet wird. Bei action="overlay" werden alle gespeicherten Preisänderungen gelöscht, bevor die in der aktuellen Nachricht angegebenen Preisänderungen gespeichert werden:

<?xml version="1.0" encoding="UTF-8"?>
<RateModifications partner="account_xyz"
                   id="123_abc"
                   timestamp="2023-05-22T16:20:00-04:00">
  <HotelRateModifications hotel_id="Property_1" action="overlay"/>
    <ItineraryRateModification id="1">
      <BookingDates>
         <DateRange start="2023-09-01" end="2023-09-30"/>
      </BookingDates>
      <ModificationActions>
        <PriceAdjustment multiplier="1.2"/>
      </ModificationActions>
      <RoomTypes>
         <RoomType id="123"/>
         <RoomType id="456"/>
      </RoomTypes>
      <RatePlans>
         <RatePlan id="234"/>
         <RatePlan id="567"/>
      </RatePlans>
    </ItineraryRateModification>
  </HotelRateModifications>
</RateModifications>

Mehrere Änderungsaktionen

Das folgende Beispiel zeigt, wie mehrere Änderungsaktionen gleichzeitig durchgeführt werden können:

<?xml version="1.0" encoding="UTF-8"?>
<RateModifications partner="account_xyz"
                   id="123_abc"
                   timestamp="2023-05-22T16:20:00-04:00">
  <HotelRateModifications hotel_id="Property_1">
    <ItineraryRateModification id="1">
      <BookingDates>
         <DateRange start="2023-01-01" end="2023-02-28"/>
      </BookingDates>
      <ModificationActions>
        <PriceAdjustment multiplier=".95"/>
        <Refundable available="true"
                    refundable_until_days="1"
                    refundable_until_time="12:00:00"/>
      </ModificationActions>
    </ItineraryRateModification>
  </HotelRateModifications>
</RateModifications>


Preisplan für Nutzerländer deaktivieren

Das folgende Beispiel zeigt, wie Sie einen Preisplan auf Nutzer in Japan (JP) beschränken können:

<?xml version="1.0" encoding="UTF-8"?>
<RateModifications partner="account_xyz"
                   id="123_abc"
                   timestamp="2023-05-22T16:20:00-04:00">
  <HotelRateModifications hotel_id="Property_1">
    <ItineraryRateModification id="1">
      <RatePlans>
         <RatePlan id="jp_only"/>
      </RatePlans>
      <UserCountries type="exclude">
        <Country code="JP"/>
      </UserCountries>
      <ModificationActions>
        <Availability status="unavailable"/>
      </ModificationActions>
    </ItineraryRateModification>
  </HotelRateModifications>
</RateModifications>


Antworten

Syntax

Die Nachricht RateModificationsResponse verwendet die folgende Syntax:

<?xml version="1.0" encoding="UTF-8"?>
<RateModificationsResponse timestamp="timestamp"
                    id="message_ID"
                    partner="partner_key">
  <!-- Either Success or Issues will be populated. -->
  <Success/>
  <Issues>
    <Issue code="issue_code" status="issue_type"><var>issue_description</var></Issue>
  </Issues>
</RateModificationsResponse>

Elemente und Attribute

Die RateModificationsResponse-Nachricht enthält die folgenden Elemente und Attribute:

Element / @Attribut Häufigkeit Typ Beschreibung
RateModifications 1 Complex element Das Stammelement, das den Erfolg oder Probleme für eine empfangene RateModifications-Anfragenachricht angibt.
RateModificationsResponse / @timestamp 1 DateTime Erstellungsdatum und -uhrzeit der Nachricht.
RateModificationsResponse / @id 1 string Die eindeutige Kennung aus der zugehörigen RateModifications-Nachricht.
RateModificationsResponse / @partner 1 string Das Partnerkonto für diese Nachricht.
RateModificationsResponse / Success 0..1 Success Gibt an, dass die RateModifications-Nachricht ohne Warnungen oder Fehler erfolgreich verarbeitet wurde.

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

RateModificationsResponse / Issues 0..1 Issues Ein Container für ein oder mehrere Probleme, die bei der Verarbeitung der RateModifications-Nachricht aufgetreten sind.

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

RateModificationsResponse / Issues / Issue 1..n Issue Die Beschreibung einer Warnung oder eines Fehlers, die bei der Verarbeitung der RateModifications-Nachricht aufgetreten ist. Details zu diesen Problemen finden Sie unter Fehlermeldungen zum Feedstatus.
RateModificationsResponse / Issues / Issue / @code 1 integer Die Kennung des Problems.
RateModificationsResponse / Issues / Issue / @status 1 enum

Die Art des Problems.

Gültige Werte sind warning, error und failure.

Beispiele

Abgeschlossen

Im Folgenden finden Sie eine Antwort auf eine erfolgreich verarbeitete RateModifications-Nachricht.

<?xml version="1.0" encoding="UTF-8"?>
<RateModificationsResponse timestamp="2023-05-22T16:20:00-04:00"
                    id="12345678"
                    partner="partner_key">
  <Success/>
</RateModificationsResponse>

Probleme

Im Folgenden finden Sie eine Antwort auf eine RateModifications-Nachricht, die aufgrund von Fehlern nicht verarbeitet wurde.

<?xml version="1.0" encoding="UTF-8"?>
<RateModificationsResponse timestamp="2023-05-22T16:20:00-04:00"
                    id="12345678"
                    partner="partner_key">
  <Issues>
    <Issue code="1001" status="error">Example</Issue>
  </Issues>
</RateModificationsResponse>