Diese Seite bietet eine Referenz für die XML-basierten Transaktionsnachrichten.
<Transaction>
Das Wurzelelement einer Transaktionsnachricht ist <Transaction>. Es handelt sich um einen Container für beschreibende Informationen über Zimmer und Pakete sowie Preise und Verfügbarkeit von Zimmern und Paketen.
Das Element <Transaction> erscheint an folgender Stelle in der XML-Hierarchie der Transaktionsnachricht:
+<Transaction>+<PropertyDataSet>// Room and package metadata + <Property> +<RoomData>+<PackageData>+<Result>// Pricing and availability +<Rates>+<RoomBundle>+ ...
Nachrichten, die <Transaction> als Wurzelelement verwenden, benötigen mindestens ein Kindelement. Transaktionsnachrichten können beliebig viele untergeordnete Elemente enthalten, solange die Gesamtgröße der Nachricht 100 MB nicht überschreitet.
Syntax
Das <Transaction>-Element verwendet die folgende Syntax:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="timestamp" id="transaction_ID">
<!-- Defines data about a room or package (Room Bundle) -->
<PropertyDataSet>
...
</PropertyDataSet>
<!-- Updates/sets prices and availability for rooms and Room Bundles -->
<!-- (Also removes itineraries from inventory) -->
<Result>
...
</Result>
</Transaction>
Attribute
Das <Transaction>-Element hat die folgenden Attribute:
| Attribut | Erforderlich? | Typ | Beschreibung |
|---|---|---|---|
| id | Required | String | Eine eindeutige Kennung für jede Transaktionsnachricht. |
| partner | Optional | string | Das Partnerkonto, für das die Transaktionsnachricht bestimmt ist. Sie verwenden diese Funktion typischerweise dann, wenn Ihr Backend Preisfeeds für mehrere Partnerkonten bereitstellt. Dieser Zeichenfolgenwert ist der Wert "Partner key", der auf der Seite Kontoeinstellungen im Hotel Center aufgeführt ist. |
| timestamp | Required | DateTime | Der Zeitpunkt, zu dem die Transaktionsnachricht gesendet wurde. Nachrichten, die innerhalb der letzten 24 Stunden mit einem Zeitstempel eingegangen sind, werden verarbeitet; alle anderen werden verworfen. Die Nachrichten werden in der Reihenfolge von |
Untergeordnete Elemente
Das <Transaction>-Element hat die folgenden untergeordneten Elemente:
| Kindelement | Erforderlich? | Typ | Description |
|---|---|---|---|
| <PropertyDataSet> | Optional* | <PropertyDataSet> |
Beschreibt ein bestimmtes Zimmer und Zimmerpakete. Dieses Element wird üblicherweise in einer separaten Transaktionsnachricht verwendet, um gemeinsame Werte für Raumpakete zu definieren und die Größe der Transaktionsnachrichten zu reduzieren. |
| <Result> | Optional* | <Result> |
Preisdaten für den Reiseplan eines Zimmers oder ein |
* Mindestens eine der Optionen <PropertyDataSet> oder <Result> ist erforderlich. |
|||
Beispiele
Raumdaten
Das folgende Beispiel definiert Raumdaten in einer Transaktionsnachricht:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>1234</Property>
<RoomData>
<RoomID>5440OF</RoomID>
<Name>
<Text text="Single King Bed Room" language="en"/>
<Text text="Simple Lit de Roi" language="fr"/>
</Name>
<Description>
<Text text="One king bed with pillowtop mattresses, 300-thread-count linens,
and down comforters (bedspreads). City view. 300 square feet. Desk with
rolling chair. Multi-line phone with voice mail. Cable/satellite TV with
complimentary HBO and pay movies." language="en"/>
<Text text="Un très grand lit avec matelas à plateau-coussin, ..." language="fr"/>
</Description>
<PhotoURL>
<Caption>
<Text text="Bathroom View" language="en"/>
<Text text="La salle de baines" language="fr"/>
</Caption>
<URL>http://www.foo.com/static/bar/image1234.jpg</URL>
</PhotoURL>
<Capacity>4</Capacity>
</RoomData>
</PropertyDataSet>
</Transaction>
Preise
Das folgende Beispiel definiert Preisdaten in einer Transaktionsnachricht:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-23T16:20:00-04:00" id="42">
<Result>
<Property>060773</Property>
<RoomID>RoomType101</RoomID>
<PackageID>Package101</PackageID>
<Checkin>2018-06-10</Checkin>
<Nights>2</Nights>
<Baserate currency="USD">278.33</Baserate>
<Tax currency="USD">25.12</Tax>
<OtherFees currency="USD">2.00</OtherFees>
<AllowablePointsOfSale>
<PointOfSale id="site1"/>
</AllowablePointsOfSale>
</Result>
<Result>
<Property>052213</Property>
<RoomID>RoomType101</RoomID>
<PackageID>Package101</PackageID>
<Checkin>2018-06-10</Checkin>
<Nights>2</Nights>
<Baserate currency="USD">299.98</Baserate>
<Tax currency="USD">26.42</Tax>
<OtherFees currency="USD">2.00</OtherFees>
<AllowablePointsOfSale>
<PointOfSale id="otto"/>
<PointOfSale id="simon"/>
</AllowablePointsOfSale>
<MilesIncluded>
<NumberOfMiles>1200</NumberOfMiles>
<Provider>
<Text language="en" text="United Airlines"/>
</Provider>
<LoyaltyCampaignID>my_campaign</LoyaltyCampaignID>
</MilesIncluded>
</Result>
</Transaction>
Übernachtungspreise
Das folgende Beispiel definiert Preisdaten für 1 bis 7 Nächte ab dem 7. Juni 2023:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-08-24T16:20:00-04:00" id="42">
<Result>
<Property>1234</Property>
<Checkin>2018-06-07</Checkin>
<Nights>1</Nights>
<Baserate currency="USD">209.99</Baserate>
<Tax currency="USD">25.12</Tax>
<OtherFees currency="USD">2.00</OtherFees>
</Result>
<Result>
<Property>1234</Property>
<Checkin>2018-06-07</Checkin>
<Nights>2</Nights>
<Baserate currency="USD">419.98</Baserate>
<Tax currency="USD">25.12</Tax>
<OtherFees currency="USD">2.00</OtherFees>
</Result>
<Result>
<Property>1234</Property>
<Checkin>2018-06-07</Checkin>
<Nights>3</Nights>
<Baserate currency="USD">614.97</Baserate>
<Tax currency="USD">21.12</Tax>
<OtherFees currency="USD">2.00</OtherFees>
</Result>
<Result>
<Property>1234</Property>
<Checkin>2018-06-07</Checkin>
<Nights>4</Nights>
<Baserate currency="USD">819.96</Baserate>
<Tax currency="USD">21.12</Tax>
<OtherFees currency="USD">2.00</OtherFees>
</Result>
<Result>
<Property>1234</Property>
<Checkin>2018-06-07</Checkin>
<Nights>5</Nights>
<Baserate currency="USD">999.95</Baserate>
<Tax currency="USD">21.12</Tax>
<OtherFees currency="USD">2.00</OtherFees>
</Result>
<Result>
<Property>1234</Property>
<Checkin>2018-06-07</Checkin>
<Nights>6</Nights>
<Baserate currency="USD">1193.94</Baserate>
<Tax currency="USD">21.12</Tax>
<OtherFees currency="USD">2.00</OtherFees>
</Result>
<Result>
<Property>1234</Property>
<Checkin>2018-06-07</Checkin>
<Nights>7</Nights>
<Baserate currency="USD">1259.93</Baserate>
<Tax currency="USD">21.12</Tax>
<OtherFees currency="USD">2.00</OtherFees>
</Result>
</Transaction>
Grund- und bedingte Zinssätze
Das folgende Beispiel zeigt eine Transaktionsnachricht, die einen Basiszinssatz und einen bedingten Zinssatz enthält:
<?xml version="1.0" encoding="UTF-8" ?>
<Transaction timestamp="2023-05-18T16:20:00-04:00" id="42">
<Result>
<Property>1234</Property>
<Checkin>2023-04-10</Checkin>
<Nights>1</Nights>
<Baserate currency="USD">200.00</Baserate>
<Tax currency="USD">20.00</Tax>
<OtherFees currency="USD">1.00</OtherFees>
<Rates>
<!-- The rate_rule_id is required when using conditional rates -->
<Rate rate_rule_id="mobile">
<!-- Override base rate and taxes for conditional rates -->
<Baserate currency="USD">180.00</Baserate>
<Tax currency="USD">18.00</Tax>
</Rate>
</Rates>
</Result>
</Transaction>
Inventar entfernen
Das folgende Beispiel entfernt mehrere Buchungen (1 Übernachtung an verschiedenen Tagen) für ein Hotel aus dem Bestand:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-05-23T16:20:00-04:00" id="42">
<Result>
<Property>1123581321</Property>
<Checkin>2023-05-23</Checkin>
<Nights>1</Nights>
<Unavailable>
<NoVacancy/>
</Unavailable>
<Tax currency="USD">0</Tax>
<OtherFees currency="USD">0</OtherFees>
</Result>
<Result>
<Property>1123581321</Property>
<Checkin>2023-05-24</Checkin>
<Nights>1</Nights>
<Unavailable>
<NoVacancy/>
</Unavailable>
<Tax currency="USD">0</Tax>
<OtherFees currency="USD">0</OtherFees>
</Result>
<!---Sending <Baserate> is optional with <Unavailable> -->
<Result>
<Property>1123581321</Property>
<Checkin>2023-05-25</Checkin>
<Nights>1</Nights>
<Baserate currency="USD">-1</Baserate>
<Unavailable>
<NoVacancy/>
</Unavailable>
<Tax currency="USD">0</Tax>
<OtherFees currency="USD">0</OtherFees>
</Result>
</Transaction>
<PropertyDataSet>
Ein Container für Raum- und Paketinformationen (oder Room Bundle) in einer <Transaction> Nachricht. Die auf einem Hotel festgelegten Werte überschreiben die auf einem Partner festgelegten Werte.
Google speichert diese Informationen, sodass Sie sie nicht jedes Mal neu definieren müssen, wenn Sie Preisaktualisierungen senden.
Das Element <PropertyDataSet> erscheint an folgender Stelle in der XML-Hierarchie der Transaktionsnachricht:
+<Transaction>+<PropertyDataSet>// Room and package metadata + <Property> +<RoomData>+<PackageData>+<Result>// Pricing and availability +<Rates>+<RoomBundle>+ ...
Weitere Informationen finden Sie unter Room Bundle metadata.
Syntax
Das <PropertyDataSet>-Element verwendet die folgende Syntax:
<?xml version="1.0" encoding="UTF-8"?> <Transaction ... > <PropertyDataSet> <!-- (Required) ID that matches the Hotel List Feed --> <Property>hotel_ID</Property> <!-- (Optional) Defines metadata about a room --> <RoomData> ... </RoomData> <!-- (Optional) Defines package metadata to be paired with rooms (Room Bundles) --> <PackageData> ... </PackageData> </PropertyDataSet> ... </Transaction>
Attribute
Das <PropertyDataSet>-Element hat keine Attribute.
Untergeordnete Elemente
Das <PropertyDataSet>-Element hat die folgenden untergeordneten Elemente:
| Kindelement | Erforderlich? | Typ | Description |
|---|---|---|---|
| <PackageData> | Optional* | <PackageData> |
Beschreibt ein Zimmerpaket. Diese Daten sind einem Partner und einem Hotel zugeordnet, jedoch nicht einer Reiseroute. Dieses Element ist ähnlich wie <RoomData>, beschreibt aber Annehmlichkeiten und Begriffe, die nicht Teil der physischen Zimmerbeschreibung sind.
Sie verweisen in Ihren Preisaktualisierungen auf die Paket-ID. Weitere Informationen finden Sie unter Room Bundle metadata. |
| <Property> | Required | string | Die ID eines Hotels, auf das sich die zugehörigen Daten beziehen. Der Wert dieses Elements muss eine Zeichenkette sein, die mit dem Eintrag <id> in Ihrem Hotellisten-Feed übereinstimmt.
|
| <RoomData> | Optional* | <RoomData> |
Beschreibt einen Raum. Diese Daten sind einem Partner und einem Hotel zugeordnet, jedoch nicht einer Reiseroute.
Sie beziehen sich in Ihren Preisaktualisierungen auf die Zimmer-ID. |
* Mindestens eine der Optionen <PackageData> oder <RoomData> ist erforderlich. |
|||
Beispiele
Zimmer- und Paketdaten
Das folgende Beispiel zeigt sowohl Raum- als auch Paketdaten in einem <PropertyDataSet>:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>180054</Property>
<RoomData>
<RoomID>060773</RoomID>
<Name>
<Text text="Single Bed Room" language="en"/>
<Text text="Chambre single" language="fr"/>
</Name>
<Description>
<Text text="Non-smoking" language="en"/>
<Text text="Pas de fumiers" language="fr"/>
</Description>
<PhotoURL>
<Caption>
<Text text="Living area" language="en"/>
<Text text="Le chambre" language="fr"/>
</Caption>
<URL>http://www.foo.com/static/bar/image1234.jpg</URL>
</PhotoURL>
</RoomData>
<PackageData>
<PackageID>P54321</PackageID>
<Name>
<Text text="Breakfast Included" language="en"/>
<Text text="Avec le petit déjeuner" language="fr"/>
</Name>
<Description>
<Text text="Includes a delightful array of jams and jellies." language="en"/>
<Text text="Comprend une délicieuse gamme de confitures et gelées." language="fr"/>
</Description>
<BreakfastIncluded>1</BreakfastIncluded>
</PackageData>
</PropertyDataSet>
</Transaction>
Wenn Sie Preise und Verfügbarkeiten für dieses Zimmer und das Zimmerpaket senden, geben Sie in Ihren Preisnachrichten die Zimmer- und Paket-IDs an. Das Ergebnis ist, dass Sie die Größe Ihrer Nachrichten erheblich reduzieren und auch die Anzahl der Fehler, die aufgrund doppelter Daten auftreten können, verringern. Weitere Informationen finden Sie unter Room Bundle metadata.
<RoomData>
Definiert reiseplanunabhängige Metadaten über Zimmer und, im weiteren Sinne, Zimmerpakete (da Zimmerpakete Zimmer plus zusätzliche Annehmlichkeiten sind). Verwenden Sie <RoomData>, um die Wiederholung beschreibender Daten in Ihrem Preisfeed zu reduzieren.
Das Element <RoomData> erscheint an folgender Stelle in der XML-Hierarchie der Transaktionsnachricht:
+<Transaction>+<PropertyDataSet>// Room and package metadata + <Property> +<RoomData>+<PackageData>+<Result>// Pricing and availability +<Rates>+<RoomBundle>+ ...
<RoomData> Elemente enthalten Informationen, die mit einem Partner und einem Hotel, aber nicht mit einer Reiseroute verknüpft sind. Der vorgesehene Verwendungszweck umfasst alle Daten, die nicht Reiseverlaufsdaten sind.
Das Element <RoomData> ist ähnlich wie <PackageData>, beschreibt aber den physischen Raum und nicht die Ausstattung und die Bedingungen eines Pakets. Sie verwenden <RoomData> und <PackageData> in Kombination, um Details zu Zimmerpaketen anzugeben. Für einzelne Zimmer, die nicht Teil eines Pakets sind, verwenden Sie einfach <RoomData>.
Sie können sowohl die <RoomData>- als auch die <PackageData>-Elemente für denselben Raum oder dasselbe Raum-Bundle definieren. Wenn Google dieses Zimmer oder Paket in den Suchergebnissen anzeigt, werden die Beschreibungen beider Angebote durch einen Bindestrich getrennt angezeigt.
Weitere Informationen finden Sie unter Room Bundle metadata.
Syntax
Das <RoomData>-Element verwendet die folgende Syntax:
<?xml version="1.0" encoding="UTF-8"?> <Transaction ... > <PropertyDataSet> ... <RoomData> <RoomID>room_ID</RoomID> <Name> <Text text="room_name" language="language_code"/> ... </Name> <Description> <Text text="room_description" language="language_code"/> ... </Description> <Capacity>max_number_of_occupants</Capacity> <Occupancy>max_number_of_intended_occupants</Occupancy> <OccupancyDetails> <!-- optional info about the types of guests, whether adults, children, or seniors --></OccupancyDetails> <OccupancySettings> <MinOccupancy>min_number_of_occupants</MinOccupancy> <MinAge>min_age_of_occupants</MinAge> </OccupancySettings> <PhotoURL> <Caption> <Text text="photo_description" language="language_code"/> ... </Caption> <URL>photo_location</URL> </PhotoURL> <RoomFeatures> ... </RoomFeatures> </RoomData> ... </PropertyDataSet> </Transaction>
Attribute
Das <RoomData>-Element hat keine Attribute.
Untergeordnete Elemente
Das <RoomData>-Element hat die folgenden untergeordneten Elemente:
| Kindelement | Erforderlich? | Typ | Description |
|---|---|---|---|
| <Capacity> | Optional | integer | Die maximale Anzahl von Gästen, die ein Zimmer physisch aufnehmen kann. Bei einem Raum ist die Kapazität größer oder gleich der Belegung.
Sofern angegeben, muss dieser Wert gleich oder größer als der Wert des Elements Der Wert von |
| <Description> | Optional | Object | Eine detaillierte Beschreibung des Zimmers. Dieses Element sollte Informationen enthalten, die nicht durch andere Elemente oder das Element <Name> beschrieben werden. Bei der Beschreibung des Zimmers sollten Sie nicht alles in Großbuchstaben schreiben.
Das Element
Verwenden Sie für jede Sprache, in der Ihre Anzeige oder Ihr kostenloser Buchungslink erscheinen soll, ein separates Das folgende Beispiel zeigt die französische und die englische Version der Raumbeschreibung: <Description> <Text text="Two queen-sized beds" language="en"/> <Text text="Deux lits de la reine" language="fr"/> </Description> |
| <Name> | Required | string | Der Name der Zimmerkategorie. Dieser Wert sollte mit den Angaben auf der Landingpage des Hotels übereinstimmen (früher Point of Sale beziehungsweise POS). Setzen Sie den Wert dieses Elements nicht auf Großbuchstaben.
Dieses Element benötigt ein einzelnes Kindelement,
Verwenden Sie für jede Sprache, in der Ihre Anzeige oder Ihr kostenloser Buchungslink erscheinen soll, ein separates Das folgende Beispiel zeigt die französische und die englische Version des Zimmernamens: <Name> <Text text="Standard Double Room" language="en"/> <Text text="Le chambre double" language="fr"/> </Name> |
| <Occupancy> | Optional | integer | Die maximale Anzahl an Gästen, für die ein Zimmer vorgesehen ist.
In einer großen Suite haben beispielsweise bis zu sechs Gäste Platz (Kapazität = 6). Gedacht ist sie aber nur für bis zu vier Personen.
Dieser Wert muss kleiner oder gleich dem Element Der Wert von
|
| <OccupancySettings> | Optional | Object | Einstellungen, mit denen die Belegungsanforderungen eines Raums eingeschränkt oder geändert werden können.
Das Element
<OccupancySettings> <MinOccupancy>2</MinOccupancy> <MinAge>16</MinAge> </OccupancySettings> Es müssen nicht alle Kindelemente einbezogen werden. |
| <PhotoURL> | Optional | Object | Eine URL und optional eine Bildunterschrift für ein Foto des jeweiligen Zimmers oder Zimmerpakets. Sie können mehr als eine <PhotoURL> für ein Zimmer oder Zimmerpaket angeben. Jede Foto-URL muss in einem eigenen <PhotoURL> stehen.
Dieses Element verwendet die folgenden untergeordneten Elemente:
Beispiel: <PhotoURL>
<URL>https://www.example.com/static/bar/image1234.jpg</URL>
<Caption>
<Text text="A bright and breezy way to enjoy your mornin'
cuppa tea." language="en"/>
<Text text="Une façon lumineuse et aérée pour profiter
de votre journée tasse de thé." language="fr"/>
</Caption>
</PhotoURL>
<PhotoURL>
<URL>https://www.foo.com/static/bar/image5678.jpg</URL>
<Caption>
<Text text="Or, perhaps you prefer coffee." language="en"/>
<Text text="Ou peut-être préférez-vous le café." language="fr"/>
</Caption>
</PhotoURL> |
| <RoomFeatures> | Optional | <RoomFeatures> |
Enthält Informationen zu Raumfunktionen. |
| <RoomID> | Required | string | Die eindeutige ID für das Zimmer. Verwenden Sie diese ID, um die Zimmerdaten mit den <Result>-Blöcken in Ihren Preisaktualisierungen abzugleichen. Weitere Informationen finden Sie unter Room Bundle metadata. (Sie können diese ID auch verwenden, um in einer einzelnen Transaktionsnachricht auf eine gemeinsame Raumdefinition zu verweisen, wenn Sie Raumdaten inline definieren.) |
Beispiele
Raumdaten
Das folgende Beispiel definiert Raumdaten:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>1234</Property>
<RoomData>
<RoomID>5440OF</RoomID>
<Name>
<Text text="Single King Bed Room" language="en"/>
<Text text="Simple Lit de Roi" language="fr"/>
</Name>
<Description>
<Text text="One king bed with pillowtop mattresses, 300-thread-count linens,
and down comforters (bedspreads). City view. 300 square feet. Desk with
rolling chair. Multi-line phone with voice mail. Cable/satellite TV with
complimentary HBO and pay movies." language="en"/>
<Text text="Un très grand lit avec matelas à plateau-coussin, ..." language="fr"/>
</Description>
<PhotoURL>
<Caption>
<Text text="Bathroom View" language="en"/>
<Text text="La salle de baines" language="fr"/>
</Caption>
<URL>http://www.foo.com/static/bar/image1234.jpg</URL>
</PhotoURL>
<Capacity>4</Capacity>
</RoomData>
</PropertyDataSet>
</Transaction>
Zimmer- und Paketmetadaten
Das folgende Beispiel definiert Raum- und Paketmetadaten:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>180054</Property>
<RoomData>
<RoomID>060773</RoomID>
<Name>
<Text text="Single Bed Room" language="en"/>
<Text text="Chambre single" language="fr"/>
</Name>
<Description>
<Text text="Non-smoking" language="en"/>
<Text text="Pas de fumiers" language="fr"/>
</Description>
<PhotoURL>
<Caption>
<Text text="Living area" language="en"/>
<Text text="Le chambre" language="fr"/>
</Caption>
<URL>http://www.foo.com/static/bar/image1234.jpg</URL>
</PhotoURL>
</RoomData>
<PackageData>
<PackageID>P54321</PackageID>
<Name>
<Text text="Breakfast Included" language="en"/>
<Text text="Avec le petit déjeuner" language="fr"/>
</Name>
<Description>
<Text text="Includes a delightful array of jams and jellies." language="en"/>
<Text text="Comprend une délicieuse gamme de confitures et gelées." language="fr"/>
</Description>
<BreakfastIncluded>1</BreakfastIncluded>
</PackageData>
</PropertyDataSet>
</Transaction>
Mehrere Zimmerpakete
Im folgenden Beispiel werden Zimmer- und Paketmetadaten für mehrere Zimmerpakete definiert:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
<!-- A transaction message with room types result. -->
<PropertyDataSet>
<Property>12345</Property>
<RoomData>
<RoomID>single</RoomID>
<Name>
<Text text="Single room" language="en"/>
<Text text="Chambre simple" language="fr"/>
</Name>
<Description>
<Text text="A single room" language="en"/>
<Text text="Le chambre simple" language="fr"/>
</Description>
<PhotoURL>
<Caption>
<Text text="Living area" language="en"/>
<Text text="Le chambre" language="fr"/>
</Caption>
<URL>http://www.foo.com/static/bar/image1234.jpg</URL>
</PhotoURL>
<PhotoURL>
<URL>http://www.foo.com/static/bar/image1235.jpg</URL>
</PhotoURL>
<Capacity>2</Capacity>
</RoomData>
<RoomData>
<RoomID>double</RoomID>
<Name>
<Text text="Double room" language="en"/>
<Text text="Chambre double" language="fr"/>
</Name>
<Occupancy>1</Occupancy>
</RoomData>
<PackageData>
<PackageID>refundbreakfast</PackageID>
<Name>
<Text text="Refundable Room with Breakfast" language="en"/>
<Text text="Chambre remboursable avec le petit déjeuner" language="fr"/>
</Name>
<Description>
<Text text="Continental Breakfast" language="en"/>
<Text text="Petit déjeuner continental" language="fr"/>
</Description>
<ChargeCurrency>hotel</ChargeCurrency>
<Refundable available="1" refundable_until_days="3"/>
<BreakfastIncluded>1</BreakfastIncluded>
</PackageData>
<PackageData>
<PackageID>prepaid</PackageID>
<Name>
<Text text="Nonrefundable" language="en"/>
<Text text="Non remboursable" language="fr"/>
</Name>
<Description>
<Text text="Blah blah blad" language="en"/>
<Text text="Le blah blah blad" language="fr"/>
</Description>
<Occupancy>2</Occupancy>
<ChargeCurrency>web</ChargeCurrency>
<Refundable available="0"/>
</PackageData>
</PropertyDataSet>
</Transaction>
<RoomFeatures>
Definiert die im Raum vorhandenen Merkmale.
Das Element <RoomFeatures> erscheint an folgender Stelle in der XML-Hierarchie der Transaktionsnachricht:
+<Transaction>+<PropertyDataSet>// Room and package metadata + <Property> +<RoomData>+<RoomFeatures>
Syntax
Das <RoomFeatures>-Element verwendet die folgende Syntax:
<?xml version="1.0" encoding="UTF-8"?> <Transaction ... > <PropertyDataSet ... > ... <RoomData> <RoomFeatures> <JapaneseHotelRoomStyle>[western|japanese|japanese_western]</JapaneseHotelRoomStyle> <Beds> <Bed size="[single|semi_double|double|queen|king]"> <Width unit="cm" number="width"/> <Length unit="cm" number="length"/> </Bed> <!-- Include with any additional beds. --> </Beds> <Suite/> <Capsule/> <Roomsharing>[shared|private]</Roomsharing> <Outdoor/> <MobilityAccessible/> <Smoking>[smoking|non_smoking]</Smoking> <BathAndToilet relation="[together|separate]"> <Bath bathtub="[false|true]" shower="[false|true]"/> <Toilet electronic_bidet="[false|true]" mobility_accessible="[false|true]"/> </BathAndToilet> <OpenAirBath/> <AirConditioning/> <Balcony/> <Views> <!-- (Optional) Defines the type of views from the room. --> <!-- Example: <OceanView/> --> </Views> </RoomFeatures> ... </RoomData> ... </PropertyDataSet> </Transactions>
Attribute
Das <RoomFeatures>-Element hat keine Attribute.
Untergeordnete Elemente
Das <RoomFeatures>-Element hat die folgenden untergeordneten Elemente:
| Kindelement | Erforderlich? | Typ | Description |
|---|---|---|---|
| <JapaneseHotelRoomStyle> | Optional | enum | Kennzeichnet den Stil eines japanischen Hotelzimmers. Gültige Werte sind:
|
| <Beds> | Optional | Object | Enthält so viele <Bed> wie der Raum hat. Zu beachten ist, dass japanische Futons hier nicht mitgezählt werden sollten.
Jedes
<Bed> hat die folgenden Kindelemente:
<Beds>
<Bed size="double">
<Width unit="cm" number="140"/>
<Length unit="cm" number="195"/>
</Bed>
<Bed/> <!-- Size unknown -->
</Beds> |
| <Suite> | Optional | empty | Dieses Element ist erforderlich, wenn es sich bei diesem Zimmer um eine Suite handelt. |
| <Capsule> | Optional | empty | Dieses Element muss angegeben werden, wenn es sich bei diesem Raum um eine Kapselkabine handelt. |
| <Roomsharing> | Optional | enum | Ob dieses Zimmer mit anderen Bewohnern wie Eigentümern oder anderen Gästen geteilt wird. Gültige Werte sind shared und private. |
| <Outdoor> | Optional | empty | Geben Sie dieses Element an, wenn es sich bei diesem Zimmer um eine Unterkunft im Freien handelt, die keine festen Wände, keine Sanitäranlagen und keine Klimaanlage hat. Hotelzimmer sind beispielsweise keine Outdoor-Unterkünfte, Campingplätze, auf denen Gäste in Zelten übernachten, sowie Wohnmobilparks für Gäste mit eigenem Wohnmobil hingegen schon. |
| <MobilityAccessible> | Optional | empty | Dieses Element sollte bereitgestellt werden, wenn der Raum barrierefrei zugänglich ist. |
| <Smoking> | Optional | enum | Ob es sich bei diesem Zimmer um ein Nichtraucher- oder Raucherzimmer handelt. Gültige Werte sind non_smoking und smoking. |
| <BathAndToilet> | Optional | Object | Enthält Informationen zu Bad und Toilette im Zimmer.
Das Attribut ist:
Das Element kann optional die folgenden untergeordneten Elemente enthalten:
Beispiel: <BathAndToilet relation="separate">
<Bath bathtub="1" shower="1"/>
<Toilet
electronic_bidet="1"
mobility_accessible="1"/>
</BathAndToilet> |
| <OpenAirBath> | Optional | empty | Dieses Element ist vorzusehen, wenn das Zimmer über ein privates Freiluftbad verfügt. |
| <AirConditioning> | Optional | empty | Geben Sie dieses Element an, wenn das Zimmer über eine Klimaanlage verfügt. |
| <Balcony> | Optional | empty | Dieses Element ist erforderlich, wenn das Zimmer über einen Balkon oder eine Veranda verfügt. |
| <Views> | Optional | Object | Gültige Optionen sind unter anderem:
|
Beispiele
JapaneseHotelRoomStyle hat keinen Standardwert. Wenn Sie einen Wert weglassen, führt das nicht zu einem XML-Fehler. Ihr Eintrag wird jedoch nicht in den Suchergebnissen angezeigt, wenn der Nutzer nach Zimmerstil oder Betten filtert.
Zwei Einzelbetten
Das folgende Beispiel zeigt, wie <RoomFeatures> verwendet wird:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>1234</Property>
<RoomData>
<RoomID>RoomID_1</RoomID>
<RoomFeatures>
<JapaneseHotelRoomStyle>western</JapaneseHotelRoomStyle>
<Beds> <!-- Two single beds -->
<Bed size="single">
<Width unit="cm" number="97"/>
<Length unit="cm" number="195"/>
</Bed>
<Bed size="single">
<Width unit="cm" number="97"/>
<Length unit="cm" number="195"/>
</Bed>
</Beds>
<Suite/>
<Capsule/>
<Roomsharing>private</Roomsharing>
<Outdoor/>
<MobilityAccessible/>
<Smoking>non_smoking</Smoking>
<BathAndToilet relation="separate">
<Bath bathtub="1" shower="1"/>
<Toilet electronic_bidet="1" mobility_accessible="1"/>
</BathAndToilet>
<OpenAirBath/>
<AirConditioning/>
<Balcony/>
<Views>
<LakeView/>
<MarinaView/>
<BeachView/>
<ForestView/>
<MountainView/>
<NatureView/>
</Views>
</RoomFeatures>
</RoomData>
</PropertyDataSet>
</Transaction>
Zwei Doppelbetten
Nachfolgend ein Beispiel für ein japanisches Zimmer im western-Stil mit zwei double-Betten.
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-07-23T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>1234</Property>
<RoomData>
<RoomID>RoomID_1</RoomID>
<RoomFeatures>
<JapaneseHotelRoomStyle>western</JapaneseHotelRoomStyle>
<Beds> <!-- Two double beds-->
<Bed size="double"></Bed>
<Bed size="double"></Bed>
</Beds>
</RoomFeatures>
</RoomData>
</PropertyDataSet>
</Transaction>
Japanischer Stil ohne Bett
Nachfolgend ein Beispiel für ein Zimmer im japanischen Stil ohne Bett. Für Zimmer des Typs japanese werden keine Bettinformationen benötigt.
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-07-23T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>1234</Property>
<RoomData>
<RoomID>RoomID_1</RoomID>
<RoomFeatures>
<JapaneseHotelRoomStyle>japanese</JapaneseHotelRoomStyle>
</RoomFeatures>
</RoomData>
</PropertyDataSet>
</Transaction>
Japanischer Western mit Bett
Nachfolgend ein Beispiel für ein Zimmer im Stil japanese_western mit einem Bett der Größe king.
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-07-23T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>1234</Property>
<RoomData>
<RoomID>RoomID_1</RoomID>
<RoomFeatures>
<JapaneseHotelRoomStyle>japanese_western</JapaneseHotelRoomStyle>
<Beds>
<Bed size="king"></Bed>
</Beds>
</RoomFeatures>
</RoomData>
</PropertyDataSet>
</Transaction>
Falls Ihrem Partner die Anzahl der Betten in japanese_western Zimmern nicht bekannt ist, folgen Sie dem folgenden Beispiel:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-07-23T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>1234</Property>
<RoomData>
<RoomID>RoomID_1</RoomID>
<RoomFeatures>
<JapaneseHotelRoomStyle>japanese_western</JapaneseHotelRoomStyle>
</RoomFeatures>
</RoomData>
</PropertyDataSet>
</Transaction>
<PackageData>
Definiert reiseplanunabhängige Metadaten zu Zimmerpaketen für eine Unterkunft. Dieses Element enthält Informationen, die mit einem Partner und einem Hotel verknüpft sind, jedoch nicht mit einer Reiseroute. Ziel ist es, alle nicht zum Reiseverlauf gehörenden Daten einmalig zu definieren und in den Reiseverlaufsdaten darauf zu verweisen.
Das Element <PackageData> erscheint an folgender Stelle in der XML-Hierarchie der Transaktionsnachricht:
+<Transaction>+<PropertyDataSet>// Room and package metadata + <Property> +<RoomData>+<PackageData>+<Result>// Pricing and availability +<Rates>+<RoomBundle>+ ...
Das Element <PackageData> ist ähnlich wie <RoomData>, beschreibt aber Tarifmerkmale und Begriffe, die nicht Teil der physischen Raumbeschreibung sind. Sie verwenden <RoomData> und <PackageData> in Kombination, um Details zu Zimmerpaketen und Tarifmerkmalen anzugeben. Für einzelne Zimmer, die nicht Teil eines Pakets sind, verwenden Sie einfach <RoomData>.
Sie können sowohl die <RoomData> als auch die <PackageData> Elemente für denselben Raum oder dasselbe Raum-Bundle definieren. Wenn Google dieses Zimmer oder Paket in den Suchergebnissen anzeigt, werden die Beschreibungen beider Angebote durch einen Bindestrich getrennt angezeigt.
Wenn Sie ein einzelnes <PackageData>-Element für eine Eigenschaft aktualisieren, müssen Sie alle <PackageData>- und <RoomData>-Elemente für die Eigenschaft aktualisieren.
Jedes <PropertyDataSet> wird als Gesamtheit der Daten über die Immobilie betrachtet und überschreibt alle vorhandenen Daten.
Weitere Informationen finden Sie unter Zimmerpaket-Metadaten.
Syntax
Das <PackageData>-Element verwendet die folgende Syntax:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
<PropertyDataSet ... >
<PackageData>
<PackageID>package_ID</PackageID>
<Name>
<Text text="package_name" language="language_code"/>
...
</Name>
<Description>
<Text text="package_description" language="language_code"/>
...
</Description>
<Refundable available="[false|true]" refundable_until_days="number_of_days"
refundable_until_time="time"/>
<ChargeCurrency>[deposit|hotel|installments|web]</ChargeCurrency>
<Occupancy>max_number_of_intended_occupants</Occupancy>
<OccupancyDetails><!-- optional info about the types of guests,
whether adults or children --></OccupancyDetails>
<!-- For these next 3 elements, boolean_value can be 0/1 or true/false -->
<BreakfastIncluded>boolean_value</BreakfastIncluded>
<InternetIncluded>boolean_value</InternetIncluded>
<ParkingIncluded>boolean_value</ParkingIncluded>
<PhotoURL>
<Caption>
<Text text="photo_description" language="language_code"/>
...
</Caption>
<URL>photo_location</URL>
</PhotoURL>
...
<Meals>
<Breakfast
included="[true|false]" buffet="[true|false]"
in_room="[true|false]" in_private_space="[true|false]"/>
<Dinner
included="[true|false]" buffet="[true|false]"
in_room="[true|false]" in_private_space="[true|false]"/>
</Meals>
<CheckinTime>checkin_time</CheckinTime>
<CheckoutTime>checkout_time</CheckoutTime>
<MembershipBenefitsIncluded>
<ProgramName>
<Text language="en" text="Special Rewards">
</ProgramName>
<ProgramLevel>
<Text language="en" text="Platinum">
</ProgramLevel>
</MembershipBenefitsIncluded>
<OnPropertyCredit>
<Amount currency="USD">123.45</Amount>
</OnPropertyCredit>
</PackageData>
<!-- a PackageID with a MilesIncluded rate feature -->
<PackageData>
<PackageID>room_with_miles</PackageID>
<Name>
<Text text="Room with Bundled Miles" language="en">
</Name>
<ChargeCurrency>hotel </ChargeCurrency>
<MilesIncluded>
<NumberOfMiles>integer</NumberOfMiles>
<Provider>
<Text language="en" text="provider-name">
</Provider>
<!-- Add Loyalty point information -->
<LoyaltyCampaignID>campaign_ID</LoyaltyCampaignID>
</MilesIncluded>
</PackageData>
...
...
</PropertyDataSet>
...
</Transaction>Attribute
Das <PackageData>-Element hat keine Attribute.
Untergeordnete Elemente
Das <PackageData>-Element hat die folgenden untergeordneten Elemente:
| Kindelement | Erforderlich? | Typ | Description |
|---|---|---|---|
| <BreakfastIncluded> | Optional | boolean | Gibt an, ob der Preis des Pakets Frühstück beinhaltet.
Gültige Werte sind 0 (oder false) und 1 (oder true).
Wir empfehlen, |
| <ChargeCurrency> | Optional | enum | Wann und wo der Nutzer für eine Buchung bezahlt. Dieses Element verwendet die gleiche Syntax wie <ChargeCurrency> in einem <Result>.
Der Standardwert ist |
| <CheckinTime> | Optional | Time | Frühestmögliche Check-in-Zeit. Die Uhrzeit muss weniger als 24:00 Uhr Ortszeit des Hotels sein. |
| <CheckoutTime> | Optional | Time | Spätestmögliche Check-out-Zeit in Ortszeit des Hotels. |
| <Description> | Optional | Object | Eine detaillierte Beschreibung des Pakets. Dieses Element sollte Informationen enthalten, die nicht durch andere Elemente oder das Element <Name> beschrieben werden. Bei der Beschreibung des Zimmers sollten Sie nicht alles in Großbuchstaben schreiben.
Das Element <Description>
<Text text="Two breakfast buffet certificates for
each night of stay." language="en"/>
<Text text="Deux certificats petit-déjeuner buffet
pour chaque nuit de séjour." language="fr"/>
</Description> |
| <InternetIncluded> | Optional | boolean | Wenn ein Paket kostenlosen Internetzugang beinhaltet, während andere Pakete diese Leistung nicht bieten. Dieses Element sollte nicht für Zimmerpakete in einem Hotel festgelegt werden, das kostenloses Internet für alle Zimmer anbietet. Dieser Punkt gilt nicht für kabelgebundenes Internet im Zimmer oder drahtloses Internet, das in den Gästezimmern nicht verfügbar ist. Gültige Werte sind 0 (oder false) und 1 (oder true).
|
| <Meals> | Optional | Object | Enthält Informationen zu den in dieser Packung enthaltenen Mahlzeiten.
Das Element
Die optionalen Attribute werden nur verwendet, wenn Damit die Mahlzeitenfilter ( |
| <Name> | Required | string | Der Name des Pakets. Dieser Wert sollte mit dem Wert auf der Startseite des Hotels übereinstimmen. Setzen Sie den Wert dieses Elements nicht auf Großbuchstaben.
Dieses Element nimmt ein einzelnes Kindelement, <Name> <Text text="Bed and Breakfast" language="en"/> <Text text="Lit et petit déjeuné" language="fr"/> </Name> |
| <Occupancy> | Optional | integer | Die maximale Anzahl an Gästen, für die ein Zimmerpaket vorgesehen ist.
Eine große Suite bietet beispielsweise zwar Platz für bis zu 6 Gäste, ist aber nur für maximal 4 Gäste ausgelegt.
Dieser Wert muss kleiner oder gleich dem Element Der Wert von Wenn Sie dieses Element sowohl in Hinweis: <Occupancy> kann von <OccupancyDetails> begleitet werden,welches die Art der Gäste (Erwachsene oder Kinder) angibt. Siehe <OccupancyDetails> für Syntax und Beschreibung der Kindelemente.
|
| <PackageID> | Required | string | Die eindeutige ID für das Paket. Mit dieser ID ordnen Sie die Zimmerpaketdaten den Wenn Sie die Daten eines Zimmerpakets inline definieren, können Sie mit dieser ID auf eine allgemeine Definition für ein Zimmerpaket in einer einzelnen Transaktionsnachricht verweisen. |
| <ParkingIncluded> | Optional | boolean | Ob ein Zimmerpaket kostenloses Parken beinhaltet, wo das Parken in diesem Hotel ansonsten kostenpflichtig wäre. Geben Sie für dieses Element keinen Wert an, wenn das Hotel kostenlose Parkplätze anbietet.
Gültige Werte sind |
| <PhotoURL> | Optional | Object | (Dasselbe wie <PhotoURL> in <RoomData>, aber für das Paket (z.B. Fotos von Mahlzeiten).)
|
| <Refundable> | Optional | Object | Ermöglicht die Angabe eines vollständig erstattungsfähigen Tarifs oder einer kostenlosen Stornierungsmöglichkeit. Falls diese Angaben nicht gemacht werden, werden keine Informationen über eine Rückerstattung angezeigt.
Eine Rückerstattungsrichtlinie auf der Ebene <PackageData> hat Vorrang vor der Rückerstattungsrichtlinie auf der Ebene <Result>. Eine Rückerstattungsrichtlinie auf der Ebene <Rates> hat Vorrang vor der Rückerstattungsrichtlinie auf der Ebene <PackageData>. Rückerstattungsfähige Preise können den Nutzern auch durch alternative Optionen hervorgehoben werden, ohne dass das Schema Ihrer Transaktionsnachrichten direkt geändert werden muss. Erfahren Sie mehr über diese Optionen Rückerstattungsrichtlinie.
Das folgende Beispiel zeigt das Element <Refundable available="1" refundable_until_days="7" refundable_until_time="18:00:00"/> Hinweis: Wir empfehlen, alle Attribute festzulegen. Es wird eine Warnmeldung zum Feed-Status generiert, wenn ein oder mehrere Attribute nicht festgelegt sind. Wenn Sie keine Attribute festlegen, wird der Preis nicht als erstattungsfähig angezeigt. Die Attribute sind:
Beachten Sie beim Festlegen der Attribute Folgendes:
|
| <MembershipBenefits |
Optional | boolean | Der Preis beinhaltet die Vorteile des Elite-Status für die gesamte Aufenthaltsdauer. Beinhaltet die folgenden Parameter:
|
| <CarRentalIncluded> | Optional | boolean | Im Preis inbegriffen ist ein kostenloser Mietwagen für die Dauer des Aufenthalts. |
| <MilesIncluded> | Optional | boolean | Der Preis beinhaltet Vielfliegermeilen. Zu den Parametern gehören:
Hinweis: |
| <OnPropertyCredit> | Optional | boolean | Im Preis inbegriffen sind Leistungen vor Ort (Speisen& Getränke, Resort, Spa usw.). Parameter:
|
| <AirportTransportationIncluded> | Optional | Object | Der Preis beinhaltet einen kostenlosen Transport zu/von einem nahe gelegenen Flughafen. Das optionale Attribut direction gibt die Richtung des Transports an. Gültige Werte sind: from: Ein Transfer vom Flughafen zur Unterkunft wird angeboten. Dies ist der Standardwert, wenn keine Richtung angegeben wird.
to: Ein Transfer vom Hotel zum Flughafen wird angeboten.
round_trip: Es wird ein Transport sowohl zum als auch vom Flughafen angeboten.
|
Beispiele
Einzelzimmer-Paket
Das folgende Beispiel definiert ein einzelnes Zimmerpaket mit einer Belegung von 2 Personen (ein Erwachsener und ein Kind) inklusive Frühstück:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>1234</Property>
<PackageData>
<Occupancy>2</Occupancy>
<OccupancyDetails>
<NumAdults>1</NumAdults>
<Children>
<Child age="17"/>
</Children>
</OccupancyDetails>
<PackageID>P54321</PackageID>
<Name>
<Text text="Breakfast Included" language="en"/>
<Text text="Avec le petit déjeuner" language="fr"/>
</Name>
<Description>
<Text text="Two certificates for continental
breakfast will be provided." language="en"/>
<Text text="Deux certificats pour le petit déjeuner
continental seront fournis." language="fr"/>
</Description>
<BreakfastIncluded>1</BreakfastIncluded>
</PackageData>
</PropertyDataSet>
</Transaction>
Zimmer- und Paketmetadaten
Im folgenden Beispiel werden Zimmer- und Paketmetadaten definiert:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>180054</Property>
<RoomData>
<RoomID>060773</RoomID>
<Name>
<Text text="Single Bed Room" language="en"/>
<Text text="Chambre single" language="fr"/>
</Name>
<Description>
<Text text="Non-smoking" language="en"/>
<Text text="Pas de fumiers" language="fr"/>
</Description>
<PhotoURL>
<Caption>
<Text text="Living area" language="en"/>
<Text text="Le chambre" language="fr"/>
</Caption>
<URL>http://www.foo.com/static/bar/image1234.jpg</URL>
</PhotoURL>
</RoomData>
<PackageData>
<PackageID>P54321</PackageID>
<Name>
<Text text="Breakfast Included" language="en"/>
<Text text="Avec le petit déjeuner" language="fr"/>
</Name>
<Description>
<Text text="Includes a delightful array of jams and jellies." language="en"/>
<Text text="Comprend une délicieuse gamme de confitures et gelées." language="fr"/>
</Description>
<BreakfastIncluded>1</BreakfastIncluded>
</PackageData>
</PropertyDataSet>
</Transaction>
Mehrere Zimmerpakete
Im folgenden Beispiel werden Zimmer- und Paketmetadaten für mehrere Zimmerpakete definiert:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
<!-- A transaction message with room types result. -->
<PropertyDataSet>
<Property>12345</Property>
<RoomData>
<RoomID>single</RoomID>
<Name>
<Text text="Single room" language="en"/>
<Text text="Chambre simple" language="fr"/>
</Name>
<Description>
<Text text="A single room" language="en"/>
<Text text="Le chambre simple" language="fr"/>
</Description>
<PhotoURL>
<Caption>
<Text text="Living area" language="en"/>
<Text text="Le chambre" language="fr"/>
</Caption>
<URL>http://www.foo.com/static/bar/image1234.jpg</URL>
</PhotoURL>
<PhotoURL>
<URL>http://www.foo.com/static/bar/image1235.jpg</URL>
</PhotoURL>
<Capacity>2</Capacity>
</RoomData>
<RoomData>
<RoomID>double</RoomID>
<Name>
<Text text="Double room" language="en"/>
<Text text="Chambre double" language="fr"/>
</Name>
<Occupancy>1</Occupancy>
</RoomData>
<PackageData>
<PackageID>refundbreakfast</PackageID>
<Name>
<Text text="Refundable Room with Breakfast" language="en"/>
<Text text="Chambre remboursable avec le petit déjeuner" language="fr"/>
</Name>
<Description>
<Text text="Continental Breakfast" language="en"/>
<Text text="Petit déjeuner continental" language="fr"/>
</Description>
<ChargeCurrency>hotel</ChargeCurrency>
<Refundable available="1" refundable_until_days="3"/>
<BreakfastIncluded>1</BreakfastIncluded>
</PackageData>
<PackageData>
<PackageID>prepaid</PackageID>
<Name>
<Text text="Nonrefundable" language="en"/>
<Text text="Non remboursable" language="fr"/>
</Name>
<Description>
<Text text="Blah blah blad" language="en"/>
<Text text="Le blah blah blad" language="fr"/>
</Description>
<Occupancy>2</Occupancy>
<ChargeCurrency>web</ChargeCurrency>
<Refundable available="0"/>
</PackageData>
</PropertyDataSet>
</Transaction>
Zimmerpaket mit Preisen
Im folgenden Beispiel werden Zimmer- und Paketmetadaten für ein Zimmerpaket mit Preismerkmalen definiert:
<Transaction timestamp="2010-04-24T20:44:56-04:00" id="TXNID">
<PropertyDataSet>
<Property>12345</Property>
<RoomData>
...
</RoomData>
<!-- definitions of PackageData types including rate features -->
<PackageData>
<PackageID>room_with_addl_benefits</PackageID>
<Name>
<Text text="Acme Hotels 2017 Promotion Package" language="en"/>
</Name>
<ChargeCurrency>hotel</ChargeCurrency>
<BreakfastIncluded>1</BreakfastIncluded>
<MembershipBenefitsIncluded>
<ProgramName>
<Text language="en" text="Marriott Rewards"/>
</ProgramName>
<ProgramLevel>
<Text language="en" text="Platinum"/>
</ProgramLevel>
</MembershipBenefitsIncluded>
<OnPropertyCredit>
<Amount currency="USD">123.45</Amount>
</OnPropertyCredit>
</PackageData>
<PackageData>
<PackageID>room_with_miles</PackageID>
<Name>
<Text text="Room with Bundled Miles" language="en"/>
</Name>
<ChargeCurrency>hotel</ChargeCurrency>
<MilesIncluded>
<NumberOfMiles>1000</NumberOfMiles>
<LoyaltyCampaignID>my_campaign</LoyaltyCampaignID>
</MilesIncluded>
<AirportTransportationIncluded direction="from"/>
</PackageData>
</PropertyDataSet>
<!-- The actual list of prices -->
<Result>
…
</Result>
</Transaction>
Mahlzeiten & Fotos
Das folgende Beispiel definiert Zimmer- und Paketmetadaten für Mahlzeiten, Fotos sowie Ein- und Auscheckzeiten:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>1234</Property>
<PackageData>
<PackageID>PackageID_1</PackageID>
<Name>
<Text text="Meals Included" language="en"/>
</Name>
<PhotoURL>
<Caption>
<Text text="Breakfast" language="en"/>
<Text text="朝食" language="ja"/>
</Caption>
<URL>http://example.com/static/bar/image1234.jpg</URL>
</PhotoURL>
<Meals>
<!-- Guests can choose to have breakfast in their room or in another
space to avoid contact with other guests. -->
<Breakfast included="1" in_room="1" in_private_space="1"/>
<Dinner included="1" buffet="1"/>
</Meals>
<CheckinTime>15:00</CheckinTime>
<CheckoutTime>11:00</CheckoutTime>
</PackageData>
</PropertyDataSet>
</Transaction>
Frühstück
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>1234</Property>
<PackageData>
<PackageID>PackageID_1</PackageID>
<Name>
<Text text="Breakfast Included" language="en"/>
</Name>
<PhotoURL>
<Caption>
<Text text="Breakfast" language="en"/>
<Text text="朝食" language="ja"/>
</Caption>
<URL>http://example.com/static/bar/image1234.jpg</URL>
</PhotoURL>
<Meals>
<Breakfast included="true"/>
<!-- Dinner not included needs to be explicitly specified -->
<Dinner included="false"/>
</Meals>
<CheckinTime>15:00</CheckinTime>
<CheckoutTime>11:00</CheckoutTime>
</PackageData>
</PropertyDataSet>
</Transaction>
<Result>
Ein Container für Preis- und Verfügbarkeitsaktualisierungen in einer <Transaction> Nachricht.
Das <Result>-Element ist in der XML-Hierarchie der Transaktionsnachricht an der folgenden Stelle vorhanden:
+<Transaction>+<PropertyDataSet>// Room and package metadata + <Property> +<RoomData>+<PackageData>+<Result>// Pricing and availability +<Rates>+<RoomBundle>+ ...
Verwenden Sie <Result>, um Zimmerpreise festzulegen oder zu aktualisieren und den verfügbaren Zimmerbestand zu definieren. Die in diesem Element definierten Elemente beziehen sich typischerweise auf reiseplanunabhängige Metadaten über ein Zimmer oder ein Paket (wie eine Beschreibung oder eine Reihe von Annehmlichkeiten), die in <PackageData> und <RoomData> definiert sind.
Sie versenden üblicherweise sehr häufig Transaktionsnachrichten mit Preisaktualisierungen. Wie und wie oft Sie dies tun, hängt von Ihrem Liefermodus ab.
Sie können <Result> in einer Transaktionsnachricht verwenden, um Reiserouten zu entfernen, wie in Entfernen von Inventar beschrieben.
Weitere Informationen zur Verwendung von Transaktionsnachrichten zum Aktualisieren von Preisen und Verfügbarkeit finden Sie unter Hinzufügen und Aktualisieren des Inventars.
Eine einzelne Transaktionsnachricht kann beliebig viele <Result>-Elemente enthalten, solange die Größe der Nachricht 100 MB nicht überschreitet.
Syntax
Das <Result>-Element verwendet die folgende Syntax:
<?xml version="1.0" encoding="UTF-8"?> <Transaction ... > <Result> <!-- Required --> <Property>hotel_ID</Property> <!-- Required --> <Checkin>YYYY-MM-DD</Checkin> <!-- Required --> <Nights>number_of_nights</Nights> <Baserate currency="currency_code">price</Baserate> <!-- Only required when <Baserate> contains a real price --> <Tax currency="currency_code">tax_amount</Tax> <!-- Only required when <Baserate> contains a real price --> <OtherFees currency="currency_code">fee_amount</OtherFees> <Refundable available="[false|true]" refundable_until_days="number_of_days" refundable_until_time="time"/> <RoomID>room_ID</RoomID> <PackageID>package_ID</PackageID> <ExpirationTime>expiration_time</ExpirationTime> <ChargeCurrency>[deposit|hotel|installments|web]</ChargeCurrency> <Occupancy>max_number_of_intended_occupants</Occupancy> <!-- For Baserate, occupancy value must be greater than or equal to 2. If a value is not provided for occupancy, it defaults to 2. --> <!-- Child occupancy rates should only be sent through Live pricing with context and not through Pull or Changed pricing --> <OccupancyDetails>occupancy_info</OccupancyDetails> <Rates>...</Rates> <RoomBundle>...</RoomBundle> <AllowablePointsOfSale> <PointOfSale id="landing_page_identifier"/> ... </AllowablePointsOfSale> <MilesIncluded> <NumberOfMiles>integer</NumberOfMiles> <Provider> <Text language="en" text="provider-name"> </Provider> <!-- Add Loyalty point information --> <LoyaltyCampaignID>campaign_ID</LoyaltyCampaignID> </MilesIncluded> </Result> ... </Transaction>
Attribute
Das <Result>-Element hat die folgenden Attribute:
| Attribut | Erforderlich? | Typ | Description |
|---|---|---|---|
| mergeable | Optional | boolean | Standardmäßig werden neue Preise für ein bestimmtes Hotel- und Reisepaketpaar alle vorherigen (noch gültigen) Preise im Google-Cache überschreiben. Mit dem Attribut „mergeable“ können Sie zusätzliche Preise im Google-Cache speichern, ohne die vorherigen Preisinformationen zu löschen. Bei Live Pricing Query with Context-Antworten wird dieses Attribut immer auf true gesetzt (unabhängig von Ihrer Transaktionsnachrichtenantwort). |
Untergeordnete Elemente
Das <Result>-Element hat die folgenden untergeordneten Elemente:
| Kindelement | Erforderlich? | Typ | Description |
|---|---|---|---|
| <AllowablePointsOfSale> | Optional | Object | Eine oder mehrere Landingpages, die für das Hotel geeignet sind. Eine Landingpage ist eine Website, die den Buchungsprozess für den Endnutzer abwickeln kann. Um bestimmte Landingpages explizit einzuschließen (und andere auszuschließen), fügen Sie ein oder mehrere <AllowablePointsOfSale>-Elemente hinzu, die dem id-Attribut des <PointOfSale>-Elements in der Landingpages-Datei entsprechen.
Wenn Sie dieses Element nicht einbeziehen, gelten alle in der Landingpages-Datei definierten Landingpages als für die Zimmerbuchung geeignet. Weitere Informationen finden Sie unter Landing Pages File Syntax. |
| <Baserate> | Optional | float | Der Preis des Zimmers für den Aufenthalt. Der Wert dieses Elements sollte Folgendes widerspiegeln:
Wenn das Zimmer für den Reiseplan nicht verfügbar ist, sollte Um ein Raumpaket zu entfernen, befolgen Sie die Anweisungen unter Entfernen eines Raumpakets. Die Klammer <Baserate currency="USD">1200.40</Baserate> Das Element
|
| <ChargeCurrency> | Optional | enum | Gibt an, wann und wo der Nutzer eine Buchung bezahlt. Dieses Element kann in einer Transaktionsnachricht im <Result>-Element für den Hotelpreis oder im <PackageData>-Block für ein Zimmerpaket verwendet werden.
Gültige Werte sind:
Der Standardwert ist |
| <Checkin> | Required | Date | Das Check-in-Datum für eine Reiseroute im Format Date. Die Kombination aus dem <Nights>-Element und dem <Checkin>-Element ergibt eine Reiseroute. |
| Optional | string | Veraltet: Definiert ein benutzerdefiniertes Feld, mit dem Sie zusätzliche Daten, die einem Hotel zugeordnet sind, übergeben können. Sie können bis zu fünf benutzerdefinierte Werte mit den folgenden Elementnamen übergeben:
Mit den Wichtig:Wenn Sie |
|
| <ExpirationTime> | Optional | DateTime | Das Datum und die Uhrzeit, zu der der Preis als abgelaufen gilt (mindestens 3 Stunden).
Wir empfehlen, auf die Angabe von Ablaufdaten zu verzichten, wenn dies für Ihre Preisstruktur nicht entscheidend ist. Google zeigt keine abgelaufenen Preise an, und jede Reiseroute mit einem abgelaufenen Preis wird für die Live-Preisabfrage Live Pricing Query berechtigt. |
| <MilesIncluded> | Optional | boolean | Der Preis beinhaltet Vielfliegermeilen. Zu den Parametern gehören:
Hinweis: |
| <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 |
| <Occupancy> | Optional | integer | Gibt die maximal zulässige Anzahl von Gästen für diesen Preis an.
Wenn <Occupancy> direkt unter <Result> erscheint, muss der Wert mindestens 2 betragen. <Occupancy> wird möglicherweise von <OccupancyDetails> begleitet, wodurch die Art der Gäste (Erwachsene oder Kinder) angegeben wird. Wenn keine Gasttypen angegeben sind, wird davon ausgegangen, dass es sich um Erwachsene handelt. Unter <OccupancyDetails> finden Sie Informationen zur Syntax und eine Beschreibung untergeordneter Elemente. Wenn das Element <Occupancy> nicht angegeben ist, wird die Belegung standardmäßig auf 2 festgelegt.
Wichtiger Hinweis: Die Kinderbelegungsraten sollten nur über Live Pricing mit Kontext und nicht über Pull oder Changed Pricing gesendet werden. Hinweis: Wenden Sie sich an Ihr Support-Team, um die Funktion zum Senden von Preisen für Einzelbelegung zu aktivieren. |
| <PackageID> | Optional | string | Die eindeutige ID des Pakets, um es vordefinierten Paketdaten zuzuordnen.
Auch zum Füllen der Landingpage-Variable PACKAGE-ID verwendet.
Weitere Informationen finden Sie unter Zimmerpaket-Metadaten.
|
| <Property> | Required | string | Die ID eines Hotels, das von den zugehörigen Daten (Preis, Reiseroute, Zimmerpaket oder Metadaten) betroffen ist. Der Wert dieses Elements muss eine Zeichenkette sein. Der Wert dieses Elements muss mit dem Eintrag <id> übereinstimmen, den Sie in Ihrem Hotellisten-Feed definiert haben.
|
| <Rates> | Optional | <Rates> |
Ein Container für einen oder mehrere <Rate> Blöcke. Jedes <Rate> in <Rates> definiert einen anderen Preis für die Zimmer/Reiseroute-Kombination.
Verwenden Sie das Element Hinweis: Innerhalb von |
| <Refundable> | Optional | Object | Ermöglicht die Angabe eines vollständig erstattungsfähigen Tarifs oder einer kostenlosen Stornierungsmöglichkeit. Wenn Sie dieses Element nicht angeben, werden keine Erstattungsinformationen angezeigt.
Eine Rückerstattungsrichtlinie auf der Ebene <PackageData> hat Vorrang vor der Rückerstattungsrichtlinie auf der Ebene <Result>. Eine Rückerstattungsrichtlinie auf der Ebene <Rates> hat Vorrang vor der Rückerstattungsrichtlinie auf der Ebene <PackageData>. Rückerstattungsfähige Preise können den Nutzern auch durch alternative Optionen hervorgehoben werden, ohne dass das Schema Ihrer Transaktionsnachrichten direkt geändert werden muss. Weitere Informationen zu den Richtlinien für erstattungsfähige Preise
Das folgende Beispiel zeigt das Element <Refundable available="1" refundable_until_days="7" refundable_until_time="18:00:00"/> Hinweis:Es wird empfohlen, alle Attribute festzulegen. Wenn ein oder mehrere Attribute nicht festgelegt wurden, wird eine Warnmeldung für den Feedstatus generiert. Wenn Sie keine Attribute festlegen, wird der Tarif nicht als erstattungsfähig angezeigt. Die Attribute sind:
Beachten Sie beim Festlegen der Attribute Folgendes:
|
| <RoomBundle> | Optional | <RoomBundle> |
Ein Container für Informationen zu Preisen, physischen Beschreibungen eines Zimmers, etwaigen Paketen von Annehmlichkeiten und einigen Details zur Kaufrichtlinie für das jeweilige Hotel und die jeweilige Reiseroute.
Im Allgemeinen dient dieses Element dazu, die Preise für das Basiszimmer und verschiedene Zimmertypen innerhalb desselben Hotels festzulegen. Obwohl es möglich ist, Raumpaketbeschreibungen direkt im Text zu definieren, sollten Sie eine separate Transaktionsnachricht verwenden, um diese Informationen zu definieren. Google wird Metadaten speichern, sodass Sie bei allen zukünftigen Preisaktualisierungen darauf verweisen können, anstatt sie zu wiederholen. |
| <RoomID> | Optional | string | Die eindeutige ID des Raumes, um ihn vordefinierten Raumdaten zuzuordnen. Auch zum Füllen der Landingpage-Variable PARTNER-ROOM-ID verwendet.
Weitere Informationen finden Sie unter Room Bundle metadata.
Es ist zwingend erforderlich, |
| <Tax> | Optional | float | Die Steuern, die auf den Endpreis eines Zimmers berechnet werden.
Der<Tax> Das Element benötigt ein einzelnes Pflichtattribut.currency , das definiert die drei BuchstabenWährungscode wegen der Steuern. Beispiel: USD Das Element <Tax> ist erforderlich, wenn <Baserate> größer als Null ist.
Wenn das Attribut „all_inclusive“ des Elements |
| <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:
|
Beispiele
Beispiel für mehrere Objekte
Im folgenden Beispiel wird ein Reiseplan und dessen Preis für zwei Unterkünfte definiert:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-23T16:20:00-04:00" id="42">
<Result>
<Property>060773</Property>
<RoomID>RoomType101</RoomID>
<PackageID>Package101</PackageID>
<Checkin>2018-06-10</Checkin>
<Nights>2</Nights>
<Baserate currency="USD">278.33</Baserate>
<Tax currency="USD">25.12</Tax>
<OtherFees currency="USD">2.00</OtherFees>
<AllowablePointsOfSale>
<PointOfSale id="site1"/>
</AllowablePointsOfSale>
</Result>
<Result>
<Property>052213</Property>
<RoomID>RoomType101</RoomID>
<PackageID>Package101</PackageID>
<Checkin>2018-06-10</Checkin>
<Nights>2</Nights>
<Baserate currency="USD">299.98</Baserate>
<Tax currency="USD">26.42</Tax>
<OtherFees currency="USD">2.00</OtherFees>
<AllowablePointsOfSale>
<PointOfSale id="otto"/>
<PointOfSale id="simon"/>
</AllowablePointsOfSale>
<MilesIncluded>
<NumberOfMiles>1200</NumberOfMiles>
<Provider>
<Text language="en" text="United Airlines"/>
</Provider>
<LoyaltyCampaignID>my_campaign</LoyaltyCampaignID>
</MilesIncluded>
</Result>
</Transaction>
In diesem Beispiel werden keine Informationen über das Zimmer gezeigt, wie etwa eine Beschreibung, ein Bild mit einem Untertitel, der Zimmername oder die Kapazität.
Sie können diese Informationen einmalig in einer separaten Transaktionsnachricht definieren, die von Google gespeichert wird. Anschließend haben Sie die Möglichkeit, bei allen zukünftigen Preis- und Inventaraktualisierungen auf diese Informationen zu verweisen. Weitere Informationen finden Sie unter Zimmerpaket-Metadaten.
Beispiel mit mehreren Tarifen
Das folgende Beispiel definiert eine einzelne Reiseroute und ein Objekt mit mehreren Preisen für verschiedene Belegungsstufen. Das Element <Rates> kann verwendet werden, um unterschiedliche Preisstufen für eine bestimmte Immobilie bereitzustellen. Das folgende Beispiel ist auch für Ferienwohnungen nützlich:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2020-07-23T16:20:00-04:00" id="42">
<Result>
<Property>1234</Property>
<Checkin>2021-01-13</Checkin>
<Nights>9</Nights>
<Baserate currency="USD">3196.1</Baserate>
<Tax currency="USD">559.49</Tax>
<OtherFees currency="USD">543.34</OtherFees>
<Occupancy>2</Occupancy>
<Rates>
<Rate>
<Baserate currency="USD">3196.1</Baserate>
<Tax currency="USD">559.49</Tax>
<OtherFees currency="USD">543.34</OtherFees>
<Occupancy>1</Occupancy>
</Rate>
<Rate>
<Baserate currency="USD">3196.1</Baserate>
<Tax currency="USD">559.49</Tax>
<OtherFees currency="USD">543.34</OtherFees>
<Occupancy>3</Occupancy>
</Rate>
<Rate>
<Baserate currency="USD">3196.1</Baserate>
<Tax currency="USD">559.49</Tax>
<OtherFees currency="USD">543.34</OtherFees>
<Occupancy>4</Occupancy>
</Rate>
<Rate>
<Baserate currency="USD">3196.1</Baserate>
<Tax currency="USD">559.49</Tax>
<OtherFees currency="USD">543.34</OtherFees>
<Occupancy>5</Occupancy>
</Rate>
<Rate>
<Baserate currency="USD">3196.1</Baserate>
<Tax currency="USD">559.49</Tax>
<OtherFees currency="USD">543.34</OtherFees>
<Occupancy>6</Occupancy>
</Rate>
</Rates>
</Result>
</Transaction>
Beispiel nicht verfügbar
Das folgende Beispiel definiert eine Reiseroute, deren Verfügbarkeit nicht über nachgelagerte Kanäle abgerufen werden konnte, eine zweite, die sowohl unter der Mindestaufenthaltsdauer liegt als auch für die angegebenen Daten bereits ausgebucht ist, und eine dritte, deren Unterkunft am Anreisetag geschlossen ist, aber im Laufe des Aufenthalts öffnet:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-23T16:20:00-04:00" id="42">
<Result>
<Property>060773</Property>
<Checkin>2018-06-10</Checkin>
<Nights>2</Nights>
<Unavailable>
<NotFetched/>
</Unavailable>
</Result>
<Result>
<Property>073313</Property>
<Checkin>2018-06-10</Checkin>
<Nights>2</Nights>
<Unavailable>
<NoVacancy/>
<MinNightStay value=3/>
</Unavailable>
</Result>
<Result>
<Property>052213</Property>
<Checkin>2018-06-10</Checkin>
<Nights>10</Nights>
<Unavailable>
<PropertyClosed first_open="2018-06-15" first_closed="2018-06-10"/>
</Unavailable>
</Result>
</Transaction>
<Rates>
Ein Container für einen oder mehrere <Rate> Blöcke. Jedes <Rate> in <Rates> definiert einen anderen Preis für die Zimmer- oder Reisekombination.
Verwenden Sie das Element <Rates> nur dann, wenn es mehrere Preise für dieselbe Zimmer- oder Reisekombination gibt. Beispielsweise können Sie mehrere Tarife für bedingte Tarife, private Tarife oder bedingte Tarife in Zimmerpaketen definieren.
Das Element <Rates> erscheint an folgender Stelle in der XML-Hierarchie der Transaktionsnachricht:
+<Transaction>+<PropertyDataSet>// Room and package metadata + <Property> +<RoomData>+<PackageData>+<Result>// Pricing and availability +<Rates>+<RoomBundle>(Can also contain<Rates>) + ...
In einem <Rate> festgelegten Wert überschreiben die preisbezogenen Werte des übergeordneten Elements <Result> oder <RoomBundle>. Wenn sie nicht in <Rate> festgelegt sind, übernehmen sie den Wert aus dem übergeordneten Element. Lediglich <AllowablePointsofSale> wird an das <RoomBundle>-Element vererbt.
Syntax
Das <Rates>-Element verwendet die folgende Syntax:
<?xml version="1.0" encoding="UTF-8"?> <Transaction ... > <Result> <Rates> <Rate rate_rule_id="rate_rule_id"> <Baserate currency="currency_code">price</Baserate> <Tax currency="currency_code">tax_amount</Tax> <OtherFees currency="currency_code">fee_amount</OtherFees> <ExpirationTime>expiration_time</ExpirationTime> <Refundable available="[false|true]" refundable_until_days="number_of_days" refundable_until_time="time"/> <ChargeCurrency>[deposit|hotel|installments|web]</ChargeCurrency> <AllowablePointsOfSale> <PointOfSale id="landing_page_identifier"/> </AllowablePointsOfSale> <Occupancy>max_number_of_intended_occupants</Occupancy> <OccupancyDetails> <!-- optional info about the types of guests, whether adults or children --></OccupancyDetails> ... <MilesIncluded> <NumberOfMiles>integer</NumberOfMiles> <Provider> <Text language="en" text="provider-name"> </Provider> <LoyaltyCampaignID>campaign_ID</LoyaltyCampaignID> </MilesIncluded> ... </Rate> ... </Rates> </Result> ... </Transaction>
Attribute
Das <Rates>-Element hat die folgenden Attribute:
| Attribut | Erforderlich/Optional? | Description |
|---|---|---|
| rate_rule_id | Optional | Bei bedingten Raten ordnet diese ID eine Rate einer Definition in Ihrer Rate Rule Definition-Datei zu. Die Zeichenbegrenzung für dieses Feld beträgt 40 Zeichen. Diese ID darf keine leere Zeichenkette sein. |
Untergeordnete Elemente
Das <Rates>-Element hat die folgenden untergeordneten Elemente:
| Kindelement | Erforderlich? | Typ | Description |
|---|---|---|---|
| <AllowablePointsOfSale> | Optional | Object | Eine oder mehrere Landingpages, die für das Hotel geeignet sind. Für dieses Element wird dieselbe Syntax wie für <AllowablePointsOfSale> in <Result> verwendet. |
| <Baserate> | Required | float | Der Preis für das Zimmer während des Aufenthalts. Dieses Element verwendet die gleiche Syntax wie <Baserate> auf <Result>.
Hinweis: Das |
| <ChargeCurrency> | Optional | enum | Wann und wo der Nutzer für eine Buchung bezahlt. Dieses Element verwendet die gleiche Syntax wie ein <ChargeCurrency> in einem <Result>. |
| Optional | string | Veraltet: Benutzerdefinierte Felder, mit denen Sie zusätzliche Daten, die mit einem Hotel verknüpft sind, an eine Landingpage übergeben können. Dieses Element verwendet die gleiche Syntax wie ein <Custom[1‑5]> in einem <Result>. Es gilt eine Beschränkung von 200 Zeichen pro benutzerdefiniertem Feld. Weitere Informationen finden Sie in den
Landingpage-Dateien. Wenn <Custom>-Elemente im <Result>-Element angegeben werden, werden diese nicht im <RoomBundle>-Element vererbt und müssen für jedes <RoomBundle> separat definiert werden. Alternativ können sie bei Bedarf in <PackageData> aufgenommen werden.
Wichtig: Wenden Sie sich an Ihren Technical Account Manager (TAM), wenn Sie |
|
| <ExpirationTime> | Optional | DateTime | Datum und Uhrzeit, zu der der Tarif als abgelaufen gilt. Dieses Element verwendet die gleiche Syntax wie ein <ExpirationTime> in einem <Result>. |
| <MilesIncluded> | Optional | boolean | Der Preis beinhaltet Vielfliegermeilen. Zu den Parametern gehören:
Hinweis: |
| <Occupancy> | Optional | integer | Gibt die maximal zulässige Personenzahl für diesen Tarif an. Sofern nicht anders angegeben, wird davon ausgegangen, dass der Zinssatz dem des Ausgangsunternehmens entspricht.
|
| <OtherFees> | Required | float | Neben dem Grundpreis und den Steuern fallen Gebühren an, die den Endpreis eines Zimmers beeinflussen. Dieses Element verwendet die gleiche Syntax wie <OtherFees> in einem <Result>.
Wenn das Attribut "all_inclusive" des Elements |
| <Refundable> | Optional | Object | Ermöglicht die Angabe eines vollständig erstattungsfähigen Tarifs oder einer kostenlosen Stornierungsmöglichkeit. Falls diese Angaben nicht gemacht werden, werden keine Informationen über eine Rückerstattung angezeigt.
Eine Rückerstattungsrichtlinie auf der Ebene <PackageData> hat Vorrang vor der Rückerstattungsrichtlinie auf der Ebene <Result>. Eine Rückerstattungsrichtlinie auf der Ebene <Rates> hat Vorrang vor der Rückerstattungsrichtlinie auf der Ebene <PackageData>. Rückerstattungsfähige Preise können den Nutzern auch durch alternative Optionen hervorgehoben werden, ohne dass das Schema Ihrer Transaktionsnachrichten direkt geändert werden muss. Erfahren Sie mehr über diese Optionen Rückerstattungsrichtlinie.
Das folgende Beispiel zeigt das <Refundable available="1" refundable_until_days="7" refundable_until_time="18:00:00"/> Hinweis: Wir empfehlen, alle Attribute festzulegen. Es wird eine Warnmeldung zum Feed-Status generiert, wenn ein oder mehrere Attribute nicht festgelegt sind. Wenn Sie keine Attribute festlegen, wird der Tarif nicht als erstattungsfähig angezeigt. Die Attribute sind:
Beachten Sie beim Festlegen der Attribute Folgendes:
|
| <Tax> | Required | float | Die Steuern, die auf den Endpreis eines Zimmers berechnet werden. Dieses Element verwendet die gleiche Syntax wie das <Tax> in einem <Result>. |
Beispiele
Grundzins und bedingter Zinssatz
Das folgende Beispiel zeigt eine Transaktionsnachricht, die einen Basiszinssatz und einen bedingten Zinssatz enthält:
<?xml version="1.0" encoding="UTF-8" ?>
<Transaction timestamp="2023-05-18T16:20:00-04:00" id="42">
<Result>
<Property>1234</Property>
<Checkin>2023-04-10</Checkin>
<Nights>1</Nights>
<Baserate currency="USD">200.00</Baserate>
<Tax currency="USD">20.00</Tax>
<OtherFees currency="USD">1.00</OtherFees>
<Rates>
<!-- The rate_rule_id is required when using conditional rates -->
<Rate rate_rule_id="mobile">
<!-- Override base rate and taxes for conditional rates -->
<Baserate currency="USD">180.00</Baserate>
<Tax currency="USD">18.00</Tax>
</Rate>
</Rates>
</Result>
</Transaction>
Mehrere bedingte Raten
Das folgende Beispiel definiert einen Basiszinssatz und mehrere bedingte Zinssätze innerhalb eines <RoomBundle>:
<?xml version="1.0" encoding="UTF-8" ?>
<Transaction timestamp="2023-05-18T16:20:00-04:00" id="42">
<Result>
<Property>1234</Property>
<Checkin>2023-04-10</Checkin>
<Nights>2</Nights>
<!-- When Google receives new room bundle information for an itinerary, all
previous room bundle pricing is dropped from Google's cache. Thus, if you
want to delete a specific room bundle from Google's cache, you may do so
by simply not providing that specific room bundle in subsequent transaction
messages. -->
<RoomBundle>
...
<!-- RoomID is required, PackageID is recommended. -->
<RoomID>5</RoomID>
<PackageID>ABC</PackageID>
<!-- Baserate is required. -->
<Baserate currency="USD">275.00</Baserate>
<Tax currency="USD">27.50</Tax>
<OtherFees currency="USD">2.00</OtherFees>
<!-- RatePlanID is optional and represents the unique identifier for a
room and package data combination. We strongly recommend using RatePlanID
as a variable to build your dynamic landing page (formerly Point of Sale)
URL and it should be within 50 characters in length for optimal
performance. For details, see Using Variables and Conditions. -->
<RatePlanID>5-ABC</RatePlanID>
<!-- Occupancy is mandatory for RoomBundle elements. -->
<!-- Elements below will get inherited to nested rate elements. -->
<Occupancy>2</Occupancy>
<OccupancyDetails>
<NumAdults>2</NumAdults>
</OccupancyDetails>
<InternetIncluded>1</InternetIncluded>
<!-- Rate rule "mobile" overrides chargeCurrency, "us_or_gb" doesn't. -->
<ChargeCurrency>web</ChargeCurrency>
<Rates>
<Rate rate_rule_id="mobile">
<Baserate currency="USD">258.33</Baserate>
<Tax currency="USD">25.83</Tax>
<OtherFees currency="USD">1.00</OtherFees>
<!-- The value below overrides ChargeCurrency from roombundle. -->
<ChargeCurrency>hotel</ChargeCurrency>
</Rate>
<Rate rate_rule_id="us_or_gb">
<Baserate currency="USD">268.33</Baserate>
<Tax currency="USD">26.83</Tax>
<OtherFees currency="USD">1.00</OtherFees>
</Rate>
</Rates>
</RoomBundle>
</Result>
</Transaction>
<RoomBundle>
Definiert Preisgestaltung und Verfügbarkeit für Zimmerpakete als Kind von <Result> in einer <Transaction> Nachricht. Definieren Sie für jede Paket- oder Reisekombination ein separates Element. Um das Paket und die Begriffe der Room Bundles zu definieren, verwenden Sie <RoomData>.
Das Element <RoomBundle> erscheint an folgender Stelle in der XML-Hierarchie der Transaktionsnachricht:
+<Transaction>+<PropertyDataSet>// Room and package metadata + <Property> +<RoomData>+<PackageData>+<Result>// Pricing and availability +<Rates>+<RoomBundle>+ ...
Weitere Informationen finden Sie unter Using Room Bundles.
Syntax
Das <RoomBundle>-Element verwendet die folgende Syntax:
<?xml version="1.0" encoding="UTF-8"?> <Transaction ... > <Result> ... <RoomBundle> <!-- Required unless specified inline under<RoomData>--> <RoomID>room_ID</RoomID> <!-- Required<PackageData>--> <PackageID>package_ID</PackageID> <!-- Add Loyalty point information --> <MilesIncluded> <NumberOfMiles>integer</NumberOfMiles> <Provider> <Text language="en" text="provider-name"> </Provider> <LoyaltyCampaignID>campaign_ID</LoyaltyCampaignID>> </MilesIncluded> <!-- Required --> <Baserate currency="currency_code">price</Baserate> <!-- Required --> <Tax currency="currency_code">taxes</Tax> <!-- Required --> <OtherFees currency="currency_code">other_fees</OtherFees> <Refundable available="[false|true]" refundable_until_days="number_of_days" refundable_until_time="time"/> <!-- Required --> <ChargeCurrency>[deposit|hotel|installments|web]</ChargeCurrency> <Occupancy>max_number_of_intended_occupants</Occupancy> <OccupancyDetails> <!-- optional info about the types of guests, whether adults or children --></OccupancyDetails> <BreakfastIncluded>boolean_value</BreakfastIncluded> <InternetIncluded>boolean_value</InternetIncluded> <ParkingIncluded>boolean_value</ParkingIncluded> <RatePlanID>rate_plan_ID</RatePlanID> <Rates>...</Rates> </RoomBundle> ... </Result> </Transaction>
Attribute
Das <RoomBundle>-Element hat keine Attribute.
Untergeordnete Elemente
Das <RoomBundle>-Element hat die folgenden untergeordneten Elemente:
| Untergeordnetes Element | Erforderlich? | Typ | Description |
|---|---|---|---|
| <Baserate> | Required | float | Legt den Preis des Zimmerpakets für den Aufenthalt fest. Dieses Element verwendet die gleiche Syntax wie <Baserate> in <Result>, mit folgender Ausnahme:
|
| <BreakfastIncluded> | Optional | boolean | Gibt an, ob das Frühstück im Preis dieses Zimmerpakets enthalten ist. |
| <ChargeCurrency> | Optional | enum | Wann und wo der Nutzer für eine Buchung bezahlt. Dieses Element verwendet die gleiche Syntax wie <ChargeCurrency> in einem <Result>.
Der Standardwert ist |
| Optional | string | Veraltet: Benutzerdefinierte Felder zum Übergeben zusätzlicher Daten an die Landingpages für das Room Bundle. Diese Elemente verwenden die gleiche Syntax wie <Custom[1-5]> in <Result>. Pro benutzerdefiniertes Feld dürfen maximal 200 Zeichen verwendet werden. Weitere Informationen finden Sie in den Landingpage-Dateien.
Benutzerdefinierte Variablen werden nur dann aufgelistet, wenn Sie die Preise in der Transaktionsnachricht senden. Wenn <Custom>-Elemente im <Result>-Element angegeben werden, werden diese nicht im <RoomBundle>-Element vererbt und müssen für jedes <RoomBundle> separat definiert werden. Alternativ können sie bei Bedarf in <PackageData> aufgenommen werden.
Wichtig: Wenden Sie sich an Ihren Technical Account Manager (TAM), wenn Sie |
|
| <InternetIncluded> | Optional | boolean | Wenn ein Zimmerpaket den Internetzugang kostenlos beinhaltet, während andere Pakete diese Annehmlichkeit nicht beinhalten. Dieses Element sollte nicht für Zimmerpakete in einem Hotel festgelegt werden, das kostenloses Internet für alle Zimmer anbietet. Dieser Punkt gilt nicht für kabelgebundenes Internet im Zimmer oder drahtloses Internet, das in den Gästezimmern nicht verfügbar ist. |
| <MilesIncluded> | Optional | boolean | Der Preis beinhaltet Vielfliegermeilen. Zu den Parametern gehören:
Hinweis: |
| <Occupancy> | Required | integer | Gibt die maximal zulässige Personenzahl für diesen Tarif an. Eine große Suite bietet beispielsweise Platz für 6 Gäste, das „Flitterwochen-Paket“ erlaubt jedoch nur 2 Gäste.
Dieser Wert muss kleiner oder gleich Bei der Definition der Auslastung in Ihrer Landingpage-URL verwenden Sie die Variablen Der Wert von Hinweise:
|
| <OtherFees> | Required | float | Zusätzlich zum Basispreis und den Steuern anfallende Gebühren, die sich auf den endgültigen Zimmerpreis auswirken. Das Element <OtherFees> verwendet nur ein einziges erforderliches Attribut currency, das den aus drei Buchstaben bestehenden Währungscode für die Gebühren angibt. Verwenden Sie beispielsweise USD für US-Dollar. |
| <PackageID> | Optional (recommended) | string | Die eindeutige ID für die Paketdaten. Verwenden Sie diese ID, um die Daten des Raumpakets mit den Daten abzugleichen, die in <PackageData> gesendet wurden. Weitere Informationen finden Sie unter Room Bundle metadata. (Sie können diese ID auch verwenden, um auf eine gemeinsame Raumbündeldefinition zu verweisen, die in einer einzelnen Transaktionsnachricht verwendet wird, wenn Sie Raumbündeldaten inline definieren.) |
| <ParkingIncluded> | Optional | boolean | Gibt an, ob ein Zimmerpaket kostenloses Parken beinhaltet, wenn in diesem Hotel Parken andernfalls kostenpflichtig wäre. Geben Sie für dieses Element keinen Wert an, wenn das Hotel generell kostenlose Parkplätze anbietet.
Gültige Werte sind |
| <RatePlanID> | Optional | string | Die Tarifplan-ID stellt die eindeutige Kennung für eine Zimmer- und Paketkombination dar. Wenn beispielsweise der Wert von <RoomID> 5 und der Wert von <PackageID> ABC beträgt, könnte man für <RatePlanID> den Wert 5-ABC verwenden. Wir empfehlen dringend, RatePlanID als Variable zu verwenden, um Ihre dynamische Landingpage-URL (ehemals Point-of-Sale-URL) zu erstellen.
Hinweis: Für eine optimale Leistung sollte die RatePlanID maximal 50 Zeichen lang sein. Weitere Informationen finden Sie unter Variablen und Bedingungen. |
| <Rates> | Optional | <Rates> |
Preise, die die Standardeinstellungen für dieses Zimmerpaket überschreiben. Dieses Element verwendet die gleiche Syntax wie <Rates> in <Result>. |
| <Refundable> | Optional | Object | Ermöglicht die Angabe eines vollständig erstattungsfähigen Tarifs oder einer kostenlosen Stornierungsmöglichkeit. Falls diese Angaben nicht gemacht werden, werden keine Informationen über eine Rückerstattung angezeigt.
Eine Rückerstattungsrichtlinie auf der Ebene <PackageData> hat Vorrang vor der Rückerstattungsrichtlinie auf der Ebene <Result>. Eine Rückerstattungsrichtlinie auf der Ebene <Rates> hat Vorrang vor der Rückerstattungsrichtlinie auf der Ebene <PackageData>. Rückerstattungsfähige Preise können den Nutzern auch durch alternative Optionen hervorgehoben werden, ohne dass das Schema Ihrer Transaktionsnachrichten direkt geändert werden muss. Erfahren Sie mehr über diese Optionen Rückerstattungsrichtlinie.
Das folgende Beispiel zeigt das <Refundable available="1" refundable_until_days="7" refundable_until_time="18:00:00"/> Hinweis:Es wird empfohlen, alle Attribute festzulegen. Wenn ein oder mehrere Attribute nicht festgelegt wurden, wird eine Warnmeldung für den Feedstatus generiert. Wenn Sie keine Attribute festlegen, wird der Tarif nicht als erstattungsfähig angezeigt. Die Attribute sind:
Beachten Sie beim Festlegen der Attribute Folgendes:
|
| <RoomID> | Required | string | Die eindeutige ID für die Raumdaten. Verwenden Sie diese ID, um die Daten des Raumpakets mit den Daten abzugleichen, die Sie in <RoomData> gesendet haben.
Weitere Informationen finden Sie unter
Zimmerpaket-Metadaten. (Sie können diese ID auch verwenden, um in einer einzelnen Transaktionsnachricht auf eine gemeinsame Raumdefinition zu verweisen, wenn Sie Raumdaten inline definieren.) |
| <Tax> | Required | float | Die für den endgültigen Preis eines Zimmers berechneten Steuern.
Das Element <Tax> verwendet das einzelne erforderliche Attribut currency, das den aus drei Buchstaben bestehenden Währungscode für die Steuern angibt. Verwenden Sie beispielsweise USD für US-Dollar. |
Beispiele
Einzelbelegungspaket
Im folgenden Beispiel wird eine Antwort mit einem einzelnen Belegungspaket definiert.
Wenn ein Nutzer in der Belegungsauswahl 1 auswählt, zeigt Google unabhängig von der Belegung immer den günstigsten Preis an.
Falls kein Preis für Einzelbelegung verfügbar ist, zeigt Google den niedrigsten Preis für Doppelbelegung an. Beachten Sie, dass die Preise für Einzelbelegung nicht live abgefragt werden, wenn für eine Reiseroute Preise für Doppelbelegung oder mehr zwischengespeichert sind.
Dieses Beispiel verweist mit den Elementen <RoomID> und <PackageID> auf vordefinierte Raum- und Paketmetadaten. Verwenden Sie die Elemente <RoomData> und <PackageData>, um diese Informationen zu definieren.
<!-- Efficient method of defining Room Bundles-->
<!----- Occupancy of 1 example ----->
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="12345678">
<!-- Part1: Define RoomData and PackageData in PropertyDataSet -->
<!-- Note: Once defined it does not have to be repeated for future
Transaction Messages.
PropertyDataSets can also be defined and sent in their own
Transaction Message separately from pricing. Google can be
configured to pull just PropertyDataSets once per day
(or on a predefined frequency). -->
<PropertyDataSet>
<Property>180054</Property>
<!-- Can be reused by multiple Room Bundles -->
<RoomData>
<RoomID>060773</RoomID>
<Name>
<Text text="Single Queen Room - Non-Smoking" language="en"/>
<Text text="Chambre de la Roi Premium - Pas de Fumeurs" language="fr"/>
</Name>
<!-- Room can accommodate up to 4, but package data specifies occupancy
between 1 to 4 -->
<Capacity>4</Capacity>
</RoomData>
<RoomData>
<RoomID>436233</RoomID>
<Name>
<Text text="Premium King Room - Non-Smoking" language="en"/>
<Text text="Chambre de le Roi Premium - Pas de Fumeurs" language="fr"/>
</Name>
<Capacity>4</Capacity>
</RoomData>
<!-- Can be reused by multiple Room Bundles -->
<PackageData>
<PackageID>P11111</PackageID>
<Occupancy>1</Occupancy>
<ChargeCurrency>web</ChargeCurrency>
<Refundable available="1" refundable_until_days="7"
refundable_until_time="18:00:00"/>
<ParkingIncluded>1</ParkingIncluded>
<InternetIncluded>1</InternetIncluded>
</PackageData>
<PackageData>
<PackageID>P54321</PackageID>
<Occupancy>2</Occupancy>
<ChargeCurrency>web</ChargeCurrency>
<Refundable available="1" refundable_until_days="7"
refundable_until_time="18:00:00"/>
<ParkingIncluded>1</ParkingIncluded>
<InternetIncluded>1</InternetIncluded>
</PackageData>
<PackageData>
<PackageID>P12345</PackageID>
<Occupancy>4</Occupancy>
<ChargeCurrency>web</ChargeCurrency>
<Refundable available="1" refundable_until_days="1"
refundable_until_time="18:00:00"/>
<ParkingIncluded>1</ParkingIncluded>
<InternetIncluded>1</InternetIncluded>
</PackageData>
</PropertyDataSet>
<!-- Efficient method of defining Room Bundles -->
<!-- Part 2: Reference RoomData and PackageData through ID -->
<Result>
<!-- Single occupancy pricing will be specified in a room bundle below -->
<Property>180054</Property>
<Checkin>2017-10-07</Checkin>
<Nights>2</Nights>
<!-- Base Room Bundle -->
<RoomBundle>
<RoomID>060773</RoomID>
<PackageID>P54321</PackageID>
<Baserate currency="USD">199.99</Baserate>
<Tax currency="USD">25.12</Tax>
<OtherFees currency="USD">2.00</OtherFees>
<RatePlanID>060773-P54321</RatePlanID>
</RoomBundle>
<RoomBundle>
<RoomID>060773</RoomID>
<PackageID>P11111</PackageID>
<!-- Price for 1 ("occupancy") is the lowest price and will be
displayed -->
<Baserate currency="USD">174.99</Baserate>
<Tax currency="USD">22.08</Tax>
<OtherFees currency="USD">2.00</OtherFees>
<RatePlanID>060773-P11111</RatePlanID>
</RoomBundle>
<!-- Premium Room Bundle -->
<RoomBundle>
<RoomID>436233</RoomID>
<PackageID>P12345</PackageID>
<!-- Price for 4 ("occupancy"), any eligible room bundle with 1 or more
occupancy will be displayed-->
<Baserate currency="USD">298.88</Baserate>
<Tax currency="USD">42.12</Tax>
<OtherFees currency="USD">10.00</OtherFees>
<RatePlanID>436233-P12345</RatePlanID>
</RoomBundle>
<!-- ..Continue providing all available RoomBundle rates under matched
property for 1 or more occupancies..-->
</Result>
</Transaction>
Zwei oder mehr Belegungen
Im folgenden Beispiel wird eine Antwort definiert, die mindestens zwei Belegungen beinhaltet.
In diesem Beispiel wird mit den Elementen <RoomID> und <PackageID> auf vordefinierte Zimmer- und Paketmetadaten verwiesen. Mit den Elementen <RoomData> und <PackageData> können Sie diese Informationen definieren.
<!-- Efficient method of defining Room Bundles-->
<!----- Occupancy of 3 example ----->
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="12345678">
<!-- Efficient method of defining Room Bundles-->
<!-- Part1: Define RoomData and PackageData in PropertyDataSet -->
<PropertyDataSet>
<Property>180054</Property>
<!-- Can be reused by multiple Room Bundles -->
<RoomData>
<RoomID>060773</RoomID>
<Name>
<Text text="Single Queen Room - Non-Smoking" language="en"/>
<Text text="Chambre de la Roi Premium - Pas de Fumeurs" language="fr"/>
</Name>
<!-- Room can accommodate up to 4, but package data specifies occupancy
between 1 to 4 -->
<Capacity>4</Capacity>
</RoomData>
<RoomData>
<RoomID>436233</RoomID>
<Name>
<Text text="Premium King Room - Non-Smoking" language="en"/>
<Text text="Chambre de le Roi Premium - Pas de Fumeurs" language="fr"/>
</Name>
<Capacity>4</Capacity>
</RoomData>
<!-- Can be reused by multiple Room Bundles -->
<PackageData>
<PackageID>P33333</PackageID>
<Occupancy>3</Occupancy>
<ChargeCurrency>web</ChargeCurrency>
<Refundable available="1" refundable_until_days="7"
refundable_until_time="18:00:00"/>
<ParkingIncluded>1</ParkingIncluded>
<InternetIncluded>1</InternetIncluded>
</PackageData>
<PackageData>
<PackageID>P12345</PackageID>
<Occupancy>4</Occupancy>
<ChargeCurrency>web</ChargeCurrency>
<Refundable available="1" refundable_until_days="1"
refundable_until_time="18:00:00"/>
<ParkingIncluded>1</ParkingIncluded>
<InternetIncluded>1</InternetIncluded>
</PackageData>
</PropertyDataSet>
<Result>
<Property>180054</Property>
<Checkin>2017-10-07</Checkin>
<Nights>2</Nights>
<!-- Efficient method of defining Room Bundles -->
<!-- Part 2: Reference RoomData and PackageData through ID -->
<!-- Base Room Bundle -->
<RoomBundle>
<!-- Baserate above and attributes must match atleast one room bundle
below -->
<RoomID>060773</RoomID>
<PackageID>P33333</PackageID>
<Baserate currency="USD">499.99</Baserate>
<Tax currency="USD">55.12</Tax>
<OtherFees currency="USD">22.00</OtherFees>
</RoomBundle>
<!-- Premium Room Bundle -->
<RoomBundle>
<RoomID>436233</RoomID>
<PackageID>P12345</PackageID>
<!-- Lowest price for 3 ("occupancy"), shown below, will be displayed -->
<Baserate currency="USD">598.88</Baserate>
<Tax currency="USD">62.12</Tax>
<OtherFees currency="USD">30.00</OtherFees>
</RoomBundle>
<!-- ..Continue providing all available RoomBundle rates under matched
property for 2 or more occupancies..-->
</Result>
</Transaction>
Mehrere Zimmerpakete
Im folgenden Beispiel wird die Belegung in mehreren Zimmerpaketen festgelegt, um mögliche Preisgestaltungen für Hostelzimmer zu veranschaulichen.
<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
<Result>
...
<!-- Suite Room Bundle -->
<RoomBundle>
<RoomID>suite1</RoomID>
<PackageID>standard</PackageID>
<Occupancy>2</Occupancy>
<!-- Price for room -->
<Baserate currency="USD">80.00</Baserate>
<Tax currency="USD">5.12</Tax>
<OtherFees currency="USD">2.00</OtherFees>
<RoomData>
<Name>
<Text text="Suite for 2" language="en"/>
</Name>
</RoomData>
</RoomBundle>
<!-- Small Dorm Room Bundle -->
<RoomBundle>
<RoomID>small_dorm</RoomID>
<PackageID>economy</PackageID>
<Occupancy>1</Occupancy>
<!-- Price per bed -->
<Baserate currency="USD">35.00</Baserate>
<Tax currency="USD">3.50</Tax>
<OtherFees currency="USD">2.00</OtherFees>
<RoomData>
<Name>
<Text text="1 bed in small dorm" language="en"/>
</Name>
</RoomData>
</RoomBundle>
<!-- Large Dorm Room Bundle -->
<RoomBundle>
<RoomID>large_dorm</RoomID>
<PackageID>economy</PackageID>
<Occupancy>1</Occupancy>
<!-- Price per bed -->
<Baserate currency="USD">20.00</Baserate>
<Tax currency="USD">2.50</Tax>
<OtherFees currency="USD">2.00</OtherFees>
<RoomData>
<Name>
<Text text="1 bed in large dorm" language="en"/>
</Name>
</RoomData>
</RoomBundle>
...
</Result>
</Transaction>
Mehrere nutzerabhängige Preise
Das folgende Beispiel definiert einen Basiszinssatz und mehrere bedingte Zinssätze innerhalb eines <RoomBundle>:
<?xml version="1.0" encoding="UTF-8" ?>
<Transaction timestamp="2023-05-18T16:20:00-04:00" id="42">
<Result>
<Property>1234</Property>
<Checkin>2023-04-10</Checkin>
<Nights>2</Nights>
<!-- When Google receives new room bundle information for an itinerary, all
previous room bundle pricing is dropped from Google's cache. Thus, if you
want to delete a specific room bundle from Google's cache, you may do so
by simply not providing that specific room bundle in subsequent transaction
messages. -->
<RoomBundle>
...
<!-- RoomID is required, PackageID is recommended. -->
<RoomID>5</RoomID>
<PackageID>ABC</PackageID>
<!-- Baserate is required. -->
<Baserate currency="USD">275.00</Baserate>
<Tax currency="USD">27.50</Tax>
<OtherFees currency="USD">2.00</OtherFees>
<!-- RatePlanID is optional and represents the unique identifier for a
room and package data combination. We strongly recommend using RatePlanID
as a variable to build your dynamic landing page (formerly Point of Sale)
URL and it should be within 50 characters in length for optimal
performance. For details, see Using Variables and Conditions. -->
<RatePlanID>5-ABC</RatePlanID>
<!-- Occupancy is mandatory for RoomBundle elements. -->
<!-- Elements below will get inherited to nested rate elements. -->
<Occupancy>2</Occupancy>
<OccupancyDetails>
<NumAdults>2</NumAdults>
</OccupancyDetails>
<InternetIncluded>1</InternetIncluded>
<!-- Rate rule "mobile" overrides chargeCurrency, "us_or_gb" doesn't. -->
<ChargeCurrency>web</ChargeCurrency>
<Rates>
<Rate rate_rule_id="mobile">
<Baserate currency="USD">258.33</Baserate>
<Tax currency="USD">25.83</Tax>
<OtherFees currency="USD">1.00</OtherFees>
<!-- The value below overrides ChargeCurrency from roombundle. -->
<ChargeCurrency>hotel</ChargeCurrency>
</Rate>
<Rate rate_rule_id="us_or_gb">
<Baserate currency="USD">268.33</Baserate>
<Tax currency="USD">26.83</Tax>
<OtherFees currency="USD">1.00</OtherFees>
</Rate>
</Rates>
</RoomBundle>
</Result>
</Transaction>
<OccupancyDetails>
<Occupancy> in einer Transaktionsnachricht gibt die maximale Anzahl von Gästen für ein Zimmer oder ein Paket an. <OccupancyDetails> kann zusätzliche Informationen enthalten, z. B. die Anzahl und die Art der Gäste (Erwachsene oder Kinder).
Wenn <Occupancy> und <OccupancyDetails> innerhalb des <Rates>-Elements von <Result> oder <RoomBundle> vorkommen, bedeutet dies, dass die Rate durch die Belegungsdetails eingeschränkt ist.
Wenn Sie <OccupancyDetails> in einem <RoomBundle> zusammen mit einem verschachtelten <Rate>-Element einfügen, können Sie kein einfaches <Occupancy> innerhalb des <Rate> senden; stattdessen wird eine der folgenden Optionen empfohlen:
- Belegung von
<Rate>weglassen: In diesem Fall erbt<Rate>die<OccupancyDetails>direkt von<RoomBundle>
oder
- Duplikat
<OccupancyDetails>: In diesem Fall werden zusätzliche identische<OccupancyDetails>sowohl im<RoomBundle>- als auch im verschachtelten<Rate>-Element gesendet.
Syntax
Wenn <OccupancyDetails> angezeigt wird, ist immer <Occupancy> vorangestellt.
Beachten Sie die folgende Syntax:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
<Result>
...
<Occupancy>max_number_of_intended_occupants</Occupancy>
<OccupancyDetails>
<NumAdults>number_of_adults</NumAdults>
<Children>
<Child age=age_of_one_child_guest/>
<Child age=age_of_one_child_guest/>
</Children>
</OccupancyDetails>
</Result>
</Transaction>Untergeordnete Elemente
Das <OccupancyDetails>-Element hat die folgenden untergeordneten Elemente:
| Kindelement | Erforderlich? | Typ | Description |
|---|---|---|---|
| <NumAdults> | Required | integer | Die Anzahl der erwachsenen Gäste. Min:1, Max:20. |
| <Children> | Optional | Object | Ein Container für ein oder mehrere <Child>-Elemente. |
| <Child age> | Optional | integer | Das Höchstalter für dieses Kind – zum Beispiel <Child age="17">. |
Beispiele
Die folgenden Beispiele zeigen, wie <OccupancyDetails> innerhalb von <Results>, <RoomBundle> oder dem Kindelement <Rates> vorkommen kann.
Ergebnisreaktion
Das folgende Beispiel definiert eine Reiseroute und deren Preisgestaltung für eine Unterkunft als Antwort auf eine Live-Preisabfrage, bei der der Benutzer die Anzahl und Art der Gäste angegeben hat. Hier werden die <OccupancyDetails> -- 2 Erwachsene und ein Kind -- in <Result> zurückgegeben.
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-23T16:20:00-04:00" id="42">
<Result>
<Property>060773</Property>
<RoomID>RoomType101</RoomID>
<PackageID>Package101</PackageID>
<Checkin>2018-06-10</Checkin>
<Nights>2</Nights>
<Baserate currency="USD">278.33</Baserate>
<Tax currency="USD">25.12</Tax>
<OtherFees currency="USD">2.00</OtherFees>
<AllowablePointsOfSale>
<PointOfSale id="site1"/>
</AllowablePointsOfSale>
<Occupancy>3</Occupancy>
<OccupancyDetails>
<NumAdults>2</NumAdults>
<Children>
<Child age="17"/>
</Children>
</OccupancyDetails>
</Result>
</Transaction>
Reaktion der Raten
Im folgenden Beispiel werden ein Reiseplan und die zugehörigen Preise für 1 Erwachsenen und 1 Kind definiert. Hier werden die <OccupancyDetails> im Element <Rates> von <Result> zurückgegeben.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Transaction id="Wtdj8QoQIWcAAbaTGlIAAAC4" timestamp="2018-04-18T11:27:45-04:00">
<Result>
<Property>8251</Property>
<Checkin>2018-06-20</Checkin>
<Nights>1</Nights>
<Baserate currency="USD">62.18</Baserate>
<Tax currency="USD">2.45</Tax>
<OtherFees currency="USD">0.00</OtherFees>
<Rates>
<Rate rate_rule_id="rule-951">
<Occupancy>2</Occupancy>
<OccupancyDetails>
<NumAdults>1</NumAdults>
<Children>
<Child age="17"/>
</Children>
</OccupancyDetails>
<Baserate currency="USD">42.61</Baserate>
<Tax currency="USD">5.70</Tax>
<OtherFees currency="USD">0.00</OtherFees>
<AllowablePointsOfSale>
<PointOfSale id="yourhotelpartnersite.com"/>
</AllowablePointsOfSale>
</Rate>
</Rates>
</Result>
</Transaction>
Zimmerpaket
Im folgenden Beispiel wird eine Belegung mit 2 Erwachsenen und 1 Kind für 2 Nächte mit einem erstattungsfähigen Preis definiert. Hier werden die <OccupancyDetails> in <RoomBundle> angezeigt.
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-23T16:20:00-04:00" id="42">
<Result>
<Property>6781291</Property>
<Checkin>2017-08-05</Checkin>
<Nights>2</Nights>
...
<RoomBundle>
<RoomID>10291</RoomID>
<RatePlanID>564739</RatePlanID>
<PackageID>564739</PackageID>
<Occupancy>3</Occupancy>
<OccupancyDetails>
<NumAdults>2</NumAdults>
<Children>
<Child age="17"/>
</Children>
</OccupancyDetails>
<ChargeCurrency>web</ChargeCurrency>
<Refundable available="true" refundable_until_days="1" refundable_until_time="23:59:00" />
<Baserate currency="USD">185.34</Baserate>
<Tax currency="USD">37.06</Tax>
<OtherFees currency="USD">2.22</OtherFees>
</RoomBundle>
</Result>
</Transaction>
Mehrere Zimmerpakete
Im folgenden Beispiel werden mehrere <RoomBundle>-Preise definiert, die auf eine Belegung von 2 Erwachsenen und 2 Kindern beschränkt sind. Hier werden die <OccupancyDetails> im Element <Rates> von <RoomBundle> angezeigt.
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
<Result>
<Property>1234</Property>
<Checkin>2018-06-10</Checkin>
<Nights>2</Nights>
<Baserate currency="USD">275.00</Baserate>
<Tax currency="USD">27.50</Tax>
<OtherFees currency="USD">0</OtherFees>
<RoomBundle>
<RoomID>5</RoomID>
<PackageID>STD</PackageID>
<Baserate currency="USD">275.00</Baserate>
<Tax currency="USD">27.50</Tax>
<OtherFees currency="USD">0</OtherFees>
<InternetIncluded>1</InternetIncluded>
<ChargeCurrency>web</ChargeCurrency>
<Occupancy>4</Occupancy>
<OccupancyDetails>
<NumAdults>2</NumAdults>
<Children>
<Child age="17"/>
<Child age="17"/>
</Children>
</OccupancyDetails>
<Rates>
<Rate rate_rule_id="mobile">
<Baserate currency="USD">258.33</Baserate>
<Tax currency="USD">25.83</Tax>
<OtherFees currency="USD">1.00</OtherFees>
<ChargeCurrency>hotel</ChargeCurrency>
</Rate>
<Rate rate_rule_id="us_or_gb">
<Baserate currency="USD">268.33</Baserate>
<Tax currency="USD">26.83</Tax>
<OtherFees currency="USD">1.00</OtherFees>
</Rate>
</Rates>
</RoomBundle>
</Result>
</Transaction>