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

Diese Seite enthält eine Referenz für die XML-basierten Transaktionsnachrichten.

<Transaction>

Das Stammelement einer Transaktionsnachricht ist <Transaction>. Er ist ein Container mit beschreibenden Informationen zu Zimmern und Paketen sowie Preisen und Verfügbarkeit für Zimmer und Pakete.

Das <Transaction>-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>
        + ...

Nachrichten, in denen <Transaction> als Stammelement verwendet wird, müssen mindestens eines der untergeordneten Elemente enthalten. Transaktionsnachrichten können eine beliebige Anzahl von untergeordneten Elementen enthalten, solange die Größ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 dieses Attribut normalerweise, wenn Ihr Backend Preisfeeds für mehrere Partnerkonten bereitstellt. Dieser Stringwert ist der Wert „Partnerschlüssel“, der im Hotel Center auf der Seite Kontoeinstellungen aufgeführt ist.
timestamp Required DateTime

Der Zeitpunkt, zu dem die Transaktionsnachricht gesendet wurde.

Alle Nachrichten, die innerhalb der vergangenen 24 Stunden mit einem Zeitstempel gesendet wurden, werden verarbeitet. Alle anderen werden verworfen.

Nachrichten werden in der timestamp-Reihenfolge verarbeitet, nicht in der Reihenfolge ihres Eingangs. Beispiel: 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, wird trotzdem in der entsprechenden Reihenfolge verarbeitet. 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:

Untergeordnetes Element Erforderlich? Typ Beschreibung
<PropertyDataSet> Optional* <PropertyDataSet>

Beschreibt ein bestimmtes Zimmer und Zimmerpakete. Sie verwenden dieses Element in der Regel in einer separaten Transaktionsnachricht, um gemeinsame Werte für Zimmerpakete zu definieren und die Größe Ihrer Transaktionsnachrichten zu reduzieren.

<Result> Optional* <Result>

Preisdaten für den Reiseplan eines Zimmers oder ein <RoomBundle>-Element, das Zimmerpakete und zusätzliche Zimmerarten für die Unterkunft definiert. Mit dem <Result>-Element können auch Reisepläne aus dem Inventar entfernt werden.

* Es muss in jedem Fall entweder <PropertyDataSet> oder <Result> angegeben werden.

Beispiele

Zimmerdaten

Im folgenden Beispiel werden Zimmerdaten in einer Transaktionsnachricht definiert:

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

Im folgenden Beispiel werden Preisdaten in einer Transaktionsnachricht 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>

Übernachtungspreise

Im folgenden Beispiel werden Preisdaten für eine bis sieben Nächte ab dem 7. Juni 2023 definiert:

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


Grundpreise und nutzerabhängige Preise

Das folgende Beispiel zeigt eine Transaktionsnachricht mit einem Basispreis und einem nutzerabhängigen Preis:

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

Im folgenden Beispiel werden mehrere Inventare (Aufenthalte mit einer Übernachtung für mehrere Termine) für ein Hotel aus dem Inventar entfernt:

<?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 Zimmer- und Paketinformationen (oder Zimmerpaket-Informationen) in einer <Transaction>-Nachricht. Die für einen Partner angegebenen Werte werden durch die für ein Hotel angegebenen Werte überschrieben. Google speichert diese Informationen, sodass Sie diese nicht bei jeder Übermittlung von Preisaktualisierungen noch einmal angeben müssen.

Das <PropertyDataSet>-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>
        + ...

Weitere Informationen finden Sie unter Zimmerpaket-Metadaten.

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:

Untergeordnetes Element Erforderlich? Typ Beschreibung
<PackageData> Optional* <PackageData> Beschreibt ein Zimmerpaket. Diese Daten sind mit einem Partner und einem Hotel, aber nicht mit einem Reiseplan verknüpft. Dieses Element ähnelt <RoomData>, beschreibt jedoch Ausstattungen und Bedingungen, die nicht Teil der Beschreibung des physischen Zimmers sind.

In Ihren Preisaktualisierungen verweisen Sie einfach auf die Paket-ID.

Weitere Informationen finden Sie unter Zimmerpaket-Metadaten.

<Property> Required string Die ID eines Hotels, auf das sich die zugehörigen Daten beziehen. Der Wert dieses Elements muss ein String sein, der mit dem Eintrag <id> in Ihrem Hotellistenfeed übereinstimmt.
<RoomData> Optional* <RoomData> Beschreibt einen Raum. Diese Daten sind mit einem Partner und einem Hotel, aber nicht mit einem Reiseplan verknüpft.

In Ihren Preisaktualisierungen verweisen Sie einfach auf die Zimmer-ID.

* Es muss in jedem Fall entweder <PackageData> oder <RoomData> angegeben werden.

Beispiele

Zimmer- und Paketdaten

Das folgende Beispiel zeigt sowohl Zimmer- 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 für dieses Zimmer und dieses Zimmerpaket Preis- und Verfügbarkeitsangaben senden, verweisen Sie in Ihren Preisnachrichten auf die Zimmer- und Paket-ID. Sie reduzieren auf diese Weise die Größe Ihrer Nachrichten erheblich und verringern die Fehlerquellen, die aufgrund von doppelt übermittelten Daten entstehen. Weitere Informationen finden Sie unter Zimmerpaket-Metadaten.

<RoomData>

Definiert vom Reiseplan unabhängige Metadaten für Zimmer und somit für Zimmerpakete (da Zimmerpakete Zimmer plus zusätzliche Ausstattung sind). Mit <RoomData> reduzieren Sie die Wiederholung beschreibender Daten in Ihrem Preisfeed.

Das <RoomData>-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>
        + ...

Die in <RoomData>-Elementen enthaltenen Informationen sind mit einem Partner und einem Hotel, aber nicht mit einem Reiseplan verknüpft. Sie können damit sämtliche nicht auf einen Reiseplan bezogenen Daten angeben.

Das <RoomData>-Element ähnelt <PackageData>, beschreibt jedoch das physische Zimmer und nicht die Ausstattung und Bedingungen eines Pakets. Sie verwenden <RoomData> und <PackageData> in Kombination, um Details zu Zimmerpaketen bereitzustellen. Verwenden Sie für einzelne Zimmer, die nicht Teil eines Pakets sind, nur <RoomData>.

Sie können sowohl das Element <RoomData> als auch das Element <PackageData> für dasselbe Zimmer oder Zimmerpaket definieren. Wenn Google dieses Zimmer oder Paket in den Suchergebnissen anzeigt, werden Beschreibungen beider Elemente getrennt durch einen Gedankenstrich eingeblendet.

Weitere Informationen finden Sie unter Zimmerpaket-Metadaten.

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:

Untergeordnetes Element Erforderlich? Typ Beschreibung
<Capacity> Optional integer Die maximale Anzahl Gäste, die im Zimmer Platz haben. In einem Zimmer ist die Kapazität größer oder gleich der Belegung.

Wenn dieser Wert angegeben wird, muss er größer oder gleich dem Wert des Elements <Occupancy> sein, das die für ein bestimmtes Zimmer vorgesehene Anzahl von Gästen angibt. Für eine große Suite kann beispielsweise als <Capacity> der Wert 6 angegeben sein, während der Wert für <Occupancy> auf 4 gesetzt ist.

Der Wert für <Capacity> muss eine positive Ganzzahl im Bereich von 1 bis 20 sein.

<Description> Optional Object Eine detaillierte Beschreibung des Zimmers. Dieses Element sollte Informationen enthalten, die weder in anderen Elementen noch im Element <Name> beschrieben sind. Geben Sie die Beschreibung des Zimmers nicht rein in Großbuchstaben an, sondern verwenden Sie Groß-/Kleinschreibung.

Das Element <Description> verwendet nur das untergeordnete Element <Text> mit den beiden folgenden erforderlichen Attributen:

  • text: Eine detaillierte Beschreibung des Zimmers.
  • language: Ein aus zwei Buchstaben bestehender Sprachcode, z. B. fr.

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

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

<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). Schreiben Sie den Wert dieses Elements nicht rein in Großbuchstaben, sondern verwenden Sie Groß-/Kleinschreibung.

Dieses Element verwendet nur das untergeordnete Element <Text> mit den beiden folgenden erforderlichen Attributen:

  • text: Der Name des Raums.
  • language: Ein aus zwei Buchstaben bestehender Sprachcode, z. B. fr.

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

Das folgende Beispiel zeigt die französische und 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 von 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. Das Element gibt die Anzahl von Personen an, für die das Zimmer physisch Platz bietet.

Der Wert für <Occupancy> muss eine positive Ganzzahl im Bereich von 1 bis 99 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, die die Belegungsanforderungen eines Raums einschränken oder ändern können.

Das <OccupancySettings>-Element verwendet die folgenden untergeordneten Elemente:

  • <MinOccupancy>: Die Mindestanzahl an Gästen, die in einem Zimmer übernachten können. Wenn diese Option beispielsweise auf 2 festgelegt ist, kann dieses Zimmer nicht für einen einzelnen Gast gebucht werden.

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

  • <MinAge>: Das Mindestalter für alle Gäste, die in einem Zimmer übernachten. Wenn dies 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 untergeordneten Elemente enthalten sein.

<PhotoURL> Optional Object Eine URL und optionale Bildunterschrift für ein Foto des entsprechenden 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 Speicherort sollte öffentlich (nicht hinter einer Firewall) sein und das Protokoll (z. B. https://) enthalten. 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 für das Attribut language wird ein aus zwei Buchstaben bestehender Sprachcode angegeben, z. B. en.

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. Mit dieser ID ordnen Sie die Zimmerdaten den <Result>-Blöcken in Ihren Preisaktualisierungen zu. Weitere Informationen finden Sie unter Zimmerpaket-Metadaten. Wenn Sie Zimmerdaten inline definieren, können Sie mit dieser ID auf eine allgemeine Zimmerdefinition in einer einzelnen Transaktionsnachricht verweisen.

Beispiele

Zimmerdaten

Im folgenden Beispiel werden Zimmerdaten definiert:

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

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>

<RoomFeatures>

Definiert die im Raum vorhandenen Ausstattungsmerkmale.

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

+ <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:

Untergeordnetes Element Erforderlich? Typ Beschreibung
<JapaneseHotelRoomStyle> Optional enum

Gibt den Stil eines japanischen Hotelzimmers an.

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 japanisch-westlichen Stil mit Betten im westlichen Stil und Futons im japanischen Stil.
<Beds> Optional Object Enthält so viele <Bed> wie das Zimmer hat. Japanische Futons dürfen hier nicht berücksichtigt werden.

Jede <Bed> hat die folgenden Attribute:

  • size (optional): Gültige Werte sind single, semi_double, double, queen und king.
Jedes <Bed> hat die folgenden untergeordneten Elemente:
  • <Width> (optional): Gibt die Bettbreite an. Muss das Attribut unit mit dem Wert cm und das Attribut number mit der Breite des Betts in Zentimetern als Ganzzahl enthalten.
  • <Length> (optional): Gibt die Bettlänge an. Muss das Attribut unit mit dem Wert cm und das Attribut number mit der Länge des Betts in Zentimetern als Ganzzahl enthalten.
Beispiel:
<Beds>
  <Bed size="double">
    <Width unit="cm" number="140"/>
    <Length unit="cm" number="195"/>
  </Bed>
  <Bed/> <!-- Size unknown -->
</Beds>
<Suite> Optional empty Geben Sie dieses Element an, wenn es sich bei dem Zimmer um eine Suite handelt.
<Capsule> Optional empty Geben Sie dieses Element an, wenn es sich bei diesem Zimmer um ein Kapselzimmer handelt.
<Roomsharing> Optional enum Gibt an, ob dieses Zimmer mit anderen Personen 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 Geben Sie dieses Element an, wenn der Raum barrierefrei 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.

    Folgende Attribute sind verfügbar:

    • bathtub (optional): Gibt an, dass das Bad eine Badewanne hat. Gültige Werte sind 0 (oder false) und 1 (oder true).
    • shower (optional): Gibt an, dass das Badezimmer eine Dusche hat. Gültige Werte sind 0 (oder false) und 1 (oder true).
  • <Toilet> (optional): Das Vorhandensein dieses Elements weist darauf hin, dass dieses Zimmer eine Toilette hat.

    Folgende Attribute sind verfügbar:

    • electronic_bidet (optional): Gibt an, dass die Toilette ein elektronisches Bidet hat. Gültige Werte sind 0 (oder false) und 1 (oder true).
    • mobility_accessible (optional): Gibt an, dass die Toilette barrierefrei 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 Geben Sie dieses Element an, wenn das Zimmer ein eigenes Badebecken im Freien hat.
<AirConditioning> Optional empty Geben Sie dieses Element an, wenn das Zimmer über eine Klimaanlage verfügt.
<Balcony> Optional empty Geben Sie dieses Element an, wenn das Zimmer einen Balkon oder eine Veranda hat.
<Views> Optional Object Gültige Optionen sind:

<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

Das folgende Beispiel zeigt ein western-Zimmer im japanischen 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

Das folgende Bild zeigt ein Beispiel für ein Zimmer im japanischen Stil ohne Bett. Für Zimmer im Stil von japanese sind keine Informationen zum Bett erforderlich.

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

Japanisch-westliches Zimmer mit Bett

Das folgende Beispiel zeigt ein Zimmer im japanese_western-Stil mit einem king großen Bett.

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

Wenn der Partner die Informationen zur Anzahl der Betten in japanese_western-Zimmern nicht hat, folgen Sie dem 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 vom Reiseplan unabhängige Metadaten für die Zimmerpakete der Unterkunft. Dieses Element enthält Informationen, die mit einem Partner und einem Hotel, aber nicht mit einem Reiseplan verknüpft sind. Ziel ist es, alle nicht zum Reiseplan gehörenden Daten einmal zu definieren und von Reiseplandaten darauf zu verweisen.

Das <PackageData>-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>
        + ...

Das <PackageData>-Element ähnelt <RoomData>, beschreibt jedoch Preismerkmale und Bedingungen, die nicht Teil der Beschreibung des physischen Zimmers sind. Sie verwenden <RoomData> und <PackageData> in Kombination, um Details zu Zimmerpaketen und Preismerkmalen bereitzustellen. Verwenden Sie für einzelne Zimmer, die nicht Teil eines Pakets sind, nur <RoomData>.

Sie können sowohl das Element <RoomData> als auch das Element <PackageData> für dasselbe Zimmer oder Zimmerpaket definieren. Wenn Google dieses Zimmer oder Paket in den Suchergebnissen anzeigt, werden Beschreibungen beider Elemente getrennt durch einen Gedankenstrich eingeblendet.

Wenn Sie ein einzelnes <PackageData>-Element für eine Unterkunft aktualisieren, müssen Sie alle <PackageData>- und <RoomData>-Elemente für diese Unterkunft aktualisieren. Bei jedem Element <PropertyDataSet> wird davon ausgegangen, dass es alle Daten zu der Unterkunft enthält und dass alle vorhandenen Daten überschrieben werden.

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:

Untergeordnetes Element Erforderlich? Typ Beschreibung
<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 Gibt an, wann und wo der Nutzer eine Buchung bezahlt. Für dieses Element wird dieselbe Syntax wie für <ChargeCurrency> in <Result> verwendet.

Der Standardwert ist web.

<CheckinTime> Optional Time Früheste Check-in-Zeit. Die Uhrzeit muss vor 24:00 Uhr in der Ortszeit des Hotels liegen.
<CheckoutTime> Optional Time Spätester Zeitpunkt für den Check-out in der Ortszeit des Hotels.
<Description> Optional Object Eine detaillierte Beschreibung des Pakets. Dieses Element sollte Informationen enthalten, die weder in anderen Elementen noch im Element <Name> beschrieben sind. Geben Sie die Beschreibung des Zimmers nicht rein in Großbuchstaben an, sondern verwenden Sie Groß-/Kleinschreibung.

Das Element <Description> verwendet das einzelne untergeordnete Element <Text>, das die beiden erforderlichen Attribute text und language hat. Das Attribut text ist die Beschreibung und das Attribut language gibt einen aus zwei Buchstaben bestehenden Sprachcode an. Beispiel:

<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 Gibt an, ob ein Paket kostenlosen Internetzugang bietet, wenn andere Pakete diese Ausstattung nicht beinhalten. Geben Sie dieses Element nicht an, wenn alle Zimmerpakete eines Hotels einen kostenlosen Internetzugang enthalten. Dieses Element gilt nicht für einen kabelgebundenen oder kabellosen Internetzugang, der nicht in den Zimmern verfügbar ist. Gültige Werte sind 0 (oder false) und 1 (oder true).
<Meals> Optional Object Enthält Informationen zu den Mahlzeiten in diesem Paket.

Das Element <Meals> verwendet die beiden optionalen untergeordneten Elemente <Breakfast> und <Dinner> mit den folgenden Attributen:

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

Die optionalen Attribute werden nur verwendet, wenn included „true“ 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 den Angaben auf der Landingpage des Hotels übereinstimmen. Schreiben Sie den Wert dieses Elements nicht rein in Großbuchstaben, sondern verwenden Sie Groß-/Kleinschreibung.

Dieses Element verwendet das einzelne untergeordnete Element <Text>, das die beiden Attribute text und language hat. Das Attribut text ist die Beschreibung und das Attribut language gibt einen aus zwei Buchstaben bestehenden Sprachcode an. Beispiel:

<Name>
  <Text text="Bed and Breakfast" language="en"/>
  <Text text="Lit et petit déjeuné" language="fr"/>
</Name>
<Occupancy> Optional integer Die maximale Anzahl Gäste, für die ein Zimmerpaket vorgesehen ist. In einer großen Suite haben beispielsweise bis zu sechs Gäste Platz. Gedacht ist sie aber nur für bis zu vier Personen.

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 für <Occupancy> muss eine positive Ganzzahl im Bereich von 1 bis 99 sein.

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

Hinweis:

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

<PhotoURL> Optional Object (Wie <PhotoURL> in <RoomData>, aber für das Paket, z. B. Fotos von Mahlzeiten)
<Refundable> Optional Object Ermöglicht das Eintragen eines Preises als vollständig erstattungsfähig oder mit einer kostenlosen Stornierung. Wenn Sie dieses Element nicht angeben, werden keine Erstattungsinformationen angezeigt. Die Erstattungsrichtlinie auf <PackageData>-Ebene überschreibt die Erstattungsrichtlinie auf <Result>-Ebene. Die Erstattungsrichtlinie auf <Rates>-Ebene überschreibt die Erstattungsrichtlinie auf <PackageData>-Ebene. Die Erstattung von Preisen kann für Nutzer auch durch alternative Optionen hervorgehoben werden, ohne das Schema der Transaktionsnachrichten direkt zu ändern. Weitere Informationen zu diesen Optionen

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 Preis nicht als erstattungsfähig angezeigt. Folgende Attribute sind verfügbar:

  • available: (Erforderlich) Legen Sie 1 oder true fest, um anzugeben, ob für den Preis eine vollständige Erstattung möglich ist. Andernfalls geben Sie 0 oder false an.
  • refundable_until_days: (Erforderlich, wenn available den Wert true hat) Gibt an, bis wie viele Tage vor dem Check-in eine vollständige Erstattung beantragt werden kann. Der Wert für refundable_until_days muss eine Ganzzahl zwischen 0 und 330 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 Attributwert hat 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 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.
<MembershipBenefits Included> Optional boolean Der Preis beinhaltet Vorzüge des Elite-Status für die Dauer des Aufenthalts. Enthält die folgenden Parameter:
  • ProgramName: Name des Elite-Statusprogramms.
  • ProgramLevel: Stufe des Programms. Beispiel: „Gold“.
  • NightlyValue (optional): Wert der Vorteile pro Nacht.
<CarRentalIncluded> Optional boolean Der Preis beinhaltet einen kostenlosen Mietwagen für die Dauer des Aufenthalts.
<MilesIncluded> Optional boolean Der Preis beinhaltet Vielfliegermeilen. Zu den Parametern gehören:
  • NumberOfMiles: Anzahl der Meilen pro Reiseplan.
  • Provider: Anbieter für 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 <MilesIncluded>-Element hat ein untergeordnetes Element, <NumberOfMiles>, mit dem die Anzahl der gesammelten Punkte berechnet wird. Wenn <NumberOfMiles> nicht festgelegt ist, werden die gesammelten Punkte durch die Konfiguration der Treuepunkteaktion 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 Der Preis bezieht sich auf Guthaben in der Unterkunft (Lebensmittel und Getränke, Spa usw.). Parameter:
  • Amount: Der Wert des Guthabens pro Reiseplan 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: Der Transport vom Flughafen zur Unterkunft wird angeboten. Dies ist der Standardwert, wenn keine Richtung angegeben ist. to: Vom Hotel wird ein Transport zum Flughafen angeboten. round_trip: Der Transport zum und vom Flughafen wird bereitgestellt.

Beispiele

Set für Einzelzimmer

Im folgenden Beispiel wird ein Einzelzimmerpaket mit 2er-Belegung (1 Erwachsener und 1 Kind) definiert. Es enthält 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 und Fotos

Im folgenden Beispiel werden Zimmer- und Paketmetadaten für Mahlzeiten, Fotos sowie Check-in- und Check-out-Zeiten definiert:

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

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 um verfügbares Inventar zu definieren. In diesem Element definierte Objekte beziehen sich in der Regel auf vom Reiseplan unabhängige Metadaten zu einem Zimmer oder Paket (z. B. auf eine Beschreibung oder Ausstattung), die in <PackageData> und <RoomData> definiert sind.

Transaktionsnachrichten mit Preisaktualisierungen werden normalerweise sehr häufig gesendet. Wie und wie oft Sie dies tun, hängt von Ihrem Übermittlungsmodus ab.

Sie können <Result> in einer Transaktionsnachricht verwenden, um Reisepläne zu entfernen, wie unter Inventar entfernen beschrieben. Weitere Informationen zum Aktualisieren von Preisen und Verfügbarkeit mithilfe von Transaktionsnachrichten finden Sie unter Inventar hinzufügen und aktualisieren.

Eine Transaktionsnachricht kann eine beliebige Anzahl von <Result>-Elementen 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 Beschreibung
mergeable Optional boolean Standardmäßig überschreiben neue Preise für eine Kombination aus Hotel und Reiseplan alle vorherigen (nicht abgelaufenen) Preise im Cache von Google. Mit dem Attribut „mergeable“ können Sie zusätzliche Preise im Cache von Google speichern, ohne vorherige Preisinformationen zu löschen. Bei Livepreisabfragen mit Kontextantworten ist dieses Attribut immer auf true gesetzt (unabhängig von der Transaktionsnachrichtenantwort).

Untergeordnete Elemente

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

Untergeordnetes Element Erforderlich? Typ Beschreibung
<AllowablePointsOfSale> Optional Object Eine oder mehrere Landingpages, die für das Hotel infrage kommen. Eine Landingpage ist eine Website, auf der der Buchungsprozess des Endnutzers verarbeitet werden kann. Um bestimmte Landingpages explizit einzubeziehen und andere auszuschließen, fügen Sie ein oder mehrere <AllowablePointsOfSale>-Elemente hinzu, die dem id-Attribut des Elements <PointOfSale> in der Landingpage-Datei entsprechen.

Wenn Sie dieses Element nicht einbeziehen, werden alle in der Landingpage-Datei definierten Landingpages für die Buchung des Zimmers als aktiv erachtet. Weitere Informationen finden Sie unter Syntax der Landingpage-Datei.

<Baserate> Optional float

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

  • Legen Sie für ein privates Zimmer den günstigsten Doppelzimmerpreis fest, den Sie anbieten. Höhere Belegungen sind hier zulässig, wenn Sie keinen Preis für Doppelbelegung haben und in Ihrem Konto Preise für Nicht-Doppelbelegung aktiviert sind. Wenden Sie sich an uns, um Preise für eine von 2 abweichende Belegung zu aktivieren. Preise für Einzelbelegung 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 Nächte sein, nicht der durchschnittliche Preis pro Nacht.

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.

Wie Sie ein Zimmerpaket entfernen, erfahren Sie unter Zimmerpaket entfernen.

<Baserate> darf keine Symbole zum Zusammenfassen von Ziffern enthalten, z. B. ein Komma (,) oder einen Punkt (.). Nachkommastellen müssen immer durch einen Punkt (.) abgetrennt werden. Stellen Sie 1.200,40 $z. B. so dar:

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

Das Element <Baserate> verwendet die folgenden optionalen Attribute:

  • all_inclusive: Ein boolescher Wert, der angibt, ob im Preis Steuern und Gebühren enthalten sind. Für Endnutzer in den USA und Kanada setzen Sie diesen Wert im Allgemeinen auf false und geben Werte für die Elemente <Tax> und <OtherFees> an. Falls Sie Pauschalpreise verwenden, werden Ihre Angebote möglicherweise nicht in den Einträgen angezeigt, wenn Steuern und Gebühren für Endnutzer in Kanada nicht separat angegeben sind.

    US-Nutzern werden jetzt Pauschalpreise 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 Element <Result> für den Hotelpreis oder im <PackageData>-Block für ein Zimmerpaket verwendet werden.

Gültige Werte sind:

  • web: Der Nutzer zahlt online bei der Buchung. „Immer“ ist der Standardwert. Die tatsächliche Landingpage wird in der Landingpage-Datei definiert. Sie kann von der Währung, dem Standort, der Sprache oder anderen Faktoren abhängen.
  • hotel: Der Nutzer zahlt beim Check-in im Hotel. Wenn die Zahlung immer in der Währung des Hotels erfolgen muss, setzen Sie den Wert für <ChargeCurrency> auf hotel. Die eigentliche Landingpage wird von der Währung des Nutzers nicht beeinflusst.
  • 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: Der Nutzer zahlt einen ersten Teil der fälligen Gesamtsumme. Anschließend zahlt er regelmäßig einen bestimmten Betrag über einen festgelegten Zeitraum hinweg.

Der Standardwert ist web.

<Checkin> Required Date Das Check-in-Datum für einen Reiseplan im Format Date. Ein Reiseplan setzt sich aus den Elementen <Nights> und <Checkin> zusammen.
Optional string Nicht mehr unterstützt:Definiert ein benutzerdefiniertes Feld, in dem Sie zusätzliche Daten zu einem Hotel senden können. Sie können mit den folgenden Elementnamen bis zu fünf benutzerdefinierte Werte senden:
  • <Custom1>
  • <Custom2>
  • <Custom3>
  • <Custom4>
  • <Custom5>

Das Element <Custom> dient zum Senden beliebiger Daten. Sie können in diesem Feld beispielsweise einen Wert angeben, mit dem anschließend in der Landingpage-Datei eine benutzerdefinierte URL für eine Landingpage generiert wird. Pro benutzerdefiniertes Feld dürfen maximal 200 Zeichen verwendet werden. Weitere Informationen finden Sie unter Landingpage-Dateien . Im <Rate>-Element bereitgestellte <Custom>-Elemente werden nicht an das <RoomBundle>-Element vererbt. Sie sollten das Attribut <Custom> 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).

Sie sollten keine Zeitstempel angeben, wenn es für Ihre Preisstruktur nicht unbedingt erforderlich ist.

Google zeigt keine abgelaufenen Preise an. Für alle Reisepläne mit abgelaufenen Preisen sind Livepreisabfragen möglich.

<MilesIncluded> Optional boolean Der Preis beinhaltet Vielfliegermeilen. Zu den Parametern gehören:
  • NumberOfMiles: Anzahl der Meilen pro Reiseplan.
  • Provider: Anbieter für 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 <MilesIncluded>-Element hat ein untergeordnetes Element, <NumberOfMiles>, mit dem die Anzahl der gesammelten Punkte berechnet wird. Wenn <NumberOfMiles> nicht festgelegt ist, werden die gesammelten Punkte durch die Konfiguration der Treuepunkteaktion 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: Belegungsraten für Kinder sollten nur über Live-Preise mit Kontext und nicht über Pull- oder geänderte Preise gesendet werden.

Hinweis: Wenden Sie sich an Ihr Supportteam, um die Funktion zum Senden von Preisen für eine von 2 abweichende Belegung 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 anstelle des <Result>-Elements anzugeben.

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

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 Preise für Einzelbelegung nur in <Rates> angegeben werden. Wenden Sie sich an uns, um Preise für eine von 2 abweichende Belegung zu aktivieren.

<Refundable> Optional Object Ermöglicht das Eintragen eines Preises als vollständig erstattungsfähig oder mit einer kostenlosen Stornierung. Wenn Sie dieses Element nicht angeben, werden keine Erstattungsinformationen angezeigt. Die Erstattungsrichtlinie auf <PackageData>-Ebene überschreibt die Erstattungsrichtlinie auf <Result>-Ebene. Die Erstattungsrichtlinie auf <Rates>-Ebene überschreibt die Erstattungsrichtlinie auf <PackageData>-Ebene. Die Erstattung von Preisen kann für Nutzer auch durch alternative Optionen hervorgehoben werden, ohne das Schema der Transaktionsnachrichten direkt zu ändern. 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 Preis nicht als erstattungsfähig angezeigt. Folgende Attribute sind verfügbar:

  • available: (Erforderlich) Legen Sie 1 (oder true) fest, um anzugeben, ob für den Preis eine vollständige Erstattung möglich ist. Andernfalls geben Sie 0 (oder false) an.
  • refundable_until_days: (Erforderlich, wenn available den Wert true hat) Gibt an, bis wie viele Tage vor dem Check-in eine vollständige Erstattung beantragt werden kann. Der Wert für refundable_until_days muss eine Ganzzahl zwischen 0 und 330 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 Attributwert hat 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 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 mit Informationen über mit Preisen versehene physische Beschreibungen eines Zimmers, Ausstattungspakete sowie Details zu Buchungsrichtlinien für das jeweilige Hotel und den Reiseplan.

Mit diesem Element definieren Sie in der Regel den Grundpreis für das Zimmer und die verschiedenen Zimmertypen innerhalb derselben Unterkunft. Sie können Beschreibungen von Zimmerpaketen inline definieren, sollten diese Informationen jedoch vorzugsweise in einer separaten Transaktionsnachricht angeben. Google speichert Metadaten, sodass Sie bei zukünftigen Preisaktualisierungen darauf verweisen können, anstatt sie zu wiederholen.

<RoomID> Optional string Die eindeutige ID des Zimmers, um es vordefinierten Zimmerdaten zuzuordnen. Auch zum Füllen der Landingpage-Variable PARTNER-ROOM-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 anstelle des <Result>-Elements anzugeben.

<Tax> Optional 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. 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 verfügbar.
  • <MinNightStay value=N/>: Der Reiseplan lag unter dem Mindestaufenthalt von N Übernachtungen für den Aufenthaltszeitraum.
  • <MaxNightStay value=N/>: Der Reiseplan überschritt die maximale Anzahl von Übernachtungen von N für den Aufenthaltszeitraum.
  • <MinAdvancePurchase value=N/>: Der Reiseplan lag unter dem Mindestbuchungszeitraum von N für die Aufenthaltsdaten.
  • <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/>: In der Unterkunft ist kein Check-out am Abreisedatum des Reiseplans möglich.
  • <PropertyClosed first_open="YYYY-MM-DD" first_closed="YYYY-MM-DD"/>: Die Unterkunft ist für einen Teil oder den gesamten Aufenthalt geschlossen. Mit den empfohlenen Attributen first_open und first_closed werden die ersten Daten angegeben, die größer oder gleich dem Ankunftsdatum sind und für die 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 das Datum sein, 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 nachgelagerten Datenquellen wurde kein Preis für den Reiseplan angegeben.
  • <InvalidProperty/>: Die angeforderte Property-ID wurde nicht erkannt.
  • <InvalidOccupancy/>: Die angeforderte Belegung wird von der Unterkunft nicht unterstützt.
  • <PriceIssue/>: Aufgrund eines Problems mit dem Preis wurde die Benachrichtigung nicht gesendet.
  • <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 aufgeführten Buchungsbeschränkung nicht verfügbar. Mit dem optionalen Attribut „restriction“ können Sie die Einschränkung als Text angeben.

Beispiele

Beispiel mit mehreren Unterkünften

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 können Sie bei allen zukünftigen Preis- und Inventaraktualisierungen auf diese Informationen verweisen. Weitere Informationen finden Sie unter Zimmerpaket-Metadaten.

Beispiel für mehrere Preise

Im folgenden Beispiel werden ein einzelner Reiseplan und eine Unterkunft mit mehreren Preisen für verschiedene Belegungen definiert. Mit dem Element <Rates> können Sie für eine bestimmte Unterkunft mehrere Preise bereitstellen. Das folgende Beispiel ist auch für Ferienunterkünfte hilfreich:

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

Nicht verfügbares Beispiel

Im folgenden Beispiel wird ein Reiseplan definiert, dessen Verfügbarkeit nicht von Downstream-Channels abgerufen werden konnte, ein zweiter, der sowohl unter der Mindestaufenthaltsdauer liegt als auch für die angegebenen Termine bereits gebucht ist, und ein dritter, dessen Unterkunft am Anreisedatum geschlossen ist, aber im Laufe des Aufenthalts geöffnet wird:

<?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>-Element in <Rates> definiert einen anderen Preis für die Kombination aus Zimmer und Reiseplan.

Verwenden Sie das Element <Rates> nur, wenn es mehrere Preise für dieselbe Kombination aus Zimmer und Reiseplan gibt. Zum Beispiel definieren Sie mehrere Preise für nutzerabhängige Preise, Tarife für bestimmte Zielgruppen oder nutzerabhängige Preise in Zimmerpaketen.

Das <Rates>-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> (Can also contain <Rates>)
        + ...

Werte, die in einem <Rate>-Element festgelegt werden, überschreiben preisbezogene Werte für das übergeordnete Element <Result> oder <RoomBundle>. Wenn sie nicht in <Rate> festgelegt sind, übernehmen sie den Wert aus dem übergeordneten Element. Nur <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? Beschreibung
rate_rule_id Optional Bei nutzerabhängigen Preisen entspricht diese ID einem Preis in einer Definition in Ihrer Datei zum Festlegen der Preisregel. Die Zeichenbeschränkung für dieses Feld beträgt 40 Zeichen.

Untergeordnete Elemente

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

Untergeordnetes Element Erforderlich? Typ Beschreibung
<AllowablePointsOfSale> Optional Object Eine oder mehrere Landingpages, die für das Hotel infrage kommen. Für dieses Element wird dieselbe Syntax wie für <AllowablePointsOfSale> in <Result> verwendet.
<Baserate> Required float Der Preis des Zimmers für den Aufenthalt. Für dieses Element wird dieselbe Syntax wie für <Baserate> in <Result> verwendet.

Hinweis:Das untergeordnete Element <Baserate> unter <Rate> kann nicht als „Nicht verfügbar“ definiert werden.

<ChargeCurrency> Optional enum Gibt an, wann und wo der Nutzer eine Buchung bezahlt. Für dieses Element wird die dieselbe Syntax wie für <ChargeCurrency> in <Result> verwendet.
Optional string Nicht mehr unterstützt:Benutzerdefinierte Felder, mit denen Sie zusätzliche Daten zu einem Hotel an eine Landingpage weiterleiten können. Für dieses Element wird die dieselbe Syntax wie für <Custom[1‑5]> in <Result> verwendet. Pro benutzerdefiniertes Feld dürfen maximal 200 Zeichen verwendet werden. Weitere Informationen finden Sie unter Landingpage-Dateien. Wenn im <Result>-Element <Custom>-Elemente angegeben sind, werden sie nicht im <RoomBundle>-Element übernommen und sollten für jedes <RoomBundle> separat definiert werden. Bei Bedarf können sie auch in <PackageData> enthalten sein.

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. Für dieses Element wird die dieselbe Syntax wie für <ExpirationTime> in <Result> verwendet.
<MilesIncluded> Optional boolean Der Preis beinhaltet Vielfliegermeilen. Zu den Parametern gehören:
  • NumberOfMiles: Anzahl der Meilen pro Reiseplan.
  • Provider: Anbieter für 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 <MilesIncluded>-Element hat ein untergeordnetes Element, <NumberOfMiles>, mit dem die Anzahl der gesammelten Punkte berechnet wird. Wenn <NumberOfMiles> nicht festgelegt ist, werden die gesammelten Punkte durch die Konfiguration der Treuepunkteaktion 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 Anzahl von Gästen für diesen Preis an. Wenn keine Angabe erfolgt, wird davon ausgegangen, dass sie mit der übergeordneten Rate identisch ist. <Occupancy> wird möglicherweise von <OccupancyDetails> begleitet, wodurch die Art der Gäste (Erwachsene oder Kinder) angegeben wird. Unter <OccupancyDetails> finden Sie Informationen zur Syntax und eine Beschreibung untergeordneter Elemente.

<OtherFees> Required float Zusätzlich zum Basispreis und den Steuern anfallende Gebühren, die sich auf den endgültigen Zimmerpreis auswirken. Für dieses Element wird dieselbe Syntax wie für <OtherFees> in <Result> verwendet.

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

<Refundable> Optional Object Ermöglicht das Eintragen eines Preises als vollständig erstattungsfähig oder mit einer kostenlosen Stornierung. Wenn Sie dieses Element nicht angeben, werden keine Erstattungsinformationen angezeigt. Die Erstattungsrichtlinie auf <PackageData>-Ebene überschreibt die Erstattungsrichtlinie auf <Result>-Ebene. Die Erstattungsrichtlinie auf <Rates>-Ebene überschreibt die Erstattungsrichtlinie auf <PackageData>-Ebene. Die Erstattung von Preisen kann für Nutzer auch durch alternative Optionen hervorgehoben werden, ohne das Schema der Transaktionsnachrichten direkt zu ändern. Weitere Informationen zu diesen Optionen

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 Preis nicht als erstattungsfähig angezeigt. Folgende Attribute sind verfügbar:

  • available: (Erforderlich) Legen Sie 1 (oder true) fest, um anzugeben, ob für den Preis eine vollständige Erstattung möglich ist. Andernfalls geben Sie 0 (oder false) an.
  • refundable_until_days: (Erforderlich, wenn available den Wert true hat) Gibt an, bis wie viele Tage vor dem Check-in eine vollständige Erstattung beantragt werden kann. Der Wert für refundable_until_days muss eine Ganzzahl zwischen 0 und 330 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 Attributwert hat 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 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.
<Tax> Required float Die für den endgültigen Preis eines Zimmers berechneten Steuern. Für dieses Element wird die dieselbe Syntax wie für <Tax> in <Result> verwendet.

Beispiele

Basispreis und nutzerabhängiger Preis

Das folgende Beispiel zeigt eine Transaktionsnachricht mit einem Basispreis und einem nutzerabhängigen Preis:

<?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 nutzerabhängige Preise

Im folgenden Beispiel werden ein Basispreis und mehrere nutzerabhängige Preise in einem <RoomBundle>-Element definiert:

<?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. 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 Preise und Verfügbarkeit für Zimmerpakete als untergeordnetes Element von <Result> in einer <Transaction>-Nachricht. Definieren Sie ein separates Element für jede Kombination aus Paket und Reiseplan. Verwenden Sie <RoomData>, um das Paket und die Bedingungen der Zimmerpakete zu definieren.

Das <RoomBundle>-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>
        + ...

Weitere Informationen finden Sie unter Zimmerpakete verwenden.

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 Beschreibung
<Baserate> Required float Definiert den Preis des Zimmerpakets für den Aufenthalt. Für dieses Element wird dieselbe Syntax wie für <Baserate> in <Result> verwendet, mit der folgenden Ausnahme:
  • Wenn das Zimmer für den Reiseplan nicht verfügbar ist, entfernen Sie das Element <RoomBundle>, um anzugeben, dass ein Zimmer nicht mehr im Inventar vorhanden ist. Weitere Informationen finden Sie unter Zimmerpaket entfernen.
<BreakfastIncluded> Optional boolean Gibt an, ob der Preis des Zimmerpakets Frühstück beinhaltet.
<ChargeCurrency> Optional enum Gibt an, wann und wo der Nutzer eine Buchung bezahlt. Für dieses Element wird dieselbe Syntax wie für <ChargeCurrency> in <Result> verwendet.

Der Standardwert ist web.

Optional string Eingestellt:Benutzerdefinierte Felder, um zusätzliche Daten an die Landingpages für das Zimmerpaket weiterzuleiten. Für diese Elemente wird dieselbe Syntax wie für <Custom[1-5]> in <Result> verwendet. Pro benutzerdefiniertes Feld dürfen maximal 200 Zeichen verwendet werden. Weitere Informationen finden Sie unter Landingpage-Dateien. Benutzerdefinierte Variablen werden nur aufgeführt, wenn Sie die Preise in der Transaktionsnachricht senden. Wenn im <Result>-Element <Custom>-Elemente angegeben sind, werden sie nicht im <RoomBundle>-Element übernommen und sollten für jedes <RoomBundle> separat definiert werden. Bei Bedarf können sie auch in <PackageData> aufgenommen werden.

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

<InternetIncluded> Optional boolean Gibt an, ob ein Zimmerpaket kostenlosen Internetzugang bietet, wenn andere Pakete diese Ausstattung nicht beinhalten. Geben Sie dieses Element nicht an, wenn alle Zimmerpakete eines Hotels einen kostenlosen Internetzugang enthalten. Dieses Element gilt nicht für einen kabelgebundenen oder kabellosen Internetzugang, der nicht in den Zimmern verfügbar ist.
<MilesIncluded> Optional boolean Der Preis beinhaltet Vielfliegermeilen. Zu den Parametern gehören:
  • NumberOfMiles: Anzahl der Meilen pro Reiseplan.
  • Provider: Anbieter für Vielfliegermeilen.
  • LoyaltyCampaignID: Eine eindeutige ID, die die spezifische Treuepunkteaktion identifiziert, die mit Google konfiguriert und aktualisiert wurde. Sie addiert Treuepunkte zum Hotelpreis.

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

    Das <MilesIncluded>-Element hat ein untergeordnetes Element, <NumberOfMiles>, mit dem die Anzahl der gesammelten Punkte berechnet wird. Wenn <NumberOfMiles> nicht festgelegt ist, werden die gesammelten Punkte durch die Konfiguration der Treuepunkteaktion 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 Anzahl von Gästen für diesen Preis an. Eine große Suite kann beispielsweise physisch Platz für sechs Gäste bieten, während das „Flitterwochenpaket“ nur für zwei Gäste vorgesehen ist.

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.

Verwenden Sie beim Definieren der Belegung in der Landingpage-URL die Variablen NUM-ADULTS und NUM-CHILDREN, wie unter Variablen und Bedingungen verwenden beschrieben. Der Standardwert ist 2 Erwachsene und 0 Kinder.

Der Wert für <Occupancy> muss eine positive Ganzzahl im Bereich von 1 bis 99 sein.

Hinweise:

  • <Occupancy> für <RoomBundle> wird dringend empfohlen. Das Feld ist als erforderlich gekennzeichnet. Wenn es ausgelassen wird, wird der Fehler 1097 ausgegeben.
  • <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> 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 Sie <Occupancy> sowohl in <RoomBundle> als auch in <PackageData> festlegen, 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. Mit dieser ID ordnen Sie die Daten des Zimmerpakets den Daten zu, die in <PackageData> gesendet wurden. 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 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 Preisplan-ID stellt die eindeutige Kennung für eine Kombination aus Zimmer- und Paketdaten dar. Beispiel: Bei einem <RoomID>-Wert von 5 und einem <PackageID>-Wert von „ABC“ könnten Sie den Wert „5-ABC“ für <RatePlanID> verwenden. Wir empfehlen Ihnen dringend, RatePlanID als Variable zu verwenden, wenn Sie die dynamische URL der Landingpage (früher Point of Sale) erstellen.

Weitere Informationen finden Sie unter Variablen und Bedingungen verwenden.

<Rates> Optional <Rates> Preise, die die Standardwerte für dieses Zimmerpaket überschreiben. Für dieses Element wird dieselbe Syntax wie für <Rates> in <Result> verwendet.
<Refundable> Optional Object Ermöglicht das Eintragen eines Preises als vollständig erstattungsfähig oder mit einer kostenlosen Stornierung. Wenn Sie dieses Element nicht angeben, werden keine Erstattungsinformationen angezeigt. Die Erstattungsrichtlinie auf <PackageData>-Ebene überschreibt die Erstattungsrichtlinie auf <Result>-Ebene. Die Erstattungsrichtlinie auf <Rates>-Ebene überschreibt die Erstattungsrichtlinie auf <PackageData>-Ebene. Die Erstattung von Preisen kann für Nutzer auch durch alternative Optionen hervorgehoben werden, ohne das Schema der Transaktionsnachrichten direkt zu ändern. Weitere Informationen zu diesen Optionen

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 Preis nicht als erstattungsfähig angezeigt. Folgende Attribute sind verfügbar:

  • available: (Erforderlich) Legen Sie 1 (oder true) fest, um anzugeben, ob für den Preis eine vollständige Erstattung möglich ist. Andernfalls geben Sie 0 (oder false) an.
  • refundable_until_days: (Erforderlich, wenn available den Wert true hat) Gibt an, bis wie viele Tage vor dem Check-in eine vollständige Erstattung beantragt werden kann. Der Wert für refundable_until_days muss eine Ganzzahl zwischen 0 und 330 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 Attributwert hat 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 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.
<RoomID> Required string Die eindeutige ID für die Zimmerdaten. Mit dieser ID ordnen Sie die Daten des Zimmerpakets den Daten zu, die Sie in <RoomData> gesendet haben. Weitere Informationen finden Sie unter Zimmerpaket-Metadaten. Wenn Sie Zimmerdaten inline definieren, können Sie mit dieser ID auf eine allgemeine Zimmerdefinition in einer einzelnen Transaktionsnachricht verweisen.
<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

Bundle für Einzelbelegung

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.

Wenn kein Einzelzimmerpreis verfügbar ist, zeigt Google den niedrigsten Preis für Doppelzimmer an. Belegungspreise werden nicht live abgefragt, wenn Preise für Doppelzimmer (oder mehr) für einen Reiseplan im Cache gespeichert werden.

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 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 enthält.

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 Zimmerpreise für Hostels zu zeigen.

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

Im folgenden Beispiel werden ein Basispreis und mehrere nutzerabhängige Preise in einem <RoomBundle>-Element definiert:

<?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. 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> im Element <Rates> von <Result> oder <RoomBundle> angezeigt werden, ist der Preis durch die Belegungsdetails eingeschränkt.

Wenn Sie <OccupancyDetails> in ein <RoomBundle> einfügen und ein verschachteltes <Rate>-Element verwenden, können Sie kein einfaches <Occupancy> innerhalb des <Rate>-Elements senden. Stattdessen wird eine der folgenden Optionen empfohlen:

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

oder

  • <OccupancyDetails> duplizieren:Senden Sie in diesem Fall zusätzliche identische <OccupancyDetails> sowohl im <RoomBundle>- als auch im verschachtelten <Rate>-Element.

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:

Untergeordnetes Element Erforderlich? Typ Beschreibung
<NumAdults> Required integer Die Anzahl von erwachsenen Gästen. Min.: 1, Max.: 20.
<Children> Optional Object Ein Container für ein oder mehrere <Child>-Elemente.
<Child age> Optional integer Das maximale Alter für dieses Kind, z. B. <Child age="17">.

Beispiele

Die folgenden Beispiele zeigen, wie <OccupancyDetails> in <Results>, <RoomBundle> oder dem untergeordneten Element <Rates> vorkommen kann.

Antwort auf das Ergebnis

Im folgenden Beispiel werden ein Reiseplan und die zugehörigen Preise für eine Unterkunft als Antwort auf eine Livepreisabfrage definiert, bei der der Nutzer die Anzahl und die Arten von Gästen angegeben hat. Hier werden die <OccupancyDetails> (2 Erwachsene und 1 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>

Antwort bewerten

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>