XML-Referenz für Preise und Zimmerinventar (Transaktionen)

Diese Seite bietet eine Referenz für die XML-basierten Transaktionsnachrichten.

<Transaction>

Das Wurzelelement einer Transaktionsnachricht ist <Transaction>. Es handelt sich um einen Container für beschreibende Informationen über Zimmer und Pakete sowie Preise und Verfügbarkeit von Zimmern und Paketen.

Das Element <Transaction> erscheint an folgender Stelle in der XML-Hierarchie der Transaktionsnachricht:

+ <Transaction>
    + <PropertyDataSet>  // Room and package metadata
        + <Property>
        + <RoomData>
        + <PackageData>
    + <Result>           // Pricing and availability
        + <Rates>
        + <RoomBundle>
        + ...

Nachrichten, die <Transaction> als Wurzelelement verwenden, benötigen mindestens ein Kindelement. Transaktionsnachrichten können beliebig viele untergeordnete Elemente enthalten, solange die Gesamtgröße der Nachricht 100 MB nicht überschreitet.

Syntax

Das <Transaction>-Element verwendet die folgende Syntax:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="timestamp" id="transaction_ID">

  <!-- Defines data about a room or package (Room Bundle) -->
  <PropertyDataSet>
    ...
  </PropertyDataSet>

  <!-- Updates/sets prices and availability for rooms and Room Bundles -->
  <!-- (Also removes itineraries from inventory) -->
  <Result>
    ...
  </Result>

</Transaction>

Attribute

Das <Transaction>-Element hat die folgenden Attribute:

Attribut Erforderlich? Typ Beschreibung
id Required String Eine eindeutige Kennung für jede Transaktionsnachricht.
partner Optional string Das Partnerkonto, für das die Transaktionsnachricht bestimmt ist. Sie verwenden diese Funktion typischerweise dann, wenn Ihr Backend Preisfeeds für mehrere Partnerkonten bereitstellt. Dieser Zeichenfolgenwert ist der Wert "Partner key", der auf der Seite Kontoeinstellungen im Hotel Center aufgeführt ist.
timestamp Required DateTime

Der Zeitpunkt, zu dem die Transaktionsnachricht gesendet wurde.

Nachrichten, die innerhalb der letzten 24 Stunden mit einem Zeitstempel eingegangen sind, werden verarbeitet; alle anderen werden verworfen.

Die Nachrichten werden in der Reihenfolge von timestamp verarbeitet und nicht in der Reihenfolge ihres Eingangs. Beispielsweise wird eine Preisaktualisierung mit dem Zeitstempel 2019-05-03 14:09:00, die nach einer Nachricht mit dem Zeitstempel 2019-05-03 14:10:00 empfangen wird, trotzdem der Reihe nach verarbeitet, und es wird der Preis aus der Nachricht mit dem Zeitstempel 2019-05-03 14:10:00 verwendet.

Untergeordnete Elemente

Das <Transaction>-Element hat die folgenden untergeordneten Elemente:

Kindelement Erforderlich? Typ Description
<PropertyDataSet> Optional* <PropertyDataSet>

Beschreibt ein bestimmtes Zimmer und Zimmerpakete. Dieses Element wird üblicherweise in einer separaten Transaktionsnachricht verwendet, um gemeinsame Werte für Raumpakete zu definieren und die Größe der Transaktionsnachrichten zu reduzieren.

<Result> Optional* <Result>

Preisdaten für den Reiseplan eines Zimmers oder ein <RoomBundle>-Element, das Zimmerpakete und zusätzliche Zimmertypen für die Unterkunft definiert. Das Element <Result> kann auch verwendet werden, um Reiserouten aus dem Inventar zu entfernen.

* Mindestens eine der Optionen <PropertyDataSet> oder <Result> ist erforderlich.

Beispiele

Raumdaten

Das folgende Beispiel definiert Raumdaten in einer Transaktionsnachricht:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <RoomData>
      <RoomID>5440OF</RoomID>
      <Name>
        <Text text="Single King Bed Room" language="en"/>
        <Text text="Simple Lit de Roi" language="fr"/>
      </Name>
      <Description>
        <Text text="One king bed with pillowtop mattresses, 300-thread-count linens,
          and down comforters (bedspreads). City view. 300 square feet. Desk with
          rolling chair. Multi-line phone with voice mail. Cable/satellite TV with
          complimentary HBO and pay movies." language="en"/>
        <Text text="Un très grand lit avec matelas à plateau-coussin, ..." language="fr"/>
      </Description>
      <PhotoURL>
        <Caption>
          <Text text="Bathroom View" language="en"/>
          <Text text="La salle de baines" language="fr"/>
        </Caption>
        <URL>http://www.foo.com/static/bar/image1234.jpg</URL>
      </PhotoURL>
      <Capacity>4</Capacity>
    </RoomData>
  </PropertyDataSet>
</Transaction>

Preise

Das folgende Beispiel definiert Preisdaten in einer Transaktionsnachricht:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-23T16:20:00-04:00" id="42">
  <Result>
    <Property>060773</Property>
    <RoomID>RoomType101</RoomID>
    <PackageID>Package101</PackageID>
    <Checkin>2018-06-10</Checkin>
    <Nights>2</Nights>
    <Baserate currency="USD">278.33</Baserate>
    <Tax currency="USD">25.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
    <AllowablePointsOfSale>
      <PointOfSale id="site1"/>
    </AllowablePointsOfSale>
  </Result>
  <Result>
    <Property>052213</Property>
    <RoomID>RoomType101</RoomID>
    <PackageID>Package101</PackageID>
    <Checkin>2018-06-10</Checkin>
    <Nights>2</Nights>
    <Baserate currency="USD">299.98</Baserate>
    <Tax currency="USD">26.42</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
    <AllowablePointsOfSale>
      <PointOfSale id="otto"/>
      <PointOfSale id="simon"/>
    </AllowablePointsOfSale>
    <MilesIncluded>
      <NumberOfMiles>1200</NumberOfMiles>
      <Provider>
        <Text language="en" text="United Airlines"/>
      </Provider>
      <LoyaltyCampaignID>my_campaign</LoyaltyCampaignID>
    </MilesIncluded>
  </Result>
</Transaction>

Übernachtungspreise

Das folgende Beispiel definiert Preisdaten für 1 bis 7 Nächte ab dem 7. Juni 2023:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-08-24T16:20:00-04:00" id="42">
  <Result>
    <Property>1234</Property>
    <Checkin>2018-06-07</Checkin>
    <Nights>1</Nights>
    <Baserate currency="USD">209.99</Baserate>
    <Tax currency="USD">25.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
  </Result>
  <Result>
    <Property>1234</Property>
    <Checkin>2018-06-07</Checkin>
    <Nights>2</Nights>
    <Baserate currency="USD">419.98</Baserate>
    <Tax currency="USD">25.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
  </Result>
  <Result>
    <Property>1234</Property>
    <Checkin>2018-06-07</Checkin>
    <Nights>3</Nights>
    <Baserate currency="USD">614.97</Baserate>
    <Tax currency="USD">21.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
  </Result>
  <Result>
    <Property>1234</Property>
    <Checkin>2018-06-07</Checkin>
    <Nights>4</Nights>
    <Baserate currency="USD">819.96</Baserate>
    <Tax currency="USD">21.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
  </Result>
  <Result>
    <Property>1234</Property>
    <Checkin>2018-06-07</Checkin>
    <Nights>5</Nights>
    <Baserate currency="USD">999.95</Baserate>
    <Tax currency="USD">21.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
  </Result>
  <Result>
    <Property>1234</Property>
    <Checkin>2018-06-07</Checkin>
    <Nights>6</Nights>
    <Baserate currency="USD">1193.94</Baserate>
    <Tax currency="USD">21.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
  </Result>
  <Result>
    <Property>1234</Property>
    <Checkin>2018-06-07</Checkin>
    <Nights>7</Nights>
    <Baserate currency="USD">1259.93</Baserate>
    <Tax currency="USD">21.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
  </Result>
</Transaction>


Grund- und bedingte Zinssätze

Das folgende Beispiel zeigt eine Transaktionsnachricht, die einen Basiszinssatz und einen bedingten Zinssatz enthält:

<?xml version="1.0" encoding="UTF-8" ?>
<Transaction timestamp="2023-05-18T16:20:00-04:00" id="42">
  <Result>
    <Property>1234</Property>
    <Checkin>2023-04-10</Checkin>
    <Nights>1</Nights>

    <Baserate currency="USD">200.00</Baserate>
    <Tax currency="USD">20.00</Tax>
    <OtherFees currency="USD">1.00</OtherFees>

    <Rates>
      <!-- The rate_rule_id is required when using conditional rates -->
      <Rate rate_rule_id="mobile">
        <!-- Override base rate and taxes for conditional rates -->
        <Baserate currency="USD">180.00</Baserate>
        <Tax currency="USD">18.00</Tax>
      </Rate>
    </Rates>

  </Result>
</Transaction>

Inventar entfernen

Das folgende Beispiel entfernt mehrere Buchungen (1 Übernachtung an verschiedenen Tagen) für ein Hotel aus dem Bestand:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-05-23T16:20:00-04:00" id="42">
  <Result>
    <Property>1123581321</Property>
    <Checkin>2023-05-23</Checkin>
    <Nights>1</Nights>
    <Unavailable>
      <NoVacancy/>
    </Unavailable>
    <Tax currency="USD">0</Tax>
    <OtherFees currency="USD">0</OtherFees>
  </Result>
  <Result>
    <Property>1123581321</Property>
    <Checkin>2023-05-24</Checkin>
    <Nights>1</Nights>
    <Unavailable>
      <NoVacancy/>
    </Unavailable>
    <Tax currency="USD">0</Tax>
    <OtherFees currency="USD">0</OtherFees>
  </Result>
  <!---Sending <Baserate> is optional with <Unavailable> -->
  <Result>
    <Property>1123581321</Property>
    <Checkin>2023-05-25</Checkin>
    <Nights>1</Nights>
    <Baserate currency="USD">-1</Baserate>
    <Unavailable>
      <NoVacancy/>
    </Unavailable>
    <Tax currency="USD">0</Tax>
    <OtherFees currency="USD">0</OtherFees>
  </Result>
</Transaction>

<PropertyDataSet>

Ein Container für Raum- und Paketinformationen (oder Room Bundle) in einer <Transaction> Nachricht. Die auf einem Hotel festgelegten Werte überschreiben die auf einem Partner festgelegten Werte. Google speichert diese Informationen, sodass Sie sie nicht jedes Mal neu definieren müssen, wenn Sie Preisaktualisierungen senden.

Das Element <PropertyDataSet> erscheint an folgender Stelle in der XML-Hierarchie der Transaktionsnachricht:

+ <Transaction>
    + <PropertyDataSet>  // Room and package metadata
        + <Property>
        + <RoomData>
        + <PackageData>
    + <Result>  // Pricing and availability
        + <Rates>
        + <RoomBundle>
        + ...

Weitere Informationen finden Sie unter Room Bundle metadata.

Syntax

Das <PropertyDataSet>-Element verwendet die folgende Syntax:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
  <PropertyDataSet>
    <!-- (Required) ID that matches the Hotel List Feed -->
    <Property>hotel_ID</Property>

    <!-- (Optional) Defines metadata about a room -->
    <RoomData>
      ...
    </RoomData>

    <!-- (Optional) Defines package metadata to be paired with rooms (Room Bundles) -->
    <PackageData>
      ...
    </PackageData>
  </PropertyDataSet>
  ...
</Transaction>

Attribute

Das <PropertyDataSet>-Element hat keine Attribute.

Untergeordnete Elemente

Das <PropertyDataSet>-Element hat die folgenden untergeordneten Elemente:

Kindelement Erforderlich? Typ Description
<PackageData> Optional* <PackageData> Beschreibt ein Zimmerpaket. Diese Daten sind einem Partner und einem Hotel zugeordnet, jedoch nicht einer Reiseroute. Dieses Element ist ähnlich wie <RoomData>, beschreibt aber Annehmlichkeiten und Begriffe, die nicht Teil der physischen Zimmerbeschreibung sind.

Sie verweisen in Ihren Preisaktualisierungen auf die Paket-ID.

Weitere Informationen finden Sie unter Room Bundle metadata.

<Property> Required string Die ID eines Hotels, auf das sich die zugehörigen Daten beziehen. Der Wert dieses Elements muss eine Zeichenkette sein, die mit dem Eintrag <id> in Ihrem Hotellisten-Feed übereinstimmt.
<RoomData> Optional* <RoomData> Beschreibt einen Raum. Diese Daten sind einem Partner und einem Hotel zugeordnet, jedoch nicht einer Reiseroute.

Sie beziehen sich in Ihren Preisaktualisierungen auf die Zimmer-ID.

* Mindestens eine der Optionen <PackageData> oder <RoomData> ist erforderlich.

Beispiele

Zimmer- und Paketdaten

Das folgende Beispiel zeigt sowohl Raum- als auch Paketdaten in einem <PropertyDataSet>:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>180054</Property>
    <RoomData>
      <RoomID>060773</RoomID>
      <Name>
        <Text text="Single Bed Room" language="en"/>
        <Text text="Chambre single" language="fr"/>
      </Name>
      <Description>
        <Text text="Non-smoking" language="en"/>
        <Text text="Pas de fumiers" language="fr"/>
      </Description>
      <PhotoURL>
        <Caption>
          <Text text="Living area" language="en"/>
          <Text text="Le chambre" language="fr"/>
        </Caption>
        <URL>http://www.foo.com/static/bar/image1234.jpg</URL>
      </PhotoURL>
    </RoomData>
    <PackageData>
      <PackageID>P54321</PackageID>
      <Name>
        <Text text="Breakfast Included" language="en"/>
        <Text text="Avec le petit déjeuner" language="fr"/>
      </Name>
      <Description>
        <Text text="Includes a delightful array of jams and jellies." language="en"/>
        <Text text="Comprend une délicieuse gamme de confitures et gelées." language="fr"/>
      </Description>
      <BreakfastIncluded>1</BreakfastIncluded>
    </PackageData>
  </PropertyDataSet>
</Transaction>

Wenn Sie Preise und Verfügbarkeiten für dieses Zimmer und das Zimmerpaket senden, geben Sie in Ihren Preisnachrichten die Zimmer- und Paket-IDs an. Das Ergebnis ist, dass Sie die Größe Ihrer Nachrichten erheblich reduzieren und auch die Anzahl der Fehler, die aufgrund doppelter Daten auftreten können, verringern. Weitere Informationen finden Sie unter Room Bundle metadata.

<RoomData>

Definiert reiseplanunabhängige Metadaten über Zimmer und, im weiteren Sinne, Zimmerpakete (da Zimmerpakete Zimmer plus zusätzliche Annehmlichkeiten sind). Verwenden Sie <RoomData>, um die Wiederholung beschreibender Daten in Ihrem Preisfeed zu reduzieren.

Das Element <RoomData> erscheint an folgender Stelle in der XML-Hierarchie der Transaktionsnachricht:

+ <Transaction>
    + <PropertyDataSet>  // Room and package metadata
        + <Property>
        + <RoomData>
        + <PackageData>
    + <Result>           // Pricing and availability
        + <Rates>
        + <RoomBundle>
        + ...

<RoomData> Elemente enthalten Informationen, die mit einem Partner und einem Hotel, aber nicht mit einer Reiseroute verknüpft sind. Der vorgesehene Verwendungszweck umfasst alle Daten, die nicht Reiseverlaufsdaten sind.

Das Element <RoomData> ist ähnlich wie <PackageData>, beschreibt aber den physischen Raum und nicht die Ausstattung und die Bedingungen eines Pakets. Sie verwenden <RoomData> und <PackageData> in Kombination, um Details zu Zimmerpaketen anzugeben. Für einzelne Zimmer, die nicht Teil eines Pakets sind, verwenden Sie einfach <RoomData>.

Sie können sowohl die <RoomData>- als auch die <PackageData>-Elemente für denselben Raum oder dasselbe Raum-Bundle definieren. Wenn Google dieses Zimmer oder Paket in den Suchergebnissen anzeigt, werden die Beschreibungen beider Angebote durch einen Bindestrich getrennt angezeigt.

Weitere Informationen finden Sie unter Room Bundle metadata.

Syntax

Das <RoomData>-Element verwendet die folgende Syntax:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
  <PropertyDataSet>
    ...
    <RoomData>
      <RoomID>room_ID</RoomID>

      <Name>
        <Text text="room_name" language="language_code"/>
        ...
      </Name>

      <Description>
        <Text text="room_description" language="language_code"/>
        ...
      </Description>

      <Capacity>max_number_of_occupants</Capacity>
      <Occupancy>max_number_of_intended_occupants</Occupancy>
      <OccupancyDetails> <!-- optional info about the types of guests,
      whether adults, children, or seniors --></OccupancyDetails>
      <OccupancySettings>
        <MinOccupancy>min_number_of_occupants</MinOccupancy>
        <MinAge>min_age_of_occupants</MinAge>
      </OccupancySettings>

      <PhotoURL>
        <Caption>
          <Text text="photo_description" language="language_code"/>
          ...
        </Caption>
        <URL>photo_location</URL>
      </PhotoURL>
      <RoomFeatures>
        ...
      </RoomFeatures>
    </RoomData>
    ...
  </PropertyDataSet>
</Transaction>

Attribute

Das <RoomData>-Element hat keine Attribute.

Untergeordnete Elemente

Das <RoomData>-Element hat die folgenden untergeordneten Elemente:

Kindelement Erforderlich? Typ Description
<Capacity> Optional integer Die maximale Anzahl von Gästen, die ein Zimmer physisch aufnehmen kann. Bei einem Raum ist die Kapazität größer oder gleich der Belegung.

Sofern angegeben, muss dieser Wert gleich oder größer als der Wert des Elements <Occupancy> sein, bei dem es sich um die geplante Anzahl von Gästen für ein bestimmtes Zimmer handelt. Beispielsweise könnte der <Capacity>-Wert einer großen Suite 6 betragen, der <Occupancy>-Wert hingegen 4.

Der Wert von <Capacity> muss eine positive ganze Zahl zwischen 1 und 20 (einschließlich) sein.

<Description> Optional Object Eine detaillierte Beschreibung des Zimmers. Dieses Element sollte Informationen enthalten, die nicht durch andere Elemente oder das Element <Name> beschrieben werden. Bei der Beschreibung des Zimmers sollten Sie nicht alles in Großbuchstaben schreiben.

Das Element <Description> nimmt ein einzelnes Kindelement <Text> entgegen, das die folgenden beiden erforderlichen Attribute besitzt:

  • text: Eine detaillierte Beschreibung des Zimmers.
  • language: Ein zweistelliger Sprachcode; zum Beispiel fr.

Verwenden Sie für jede Sprache, in der Ihre Anzeige oder Ihr kostenloser Buchungslink erscheinen soll, ein separates <Text>-Element (mit unterschiedlichen Werten für die language-Attribute).

Das folgende Beispiel zeigt die französische und die englische Version der Raumbeschreibung:

<Description>
  <Text text="Two queen-sized beds" language="en"/>
  <Text text="Deux lits de la reine" language="fr"/>
</Description>
<Name> Required string Der Name der Zimmerkategorie. Dieser Wert sollte mit den Angaben auf der Landingpage des Hotels übereinstimmen (früher Point of Sale beziehungsweise POS). Setzen Sie den Wert dieses Elements nicht auf Großbuchstaben.

Dieses Element benötigt ein einzelnes Kindelement, <Text>, das die folgenden beiden erforderlichen Attribute besitzt:

  • text: Der Name des Raumes.
  • language: Ein zweistelliger Sprachcode; zum Beispiel fr.

Verwenden Sie für jede Sprache, in der Ihre Anzeige oder Ihr kostenloser Buchungslink erscheinen soll, ein separates <Text>-Element (mit unterschiedlichen Werten für die language-Attribute).

Das folgende Beispiel zeigt die französische und die englische Version des Zimmernamens:

<Name>
  <Text text="Standard Double Room" language="en"/>
  <Text text="Le chambre double" language="fr"/>
</Name>
<Occupancy> Optional integer Die maximale Anzahl an Gästen, für die ein Zimmer vorgesehen ist. In einer großen Suite haben beispielsweise bis zu sechs Gäste Platz (Kapazität = 6). Gedacht ist sie aber nur für bis zu vier Personen.

Dieser Wert muss kleiner oder gleich dem Element <Capacity> sein, welches die Anzahl der Personen angibt, die der Raum physisch aufnehmen kann.

Der Wert von <Occupancy> muss eine positive ganze Zahl zwischen 1 und 99 (einschließlich) sein.

<Occupancy> wird möglicherweise von <OccupancyDetails> begleitet, wodurch die Art der Gäste (Erwachsene oder Kinder) angegeben wird. Weitere Informationen zur Syntax und Beschreibung untergeordneter Elemente finden Sie in <OccupancyDetails>.

<OccupancySettings> Optional Object Einstellungen, mit denen die Belegungsanforderungen eines Raums eingeschränkt oder geändert werden können.

Das Element <OccupancySettings> nimmt die folgenden Kindelemente auf:

  • <MinOccupancy>: Die Mindestanzahl an Gästen, die in einem Zimmer übernachten dürfen. Wenn dieser Wert beispielsweise auf 2 gesetzt ist, kann dieses Zimmer nicht für einen einzelnen Gast gebucht werden.

    Der Wert von <MinOccupancy> muss eine positive ganze Zahl zwischen 1 und 99 (einschließlich) sein.

  • <MinAge>: Das Mindestalter für alle Gäste, die in einem Zimmer übernachten. Wenn diese Einstellung beispielsweise auf 18 festgelegt ist, kann dieses Zimmer nur für Gruppen gebucht werden, in denen alle Gäste mindestens 18 Jahre alt sind.

    Der Wert für <MinAge> muss eine positive Ganzzahl zwischen 0 und 99 sein.

<OccupancySettings>
  <MinOccupancy>2</MinOccupancy>
  <MinAge>16</MinAge>
</OccupancySettings>

Es müssen nicht alle Kindelemente einbezogen werden.

<PhotoURL> Optional Object Eine URL und optional eine Bildunterschrift für ein Foto des jeweiligen Zimmers oder Zimmerpakets. Sie können mehr als eine <PhotoURL> für ein Zimmer oder Zimmerpaket angeben. Jede Foto-URL muss in einem eigenen <PhotoURL> stehen.

Dieses Element verwendet die folgenden untergeordneten Elemente:

  • <URL>: Gibt den Speicherort des Fotos an. Der Standort muss öffentlich sein (nicht hinter einer Firewall) und das Protokoll enthalten (z. B. https://). Verwenden Sie nur ein <URL> pro <PhotoURL>.
  • <Caption>: Definiert die Bildunterschrift für das Foto. Dieses Element verwendet das einzelne untergeordnete Element <Text>, das die beiden erforderlichen Attribute text und language hat. Das Attribut text ist die Bildunterschrift, und das Attribut language gibt einen zweistelligen Sprachcode wie z. B. en an.

Beispiel:

<PhotoURL>
  <URL>https://www.example.com/static/bar/image1234.jpg</URL>
  <Caption>
    <Text text="A bright and breezy way to enjoy your mornin'
      cuppa tea." language="en"/>
    <Text text="Une façon lumineuse et aérée pour profiter
      de votre journée tasse de thé." language="fr"/>
  </Caption>
</PhotoURL>
<PhotoURL>
  <URL>https://www.foo.com/static/bar/image5678.jpg</URL>
  <Caption>
    <Text text="Or, perhaps you prefer coffee." language="en"/>
    <Text text="Ou peut-être préférez-vous le café." language="fr"/>
  </Caption>
</PhotoURL>
<RoomFeatures> Optional <RoomFeatures> Enthält Informationen zu Raumfunktionen.
<RoomID> Required string Die eindeutige ID für das Zimmer. Verwenden Sie diese ID, um die Zimmerdaten mit den <Result>-Blöcken in Ihren Preisaktualisierungen abzugleichen. Weitere Informationen finden Sie unter Room Bundle metadata. (Sie können diese ID auch verwenden, um in einer einzelnen Transaktionsnachricht auf eine gemeinsame Raumdefinition zu verweisen, wenn Sie Raumdaten inline definieren.)

Beispiele

Raumdaten

Das folgende Beispiel definiert Raumdaten:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <RoomData>
      <RoomID>5440OF</RoomID>
      <Name>
        <Text text="Single King Bed Room" language="en"/>
        <Text text="Simple Lit de Roi" language="fr"/>
      </Name>
      <Description>
        <Text text="One king bed with pillowtop mattresses, 300-thread-count linens,
          and down comforters (bedspreads). City view. 300 square feet. Desk with
          rolling chair. Multi-line phone with voice mail. Cable/satellite TV with
          complimentary HBO and pay movies." language="en"/>
        <Text text="Un très grand lit avec matelas à plateau-coussin, ..." language="fr"/>
      </Description>
      <PhotoURL>
        <Caption>
          <Text text="Bathroom View" language="en"/>
          <Text text="La salle de baines" language="fr"/>
        </Caption>
        <URL>http://www.foo.com/static/bar/image1234.jpg</URL>
      </PhotoURL>
      <Capacity>4</Capacity>
    </RoomData>
  </PropertyDataSet>
</Transaction>

Zimmer- und Paketmetadaten

Das folgende Beispiel definiert Raum- und Paketmetadaten:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>180054</Property>
    <RoomData>
      <RoomID>060773</RoomID>
      <Name>
        <Text text="Single Bed Room" language="en"/>
        <Text text="Chambre single" language="fr"/>
      </Name>
      <Description>
        <Text text="Non-smoking" language="en"/>
        <Text text="Pas de fumiers" language="fr"/>
      </Description>
      <PhotoURL>
        <Caption>
          <Text text="Living area" language="en"/>
          <Text text="Le chambre" language="fr"/>
        </Caption>
        <URL>http://www.foo.com/static/bar/image1234.jpg</URL>
      </PhotoURL>
    </RoomData>
    <PackageData>
      <PackageID>P54321</PackageID>
      <Name>
        <Text text="Breakfast Included" language="en"/>
        <Text text="Avec le petit déjeuner" language="fr"/>
      </Name>
      <Description>
        <Text text="Includes a delightful array of jams and jellies." language="en"/>
        <Text text="Comprend une délicieuse gamme de confitures et gelées." language="fr"/>
      </Description>
      <BreakfastIncluded>1</BreakfastIncluded>
    </PackageData>
  </PropertyDataSet>
</Transaction>

Mehrere Zimmerpakete

Im folgenden Beispiel werden Zimmer- und Paketmetadaten für mehrere Zimmerpakete definiert:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <!-- A transaction message with room types result. -->
  <PropertyDataSet>
    <Property>12345</Property>
    <RoomData>
      <RoomID>single</RoomID>
      <Name>
        <Text text="Single room" language="en"/>
        <Text text="Chambre simple" language="fr"/>
      </Name>
      <Description>
        <Text text="A single room" language="en"/>
        <Text text="Le chambre simple" language="fr"/>
      </Description>
      <PhotoURL>
        <Caption>
          <Text text="Living area" language="en"/>
          <Text text="Le chambre" language="fr"/>
        </Caption>
        <URL>http://www.foo.com/static/bar/image1234.jpg</URL>
      </PhotoURL>
      <PhotoURL>
        <URL>http://www.foo.com/static/bar/image1235.jpg</URL>
      </PhotoURL>
      <Capacity>2</Capacity>
    </RoomData>
    <RoomData>
      <RoomID>double</RoomID>
      <Name>
        <Text text="Double room" language="en"/>
        <Text text="Chambre double" language="fr"/>
      </Name>
      <Occupancy>1</Occupancy>
    </RoomData>
    <PackageData>
      <PackageID>refundbreakfast</PackageID>
      <Name>
        <Text text="Refundable Room with Breakfast" language="en"/>
        <Text text="Chambre remboursable avec le petit déjeuner" language="fr"/>
      </Name>
      <Description>
        <Text text="Continental Breakfast" language="en"/>
        <Text text="Petit déjeuner continental" language="fr"/>
      </Description>
      <ChargeCurrency>hotel</ChargeCurrency>
      <Refundable available="1" refundable_until_days="3"/>
      <BreakfastIncluded>1</BreakfastIncluded>
    </PackageData>
    <PackageData>
      <PackageID>prepaid</PackageID>
      <Name>
        <Text text="Nonrefundable" language="en"/>
        <Text text="Non remboursable" language="fr"/>
      </Name>
      <Description>
        <Text text="Blah blah blad" language="en"/>
        <Text text="Le blah blah blad" language="fr"/>
      </Description>
      <Occupancy>2</Occupancy>
      <ChargeCurrency>web</ChargeCurrency>
      <Refundable available="0"/>
    </PackageData>
  </PropertyDataSet>
</Transaction>

<RoomFeatures>

Definiert die im Raum vorhandenen Merkmale.

Das Element <RoomFeatures> erscheint an folgender Stelle in der XML-Hierarchie der Transaktionsnachricht:

+ <Transaction>
    + <PropertyDataSet>  // Room and package metadata
        + <Property>
        + <RoomData>
            + <RoomFeatures>

Syntax

Das <RoomFeatures>-Element verwendet die folgende Syntax:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
  <PropertyDataSet ... >
    ...
    <RoomData>
      <RoomFeatures>
        <JapaneseHotelRoomStyle>[western|japanese|japanese_western]</JapaneseHotelRoomStyle>
        <Beds>
           <Bed size="[single|semi_double|double|queen|king]">
             <Width unit="cm" number="width"/>
             <Length unit="cm" number="length"/>
           </Bed>
           <!-- Include with any additional beds. -->
        </Beds>
        <Suite/>
        <Capsule/>
        <Roomsharing>[shared|private]</Roomsharing>
        <Outdoor/>
        <MobilityAccessible/>
        <Smoking>[smoking|non_smoking]</Smoking>
        <BathAndToilet relation="[together|separate]">
          <Bath bathtub="[false|true]" shower="[false|true]"/>
          <Toilet electronic_bidet="[false|true]" mobility_accessible="[false|true]"/>
        </BathAndToilet>
        <OpenAirBath/>
        <AirConditioning/>
        <Balcony/>
        <Views>
          <!-- (Optional) Defines the type of views from the room. -->
          <!-- Example: <OceanView/> -->
        </Views>

      </RoomFeatures>
      ...
    </RoomData>
    ...
  </PropertyDataSet>
</Transactions>

Attribute

Das <RoomFeatures>-Element hat keine Attribute.

Untergeordnete Elemente

Das <RoomFeatures>-Element hat die folgenden untergeordneten Elemente:

Kindelement Erforderlich? Typ Description
<JapaneseHotelRoomStyle> Optional enum

Kennzeichnet den Stil eines japanischen Hotelzimmers.

Gültige Werte sind:

  • western: Ein Zimmer im westlichen Stil mit Betten.
  • japanese: Ein Zimmer im japanischen Stil mit Futonbetten.
  • japanese_western: Ein Zimmer im japanischen Western-Stil mit Betten im westlichen Stil und Futons im japanischen Stil.
<Beds> Optional Object Enthält so viele <Bed> wie der Raum hat. Zu beachten ist, dass japanische Futons hier nicht mitgezählt werden sollten.

Jedes <Bed> hat die folgenden Attribute:

  • size (optional): Gültige Werte sind single, semi_double, double, queen und king.
Jedes <Bed> hat die folgenden Kindelemente:
  • <Width> (optional): Gibt die Bettbreite an. Muss das Attribut unit mit dem Wert cm und das Attribut number mit der Breite des Bettes in ganzen Zentimetern haben.
  • <Length> (optional): Gibt die Bettlänge an. Muss das Attribut unit mit dem Wert cm und das Attribut number mit der Länge des Bettes in ganzen Zentimetern haben.
Beispiel:
<Beds>
  <Bed size="double">
    <Width unit="cm" number="140"/>
    <Length unit="cm" number="195"/>
  </Bed>
  <Bed/> <!-- Size unknown -->
</Beds>
<Suite> Optional empty Dieses Element ist erforderlich, wenn es sich bei diesem Zimmer um eine Suite handelt.
<Capsule> Optional empty Dieses Element muss angegeben werden, wenn es sich bei diesem Raum um eine Kapselkabine handelt.
<Roomsharing> Optional enum Ob dieses Zimmer mit anderen Bewohnern wie Eigentümern oder anderen Gästen geteilt wird. Gültige Werte sind shared und private.
<Outdoor> Optional empty Geben Sie dieses Element an, wenn es sich bei diesem Zimmer um eine Unterkunft im Freien handelt, die keine festen Wände, keine Sanitäranlagen und keine Klimaanlage hat. Hotelzimmer sind beispielsweise keine Outdoor-Unterkünfte, Campingplätze, auf denen Gäste in Zelten übernachten, sowie Wohnmobilparks für Gäste mit eigenem Wohnmobil hingegen schon.
<MobilityAccessible> Optional empty Dieses Element sollte bereitgestellt werden, wenn der Raum barrierefrei zugänglich ist.
<Smoking> Optional enum Ob es sich bei diesem Zimmer um ein Nichtraucher- oder Raucherzimmer handelt. Gültige Werte sind non_smoking und smoking.
<BathAndToilet> Optional Object Enthält Informationen zu Bad und Toilette im Zimmer.

Das Attribut ist:

  • relation (optional): Gibt an, wie Bad und Toilette zueinander angeordnet sind. Gültige Werte sind together (Bad und Toilette befinden sich im selben Raum, z.B. im Badezimmer, direkt nebeneinander) und separate (Bad und Toilette haben jeweils einen eigenen Raum). Dieses Attribut darf nicht festgelegt werden, wenn das Zimmer nicht sowohl ein Bad als auch eine Toilette hat.

Das Element kann optional die folgenden untergeordneten Elemente enthalten:

  • <Bath> (optional): Das Vorhandensein dieses Elements gibt an, dass das Zimmer ein Bad hat.

    Die Attribute sind:

    • bathtub (optional): Gibt an, dass das Badezimmer über eine Badewanne verfügt. Gültige Werte sind 0 (oder false) und 1 (oder true).
    • shower (optional): Gibt an, dass das Badezimmer über eine Dusche verfügt. Gültige Werte sind 0 (oder false) und 1 (oder true).
  • <Toilet> (optional): Das Vorhandensein dieses Elements zeigt an, dass sich in diesem Raum eine Toilette befindet.

    Die Attribute sind:

    • electronic_bidet (optional): Gibt an, dass die Toilette über ein elektronisches Bidet verfügt. Gültige Werte sind 0 (oder false) und 1 (oder true).
    • mobility_accessible (optional): Gibt an, dass die Toilette barrierefrei zugänglich ist. Gültige Werte sind 0 (oder false) und 1 (oder true).

Beispiel:

<BathAndToilet relation="separate">
  <Bath bathtub="1" shower="1"/>
  <Toilet
    electronic_bidet="1"
    mobility_accessible="1"/>
</BathAndToilet>
<OpenAirBath> Optional empty Dieses Element ist vorzusehen, wenn das Zimmer über ein privates Freiluftbad verfügt.
<AirConditioning> Optional empty Geben Sie dieses Element an, wenn das Zimmer über eine Klimaanlage verfügt.
<Balcony> Optional empty Dieses Element ist erforderlich, wenn das Zimmer über einen Balkon oder eine Veranda verfügt.
<Views> Optional Object Gültige Optionen sind unter anderem:

<AirportView/>
<BayView/>
<BeachView>/>
<CastleView/>
<CityView/>
<CountrysideView/>
<CourtyardView/>
<DuneView/>
<ForestView/>
<GardenView/>
<GolfCourseView/>
<HarborView/>
<LagoonView/>
<LakeView/>
<MarinaView/>
<MountainView/>
<NatureView/>
<OceanView/>
<ParkView/>
<PartialOceanView/>
<PisteView/>
<PoolView/>
<PyramidView/>
<RiverView/>
<StreetView/>

Beispiele

JapaneseHotelRoomStyle hat keinen Standardwert. Wenn Sie einen Wert weglassen, führt das nicht zu einem XML-Fehler. Ihr Eintrag wird jedoch nicht in den Suchergebnissen angezeigt, wenn der Nutzer nach Zimmerstil oder Betten filtert.

Zwei Einzelbetten

Das folgende Beispiel zeigt, wie <RoomFeatures> verwendet wird:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <RoomData>
      <RoomID>RoomID_1</RoomID>
      <RoomFeatures>
        <JapaneseHotelRoomStyle>western</JapaneseHotelRoomStyle>
        <Beds> <!-- Two single beds -->
          <Bed size="single">
            <Width unit="cm" number="97"/>
            <Length unit="cm" number="195"/>
          </Bed>
          <Bed size="single">
            <Width unit="cm" number="97"/>
            <Length unit="cm" number="195"/>
          </Bed>
        </Beds>
        <Suite/>
        <Capsule/>
        <Roomsharing>private</Roomsharing>
        <Outdoor/>
        <MobilityAccessible/>
        <Smoking>non_smoking</Smoking>
        <BathAndToilet relation="separate">
          <Bath bathtub="1" shower="1"/>
          <Toilet electronic_bidet="1" mobility_accessible="1"/>
        </BathAndToilet>
        <OpenAirBath/>
        <AirConditioning/>
        <Balcony/>
        <Views>
          <LakeView/>
          <MarinaView/>
          <BeachView/>
          <ForestView/>
          <MountainView/>
          <NatureView/>
        </Views>
      </RoomFeatures>
    </RoomData>
  </PropertyDataSet>
</Transaction>

Zwei Doppelbetten

Nachfolgend ein Beispiel für ein japanisches Zimmer im western-Stil mit zwei double-Betten.

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-07-23T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <RoomData>
      <RoomID>RoomID_1</RoomID>
      <RoomFeatures>
        <JapaneseHotelRoomStyle>western</JapaneseHotelRoomStyle>
        <Beds> <!-- Two double beds-->
          <Bed size="double"></Bed>
          <Bed size="double"></Bed>
        </Beds>
      </RoomFeatures>
    </RoomData>
  </PropertyDataSet>
</Transaction>


Japanischer Stil ohne Bett

Nachfolgend ein Beispiel für ein Zimmer im japanischen Stil ohne Bett. Für Zimmer des Typs japanese werden keine Bettinformationen benötigt.

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-07-23T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <RoomData>
      <RoomID>RoomID_1</RoomID>
      <RoomFeatures>
        <JapaneseHotelRoomStyle>japanese</JapaneseHotelRoomStyle>
      </RoomFeatures>
    </RoomData>
  </PropertyDataSet>
</Transaction>

Japanischer Western mit Bett

Nachfolgend ein Beispiel für ein Zimmer im Stil japanese_western mit einem Bett der Größe king.

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-07-23T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <RoomData>
      <RoomID>RoomID_1</RoomID>
      <RoomFeatures>
        <JapaneseHotelRoomStyle>japanese_western</JapaneseHotelRoomStyle>
        <Beds>
          <Bed size="king"></Bed>
        </Beds>
      </RoomFeatures>
    </RoomData>
  </PropertyDataSet>
</Transaction>

Falls Ihrem Partner die Anzahl der Betten in japanese_western Zimmern nicht bekannt ist, folgen Sie dem folgenden Beispiel:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-07-23T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <RoomData>
      <RoomID>RoomID_1</RoomID>
      <RoomFeatures>
        <JapaneseHotelRoomStyle>japanese_western</JapaneseHotelRoomStyle>
      </RoomFeatures>
    </RoomData>
  </PropertyDataSet>
</Transaction>

<PackageData>

Definiert reiseplanunabhängige Metadaten zu Zimmerpaketen für eine Unterkunft. Dieses Element enthält Informationen, die mit einem Partner und einem Hotel verknüpft sind, jedoch nicht mit einer Reiseroute. Ziel ist es, alle nicht zum Reiseverlauf gehörenden Daten einmalig zu definieren und in den Reiseverlaufsdaten darauf zu verweisen.

Das Element <PackageData> erscheint an folgender Stelle in der XML-Hierarchie der Transaktionsnachricht:

+ <Transaction>
    + <PropertyDataSet>  // Room and package metadata
        + <Property>
        + <RoomData>
        + <PackageData>
    + <Result>           // Pricing and availability
        + <Rates>
        + <RoomBundle>
        + ...

Das Element <PackageData> ist ähnlich wie <RoomData>, beschreibt aber Tarifmerkmale und Begriffe, die nicht Teil der physischen Raumbeschreibung sind. Sie verwenden <RoomData> und <PackageData> in Kombination, um Details zu Zimmerpaketen und Tarifmerkmalen anzugeben. Für einzelne Zimmer, die nicht Teil eines Pakets sind, verwenden Sie einfach <RoomData>.

Sie können sowohl die <RoomData> als auch die <PackageData> Elemente für denselben Raum oder dasselbe Raum-Bundle definieren. Wenn Google dieses Zimmer oder Paket in den Suchergebnissen anzeigt, werden die Beschreibungen beider Angebote durch einen Bindestrich getrennt angezeigt.

Wenn Sie ein einzelnes <PackageData>-Element für eine Eigenschaft aktualisieren, müssen Sie alle <PackageData>- und <RoomData>-Elemente für die Eigenschaft aktualisieren. Jedes <PropertyDataSet> wird als Gesamtheit der Daten über die Immobilie betrachtet und überschreibt alle vorhandenen Daten.

Weitere Informationen finden Sie unter Zimmerpaket-Metadaten.

Syntax

Das <PackageData>-Element verwendet die folgende Syntax:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
  <PropertyDataSet ... >
    <PackageData>
      <PackageID>package_ID</PackageID>
      <Name>
        <Text text="package_name" language="language_code"/>
        ...
      </Name>
      <Description>
        <Text text="package_description" language="language_code"/>
        ...
      </Description>
      <Refundable available="[false|true]" refundable_until_days="number_of_days"
        refundable_until_time="time"/>
      <ChargeCurrency>[deposit|hotel|installments|web]</ChargeCurrency>
      <Occupancy>max_number_of_intended_occupants</Occupancy>
      <OccupancyDetails><!-- optional info about the types of guests,
      whether adults or children --></OccupancyDetails>
      <!-- For these next 3 elements, boolean_value can be 0/1 or true/false -->
      <BreakfastIncluded>boolean_value</BreakfastIncluded>
      <InternetIncluded>boolean_value</InternetIncluded>
      <ParkingIncluded>boolean_value</ParkingIncluded>
      <PhotoURL>
        <Caption>
          <Text text="photo_description" language="language_code"/>
          ...
        </Caption>
        <URL>photo_location</URL>
      </PhotoURL>
      ...
      <Meals>
        <Breakfast
          included="[true|false]" buffet="[true|false]"
          in_room="[true|false]" in_private_space="[true|false]"/>
        <Dinner
          included="[true|false]" buffet="[true|false]"
          in_room="[true|false]" in_private_space="[true|false]"/>
      </Meals>
      <CheckinTime>checkin_time</CheckinTime>
      <CheckoutTime>checkout_time</CheckoutTime>
      <MembershipBenefitsIncluded>
        <ProgramName>
          <Text language="en" text="Special Rewards">
        </ProgramName>
        <ProgramLevel>
          <Text language="en" text="Platinum">
        </ProgramLevel>
      </MembershipBenefitsIncluded>
      <OnPropertyCredit>
        <Amount currency="USD">123.45</Amount>
      </OnPropertyCredit>
    </PackageData>
    <!-- a PackageID with a MilesIncluded rate feature -->
    <PackageData>
      <PackageID>room_with_miles</PackageID>
      <Name>
       <Text text="Room with Bundled Miles" language="en">
      </Name>
      <ChargeCurrency>hotel </ChargeCurrency>
      <MilesIncluded>
        <NumberOfMiles>integer</NumberOfMiles>
        <Provider>
          <Text language="en" text="provider-name">
        </Provider>
        <!-- Add Loyalty point information -->
        <LoyaltyCampaignID>campaign_ID</LoyaltyCampaignID>
      </MilesIncluded>
    </PackageData>
    ...
    ...
  </PropertyDataSet>
  ...
</Transaction>

Attribute

Das <PackageData>-Element hat keine Attribute.

Untergeordnete Elemente

Das <PackageData>-Element hat die folgenden untergeordneten Elemente:

Kindelement Erforderlich? Typ Description
<BreakfastIncluded> Optional boolean Gibt an, ob der Preis des Pakets Frühstück beinhaltet. Gültige Werte sind 0 (oder false) und 1 (oder true).

Wir empfehlen, <Meals> statt <BreakfastIncluded> zu verwenden.

<ChargeCurrency> Optional enum Wann und wo der Nutzer für eine Buchung bezahlt. Dieses Element verwendet die gleiche Syntax wie <ChargeCurrency> in einem <Result>.

Der Standardwert ist web.

<CheckinTime> Optional Time Frühestmögliche Check-in-Zeit. Die Uhrzeit muss weniger als 24:00 Uhr Ortszeit des Hotels sein.
<CheckoutTime> Optional Time Spätestmögliche Check-out-Zeit in Ortszeit des Hotels.
<Description> Optional Object Eine detaillierte Beschreibung des Pakets. Dieses Element sollte Informationen enthalten, die nicht durch andere Elemente oder das Element <Name> beschrieben werden. Bei der Beschreibung des Zimmers sollten Sie nicht alles in Großbuchstaben schreiben.

Das Element <Description> nimmt ein einzelnes Kindelement, <Text>, auf, das zwei erforderliche Attribute, text und language, besitzt. Das Attribut text ist die Beschreibung, und das Attribut language gibt einen zweistelligen Sprachcode an, wie das folgende Beispiel zeigt:

<Description>
  <Text text="Two breakfast buffet certificates for
    each night of stay." language="en"/>
  <Text text="Deux certificats petit-déjeuner buffet
    pour chaque nuit de séjour." language="fr"/>
</Description>
<InternetIncluded> Optional boolean Wenn ein Paket kostenlosen Internetzugang beinhaltet, während andere Pakete diese Leistung nicht bieten. Dieses Element sollte nicht für Zimmerpakete in einem Hotel festgelegt werden, das kostenloses Internet für alle Zimmer anbietet. Dieser Punkt gilt nicht für kabelgebundenes Internet im Zimmer oder drahtloses Internet, das in den Gästezimmern nicht verfügbar ist. Gültige Werte sind 0 (oder false) und 1 (oder true).
<Meals> Optional Object Enthält Informationen zu den in dieser Packung enthaltenen Mahlzeiten.

Das Element <Meals> akzeptiert zwei optionale Kindelemente, <Breakfast> und <Dinner>, die die folgenden Attribute besitzen:

  • included (erforderlich): Auf 1 (oder true) setzen, wenn der Preis Frühstück/Abendessen beinhaltet; andernfalls auf 0 oder false setzen.
  • in_room (optional): Legen Sie 1 (oder true) fest, wenn Gäste die Möglichkeit haben, in ihrem Zimmer zu frühstücken oder zu Abend zu essen. Andernfalls legen Sie 0 (oder false) fest.
  • in_private_space (optional): Auf 1 (oder true) setzen, wenn die Gäste die Möglichkeit haben, Frühstück/Abendessen in einem separaten Raum (außer ihrem Zimmer) einzunehmen, in dem sie den Kontakt mit anderen Gästen vermeiden können; andernfalls auf 0 (oder false) setzen.
  • buffet (optional): Auf 1 (oder true) setzen, wenn Frühstück/Abendessen als Buffet serviert wird; andernfalls auf 0 (oder false) setzen.

Die optionalen Attribute werden nur verwendet, wenn included wahr ist.

Damit die Mahlzeitenfilter (no meals, breakfast only, dinner only und breakfast and dinner) funktionieren, müssen sowohl <Breakfast> als auch <Dinner> mit dem Attribut included angegeben werden.

<Name> Required string Der Name des Pakets. Dieser Wert sollte mit dem Wert auf der Startseite des Hotels übereinstimmen. Setzen Sie den Wert dieses Elements nicht auf Großbuchstaben.

Dieses Element nimmt ein einzelnes Kindelement, <Text>, auf, das zwei Attribute hat, text und language. Das Attribut text ist die Beschreibung, und das Attribut language gibt einen zweistelligen Sprachcode an, wie das folgende Beispiel zeigt:

<Name>
  <Text text="Bed and Breakfast" language="en"/>
  <Text text="Lit et petit déjeuné" language="fr"/>
</Name>
<Occupancy> Optional integer Die maximale Anzahl an Gästen, für die ein Zimmerpaket vorgesehen ist. Eine große Suite bietet beispielsweise zwar Platz für bis zu 6 Gäste, ist aber nur für maximal 4 Gäste ausgelegt.

Dieser Wert muss kleiner oder gleich dem Element <Capacity> sein. Das Element gibt die Anzahl von Personen an, für die das Zimmer physisch Platz bietet.

Der Wert von <Occupancy> muss eine positive ganze Zahl zwischen 1 und 99 (einschließlich) sein.

Wenn Sie dieses Element sowohl in <RoomBundle> als auch in <PackageData> angeben, hat der Wert in <RoomBundle> Vorrang.

Hinweis:

<Occupancy> kann von <OccupancyDetails> begleitet werden,welches die Art der Gäste (Erwachsene oder Kinder) angibt. Siehe <OccupancyDetails> für Syntax und Beschreibung der Kindelemente.
<PackageID> Required string

Die eindeutige ID für das Paket. Mit dieser ID ordnen Sie die Zimmerpaketdaten den <Result>-Blöcken in Ihren Preisaktualisierungen zu. Weitere Informationen finden Sie unter Zimmerpaket-Metadaten.

Wenn Sie die Daten eines Zimmerpakets inline definieren, können Sie mit dieser ID auf eine allgemeine Definition für ein Zimmerpaket in einer einzelnen Transaktionsnachricht verweisen.

<ParkingIncluded> Optional boolean Ob ein Zimmerpaket kostenloses Parken beinhaltet, wo das Parken in diesem Hotel ansonsten kostenpflichtig wäre. Geben Sie für dieses Element keinen Wert an, wenn das Hotel kostenlose Parkplätze anbietet.

Gültige Werte sind 0 (oder false) und 1 (oder true). Der Standardwert ist false.

<PhotoURL> Optional Object (Dasselbe wie <PhotoURL> in <RoomData>, aber für das Paket (z.B. Fotos von Mahlzeiten).)
<Refundable> Optional Object Ermöglicht die Angabe eines vollständig erstattungsfähigen Tarifs oder einer kostenlosen Stornierungsmöglichkeit. Falls diese Angaben nicht gemacht werden, werden keine Informationen über eine Rückerstattung angezeigt. Eine Rückerstattungsrichtlinie auf der Ebene <PackageData> hat Vorrang vor der Rückerstattungsrichtlinie auf der Ebene <Result>. Eine Rückerstattungsrichtlinie auf der Ebene <Rates> hat Vorrang vor der Rückerstattungsrichtlinie auf der Ebene <PackageData>. Rückerstattungsfähige Preise können den Nutzern auch durch alternative Optionen hervorgehoben werden, ohne dass das Schema Ihrer Transaktionsnachrichten direkt geändert werden muss. Erfahren Sie mehr über diese Optionen Rückerstattungsrichtlinie.

Das folgende Beispiel zeigt das Element <Refundable> mit allen seinen Attributen:

<Refundable available="1" refundable_until_days="7"
refundable_until_time="18:00:00"/>

Hinweis: Wir empfehlen, alle Attribute festzulegen. Es wird eine Warnmeldung zum Feed-Status generiert, wenn ein oder mehrere Attribute nicht festgelegt sind.

Wenn Sie keine Attribute festlegen, wird der Preis nicht als erstattungsfähig angezeigt. Die Attribute sind:

  • available: (Erforderlich) Auf 1 oder true setzen, um anzugeben, ob der Tarif eine vollständige Rückerstattung zulässt; andernfalls auf 0 oder false setzen.
  • refundable_until_days: (Erforderlich, wenn available gleich true ist) Gibt die Anzahl der Tage vor dem Check-in an, innerhalb derer eine vollständige Rückerstattung beantragt werden kann. Der Wert von refundable_until_days muss eine ganze Zahl zwischen 0 und 330 (einschließlich) sein.
  • refundable_until_time: (Dringend empfohlen, wenn available true ist) Gibt die späteste Uhrzeit in der Ortszeit des Hotels an, zu der ein Antrag auf vollständige Rückerstattung berücksichtigt wird. Dies kann mit refundable_until_days kombiniert werden, um beispielsweise anzugeben, dass „Rückerstattungen bis 16:00 Uhr zwei Tage vor dem Check-in möglich sind“. Wenn refundable_until_time nicht gesetzt ist, wird standardmäßig Mitternacht als Wert verwendet.

    Der Wert dieses Attributs verwendet das Format Time.

Beachten Sie beim Festlegen der Attribute Folgendes:

  • Wenn available oder refundable_until_days nicht festgelegt ist, wird der Preis nicht als erstattungsfähig angezeigt.
  • Wenn available gleich 0 oder false ist, werden die anderen Attribute ignoriert. Der Tarif wird auch dann nicht als erstattungsfähig angezeigt, wenn eines oder beide der anderen Attribute festgelegt sind.
<MembershipBenefits Included> Optional boolean Der Preis beinhaltet die Vorteile des Elite-Status für die gesamte Aufenthaltsdauer. Beinhaltet die folgenden Parameter:
  • ProgramName: Name des Elite-Statusprogramms
  • ProgramLevel: Programmstufe. Zum Beispiel: „Gold“.
  • NightlyValue (optional): Nächtlicher Wert der Vorteile.
<CarRentalIncluded> Optional boolean Im Preis inbegriffen ist ein kostenloser Mietwagen für die Dauer des Aufenthalts.
<MilesIncluded> Optional boolean Der Preis beinhaltet Vielfliegermeilen. Zu den Parametern gehören:
  • NumberOfMiles: Anzahl der Meilen pro Reiseroute.
  • Provider: Anbieter von Vielfliegermeilen.
  • LoyaltyCampaignID: Eine eindeutige ID, die die spezifische Loyalitätskampagne identifiziert, die bei Google konfiguriert und aktualisiert wurde. Dem Hotelpreis werden Treuepunkte gutgeschrieben.

    Um das Element <MilesIncluded> einzubinden, muss die Kampagnen-ID in der Konfiguration der Loyalitätskampagne konfiguriert werden. Die genauen Details, wie Google Treuepunkte in den Suchergebnissen verwendet, werden durch die Konfiguration der Treuekampagne bestimmt.

    Das Element <MilesIncluded> hat ein Kindelement <NumberOfMiles>, das die Anzahl der erzielten Punkte berechnet. Wenn <NumberOfMiles> nicht gesetzt ist, werden die verdienten Punkte durch die Konfiguration der Treuekampagne bestimmt.

    <MilesIncluded>
      <LoyaltyCampaignID>my_campaign</LoyaltyCampaignID>
      <NumberOfMiles>1200</NumberOfMiles>
      <Provider>
        <Text language="en" text="United Airlines">
      </Provider>
    </MilesIncluded>
  • Hinweis:<NumberOfMiles> und <Provider> sind optional.

<OnPropertyCredit> Optional boolean Im Preis inbegriffen sind Leistungen vor Ort (Speisen& Getränke, Resort, Spa usw.). Parameter:
  • Amount: Der Wert des Guthabens pro Reise, in lokaler Währung.
<AirportTransportationIncluded> Optional Object Der Preis beinhaltet einen kostenlosen Transport zu/von einem nahe gelegenen Flughafen. Das optionale Attribut direction gibt die Richtung des Transports an. Gültige Werte sind:
    from: Ein Transfer vom Flughafen zur Unterkunft wird angeboten. Dies ist der Standardwert, wenn keine Richtung angegeben wird. to: Ein Transfer vom Hotel zum Flughafen wird angeboten. round_trip: Es wird ein Transport sowohl zum als auch vom Flughafen angeboten.

Beispiele

Einzelzimmer-Paket

Das folgende Beispiel definiert ein einzelnes Zimmerpaket mit einer Belegung von 2 Personen (ein Erwachsener und ein Kind) inklusive Frühstück:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <PackageData>
      <Occupancy>2</Occupancy>
      <OccupancyDetails>
        <NumAdults>1</NumAdults>
        <Children>
          <Child age="17"/>
        </Children>
      </OccupancyDetails>
      <PackageID>P54321</PackageID>
      <Name>
         <Text text="Breakfast Included" language="en"/>
         <Text text="Avec le petit déjeuner" language="fr"/>
      </Name>
      <Description>
        <Text text="Two certificates for continental
          breakfast will be provided." language="en"/>
        <Text text="Deux certificats pour le petit déjeuner
          continental seront fournis." language="fr"/>
      </Description>
      <BreakfastIncluded>1</BreakfastIncluded>
    </PackageData>
  </PropertyDataSet>
</Transaction>

Zimmer- und Paketmetadaten

Im folgenden Beispiel werden Zimmer- und Paketmetadaten definiert:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>180054</Property>
    <RoomData>
      <RoomID>060773</RoomID>
      <Name>
        <Text text="Single Bed Room" language="en"/>
        <Text text="Chambre single" language="fr"/>
      </Name>
      <Description>
        <Text text="Non-smoking" language="en"/>
        <Text text="Pas de fumiers" language="fr"/>
      </Description>
      <PhotoURL>
        <Caption>
          <Text text="Living area" language="en"/>
          <Text text="Le chambre" language="fr"/>
        </Caption>
        <URL>http://www.foo.com/static/bar/image1234.jpg</URL>
      </PhotoURL>
    </RoomData>
    <PackageData>
      <PackageID>P54321</PackageID>
      <Name>
        <Text text="Breakfast Included" language="en"/>
        <Text text="Avec le petit déjeuner" language="fr"/>
      </Name>
      <Description>
        <Text text="Includes a delightful array of jams and jellies." language="en"/>
        <Text text="Comprend une délicieuse gamme de confitures et gelées." language="fr"/>
      </Description>
      <BreakfastIncluded>1</BreakfastIncluded>
    </PackageData>
  </PropertyDataSet>
</Transaction>

Mehrere Zimmerpakete

Im folgenden Beispiel werden Zimmer- und Paketmetadaten für mehrere Zimmerpakete definiert:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <!-- A transaction message with room types result. -->
  <PropertyDataSet>
    <Property>12345</Property>
    <RoomData>
      <RoomID>single</RoomID>
      <Name>
        <Text text="Single room" language="en"/>
        <Text text="Chambre simple" language="fr"/>
      </Name>
      <Description>
        <Text text="A single room" language="en"/>
        <Text text="Le chambre simple" language="fr"/>
      </Description>
      <PhotoURL>
        <Caption>
          <Text text="Living area" language="en"/>
          <Text text="Le chambre" language="fr"/>
        </Caption>
        <URL>http://www.foo.com/static/bar/image1234.jpg</URL>
      </PhotoURL>
      <PhotoURL>
        <URL>http://www.foo.com/static/bar/image1235.jpg</URL>
      </PhotoURL>
      <Capacity>2</Capacity>
    </RoomData>
    <RoomData>
      <RoomID>double</RoomID>
      <Name>
        <Text text="Double room" language="en"/>
        <Text text="Chambre double" language="fr"/>
      </Name>
      <Occupancy>1</Occupancy>
    </RoomData>
    <PackageData>
      <PackageID>refundbreakfast</PackageID>
      <Name>
        <Text text="Refundable Room with Breakfast" language="en"/>
        <Text text="Chambre remboursable avec le petit déjeuner" language="fr"/>
      </Name>
      <Description>
        <Text text="Continental Breakfast" language="en"/>
        <Text text="Petit déjeuner continental" language="fr"/>
      </Description>
      <ChargeCurrency>hotel</ChargeCurrency>
      <Refundable available="1" refundable_until_days="3"/>
      <BreakfastIncluded>1</BreakfastIncluded>
    </PackageData>
    <PackageData>
      <PackageID>prepaid</PackageID>
      <Name>
        <Text text="Nonrefundable" language="en"/>
        <Text text="Non remboursable" language="fr"/>
      </Name>
      <Description>
        <Text text="Blah blah blad" language="en"/>
        <Text text="Le blah blah blad" language="fr"/>
      </Description>
      <Occupancy>2</Occupancy>
      <ChargeCurrency>web</ChargeCurrency>
      <Refundable available="0"/>
    </PackageData>
  </PropertyDataSet>
</Transaction>


Zimmerpaket mit Preisen

Im folgenden Beispiel werden Zimmer- und Paketmetadaten für ein Zimmerpaket mit Preismerkmalen definiert:

<Transaction timestamp="2010-04-24T20:44:56-04:00" id="TXNID">
  <PropertyDataSet>
    <Property>12345</Property>
    <RoomData>
     ...
    </RoomData>
<!-- definitions of PackageData types including rate features -->
    <PackageData>
      <PackageID>room_with_addl_benefits</PackageID>
      <Name>
        <Text text="Acme Hotels 2017 Promotion Package" language="en"/>
      </Name>
      <ChargeCurrency>hotel</ChargeCurrency>
      <BreakfastIncluded>1</BreakfastIncluded>
      <MembershipBenefitsIncluded>
        <ProgramName>
          <Text language="en" text="Marriott Rewards"/>
        </ProgramName>
        <ProgramLevel>
          <Text language="en" text="Platinum"/>
        </ProgramLevel>
      </MembershipBenefitsIncluded>
      <OnPropertyCredit>
        <Amount currency="USD">123.45</Amount>
      </OnPropertyCredit>
    </PackageData>
    <PackageData>
      <PackageID>room_with_miles</PackageID>
      <Name>
        <Text text="Room with Bundled Miles" language="en"/>
      </Name>
      <ChargeCurrency>hotel</ChargeCurrency>
      <MilesIncluded>
        <NumberOfMiles>1000</NumberOfMiles>
        <LoyaltyCampaignID>my_campaign</LoyaltyCampaignID>
      </MilesIncluded>
      <AirportTransportationIncluded direction="from"/>
    </PackageData>
  </PropertyDataSet>

<!-- The actual list of prices -->
  <Result>
…
  </Result>
</Transaction>

Mahlzeiten & Fotos

Das folgende Beispiel definiert Zimmer- und Paketmetadaten für Mahlzeiten, Fotos sowie Ein- und Auscheckzeiten:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <PackageData>
      <PackageID>PackageID_1</PackageID>
      <Name>
        <Text text="Meals Included" language="en"/>
      </Name>
      <PhotoURL>
        <Caption>
          <Text text="Breakfast" language="en"/>
          <Text text="朝食" language="ja"/>
        </Caption>
        <URL>http://example.com/static/bar/image1234.jpg</URL>
      </PhotoURL>
      <Meals>
        <!-- Guests can choose to have breakfast in their room or in another
        space to avoid contact with other guests. -->
        <Breakfast included="1" in_room="1" in_private_space="1"/>
        <Dinner included="1" buffet="1"/>
      </Meals>
      <CheckinTime>15:00</CheckinTime>
      <CheckoutTime>11:00</CheckoutTime>
    </PackageData>
  </PropertyDataSet>
</Transaction>

Frühstück

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <PackageData>
      <PackageID>PackageID_1</PackageID>
      <Name>
        <Text text="Breakfast Included" language="en"/>
      </Name>
      <PhotoURL>
        <Caption>
          <Text text="Breakfast" language="en"/>
          <Text text="朝食" language="ja"/>
        </Caption>
        <URL>http://example.com/static/bar/image1234.jpg</URL>
      </PhotoURL>
      <Meals>
        <Breakfast included="true"/>
        <!-- Dinner not included needs to be explicitly specified -->
        <Dinner included="false"/>
      </Meals>
      <CheckinTime>15:00</CheckinTime>
      <CheckoutTime>11:00</CheckoutTime>
    </PackageData>
  </PropertyDataSet>
</Transaction>

<Result>

Ein Container für Preis- und Verfügbarkeitsaktualisierungen in einer <Transaction> Nachricht.

angegeben werden.

Das <Result>-Element ist in der XML-Hierarchie der Transaktionsnachricht an der folgenden Stelle vorhanden:

+ <Transaction>
    + <PropertyDataSet>  // Room and package metadata
        + <Property>
        + <RoomData>
        + <PackageData>
    + <Result>           // Pricing and availability
        + <Rates>
        + <RoomBundle>
        + ...

Verwenden Sie <Result>, um Zimmerpreise festzulegen oder zu aktualisieren und den verfügbaren Zimmerbestand zu definieren. Die in diesem Element definierten Elemente beziehen sich typischerweise auf reiseplanunabhängige Metadaten über ein Zimmer oder ein Paket (wie eine Beschreibung oder eine Reihe von Annehmlichkeiten), die in <PackageData> und <RoomData> definiert sind.

Sie versenden üblicherweise sehr häufig Transaktionsnachrichten mit Preisaktualisierungen. Wie und wie oft Sie dies tun, hängt von Ihrem Liefermodus ab.

Sie können <Result> in einer Transaktionsnachricht verwenden, um Reiserouten zu entfernen, wie in Entfernen von Inventar beschrieben. Weitere Informationen zur Verwendung von Transaktionsnachrichten zum Aktualisieren von Preisen und Verfügbarkeit finden Sie unter Hinzufügen und Aktualisieren des Inventars.

Eine einzelne Transaktionsnachricht kann beliebig viele <Result>-Elemente enthalten, solange die Größe der Nachricht 100 MB nicht überschreitet.

Syntax

Das <Result>-Element verwendet die folgende Syntax:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
  <Result>
    <!-- Required -->
    <Property>hotel_ID</Property>
    <!-- Required -->
    <Checkin>YYYY-MM-DD</Checkin>
    <!-- Required -->
    <Nights>number_of_nights</Nights>

    <Baserate currency="currency_code">price</Baserate>
    <!-- Only required when <Baserate> contains a real price -->
    <Tax currency="currency_code">tax_amount</Tax>
    <!-- Only required when <Baserate> contains a real price  -->
    <OtherFees currency="currency_code">fee_amount</OtherFees>
    <Refundable available="[false|true]" refundable_until_days="number_of_days"
      refundable_until_time="time"/>

    <RoomID>room_ID</RoomID>
    <PackageID>package_ID</PackageID>
    <ExpirationTime>expiration_time</ExpirationTime>
    <ChargeCurrency>[deposit|hotel|installments|web]</ChargeCurrency>

    <Occupancy>max_number_of_intended_occupants</Occupancy>
    <!-- For Baserate, occupancy value must be greater than or equal to 2.
         If a value is not provided for occupancy, it defaults to 2. -->
    <!-- Child occupancy rates should only be sent through Live pricing
         with context and not through Pull or Changed pricing -->
    <OccupancyDetails>occupancy_info</OccupancyDetails>

    <Rates>...</Rates>

    <RoomBundle>...</RoomBundle>

    <AllowablePointsOfSale>
      <PointOfSale id="landing_page_identifier"/>
      ...
    </AllowablePointsOfSale>

    <MilesIncluded>
      <NumberOfMiles>integer</NumberOfMiles>
      <Provider>
        <Text language="en" text="provider-name">
      </Provider>
      <!-- Add Loyalty point information -->
      <LoyaltyCampaignID>campaign_ID</LoyaltyCampaignID>
    </MilesIncluded>
  </Result>
  ...
  </Transaction>

Attribute

Das <Result>-Element hat die folgenden Attribute:

Attribut Erforderlich? Typ Description
mergeable Optional boolean Standardmäßig werden neue Preise für ein bestimmtes Hotel- und Reisepaketpaar alle vorherigen (noch gültigen) Preise im Google-Cache überschreiben. Mit dem Attribut „mergeable“ können Sie zusätzliche Preise im Google-Cache speichern, ohne die vorherigen Preisinformationen zu löschen. Bei Live Pricing Query with Context-Antworten wird dieses Attribut immer auf true gesetzt (unabhängig von Ihrer Transaktionsnachrichtenantwort).

Untergeordnete Elemente

Das <Result>-Element hat die folgenden untergeordneten Elemente:

Kindelement Erforderlich? Typ Description
<AllowablePointsOfSale> Optional Object Eine oder mehrere Landingpages, die für das Hotel geeignet sind. Eine Landingpage ist eine Website, die den Buchungsprozess für den Endnutzer abwickeln kann. Um bestimmte Landingpages explizit einzuschließen (und andere auszuschließen), fügen Sie ein oder mehrere <AllowablePointsOfSale>-Elemente hinzu, die dem id-Attribut des <PointOfSale>-Elements in der Landingpages-Datei entsprechen.

Wenn Sie dieses Element nicht einbeziehen, gelten alle in der Landingpages-Datei definierten Landingpages als für die Zimmerbuchung geeignet. Weitere Informationen finden Sie unter Landing Pages File Syntax.

<Baserate> Optional float

Der Preis des Zimmers für den Aufenthalt. Der Wert dieses Elements sollte Folgendes widerspiegeln:

  • Für ein Privatzimmer legen Sie den günstigsten Doppelbelegungspreis fest, den Sie anbieten. Höhere Belegungszahlen sind hier zulässig, wenn Sie keinen Doppelbelegungstarif haben und in Ihrem Konto Tarife für Nicht-Doppelbelegung aktiviert sind. Bitte kontaktieren Sie uns, um die Preise für Einzelbelegung zu aktivieren. Einzelbelegungspreise sind hier nicht zulässig – sie müssen unter <Rates> festgelegt werden.
  • Lassen Sie das Element bei einem gemeinsam genutzten Zimmer leer und verwenden Sie <RoomBundle>.
  • Dieser Wert sollte der gesamte Basispreis für alle Übernachtungen sein, nicht der durchschnittliche Preis pro Übernachtung.

Wenn das Zimmer für den Reiseplan nicht verfügbar ist, sollte <Baserate> entweder weggelassen oder auf -1 gesetzt werden. Außerdem sollte <Unavailable> angegeben werden, zusammen mit allen bekannten Gründen für die Nichtverfügbarkeit.

Um ein Raumpaket zu entfernen, befolgen Sie die Anweisungen unter Entfernen eines Raumpakets.

Die Klammer <Baserate> darf keine Zifferngruppierungszeichen wie Komma (,) oder Punkt (.) enthalten. Brüche werden immer durch einen Punkt (.) als Dezimaltrennzeichen getrennt. Beispielsweise kann man 1.200,40 $wie folgt darstellen:

<Baserate currency="USD">1200.40</Baserate>

Das Element <Baserate> verwendet die folgenden optionalen Attribute:

  • all_inclusive: Ein boolescher Wert, der angibt, ob dieser Preis Steuern und Gebühren beinhaltet. Im Allgemeinen sollte dieser Wert für US-amerikanische und kanadische Endbenutzer auf false gesetzt werden, während für die Elemente <Tax> und <OtherFees> Werte angegeben werden. Wenn Sie Pauschalpreise verwenden, sind Sie möglicherweise nicht berechtigt, in den Angeboten zu erscheinen, wenn Ihre Preise Steuern und Gebühren für kanadische Nutzer nicht separat ausweisen.

    All-inclusive-Preise werden nun auch US-Nutzern angezeigt.

    Für alle anderen Endnutzer beziehen Sie Steuern und Gebühren normalerweise in den Basispreis ein und setzen den Wert des Attributs all_inclusive auf true. Weitere Informationen finden Sie in der Steuern- und Gebührenrichtlinie.

    Der Standardwert ist false.

  • currency: Der aus drei Buchstaben bestehende Währungscode. Zum Beispiel USD für US-Dollar.
<ChargeCurrency> Optional enum Gibt an, wann und wo der Nutzer eine Buchung bezahlt. Dieses Element kann in einer Transaktionsnachricht im <Result>-Element für den Hotelpreis oder im <PackageData>-Block für ein Zimmerpaket verwendet werden.

Gültige Werte sind:

  • web: Der Nutzer wird zum Zeitpunkt der Buchung online belastet. „Immer“ ist der Standardwert. Die eigentliche Landingpage wird durch die Landingpage-Datei definiert und kann von der Währung, dem Standort, der Sprache oder anderen Faktoren des Benutzers beeinflusst werden.
  • hotel: Der Nutzer wird beim Einchecken im Hotel belastet. Wenn die Zahlung immer in der Währung des Hotels erfolgen muss, setzen Sie den Wert von <ChargeCurrency> auf hotel. Die Währung des Nutzers hat keinen Einfluss auf die eigentliche Landingpage.
  • deposit: Der Nutzer leistet bei der Buchung eine Anzahlung und bezahlt den Rest zu einem späteren Zeitpunkt, in der Regel beim Check-out vom Hotel.
  • installments: Dem Nutzer wird zunächst ein Bruchteil des Gesamtbetrags in Rechnung gestellt, und es wird erwartet, dass er regelmäßig über einen festgelegten Zeitraum einen bestimmten Betrag abbezahlt.

Der Standardwert ist web.

<Checkin> Required Date Das Check-in-Datum für eine Reiseroute im Format Date. Die Kombination aus dem <Nights>-Element und dem <Checkin>-Element ergibt eine Reiseroute.
Optional string Veraltet: Definiert ein benutzerdefiniertes Feld, mit dem Sie zusätzliche Daten, die einem Hotel zugeordnet sind, übergeben können. Sie können bis zu fünf benutzerdefinierte Werte mit den folgenden Elementnamen übergeben:
  • <Custom1>
  • <Custom2>
  • <Custom3>
  • <Custom4>
  • <Custom5>

Mit den <Custom>-Elementen können Sie beliebige Daten übergeben. Beispielsweise können Sie in diesem Feld einen Wert angeben, der dann von der Landingpages-Datei verwendet wird, um eine benutzerdefinierte URL für eine Landingpage zu erstellen. Es gilt eine Beschränkung von 200 Zeichen pro benutzerdefiniertem Feld. Weitere Informationen finden Sie in den Landingpage-Dateien . Die im <Rate>-Element angegebenen <Custom>-Elemente werden nicht an das <RoomBundle>-Element vererbt. Sie sollten das <Custom>-Attribut in jedem <RoomBundle> separat definieren.

Wichtig:Wenn Sie CUSTOM-Variablen verwenden möchten, wenden Sie sich an Ihren Technical Account Manager (TAM).

<ExpirationTime> Optional DateTime Das Datum und die Uhrzeit, zu der der Preis als abgelaufen gilt (mindestens 3 Stunden).

Wir empfehlen, auf die Angabe von Ablaufdaten zu verzichten, wenn dies für Ihre Preisstruktur nicht entscheidend ist.

Google zeigt keine abgelaufenen Preise an, und jede Reiseroute mit einem abgelaufenen Preis wird für die Live-Preisabfrage Live Pricing Query berechtigt.

<MilesIncluded> Optional boolean Der Preis beinhaltet Vielfliegermeilen. Zu den Parametern gehören:
  • NumberOfMiles: Anzahl der Meilen pro Reiseroute.
  • Provider: Anbieter von Vielfliegermeilen.
  • LoyaltyCampaignID: Eine eindeutige ID, die die spezifische Treuepunkteaktion identifiziert, die mit Google konfiguriert und aktualisiert wurde. Sie addiert Treuepunkte zum Hotelpreis.

    Wenn Sie das <MilesIncluded>-Element einfügen möchten, muss die Kampagnen-ID in der Konfiguration der Treuepunkte-Kampagne konfiguriert sein. Die genauen Details zur Verwendung von Treuepunkten in den Ergebnissen durch Google hängen von der Konfiguration der Treuepunkte-Kampagne ab.

    Das Element <MilesIncluded> hat ein Kindelement <NumberOfMiles>, das die Anzahl der erzielten Punkte berechnet. Wenn <NumberOfMiles> nicht gesetzt ist, werden die verdienten Punkte durch die Konfiguration der Treuekampagne bestimmt.

    <MilesIncluded>
      <LoyaltyCampaignID>my_campaign</LoyaltyCampaignID>
      <NumberOfMiles>1200</NumberOfMiles>
      <Provider>
        <Text language="en" text="United Airlines">
      </Provider>
    </MilesIncluded>
  • Hinweis: <NumberOfMiles> und <Provider> sind optional.

<Nights> Required integer Die Anzahl der Übernachtungen für einen Reiseplan. Der Wert des <Nights>-Elements muss eine positive Ganzzahl sein. Die Kombination aus <Nights> und <Checkin> ergibt einen Reiseplan.
<OtherFees> Optional float Zusätzlich zum Basispreis und den Steuern anfallende Gebühren, die sich auf den endgültigen Zimmerpreis auswirken. Das Element <OtherFees> verwendet nur ein einziges erforderliches Attribut currency, das den aus drei Buchstaben bestehenden Währungscode für die Gebühren angibt. Beispiel: USD

Das Element <OtherFees> ist erforderlich, wenn <Baserate> größer als Null ist.

<Occupancy> Optional integer Gibt die maximal zulässige Anzahl von Gästen für diesen Preis an. Wenn <Occupancy> direkt unter <Result> erscheint, muss der Wert mindestens 2 betragen. <Occupancy> wird möglicherweise von <OccupancyDetails> begleitet, wodurch die Art der Gäste (Erwachsene oder Kinder) angegeben wird. Wenn keine Gasttypen angegeben sind, wird davon ausgegangen, dass es sich um Erwachsene handelt. Unter <OccupancyDetails> finden Sie Informationen zur Syntax und eine Beschreibung untergeordneter Elemente. Wenn das Element <Occupancy> nicht angegeben ist, wird die Belegung standardmäßig auf 2 festgelegt.

Wichtiger Hinweis: Die Kinderbelegungsraten sollten nur über Live Pricing mit Kontext und nicht über Pull oder Changed Pricing gesendet werden.

Hinweis: Wenden Sie sich an Ihr Support-Team, um die Funktion zum Senden von Preisen für Einzelbelegung zu aktivieren.

<PackageID> Optional string Die eindeutige ID des Pakets, um es vordefinierten Paketdaten zuzuordnen. Auch zum Füllen der Landingpage-Variable PACKAGE-ID verwendet. Weitere Informationen finden Sie unter Zimmerpaket-Metadaten.

<RoomBundle> muss enthalten sein, um <PackageID> und <RoomID> im <Result>-Element zu definieren. Es wird jedoch empfohlen, Paket- und Zimmer-IDs nur innerhalb des <RoomBundle>-Elements und nicht innerhalb des <Result>-Elements anzugeben.

<Property> Required string Die ID eines Hotels, das von den zugehörigen Daten (Preis, Reiseroute, Zimmerpaket oder Metadaten) betroffen ist. Der Wert dieses Elements muss eine Zeichenkette sein. Der Wert dieses Elements muss mit dem Eintrag <id> übereinstimmen, den Sie in Ihrem Hotellisten-Feed definiert haben.
<Rates> Optional <Rates> Ein Container für einen oder mehrere <Rate> Blöcke. Jedes <Rate> in <Rates> definiert einen anderen Preis für die Zimmer/Reiseroute-Kombination.

Verwenden Sie das Element <Rates>, wenn es mehrere Preise für dieselbe Kombination aus Zimmer und Reiseplan gibt oder wenn ein Preis nicht auf der Ebene <Result> angegeben werden darf. Zum Beispiel definieren Sie mehrere Preise für nutzerabhängige Preise, Tarife für bestimmte Zielgruppen, nutzerabhängige Preise in Zimmerpaketen oder verschiedene Belegungen.

Hinweis: Innerhalb von <Result> können Einzelbelegungsraten nur in <Rates> angegeben werden. Bitte kontaktieren Sie uns, um Preise für Einzelbelegung zu erhalten.

<Refundable> Optional Object Ermöglicht die Angabe eines vollständig erstattungsfähigen Tarifs oder einer kostenlosen Stornierungsmöglichkeit. Wenn Sie dieses Element nicht angeben, werden keine Erstattungsinformationen angezeigt. Eine Rückerstattungsrichtlinie auf der Ebene <PackageData> hat Vorrang vor der Rückerstattungsrichtlinie auf der Ebene <Result>. Eine Rückerstattungsrichtlinie auf der Ebene <Rates> hat Vorrang vor der Rückerstattungsrichtlinie auf der Ebene <PackageData>. Rückerstattungsfähige Preise können den Nutzern auch durch alternative Optionen hervorgehoben werden, ohne dass das Schema Ihrer Transaktionsnachrichten direkt geändert werden muss. Weitere Informationen zu den Richtlinien für erstattungsfähige Preise

Das folgende Beispiel zeigt das Element <Refundable> mit allen seinen Attributen:

<Refundable available="1" refundable_until_days="7"
refundable_until_time="18:00:00"/>

Hinweis:Es wird empfohlen, alle Attribute festzulegen. Wenn ein oder mehrere Attribute nicht festgelegt wurden, wird eine Warnmeldung für den Feedstatus generiert.

Wenn Sie keine Attribute festlegen, wird der Tarif nicht als erstattungsfähig angezeigt. Die Attribute sind:

  • available: (Erforderlich) Auf 1 (oder true) setzen, um anzugeben, ob der Tarif eine vollständige Rückerstattung zulässt; andernfalls auf 0 (oder false) setzen.
  • refundable_until_days: (Erforderlich, wenn available gleich true ist) Gibt die Anzahl der Tage vor dem Check-in an, innerhalb derer eine vollständige Rückerstattung beantragt werden kann. Der Wert von refundable_until_days muss eine ganze Zahl zwischen 0 und 330 (einschließlich) sein.
  • refundable_until_time: (Dringend empfohlen, wenn available true ist) Gibt die späteste Uhrzeit in der Ortszeit des Hotels an, zu der ein Antrag auf vollständige Rückerstattung berücksichtigt wird. Dies kann mit refundable_until_days kombiniert werden, um beispielsweise anzugeben, dass „Rückerstattungen bis 16:00 Uhr zwei Tage vor dem Check-in möglich sind“. Wenn refundable_until_time nicht gesetzt ist, wird standardmäßig Mitternacht als Wert verwendet.

    Der Wert dieses Attributs verwendet das Format Time.

Beachten Sie beim Festlegen der Attribute Folgendes:

  • Wenn available oder refundable_until_days nicht festgelegt ist, wird der Tarif 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 der anderen Attribute oder beide festgelegt sind.
<RoomBundle> Optional <RoomBundle> Ein Container für Informationen zu Preisen, physischen Beschreibungen eines Zimmers, etwaigen Paketen von Annehmlichkeiten und einigen Details zur Kaufrichtlinie für das jeweilige Hotel und die jeweilige Reiseroute.

Im Allgemeinen dient dieses Element dazu, die Preise für das Basiszimmer und verschiedene Zimmertypen innerhalb desselben Hotels festzulegen. Obwohl es möglich ist, Raumpaketbeschreibungen direkt im Text zu definieren, sollten Sie eine separate Transaktionsnachricht verwenden, um diese Informationen zu definieren. Google wird Metadaten speichern, sodass Sie bei allen zukünftigen Preisaktualisierungen darauf verweisen können, anstatt sie zu wiederholen.

<RoomID> Optional string Die eindeutige ID des Raumes, um ihn vordefinierten Raumdaten zuzuordnen. Auch zum Füllen der Landingpage-Variable PARTNER-ROOM-ID verwendet. Weitere Informationen finden Sie unter Room Bundle metadata.

Es ist zwingend erforderlich, <RoomBundle> einzuschließen, um <PackageID> und <RoomID> im Element <Result> zu definieren. Es wird jedoch empfohlen, Paket- und Zimmer-IDs nur innerhalb des <RoomBundle>-Elements anstelle des <Result>-Elements anzugeben.

<Tax> Optional float Die Steuern, die auf den Endpreis eines Zimmers berechnet werden. Der<Tax> Das Element benötigt ein einzelnes Pflichtattribut.currency , das definiert die drei BuchstabenWährungscode wegen der Steuern. Beispiel: USD Das Element <Tax> ist erforderlich, wenn <Baserate> größer als Null ist.

Wenn das Attribut „all_inclusive“ des Elements <Baserate> explizit auf „true“ gesetzt ist, ist das Festlegen dieses Werts optional.

<Unavailable> Optional Object Gibt an, dass der Reiseplan nicht gebucht werden kann. Dient als Container für detailliertere Gründe dafür, warum der Reiseplan nicht verfügbar war. Unter dem Tag <Unavailable> können ein oder mehrere der folgenden Gründe für die Nichtverfügbarkeit verschachtelt sein:
  • <NoVacancy/>: Für eine oder mehrere Nächte des Aufenthalts sind keine Zimmer mehr zum Verkauf verfügbar.
  • <MinNightStay value=N/>: Die Reiseroute lag unter dem Mindestaufenthalt von N Nächten für den Aufenthaltszeitraum.
  • <MaxNightStay value=N/>: Die Reiseroute überschritt die maximale Übernachtungsdauer von N für den Aufenthaltszeitraum.
  • <MinAdvancePurchase value=N/>: Die Reiseroute lag unterhalb der Mindestbuchungsfrist von N für den Aufenthaltszeitraum.
  • <MaxAdvancePurchase value=N/>: Der Reiseplan lag über dem maximalen Vorausbuchungszeitraum von N für die Aufenthaltsdaten.
  • <ClosedToArrival/>: In der Unterkunft ist kein Check-in am Anreisedatum des Reiseplans möglich.
  • <ClosedToDeparture/>: Die Unterkunft erlaubt keine Abreise am Abreisetag der Reise.
  • <PropertyClosed first_open="YYYY-MM-DD" first_closed="YYYY-MM-DD"/>: Die Unterkunft ist während eines Teils oder des gesamten Aufenthalts geschlossen. Die empfohlenen Attribute first_open und first_closed geben die ersten Daten an, die größer oder gleich dem Ankunftsdatum sind und an denen die Unterkunft geöffnet bzw. geschlossen ist. Bei einer Unterkunft, die nach dem Ankunftsdatum schließt, sollte first_open dem Ankunftsdatum entsprechen und first_closed dem Datum, an dem die Unterkunft schließt. Bei einer Unterkunft, die am Anreisetag geschlossen ist, sollte first_closed dem Anreisetag entsprechen und first_opened das nächste Datum sein, an dem die Unterkunft geöffnet ist.
  • <NotFetched/>: Von den nachgelagerten Datenquellen wurde kein Preis für die Reiseroute angegeben.
  • <InvalidProperty/>: Die angeforderte Eigenschaftskennung wurde nicht erkannt.
  • <InvalidOccupancy/>: Die angeforderte Belegung wird von der Unterkunft nicht unterstützt.
  • <PriceIssue/>: Aufgrund eines Fehlers mit dem Preis konnte die Sendung nicht versendet werden.
  • <InternalError reason=""/>: Ein nicht aufgeführter Fehler ist aufgetreten. Mit dem optionalen Attribut „reason“ kann der Fehler als Text gemeldet werden.
  • <OtherRestriction restriction=""/>: Der Reiseplan war aufgrund einer nicht näher spezifizierten Buchungsbeschränkung nicht verfügbar. Mit dem optionalen Attribut „restriction“ kann die Einschränkung als Text angegeben werden.

Beispiele

Beispiel für mehrere Objekte

Im folgenden Beispiel wird ein Reiseplan und dessen Preis für zwei Unterkünfte definiert:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-23T16:20:00-04:00" id="42">
  <Result>
    <Property>060773</Property>
    <RoomID>RoomType101</RoomID>
    <PackageID>Package101</PackageID>
    <Checkin>2018-06-10</Checkin>
    <Nights>2</Nights>
    <Baserate currency="USD">278.33</Baserate>
    <Tax currency="USD">25.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
    <AllowablePointsOfSale>
      <PointOfSale id="site1"/>
    </AllowablePointsOfSale>
  </Result>
  <Result>
    <Property>052213</Property>
    <RoomID>RoomType101</RoomID>
    <PackageID>Package101</PackageID>
    <Checkin>2018-06-10</Checkin>
    <Nights>2</Nights>
    <Baserate currency="USD">299.98</Baserate>
    <Tax currency="USD">26.42</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
    <AllowablePointsOfSale>
      <PointOfSale id="otto"/>
      <PointOfSale id="simon"/>
    </AllowablePointsOfSale>
    <MilesIncluded>
      <NumberOfMiles>1200</NumberOfMiles>
      <Provider>
        <Text language="en" text="United Airlines"/>
      </Provider>
      <LoyaltyCampaignID>my_campaign</LoyaltyCampaignID>
    </MilesIncluded>
  </Result>
</Transaction>

In diesem Beispiel werden keine Informationen über das Zimmer gezeigt, wie etwa eine Beschreibung, ein Bild mit einem Untertitel, der Zimmername oder die Kapazität.

Sie können diese Informationen einmalig in einer separaten Transaktionsnachricht definieren, die von Google gespeichert wird. Anschließend haben Sie die Möglichkeit, bei allen zukünftigen Preis- und Inventaraktualisierungen auf diese Informationen zu verweisen. Weitere Informationen finden Sie unter Zimmerpaket-Metadaten.

Beispiel mit mehreren Tarifen

Das folgende Beispiel definiert eine einzelne Reiseroute und ein Objekt mit mehreren Preisen für verschiedene Belegungsstufen. Das Element <Rates> kann verwendet werden, um unterschiedliche Preisstufen für eine bestimmte Immobilie bereitzustellen. Das folgende Beispiel ist auch für Ferienwohnungen nützlich:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2020-07-23T16:20:00-04:00" id="42">
  <Result>
    <Property>1234</Property>
    <Checkin>2021-01-13</Checkin>
    <Nights>9</Nights>
    <Baserate currency="USD">3196.1</Baserate>
    <Tax currency="USD">559.49</Tax>
    <OtherFees currency="USD">543.34</OtherFees>
    <Occupancy>2</Occupancy>
    <Rates>
      <Rate>
        <Baserate currency="USD">3196.1</Baserate>
        <Tax currency="USD">559.49</Tax>
        <OtherFees currency="USD">543.34</OtherFees>
        <Occupancy>1</Occupancy>
      </Rate>
      <Rate>
        <Baserate currency="USD">3196.1</Baserate>
        <Tax currency="USD">559.49</Tax>
        <OtherFees currency="USD">543.34</OtherFees>
        <Occupancy>3</Occupancy>
      </Rate>
      <Rate>
        <Baserate currency="USD">3196.1</Baserate>
        <Tax currency="USD">559.49</Tax>
        <OtherFees currency="USD">543.34</OtherFees>
        <Occupancy>4</Occupancy>
      </Rate>
      <Rate>
        <Baserate currency="USD">3196.1</Baserate>
        <Tax currency="USD">559.49</Tax>
        <OtherFees currency="USD">543.34</OtherFees>
        <Occupancy>5</Occupancy>
      </Rate>
      <Rate>
        <Baserate currency="USD">3196.1</Baserate>
        <Tax currency="USD">559.49</Tax>
        <OtherFees currency="USD">543.34</OtherFees>
        <Occupancy>6</Occupancy>
      </Rate>
    </Rates>
  </Result>
</Transaction>

Beispiel nicht verfügbar

Das folgende Beispiel definiert eine Reiseroute, deren Verfügbarkeit nicht über nachgelagerte Kanäle abgerufen werden konnte, eine zweite, die sowohl unter der Mindestaufenthaltsdauer liegt als auch für die angegebenen Daten bereits ausgebucht ist, und eine dritte, deren Unterkunft am Anreisetag geschlossen ist, aber im Laufe des Aufenthalts öffnet:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-23T16:20:00-04:00" id="42">
  <Result>
    <Property>060773</Property>
    <Checkin>2018-06-10</Checkin>
    <Nights>2</Nights>
    <Unavailable>
      <NotFetched/>
    </Unavailable>
  </Result>
  <Result>
    <Property>073313</Property>
    <Checkin>2018-06-10</Checkin>
    <Nights>2</Nights>
    <Unavailable>
      <NoVacancy/>
      <MinNightStay value=3/>
    </Unavailable>
  </Result>
  <Result>
    <Property>052213</Property>
    <Checkin>2018-06-10</Checkin>
    <Nights>10</Nights>
    <Unavailable>
      <PropertyClosed first_open="2018-06-15" first_closed="2018-06-10"/>
    </Unavailable>
  </Result>
</Transaction>

<Rates>

Ein Container für einen oder mehrere <Rate> Blöcke. Jedes <Rate> in <Rates> definiert einen anderen Preis für die Zimmer- oder Reisekombination.

Verwenden Sie das Element <Rates> nur dann, wenn es mehrere Preise für dieselbe Zimmer- oder Reisekombination gibt. Beispielsweise können Sie mehrere Tarife für bedingte Tarife, private Tarife oder bedingte Tarife in Zimmerpaketen definieren.

Das Element <Rates> erscheint an folgender Stelle in der XML-Hierarchie der Transaktionsnachricht:

+ <Transaction>
    + <PropertyDataSet>  // Room and package metadata
        + <Property>
        + <RoomData>
        + <PackageData>
    + <Result>         // Pricing and availability
        + <Rates>
        + <RoomBundle> (Can also contain <Rates>)
        + ...

In einem <Rate> festgelegten Wert überschreiben die preisbezogenen Werte des übergeordneten Elements <Result> oder <RoomBundle>. Wenn sie nicht in <Rate> festgelegt sind, übernehmen sie den Wert aus dem übergeordneten Element. Lediglich <AllowablePointsofSale> wird an das <RoomBundle>-Element vererbt.

Syntax

Das <Rates>-Element verwendet die folgende Syntax:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
  <Result>
    <Rates>
      <Rate rate_rule_id="rate_rule_id">
        <Baserate currency="currency_code">price</Baserate>
        <Tax currency="currency_code">tax_amount</Tax>
        <OtherFees currency="currency_code">fee_amount</OtherFees>
        <ExpirationTime>expiration_time</ExpirationTime>
        <Refundable available="[false|true]" refundable_until_days="number_of_days"
        refundable_until_time="time"/>
        <ChargeCurrency>[deposit|hotel|installments|web]</ChargeCurrency>
        <AllowablePointsOfSale>
          <PointOfSale id="landing_page_identifier"/>
        </AllowablePointsOfSale>
        <Occupancy>max_number_of_intended_occupants</Occupancy>
        <OccupancyDetails> <!-- optional info about the types of guests,
      whether adults or children --></OccupancyDetails>
          ...
        <MilesIncluded>
          <NumberOfMiles>integer</NumberOfMiles>
          <Provider>
            <Text language="en" text="provider-name">
          </Provider>
          <LoyaltyCampaignID>campaign_ID</LoyaltyCampaignID>
        </MilesIncluded>
          ...
      </Rate>
      ...
    </Rates>
  </Result>
  ...
</Transaction>

Attribute

Das <Rates>-Element hat die folgenden Attribute:

Attribut Erforderlich/Optional? Description
rate_rule_id Optional Bei bedingten Raten ordnet diese ID eine Rate einer Definition in Ihrer Rate Rule Definition-Datei zu. Die Zeichenbegrenzung für dieses Feld beträgt 40 Zeichen. Diese ID darf keine leere Zeichenkette sein.

Untergeordnete Elemente

Das <Rates>-Element hat die folgenden untergeordneten Elemente:

Kindelement Erforderlich? Typ Description
<AllowablePointsOfSale> Optional Object Eine oder mehrere Landingpages, die für das Hotel geeignet sind. Für dieses Element wird dieselbe Syntax wie für <AllowablePointsOfSale> in <Result> verwendet.
<Baserate> Required float Der Preis für das Zimmer während des Aufenthalts. Dieses Element verwendet die gleiche Syntax wie <Baserate> auf <Result>.

Hinweis: Das <Baserate> Kindelement unter <Rate> kann nicht als nicht verfügbar definiert werden.

<ChargeCurrency> Optional enum Wann und wo der Nutzer für eine Buchung bezahlt. Dieses Element verwendet die gleiche Syntax wie ein <ChargeCurrency> in einem <Result>.
Optional string Veraltet: Benutzerdefinierte Felder, mit denen Sie zusätzliche Daten, die mit einem Hotel verknüpft sind, an eine Landingpage übergeben können. Dieses Element verwendet die gleiche Syntax wie ein <Custom[1‑5]> in einem <Result>. Es gilt eine Beschränkung von 200 Zeichen pro benutzerdefiniertem Feld. Weitere Informationen finden Sie in den Landingpage-Dateien. Wenn <Custom>-Elemente im <Result>-Element angegeben werden, werden diese nicht im <RoomBundle>-Element vererbt und müssen für jedes <RoomBundle> separat definiert werden. Alternativ können sie bei Bedarf in <PackageData> aufgenommen werden.

Wichtig: Wenden Sie sich an Ihren Technical Account Manager (TAM), wenn Sie CUSTOM Variablen verwenden möchten.

<ExpirationTime> Optional DateTime Datum und Uhrzeit, zu der der Tarif als abgelaufen gilt. Dieses Element verwendet die gleiche Syntax wie ein <ExpirationTime> in einem <Result>.
<MilesIncluded> Optional boolean Der Preis beinhaltet Vielfliegermeilen. Zu den Parametern gehören:
  • NumberOfMiles: Anzahl der Meilen pro Reiseroute.
  • Provider: Anbieter von Vielfliegermeilen.
  • LoyaltyCampaignID: Eine eindeutige ID, die die spezifische Treuepunkteaktion identifiziert, die mit Google konfiguriert und aktualisiert wurde. Sie addiert Treuepunkte zum Hotelpreis.

    Wenn Sie das <MilesIncluded>-Element einfügen möchten, muss die Kampagnen-ID in der Konfiguration der Treuepunkte-Kampagne konfiguriert sein. Die genauen Details zur Verwendung von Treuepunkten in den Ergebnissen durch Google hängen von der Konfiguration der Treuepunkte-Kampagne ab.

    Das Element <MilesIncluded> hat ein Kindelement <NumberOfMiles>, das die Anzahl der erzielten Punkte berechnet. Wenn <NumberOfMiles> nicht gesetzt ist, werden die verdienten Punkte durch die Konfiguration der Treuekampagne bestimmt.

    <MilesIncluded>
      <LoyaltyCampaignID>my_campaign</LoyaltyCampaignID>
      <NumberOfMiles>1200</NumberOfMiles>
      <Provider>
        <Text language="en" text="United Airlines">
      </Provider>
    </MilesIncluded>
  • Hinweis: <NumberOfMiles> und <Provider> sind optional.

<Occupancy> Optional integer

Gibt die maximal zulässige Personenzahl für diesen Tarif an. Sofern nicht anders angegeben, wird davon ausgegangen, dass der Zinssatz dem des Ausgangsunternehmens entspricht. <Occupancy> kann von <OccupancyDetails> begleitet werden, welches die Art der Gäste (Erwachsene oder Kinder) angibt. Siehe <OccupancyDetails> für Syntax und Beschreibung der Kindelemente.

<OtherFees> Required float Neben dem Grundpreis und den Steuern fallen Gebühren an, die den Endpreis eines Zimmers beeinflussen. Dieses Element verwendet die gleiche Syntax wie <OtherFees> in einem <Result>.

Wenn das Attribut "all_inclusive" des Elements <Baserate> explizit auf true gesetzt ist, ist die Festlegung dieses Wertes optional.

<Refundable> Optional Object Ermöglicht die Angabe eines vollständig erstattungsfähigen Tarifs oder einer kostenlosen Stornierungsmöglichkeit. Falls diese Angaben nicht gemacht werden, werden keine Informationen über eine Rückerstattung angezeigt. Eine Rückerstattungsrichtlinie auf der Ebene <PackageData> hat Vorrang vor der Rückerstattungsrichtlinie auf der Ebene <Result>. Eine Rückerstattungsrichtlinie auf der Ebene <Rates> hat Vorrang vor der Rückerstattungsrichtlinie auf der Ebene <PackageData>. Rückerstattungsfähige Preise können den Nutzern auch durch alternative Optionen hervorgehoben werden, ohne dass das Schema Ihrer Transaktionsnachrichten direkt geändert werden muss. Erfahren Sie mehr über diese Optionen Rückerstattungsrichtlinie.

Das folgende Beispiel zeigt das <Refundable>-Element mit allen gesetzten Attributen:

<Refundable available="1" refundable_until_days="7"
refundable_until_time="18:00:00"/>

Hinweis: Wir empfehlen, alle Attribute festzulegen. Es wird eine Warnmeldung zum Feed-Status generiert, wenn ein oder mehrere Attribute nicht festgelegt sind.

Wenn Sie keine Attribute festlegen, wird der Tarif nicht als erstattungsfähig angezeigt. Die Attribute sind:

  • available: (Erforderlich) Auf 1 (oder true) setzen, um anzugeben, ob der Tarif eine vollständige Rückerstattung zulässt; andernfalls auf 0 (oder false) setzen.
  • refundable_until_days: (Erforderlich, wenn available gleich true ist) Gibt die Anzahl der Tage vor dem Check-in an, innerhalb derer eine vollständige Rückerstattung beantragt werden kann. Der Wert von refundable_until_days muss eine ganze Zahl zwischen 0 und 330 (einschließlich) sein.
  • refundable_until_time: (Dringend empfohlen, wenn available true ist) Gibt die späteste Uhrzeit in der Ortszeit des Hotels an, zu der ein Antrag auf vollständige Rückerstattung berücksichtigt wird. Dies kann mit refundable_until_days kombiniert werden, um beispielsweise anzugeben, dass „Rückerstattungen bis 16:00 Uhr zwei Tage vor dem Check-in möglich sind“. Wenn refundable_until_time nicht gesetzt ist, wird standardmäßig Mitternacht als Wert verwendet.

    Der Wert dieses Attributs verwendet das Format Time.

Beachten Sie beim Festlegen der Attribute Folgendes:

  • Wenn available oder refundable_until_days nicht festgelegt ist, wird der Tarif nicht als erstattungsfähig angezeigt.
  • Wenn available gleich 0 (oder false) ist, werden die anderen Attribute ignoriert. Der Tarif wird auch dann nicht als erstattungsfähig angezeigt, wenn eines oder beide der anderen Attribute festgelegt sind.
<Tax> Required float Die Steuern, die auf den Endpreis eines Zimmers berechnet werden. Dieses Element verwendet die gleiche Syntax wie das <Tax> in einem <Result>.

Beispiele

Grundzins und bedingter Zinssatz

Das folgende Beispiel zeigt eine Transaktionsnachricht, die einen Basiszinssatz und einen bedingten Zinssatz enthält:

<?xml version="1.0" encoding="UTF-8" ?>
<Transaction timestamp="2023-05-18T16:20:00-04:00" id="42">
  <Result>
    <Property>1234</Property>
    <Checkin>2023-04-10</Checkin>
    <Nights>1</Nights>

    <Baserate currency="USD">200.00</Baserate>
    <Tax currency="USD">20.00</Tax>
    <OtherFees currency="USD">1.00</OtherFees>

    <Rates>
      <!-- The rate_rule_id is required when using conditional rates -->
      <Rate rate_rule_id="mobile">
        <!-- Override base rate and taxes for conditional rates -->
        <Baserate currency="USD">180.00</Baserate>
        <Tax currency="USD">18.00</Tax>
      </Rate>
    </Rates>

  </Result>
</Transaction>

Mehrere bedingte Raten

Das folgende Beispiel definiert einen Basiszinssatz und mehrere bedingte Zinssätze innerhalb eines <RoomBundle>:

<?xml version="1.0" encoding="UTF-8" ?>
<Transaction timestamp="2023-05-18T16:20:00-04:00" id="42">
  <Result>
    <Property>1234</Property>
    <Checkin>2023-04-10</Checkin>
    <Nights>2</Nights>
    <!-- When Google receives new room bundle information for an itinerary, all
    previous room bundle pricing is dropped from Google's cache. Thus, if you
    want to delete a specific room bundle from Google's cache, you may do so
    by simply not providing that specific room bundle in subsequent transaction
    messages. -->
    <RoomBundle>
     ...
      <!-- RoomID is required, PackageID is recommended. -->
      <RoomID>5</RoomID>
      <PackageID>ABC</PackageID>
      <!-- Baserate is required. -->
      <Baserate currency="USD">275.00</Baserate>
      <Tax currency="USD">27.50</Tax>
      <OtherFees currency="USD">2.00</OtherFees>

      <!-- RatePlanID is optional and represents the unique identifier for a
      room and package data combination. We strongly recommend using RatePlanID
      as a variable to build your dynamic landing page (formerly Point of Sale)
      URL and it should be within 50 characters in length for optimal
      performance. For details, see Using Variables and Conditions. -->
      <RatePlanID>5-ABC</RatePlanID>

      <!-- Occupancy is mandatory for RoomBundle elements. -->
      <!-- Elements below will get inherited to nested rate elements. -->
      <Occupancy>2</Occupancy>
      <OccupancyDetails>
        <NumAdults>2</NumAdults>
      </OccupancyDetails>
      <InternetIncluded>1</InternetIncluded>

      <!-- Rate rule "mobile" overrides chargeCurrency, "us_or_gb" doesn't. -->
      <ChargeCurrency>web</ChargeCurrency>

      <Rates>
        <Rate rate_rule_id="mobile">
          <Baserate currency="USD">258.33</Baserate>
          <Tax currency="USD">25.83</Tax>
          <OtherFees currency="USD">1.00</OtherFees>
          <!-- The value below overrides ChargeCurrency from roombundle. -->
          <ChargeCurrency>hotel</ChargeCurrency>
        </Rate>
        <Rate rate_rule_id="us_or_gb">
          <Baserate currency="USD">268.33</Baserate>
          <Tax currency="USD">26.83</Tax>
          <OtherFees currency="USD">1.00</OtherFees>
        </Rate>
      </Rates>
    </RoomBundle>
  </Result>
</Transaction>

<RoomBundle>

Definiert Preisgestaltung und Verfügbarkeit für Zimmerpakete als Kind von <Result> in einer <Transaction> Nachricht. Definieren Sie für jede Paket- oder Reisekombination ein separates Element. Um das Paket und die Begriffe der Room Bundles zu definieren, verwenden Sie <RoomData>.

Das Element <RoomBundle> erscheint an folgender Stelle in der XML-Hierarchie der Transaktionsnachricht:

+ <Transaction>
    + <PropertyDataSet>  // Room and package metadata
        + <Property>
        + <RoomData>
        + <PackageData>
    + <Result>           // Pricing and availability
        + <Rates>
        + <RoomBundle>
        + ...

Weitere Informationen finden Sie unter Using Room Bundles.

Syntax

Das <RoomBundle>-Element verwendet die folgende Syntax:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
  <Result>
    ...
    <RoomBundle>
      <!-- Required unless specified inline under <RoomData> -->
      <RoomID>room_ID</RoomID>
      <!-- Required  <PackageData> -->
      <PackageID>package_ID</PackageID>

      <!-- Add Loyalty point information -->
      <MilesIncluded>
        <NumberOfMiles>integer</NumberOfMiles>
        <Provider>
          <Text language="en" text="provider-name">
        </Provider>
        <LoyaltyCampaignID>campaign_ID</LoyaltyCampaignID>>
      </MilesIncluded>

      <!-- Required -->
      <Baserate currency="currency_code">price</Baserate>
      <!-- Required -->
      <Tax currency="currency_code">taxes</Tax>
      <!-- Required -->
      <OtherFees currency="currency_code">other_fees</OtherFees>

      <Refundable available="[false|true]" refundable_until_days="number_of_days"
        refundable_until_time="time"/>
      <!-- Required -->
      <ChargeCurrency>[deposit|hotel|installments|web]</ChargeCurrency>
      <Occupancy>max_number_of_intended_occupants</Occupancy>
      <OccupancyDetails> <!-- optional info about the types of guests,
      whether adults or children --></OccupancyDetails>

      <BreakfastIncluded>boolean_value</BreakfastIncluded>
      <InternetIncluded>boolean_value</InternetIncluded>
      <ParkingIncluded>boolean_value</ParkingIncluded>

      <RatePlanID>rate_plan_ID</RatePlanID>

      <Rates>...</Rates>

    </RoomBundle>
    ...
  </Result>
</Transaction>

Attribute

Das <RoomBundle>-Element hat keine Attribute.

Untergeordnete Elemente

Das <RoomBundle>-Element hat die folgenden untergeordneten Elemente:

Untergeordnetes Element Erforderlich? Typ Description
<Baserate> Required float Legt den Preis des Zimmerpakets für den Aufenthalt fest. Dieses Element verwendet die gleiche Syntax wie <Baserate> in <Result>, mit folgender Ausnahme:
  • Wenn das Zimmer für die Reiseroute nicht verfügbar ist, entfernen Sie das Element <RoomBundle>, um anzuzeigen, dass ein Zimmer nicht mehr im Bestand ist. Weitere Informationen finden Sie unter Entfernen eines Zimmerpakets.
<BreakfastIncluded> Optional boolean Gibt an, ob das Frühstück im Preis dieses Zimmerpakets enthalten ist.
<ChargeCurrency> Optional enum Wann und wo der Nutzer für eine Buchung bezahlt. Dieses Element verwendet die gleiche Syntax wie <ChargeCurrency> in einem <Result>.

Der Standardwert ist web.

Optional string Veraltet: Benutzerdefinierte Felder zum Übergeben zusätzlicher Daten an die Landingpages für das Room Bundle. Diese Elemente verwenden die gleiche Syntax wie <Custom[1-5]> in <Result>. Pro benutzerdefiniertes Feld dürfen maximal 200 Zeichen verwendet werden. Weitere Informationen finden Sie in den Landingpage-Dateien. Benutzerdefinierte Variablen werden nur dann aufgelistet, wenn Sie die Preise in der Transaktionsnachricht senden. Wenn <Custom>-Elemente im <Result>-Element angegeben werden, werden diese nicht im <RoomBundle>-Element vererbt und müssen für jedes <RoomBundle> separat definiert werden. Alternativ können sie bei Bedarf in <PackageData> aufgenommen werden.

Wichtig: Wenden Sie sich an Ihren Technical Account Manager (TAM), wenn Sie CUSTOM Variablen verwenden möchten.

<InternetIncluded> Optional boolean Wenn ein Zimmerpaket den Internetzugang kostenlos beinhaltet, während andere Pakete diese Annehmlichkeit nicht beinhalten. Dieses Element sollte nicht für Zimmerpakete in einem Hotel festgelegt werden, das kostenloses Internet für alle Zimmer anbietet. Dieser Punkt gilt nicht für kabelgebundenes Internet im Zimmer oder drahtloses Internet, das in den Gästezimmern nicht verfügbar ist.
<MilesIncluded> Optional boolean Der Preis beinhaltet Vielfliegermeilen. Zu den Parametern gehören:
  • NumberOfMiles: Anzahl der Meilen pro Reiseroute.
  • Provider: Anbieter von Vielfliegermeilen.
  • LoyaltyCampaignID: Eine eindeutige ID, die die spezifische Loyalitätskampagne identifiziert, die bei Google konfiguriert und aktualisiert wurde. Dem Hotelpreis werden Treuepunkte gutgeschrieben.

    Die Kampagnen-ID <MilesIncluded> muss in der Konfiguration der Treuekampagne konfiguriert werden. Die genauen Details zur Verwendung von Treuepunkten in den Ergebnissen durch Google hängen von der Konfiguration der Treuepunkte-Kampagne ab.

    Das Element <MilesIncluded> hat ein Kindelement <NumberOfMiles>, das die Anzahl der erzielten Punkte berechnet. Wenn <NumberOfMiles> nicht gesetzt ist, werden die verdienten Punkte durch die Konfiguration der Treuekampagne bestimmt.

    <MilesIncluded>
      <LoyaltyCampaignID>my_campaign</LoyaltyCampaignID>
      <NumberOfMiles>1200</NumberOfMiles>
      <Provider>
        <Text language="en" text="United Airlines">
      </Provider>
    </MilesIncluded>
  • Hinweis: <NumberOfMiles> und <Provider> sind optional.

<Occupancy> Required integer Gibt die maximal zulässige Personenzahl für diesen Tarif an. Eine große Suite bietet beispielsweise Platz für 6 Gäste, das „Flitterwochen-Paket“ erlaubt jedoch nur 2 Gäste.

Dieser Wert muss kleiner oder gleich <Capacity> sein, d. h. die Anzahl der Personen, die der Raum physisch aufnehmen kann.

Bei der Definition der Auslastung in Ihrer Landingpage-URL verwenden Sie die Variablen NUM-ADULTS und NUM-CHILDREN, wie in Verwendung von Variablen und Bedingungen beschrieben. Der Standardwert ist 2 Erwachsene und 0 Kinder.

Der Wert von <Occupancy> muss eine positive ganze Zahl zwischen 1 und 99 (einschließlich) sein.

Hinweise:

  • <Occupancy> für <RoomBundle> wird dringend empfohlen und ist daher als erforderlich gekennzeichnet. Wird es weggelassen, führt dies zu einem Fehler 1097.
  • <Occupancy> stammt aus dem Datenobjekt in dieser Reihenfolge: <RoomBundle>, <PackageData> und dann <RoomData>. Wenn in einem dieser Felder kein Wert vorhanden ist, wird standardmäßig der Wert 2 verwendet.
  • <Occupancy> kann von <OccupancyDetails> begleitet werden, welches die Art der Gäste (Erwachsene oder Kinder) angibt. Wenn keine Gästekategorien angegeben werden, wird davon ausgegangen, dass es sich um Erwachsene handelt. Unter <OccupancyDetails> finden Sie Informationen zur Syntax und eine Beschreibung untergeordneter Elemente.
  • Wenn Sie <Occupancy> sowohl in <RoomBundle> als auch in <PackageData> setzen, hat der Wert in <RoomBundle> Vorrang.
<OtherFees> Required float Zusätzlich zum Basispreis und den Steuern anfallende Gebühren, die sich auf den endgültigen Zimmerpreis auswirken. Das Element <OtherFees> verwendet nur ein einziges erforderliches Attribut currency, das den aus drei Buchstaben bestehenden Währungscode für die Gebühren angibt. Verwenden Sie beispielsweise USD für US-Dollar.
<PackageID> Optional (recommended) string Die eindeutige ID für die Paketdaten. Verwenden Sie diese ID, um die Daten des Raumpakets mit den Daten abzugleichen, die in <PackageData> gesendet wurden. Weitere Informationen finden Sie unter Room Bundle metadata. (Sie können diese ID auch verwenden, um auf eine gemeinsame Raumbündeldefinition zu verweisen, die in einer einzelnen Transaktionsnachricht verwendet wird, wenn Sie Raumbündeldaten inline definieren.)
<ParkingIncluded> Optional boolean Gibt an, ob ein Zimmerpaket kostenloses Parken beinhaltet, wenn in diesem Hotel Parken andernfalls kostenpflichtig wäre. Geben Sie für dieses Element keinen Wert an, wenn das Hotel generell kostenlose Parkplätze anbietet.

Gültige Werte sind 0 (oder false) und 1 (oder true). Der Standardwert ist false.

<RatePlanID> Optional string Die Tarifplan-ID stellt die eindeutige Kennung für eine Zimmer- und Paketkombination dar. Wenn beispielsweise der Wert von <RoomID> 5 und der Wert von <PackageID> ABC beträgt, könnte man für <RatePlanID> den Wert 5-ABC verwenden. Wir empfehlen dringend, RatePlanID als Variable zu verwenden, um Ihre dynamische Landingpage-URL (ehemals Point-of-Sale-URL) zu erstellen.

Hinweis: Für eine optimale Leistung sollte die RatePlanID maximal 50 Zeichen lang sein.

Weitere Informationen finden Sie unter Variablen und Bedingungen.

<Rates> Optional <Rates> Preise, die die Standardeinstellungen für dieses Zimmerpaket überschreiben. Dieses Element verwendet die gleiche Syntax wie <Rates> in <Result>.
<Refundable> Optional Object Ermöglicht die Angabe eines vollständig erstattungsfähigen Tarifs oder einer kostenlosen Stornierungsmöglichkeit. Falls diese Angaben nicht gemacht werden, werden keine Informationen über eine Rückerstattung angezeigt. Eine Rückerstattungsrichtlinie auf der Ebene <PackageData> hat Vorrang vor der Rückerstattungsrichtlinie auf der Ebene <Result>. Eine Rückerstattungsrichtlinie auf der Ebene <Rates> hat Vorrang vor der Rückerstattungsrichtlinie auf der Ebene <PackageData>. Rückerstattungsfähige Preise können den Nutzern auch durch alternative Optionen hervorgehoben werden, ohne dass das Schema Ihrer Transaktionsnachrichten direkt geändert werden muss. Erfahren Sie mehr über diese Optionen Rückerstattungsrichtlinie.

Das folgende Beispiel zeigt das <Refundable>-Element mit allen gesetzten Attributen:

<Refundable available="1" refundable_until_days="7"
refundable_until_time="18:00:00"/>

Hinweis:Es wird empfohlen, alle Attribute festzulegen. Wenn ein oder mehrere Attribute nicht festgelegt wurden, wird eine Warnmeldung für den Feedstatus generiert.

Wenn Sie keine Attribute festlegen, wird der Tarif nicht als erstattungsfähig angezeigt. Die Attribute sind:

  • available: (Erforderlich) Auf 1 (oder true) setzen, um anzugeben, ob der Tarif eine vollständige Rückerstattung zulässt; andernfalls auf 0 (oder false) setzen.
  • refundable_until_days: (Erforderlich, wenn available gleich true ist) Gibt die Anzahl der Tage vor dem Check-in an, innerhalb derer eine vollständige Rückerstattung beantragt werden kann. Der Wert von refundable_until_days muss eine ganze Zahl zwischen 0 und 330 (einschließlich) sein.
  • refundable_until_time: (Wird ausdrücklich empfohlen, wenn available den Wert true hat) Gibt die späteste Uhrzeit in der Ortszeit des Hotels an, bis zu der ein Antrag auf vollständige Erstattung 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.

    Der Wert dieses Attributs verwendet das Format Time.

Beachten Sie beim Festlegen der Attribute Folgendes:

  • Wenn available oder refundable_until_days nicht festgelegt ist, wird der Tarif nicht als erstattungsfähig angezeigt.
  • Wenn available gleich 0 (oder false) ist, werden die anderen Attribute ignoriert. Der Tarif wird auch dann nicht als erstattungsfähig angezeigt, wenn eines oder beide der anderen Attribute festgelegt sind.
<RoomID> Required string Die eindeutige ID für die Raumdaten. Verwenden Sie diese ID, um die Daten des Raumpakets mit den Daten abzugleichen, die Sie in <RoomData> gesendet haben. Weitere Informationen finden Sie unter Zimmerpaket-Metadaten. (Sie können diese ID auch verwenden, um in einer einzelnen Transaktionsnachricht auf eine gemeinsame Raumdefinition zu verweisen, wenn Sie Raumdaten inline definieren.)
<Tax> Required float Die für den endgültigen Preis eines Zimmers berechneten Steuern. Das Element <Tax> verwendet das einzelne erforderliche Attribut currency, das den aus drei Buchstaben bestehenden Währungscode für die Steuern angibt. Verwenden Sie beispielsweise USD für US-Dollar.

Beispiele

Einzelbelegungspaket

Im folgenden Beispiel wird eine Antwort mit einem einzelnen Belegungspaket definiert. Wenn ein Nutzer in der Belegungsauswahl 1 auswählt, zeigt Google unabhängig von der Belegung immer den günstigsten Preis an.

Falls kein Preis für Einzelbelegung verfügbar ist, zeigt Google den niedrigsten Preis für Doppelbelegung an. Beachten Sie, dass die Preise für Einzelbelegung nicht live abgefragt werden, wenn für eine Reiseroute Preise für Doppelbelegung oder mehr zwischengespeichert sind.

Dieses Beispiel verweist mit den Elementen <RoomID> und <PackageID> auf vordefinierte Raum- und Paketmetadaten. Verwenden Sie die Elemente <RoomData> und <PackageData>, um diese Informationen zu definieren.

<!-- Efficient method of defining Room Bundles-->
<!----- Occupancy of 1 example ----->

<Transaction timestamp="2017-07-18T16:20:00-04:00" id="12345678">
  <!-- Part1: Define RoomData and PackageData in PropertyDataSet -->
  <!-- Note:  Once defined it does not have to be repeated for future
              Transaction Messages.
              PropertyDataSets can also be defined and sent in their own
              Transaction Message separately from pricing. Google can be
              configured to pull just PropertyDataSets once per day
              (or on a predefined frequency). -->
  <PropertyDataSet>
    <Property>180054</Property>
    <!-- Can be reused by multiple Room Bundles -->
    <RoomData>
      <RoomID>060773</RoomID>
      <Name>
        <Text text="Single Queen Room - Non-Smoking" language="en"/>
        <Text text="Chambre de la Roi Premium - Pas de Fumeurs" language="fr"/>
      </Name>
      <!-- Room can accommodate up to 4, but package data specifies occupancy
           between 1 to 4 -->
      <Capacity>4</Capacity>
    </RoomData>
    <RoomData>
      <RoomID>436233</RoomID>
      <Name>
        <Text text="Premium King Room - Non-Smoking" language="en"/>
        <Text text="Chambre de le Roi Premium - Pas de Fumeurs" language="fr"/>
      </Name>
      <Capacity>4</Capacity>
    </RoomData>
    <!-- Can be reused by multiple Room Bundles -->
    <PackageData>
      <PackageID>P11111</PackageID>
      <Occupancy>1</Occupancy>
      <ChargeCurrency>web</ChargeCurrency>
      <Refundable available="1" refundable_until_days="7"
           refundable_until_time="18:00:00"/>
      <ParkingIncluded>1</ParkingIncluded>
      <InternetIncluded>1</InternetIncluded>
    </PackageData>
    <PackageData>
      <PackageID>P54321</PackageID>
      <Occupancy>2</Occupancy>
      <ChargeCurrency>web</ChargeCurrency>
      <Refundable available="1" refundable_until_days="7"
           refundable_until_time="18:00:00"/>
      <ParkingIncluded>1</ParkingIncluded>
      <InternetIncluded>1</InternetIncluded>
    </PackageData>
    <PackageData>
      <PackageID>P12345</PackageID>
      <Occupancy>4</Occupancy>
      <ChargeCurrency>web</ChargeCurrency>
      <Refundable available="1" refundable_until_days="1"
           refundable_until_time="18:00:00"/>
      <ParkingIncluded>1</ParkingIncluded>
      <InternetIncluded>1</InternetIncluded>
    </PackageData>
  </PropertyDataSet>

    <!-- Efficient method of defining Room Bundles -->
    <!-- Part 2: Reference RoomData and PackageData through ID -->
  <Result>
    <!-- Single occupancy pricing will be specified in a room bundle below -->
    <Property>180054</Property>
    <Checkin>2017-10-07</Checkin>
    <Nights>2</Nights>
    <!-- Base Room Bundle -->
    <RoomBundle>
      <RoomID>060773</RoomID>
      <PackageID>P54321</PackageID>
      <Baserate currency="USD">199.99</Baserate>
      <Tax currency="USD">25.12</Tax>
      <OtherFees currency="USD">2.00</OtherFees>
      <RatePlanID>060773-P54321</RatePlanID>
    </RoomBundle>
    <RoomBundle>
      <RoomID>060773</RoomID>
      <PackageID>P11111</PackageID>
      <!-- Price for 1 ("occupancy") is the lowest price and will be
           displayed -->
      <Baserate currency="USD">174.99</Baserate>
      <Tax currency="USD">22.08</Tax>
      <OtherFees currency="USD">2.00</OtherFees>
      <RatePlanID>060773-P11111</RatePlanID>
    </RoomBundle>
    <!-- Premium Room Bundle -->
    <RoomBundle>
      <RoomID>436233</RoomID>
      <PackageID>P12345</PackageID>
      <!-- Price for 4 ("occupancy"), any eligible room bundle with 1 or more
           occupancy will be displayed-->
      <Baserate currency="USD">298.88</Baserate>
      <Tax currency="USD">42.12</Tax>
      <OtherFees currency="USD">10.00</OtherFees>
      <RatePlanID>436233-P12345</RatePlanID>
    </RoomBundle>
    <!-- ..Continue providing all available RoomBundle rates under matched
         property for 1 or more occupancies..-->
  </Result>
</Transaction>


Zwei oder mehr Belegungen

Im folgenden Beispiel wird eine Antwort definiert, die mindestens zwei Belegungen beinhaltet.

In diesem Beispiel wird mit den Elementen <RoomID> und <PackageID> auf vordefinierte Zimmer- und Paketmetadaten verwiesen. Mit den Elementen <RoomData> und <PackageData> können Sie diese Informationen definieren.

<!-- Efficient method of defining Room Bundles-->
<!----- Occupancy of 3 example ----->

<Transaction timestamp="2017-07-18T16:20:00-04:00" id="12345678">
  <!-- Efficient method of defining Room Bundles-->
  <!-- Part1: Define RoomData and PackageData in PropertyDataSet -->
  <PropertyDataSet>
    <Property>180054</Property>
    <!-- Can be reused by multiple Room Bundles -->
    <RoomData>
      <RoomID>060773</RoomID>
      <Name>
        <Text text="Single Queen Room - Non-Smoking" language="en"/>
        <Text text="Chambre de la Roi Premium - Pas de Fumeurs" language="fr"/>
      </Name>
      <!-- Room can accommodate up to 4, but package data specifies occupancy
           between 1 to 4 -->
      <Capacity>4</Capacity>
    </RoomData>
    <RoomData>
      <RoomID>436233</RoomID>
      <Name>
        <Text text="Premium King Room - Non-Smoking" language="en"/>
        <Text text="Chambre de le Roi Premium - Pas de Fumeurs" language="fr"/>
      </Name>
      <Capacity>4</Capacity>
    </RoomData>
    <!-- Can be reused by multiple Room Bundles -->
    <PackageData>
      <PackageID>P33333</PackageID>
      <Occupancy>3</Occupancy>
      <ChargeCurrency>web</ChargeCurrency>
      <Refundable available="1" refundable_until_days="7"
           refundable_until_time="18:00:00"/>
      <ParkingIncluded>1</ParkingIncluded>
      <InternetIncluded>1</InternetIncluded>
    </PackageData>
    <PackageData>
      <PackageID>P12345</PackageID>
      <Occupancy>4</Occupancy>
      <ChargeCurrency>web</ChargeCurrency>
      <Refundable available="1" refundable_until_days="1"
           refundable_until_time="18:00:00"/>
      <ParkingIncluded>1</ParkingIncluded>
      <InternetIncluded>1</InternetIncluded>
    </PackageData>
  </PropertyDataSet>

  <Result>
    <Property>180054</Property>
    <Checkin>2017-10-07</Checkin>
    <Nights>2</Nights>
    <!-- Efficient method of defining Room Bundles -->
    <!-- Part 2: Reference RoomData and PackageData through ID -->
    <!-- Base Room Bundle -->
    <RoomBundle>
      <!-- Baserate above and attributes must match atleast one room bundle
           below -->
      <RoomID>060773</RoomID>
      <PackageID>P33333</PackageID>
      <Baserate currency="USD">499.99</Baserate>
      <Tax currency="USD">55.12</Tax>
      <OtherFees currency="USD">22.00</OtherFees>
    </RoomBundle>
    <!-- Premium Room Bundle -->
    <RoomBundle>
      <RoomID>436233</RoomID>
      <PackageID>P12345</PackageID>
      <!-- Lowest price for 3 ("occupancy"), shown below, will be displayed -->
      <Baserate currency="USD">598.88</Baserate>
      <Tax currency="USD">62.12</Tax>
      <OtherFees currency="USD">30.00</OtherFees>
    </RoomBundle>
    <!-- ..Continue providing all available RoomBundle rates under matched
         property for 2 or more occupancies..-->
  </Result>
</Transaction>


Mehrere Zimmerpakete

Im folgenden Beispiel wird die Belegung in mehreren Zimmerpaketen festgelegt, um mögliche Preisgestaltungen für Hostelzimmer zu veranschaulichen.

<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
  <Result>
    ...
    <!-- Suite Room Bundle -->
    <RoomBundle>
      <RoomID>suite1</RoomID>
      <PackageID>standard</PackageID>
      <Occupancy>2</Occupancy>
      <!-- Price for room -->
      <Baserate currency="USD">80.00</Baserate>
      <Tax currency="USD">5.12</Tax>
      <OtherFees currency="USD">2.00</OtherFees>
      <RoomData>
        <Name>
          <Text text="Suite for 2" language="en"/>
        </Name>
      </RoomData>
    </RoomBundle>

    <!-- Small Dorm Room Bundle -->
    <RoomBundle>
      <RoomID>small_dorm</RoomID>
      <PackageID>economy</PackageID>
      <Occupancy>1</Occupancy>
      <!-- Price per bed -->
      <Baserate currency="USD">35.00</Baserate>
      <Tax currency="USD">3.50</Tax>
      <OtherFees currency="USD">2.00</OtherFees>
      <RoomData>
        <Name>
          <Text text="1 bed in small dorm" language="en"/>
        </Name>
      </RoomData>
    </RoomBundle>

    <!-- Large Dorm Room Bundle -->
    <RoomBundle>
      <RoomID>large_dorm</RoomID>
      <PackageID>economy</PackageID>
      <Occupancy>1</Occupancy>
      <!-- Price per bed -->
      <Baserate currency="USD">20.00</Baserate>
      <Tax currency="USD">2.50</Tax>
      <OtherFees currency="USD">2.00</OtherFees>
      <RoomData>
        <Name>
          <Text text="1 bed in large dorm" language="en"/>
        </Name>
      </RoomData>
    </RoomBundle>
    ...
  </Result>
</Transaction>

Mehrere nutzerabhängige Preise

Das folgende Beispiel definiert einen Basiszinssatz und mehrere bedingte Zinssätze innerhalb eines <RoomBundle>:

<?xml version="1.0" encoding="UTF-8" ?>
<Transaction timestamp="2023-05-18T16:20:00-04:00" id="42">
  <Result>
    <Property>1234</Property>
    <Checkin>2023-04-10</Checkin>
    <Nights>2</Nights>
    <!-- When Google receives new room bundle information for an itinerary, all
    previous room bundle pricing is dropped from Google's cache. Thus, if you
    want to delete a specific room bundle from Google's cache, you may do so
    by simply not providing that specific room bundle in subsequent transaction
    messages. -->
    <RoomBundle>
     ...
      <!-- RoomID is required, PackageID is recommended. -->
      <RoomID>5</RoomID>
      <PackageID>ABC</PackageID>
      <!-- Baserate is required. -->
      <Baserate currency="USD">275.00</Baserate>
      <Tax currency="USD">27.50</Tax>
      <OtherFees currency="USD">2.00</OtherFees>

      <!-- RatePlanID is optional and represents the unique identifier for a
      room and package data combination. We strongly recommend using RatePlanID
      as a variable to build your dynamic landing page (formerly Point of Sale)
      URL and it should be within 50 characters in length for optimal
      performance. For details, see Using Variables and Conditions. -->
      <RatePlanID>5-ABC</RatePlanID>

      <!-- Occupancy is mandatory for RoomBundle elements. -->
      <!-- Elements below will get inherited to nested rate elements. -->
      <Occupancy>2</Occupancy>
      <OccupancyDetails>
        <NumAdults>2</NumAdults>
      </OccupancyDetails>
      <InternetIncluded>1</InternetIncluded>

      <!-- Rate rule "mobile" overrides chargeCurrency, "us_or_gb" doesn't. -->
      <ChargeCurrency>web</ChargeCurrency>

      <Rates>
        <Rate rate_rule_id="mobile">
          <Baserate currency="USD">258.33</Baserate>
          <Tax currency="USD">25.83</Tax>
          <OtherFees currency="USD">1.00</OtherFees>
          <!-- The value below overrides ChargeCurrency from roombundle. -->
          <ChargeCurrency>hotel</ChargeCurrency>
        </Rate>
        <Rate rate_rule_id="us_or_gb">
          <Baserate currency="USD">268.33</Baserate>
          <Tax currency="USD">26.83</Tax>
          <OtherFees currency="USD">1.00</OtherFees>
        </Rate>
      </Rates>
    </RoomBundle>
  </Result>
</Transaction>

<OccupancyDetails>

<Occupancy> in einer Transaktionsnachricht gibt die maximale Anzahl von Gästen für ein Zimmer oder ein Paket an. <OccupancyDetails> kann zusätzliche Informationen enthalten, z. B. die Anzahl und die Art der Gäste (Erwachsene oder Kinder).

Wenn <Occupancy> und <OccupancyDetails> innerhalb des <Rates>-Elements von <Result> oder <RoomBundle> vorkommen, bedeutet dies, dass die Rate durch die Belegungsdetails eingeschränkt ist.

Wenn Sie <OccupancyDetails> in einem <RoomBundle> zusammen mit einem verschachtelten <Rate>-Element einfügen, können Sie kein einfaches <Occupancy> innerhalb des <Rate> senden; stattdessen wird eine der folgenden Optionen empfohlen:

  • Belegung von <Rate> weglassen: In diesem Fall erbt <Rate> die <OccupancyDetails> direkt von <RoomBundle>

oder

  • Duplikat <OccupancyDetails>: In diesem Fall werden zusätzliche identische <OccupancyDetails> sowohl im <RoomBundle>- als auch im verschachtelten <Rate>-Element gesendet.

Syntax

Wenn <OccupancyDetails> angezeigt wird, ist immer <Occupancy> vorangestellt. Beachten Sie die folgende Syntax:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
  <Result>
  ...
    <Occupancy>max_number_of_intended_occupants</Occupancy>
    <OccupancyDetails>
      <NumAdults>number_of_adults</NumAdults>
      <Children>
        <Child age=age_of_one_child_guest/>
        <Child age=age_of_one_child_guest/>
      </Children>
    </OccupancyDetails>
  </Result>
</Transaction>

Untergeordnete Elemente

Das <OccupancyDetails>-Element hat die folgenden untergeordneten Elemente:

Kindelement Erforderlich? Typ Description
<NumAdults> Required integer Die Anzahl der erwachsenen Gäste. Min:1, Max:20.
<Children> Optional Object Ein Container für ein oder mehrere <Child>-Elemente.
<Child age> Optional integer Das Höchstalter für dieses Kind – zum Beispiel <Child age="17">.

Beispiele

Die folgenden Beispiele zeigen, wie <OccupancyDetails> innerhalb von <Results>, <RoomBundle> oder dem Kindelement <Rates> vorkommen kann.

Ergebnisreaktion

Das folgende Beispiel definiert eine Reiseroute und deren Preisgestaltung für eine Unterkunft als Antwort auf eine Live-Preisabfrage, bei der der Benutzer die Anzahl und Art der Gäste angegeben hat. Hier werden die <OccupancyDetails> -- 2 Erwachsene und ein Kind -- in <Result> zurückgegeben.

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-23T16:20:00-04:00" id="42">
  <Result>
    <Property>060773</Property>
    <RoomID>RoomType101</RoomID>
    <PackageID>Package101</PackageID>
    <Checkin>2018-06-10</Checkin>
    <Nights>2</Nights>
    <Baserate currency="USD">278.33</Baserate>
    <Tax currency="USD">25.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
    <AllowablePointsOfSale>
      <PointOfSale id="site1"/>
    </AllowablePointsOfSale>
    <Occupancy>3</Occupancy>
    <OccupancyDetails>
      <NumAdults>2</NumAdults>
      <Children>
        <Child age="17"/>
      </Children>
    </OccupancyDetails>
  </Result>
</Transaction>

Reaktion der Raten

Im folgenden Beispiel werden ein Reiseplan und die zugehörigen Preise für 1 Erwachsenen und 1 Kind definiert. Hier werden die <OccupancyDetails> im Element <Rates> von <Result> zurückgegeben.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Transaction id="Wtdj8QoQIWcAAbaTGlIAAAC4" timestamp="2018-04-18T11:27:45-04:00">
  <Result>
    <Property>8251</Property>
    <Checkin>2018-06-20</Checkin>
    <Nights>1</Nights>
    <Baserate currency="USD">62.18</Baserate>
    <Tax currency="USD">2.45</Tax>
    <OtherFees currency="USD">0.00</OtherFees>
    <Rates>
      <Rate rate_rule_id="rule-951">
        <Occupancy>2</Occupancy>
        <OccupancyDetails>
          <NumAdults>1</NumAdults>
          <Children>
            <Child age="17"/>
          </Children>
        </OccupancyDetails>
        <Baserate currency="USD">42.61</Baserate>
        <Tax currency="USD">5.70</Tax>
        <OtherFees currency="USD">0.00</OtherFees>
        <AllowablePointsOfSale>
          <PointOfSale id="yourhotelpartnersite.com"/>
        </AllowablePointsOfSale>
      </Rate>
    </Rates>
  </Result>
</Transaction>

Zimmerpaket

Im folgenden Beispiel wird eine Belegung mit 2 Erwachsenen und 1 Kind für 2 Nächte mit einem erstattungsfähigen Preis definiert. Hier werden die <OccupancyDetails> in <RoomBundle> angezeigt.

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-23T16:20:00-04:00" id="42">
  <Result>
    <Property>6781291</Property>
    <Checkin>2017-08-05</Checkin>
    <Nights>2</Nights>
    ...
    <RoomBundle>
      <RoomID>10291</RoomID>
      <RatePlanID>564739</RatePlanID>
      <PackageID>564739</PackageID>
      <Occupancy>3</Occupancy>
      <OccupancyDetails>
        <NumAdults>2</NumAdults>
        <Children>
          <Child age="17"/>
        </Children>
      </OccupancyDetails>
      <ChargeCurrency>web</ChargeCurrency>
      <Refundable available="true" refundable_until_days="1" refundable_until_time="23:59:00" />
      <Baserate currency="USD">185.34</Baserate>
      <Tax currency="USD">37.06</Tax>
      <OtherFees currency="USD">2.22</OtherFees>
    </RoomBundle>
  </Result>
</Transaction>

Mehrere Zimmerpakete

Im folgenden Beispiel werden mehrere <RoomBundle>-Preise definiert, die auf eine Belegung von 2 Erwachsenen und 2 Kindern beschränkt sind. Hier werden die <OccupancyDetails> im Element <Rates> von <RoomBundle> angezeigt.

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <Result>
    <Property>1234</Property>
    <Checkin>2018-06-10</Checkin>
    <Nights>2</Nights>
    <Baserate currency="USD">275.00</Baserate>
    <Tax currency="USD">27.50</Tax>
    <OtherFees currency="USD">0</OtherFees>
    <RoomBundle>
      <RoomID>5</RoomID>
      <PackageID>STD</PackageID>
      <Baserate currency="USD">275.00</Baserate>
      <Tax currency="USD">27.50</Tax>
      <OtherFees currency="USD">0</OtherFees>
      <InternetIncluded>1</InternetIncluded>
      <ChargeCurrency>web</ChargeCurrency>
      <Occupancy>4</Occupancy>
      <OccupancyDetails>
          <NumAdults>2</NumAdults>
          <Children>
              <Child age="17"/>
              <Child age="17"/>
          </Children>
      </OccupancyDetails>
      <Rates>
        <Rate rate_rule_id="mobile">
          <Baserate currency="USD">258.33</Baserate>
          <Tax currency="USD">25.83</Tax>
          <OtherFees currency="USD">1.00</OtherFees>
          <ChargeCurrency>hotel</ChargeCurrency>
        </Rate>
        <Rate rate_rule_id="us_or_gb">
          <Baserate currency="USD">268.33</Baserate>
          <Tax currency="USD">26.83</Tax>
          <OtherFees currency="USD">1.00</OtherFees>
        </Rate>
      </Rates>
    </RoomBundle>
  </Result>
</Transaction>