Diese Seite enthält eine Referenz für die XML-basierten Transaktionsnachrichten.
<Transaction>
Das Stammelement einer Transaktionsnachricht ist <Transaction>
. Es ist ein Container mit beschreibenden Informationen zu Zimmern und Paketen sowie zu Preisen und Verfügbarkeit für Zimmer und Pakete.
Das <Transaction>
-Element wird an der folgenden Stelle in der XML-Hierarchie der Transaktionsnachrichten angezeigt:
+<Transaction>
+<PropertyDataSet>
// Room and package metadata + <Property> +<RoomData>
+<PackageData>
+<Result>
// Pricing and availability +<Rates>
+<RoomBundle>
+ ...
Nachrichten, die <Transaction>
als Stammelement verwenden, benötigen mindestens ein untergeordnetes Element. Transaktionsnachrichten können eine beliebige Anzahl von untergeordneten Elementen 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/Optional? | Typ | Beschreibung |
---|---|---|---|
id | Required | String | Eine eindeutige Kennung für jede Transaktionsnachricht. |
partner | Optional | string | Das Partnerkonto, für das die Transaktionsnachricht bestimmt ist. Sie verwenden dieses Attribut in der Regel, wenn Ihr Backend Preisfeeds für mehrere Partnerkonten bereitstellt. Dieser Stringwert ist der Wert „Partnerschlüssel“, der im Hotel Center auf der Seite „Kontoeinstellungen“ aufgeführt ist. |
timestamp | Required | DateTime | Der Zeitpunkt, zu dem die Transaktionsnachricht gesendet wurde. Alle Nachrichten, die innerhalb der letzten 24 Stunden mit einem Zeitstempel gesendet wurden, werden verarbeitet. Nachrichten, bei denen dies nicht der Fall ist, werden verworfen. Die Nachrichten werden in der Reihenfolge |
Untergeordnete Elemente
Das <Transaction>
-Element hat die folgenden untergeordneten Elemente:
Untergeordnetes Element | Erforderlich? | Typ | Beschreibung |
---|---|---|---|
<PropertyDataSet> | Optional* | <PropertyDataSet> |
Beschreibt ein bestimmtes Zimmer und Zimmerpakete. Sie verwenden dieses Element in der Regel in einer separaten Transaktionsnachricht, um gemeinsame Werte für Zimmerpakete zu definieren und die Größe Ihrer Transaktionsnachrichten zu reduzieren. |
<Result> | Optional* | <Result> |
Preisdaten für den Reiseplan eines Zimmers oder ein |
* Mindestens <PropertyDataSet> oder <Result> ist erforderlich. |
Beispiele
Zimmerdaten
Im folgenden Beispiel werden Zimmerdaten in einer Transaktionsnachricht definiert:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>1234</Property>
<RoomData>
<RoomID>5440OF</RoomID>
<Name>
<Text text="Single King Bed Room" language="en"/>
<Text text="Simple Lit de Roi" language="fr"/>
</Name>
<Description>
<Text text="One king bed with pillowtop mattresses, 300-thread-count linens,
and down comforters (bedspreads). City view. 300 square feet. Desk with
rolling chair. Multi-line phone with voice mail. Cable/satellite TV with
complimentary HBO and pay movies." language="en"/>
<Text text="Un très grand lit avec matelas à plateau-coussin, ..." language="fr"/>
</Description>
<PhotoURL>
<Caption>
<Text text="Bathroom View" language="en"/>
<Text text="La salle de baines" language="fr"/>
</Caption>
<URL>http://www.foo.com/static/bar/image1234.jpg</URL>
</PhotoURL>
<Capacity>4</Capacity>
</RoomData>
</PropertyDataSet>
</Transaction>
Preise
Im folgenden Beispiel werden Preisdaten in einer Transaktionsnachricht definiert:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-23T16:20:00-04:00" id="42">
<Result>
<Property>060773</Property>
<RoomID>RoomType101</RoomID>
<PackageID>Package101</PackageID>
<Checkin>2018-06-10</Checkin>
<Nights>2</Nights>
<Baserate currency="USD">278.33</Baserate>
<Tax currency="USD">25.12</Tax>
<OtherFees currency="USD">2.00</OtherFees>
<AllowablePointsOfSale>
<PointOfSale id="site1"/>
</AllowablePointsOfSale>
</Result>
<Result>
<Property>052213</Property>
<RoomID>RoomType101</RoomID>
<PackageID>Package101</PackageID>
<Checkin>2018-06-10</Checkin>
<Nights>2</Nights>
<Baserate currency="USD">299.98</Baserate>
<Tax currency="USD">26.42</Tax>
<OtherFees currency="USD">2.00</OtherFees>
<AllowablePointsOfSale>
<PointOfSale id="otto"/>
<PointOfSale id="simon"/>
</AllowablePointsOfSale>
</Result>
</Transaction>
Übernachtungspreise
Im folgenden Beispiel werden Preisdaten für eine bis sieben Nächte ab dem 7. Juni 2023 definiert:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-08-24T16:20:00-04:00" id="42">
<Result>
<Property>1234</Property>
<Checkin>2018-06-07</Checkin>
<Nights>1</Nights>
<Baserate currency="USD">209.99</Baserate>
<Tax currency="USD">25.12</Tax>
<OtherFees currency="USD">2.00</OtherFees>
</Result>
<Result>
<Property>1234</Property>
<Checkin>2018-06-07</Checkin>
<Nights>2</Nights>
<Baserate currency="USD">419.98</Baserate>
<Tax currency="USD">25.12</Tax>
<OtherFees currency="USD">2.00</OtherFees>
</Result>
<Result>
<Property>1234</Property>
<Checkin>2018-06-07</Checkin>
<Nights>3</Nights>
<Baserate currency="USD">614.97</Baserate>
<Tax currency="USD">21.12</Tax>
<OtherFees currency="USD">2.00</OtherFees>
</Result>
<Result>
<Property>1234</Property>
<Checkin>2018-06-07</Checkin>
<Nights>4</Nights>
<Baserate currency="USD">819.96</Baserate>
<Tax currency="USD">21.12</Tax>
<OtherFees currency="USD">2.00</OtherFees>
</Result>
<Result>
<Property>1234</Property>
<Checkin>2018-06-07</Checkin>
<Nights>5</Nights>
<Baserate currency="USD">999.95</Baserate>
<Tax currency="USD">21.12</Tax>
<OtherFees currency="USD">2.00</OtherFees>
</Result>
<Result>
<Property>1234</Property>
<Checkin>2018-06-07</Checkin>
<Nights>6</Nights>
<Baserate currency="USD">1193.94</Baserate>
<Tax currency="USD">21.12</Tax>
<OtherFees currency="USD">2.00</OtherFees>
</Result>
<Result>
<Property>1234</Property>
<Checkin>2018-06-07</Checkin>
<Nights>7</Nights>
<Baserate currency="USD">1259.93</Baserate>
<Tax currency="USD">21.12</Tax>
<OtherFees currency="USD">2.00</OtherFees>
</Result>
</Transaction>
Grundpreise und nutzerabhängige Preise
Das folgende Beispiel zeigt eine Transaktionsnachricht, die einen Basispreis und einen nutzerabhängigen Preis 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>
<!-- NOTE: OtherFees is inherited from the above setting -->
<Custom1>ratecode123</Custom1>
</Rate>
</Rates>
</Result>
</Transaction>
Inventar entfernen
Im folgenden Beispiel werden mehrere Inventare (Aufenthalte mit einer Übernachtung für verschiedene Termine) für ein Hotel aus dem Inventar entfernt:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-05-23T16:20:00-04:00" id="42">
<Result>
<Property>1123581321</Property>
<Checkin>2023-05-23</Checkin>
<Nights>1</Nights>
<Unavailable>
<NoVacancy/>
</Unavailable>
<Tax currency="USD">0</Tax>
<OtherFees currency="USD">0</OtherFees>
</Result>
<Result>
<Property>1123581321</Property>
<Checkin>2023-05-24</Checkin>
<Nights>1</Nights>
<Unavailable>
<NoVacancy/>
</Unavailable>
<Tax currency="USD">0</Tax>
<OtherFees currency="USD">0</OtherFees>
</Result>
<!---Sending <Baserate> is optional with <Unavailable> -->
<Result>
<Property>1123581321</Property>
<Checkin>2023-05-25</Checkin>
<Nights>1</Nights>
<Baserate currency="USD">-1</Baserate>
<Unavailable>
<NoVacancy/>
</Unavailable>
<Tax currency="USD">0</Tax>
<OtherFees currency="USD">0</OtherFees>
</Result>
</Transaction>
<PropertyDataSet>
Ein Container für Zimmer- und Paketinformationen (oder Zimmerpaket-Informationen) in einer <Transaction>
-Nachricht. Werte, die für ein Hotel festgelegt werden, überschreiben die Werte, die für einen Partner festgelegt wurden.
Google speichert diese Informationen, damit Sie sie nicht jedes Mal neu definieren müssen, wenn Sie Preisaktualisierungen senden.
Das <PropertyDataSet>
-Element wird an der folgenden Stelle in der XML-Hierarchie der Transaktionsnachrichten angezeigt:
+<Transaction>
+<PropertyDataSet>
// Room and package metadata + <Property> +<RoomData>
+<PackageData>
+<Result>
// Pricing and availability +<Rates>
+<RoomBundle>
+ ...
Weitere Informationen finden Sie unter Zimmerpaket-Metadaten.
Syntax
Das <PropertyDataSet>
-Element verwendet die folgende Syntax:
<?xml version="1.0" encoding="UTF-8"?> <Transaction ... > <PropertyDataSet> <!-- (Required) ID that matches the Hotel List Feed --> <Property>hotel_ID</Property> <!-- (Optional) Defines metadata about a room --> <RoomData> ... </RoomData> <!-- (Optional) Defines package metadata to be paired with rooms (Room Bundles) --> <PackageData> ... </PackageData> </PropertyDataSet> ... </Transaction>
Attribute
Das <PropertyDataSet>
-Element hat keine Attribute.
Untergeordnete Elemente
Das <PropertyDataSet>
-Element hat die folgenden untergeordneten Elemente:
Untergeordnetes Element | Erforderlich? | Typ | Beschreibung |
---|---|---|---|
<PackageData> | Optional* | <PackageData> |
Beschreibt ein Zimmerpaket. Diese Daten sind mit einem Partner und einem Hotel, aber nicht mit einem Reiseplan verknüpft. Dieses Element ähnelt <RoomData> , beschreibt aber Ausstattung und Bedingungen, die nicht Teil der Beschreibung des physischen Zimmers sind.
In Ihren Preisaktualisierungen verweisen Sie auf die Paket-ID. Weitere Informationen finden Sie unter Zimmerpaket-Metadaten. |
<Property> | Required | string | Die ID eines Hotels, auf das sich die zugehörigen Daten beziehen. Der Wert dieses Elements muss ein String sein, der mit dem Eintrag <id> in Ihrem Hotellistenfeed übereinstimmt.
|
<RoomData> | Optional* | <RoomData> |
Beschreibt ein Zimmer. Diese Daten sind mit einem Partner und einem Hotel, aber nicht mit einem Reiseplan verknüpft.
In Ihren Preisaktualisierungen verweisen Sie auf die Zimmer-ID. |
* Mindestens <PackageData> oder <RoomData> ist erforderlich. |
Beispiele
Zimmer- und Paketdaten
Das folgende Beispiel zeigt sowohl Zimmer- als auch Paketdaten in einem <PropertyDataSet>
:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>180054</Property>
<RoomData>
<RoomID>060773</RoomID>
<Name>
<Text text="Single Bed Room" language="en"/>
<Text text="Chambre single" language="fr"/>
</Name>
<Description>
<Text text="Non-smoking" language="en"/>
<Text text="Pas de fumiers" language="fr"/>
</Description>
<PhotoURL>
<Caption>
<Text text="Living area" language="en"/>
<Text text="Le chambre" language="fr"/>
</Caption>
<URL>http://www.foo.com/static/bar/image1234.jpg</URL>
</PhotoURL>
</RoomData>
<PackageData>
<PackageID>P54321</PackageID>
<Name>
<Text text="Breakfast Included" language="en"/>
<Text text="Avec le petit déjeuner" language="fr"/>
</Name>
<Description>
<Text text="Includes a delightful array of jams and jellies." language="en"/>
<Text text="Comprend une délicieuse gamme de confitures et gelées." language="fr"/>
</Description>
<BreakfastIncluded>1</BreakfastIncluded>
</PackageData>
</PropertyDataSet>
</Transaction>
Wenn Sie Preise und Verfügbarkeit für dieses Zimmer und Zimmerpaket senden, verweisen Sie in Ihren Preisnachrichten auf die Zimmer- und Paket-IDs. Das Ergebnis ist, dass Sie die Größe Ihrer Nachrichten erheblich reduzieren und die Anzahl der Fehler reduzieren, die aufgrund von doppelten Daten auftreten können. Weitere Informationen finden Sie unter Zimmerpaket-Metadaten.
<RoomData>
Definiert vom Reiseplan unabhängige Metadaten für Zimmer und somit auch für Zimmerpakete (da Zimmerpakete Zimmer plus zusätzliche Ausstattung sind). Mit <RoomData>
reduzieren Sie die Wiederholung beschreibender Daten in Ihrem Preisfeed.
Das <RoomData>
-Element wird an der folgenden Stelle in der XML-Hierarchie der Transaktionsnachrichten angezeigt:
+<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 einem Reiseplan verknüpft sind. Der Zweck ist für alle nicht zum Reiseplan gehörenden Daten.
Das <RoomData>
-Element ähnelt <PackageData>
, beschreibt jedoch nicht die Ausstattung und Bedingungen eines Pakets, sondern das physische Zimmer. Sie verwenden <RoomData>
und <PackageData>
in Kombination, um Details zu Zimmerpaketen bereitzustellen. Verwenden Sie für einzelne Zimmer, die nicht Teil eines Pakets sind, nur <RoomData>
.
Sie können sowohl das Element <RoomData>
als auch das Element <PackageData>
für dasselbe Zimmer oder Zimmerpaket definieren. Wenn Google dieses Zimmer oder Paket in den Suchergebnissen anzeigt, werden die Beschreibungen beider Elemente, getrennt durch einen Bindestrich, angezeigt.
Weitere Informationen finden Sie unter Zimmerpaket-Metadaten.
Syntax
Das <RoomData>
-Element verwendet die folgende Syntax:
<?xml version="1.0" encoding="UTF-8"?> <Transaction ... > <PropertyDataSet> ... <RoomData> <RoomID>room_ID</RoomID> <Name> <Text text="room_name" language="language_code"/> ... </Name> <Description> <Text text="room_description" language="language_code"/> ... </Description> <Capacity>max_number_of_occupants</Capacity> <Occupancy>max_number_of_intended_occupants</Occupancy> <OccupancyDetails> <!-- optional info about the types of guests, whether adults, children, or seniors --></OccupancyDetails> <OccupancySettings> <MinOccupancy>min_number_of_occupants</MinOccupancy> <MinAge>min_age_of_occupants</MinAge> </OccupancySettings> <PhotoURL> <Caption> <Text text="photo_description" language="language_code"/> ... </Caption> <URL>photo_location</URL> </PhotoURL> <RoomFeatures> ... </RoomFeatures> </RoomData> ... </PropertyDataSet> </Transaction>
Attribute
Das <RoomData>
-Element hat keine Attribute.
Untergeordnete Elemente
Das <RoomData>
-Element hat die folgenden untergeordneten Elemente:
Untergeordnetes Element | Erforderlich? | Typ | Beschreibung |
---|---|---|---|
<Capacity> | Optional | integer | Die maximale Anzahl von Gästen, die im Zimmer Platz haben. In einem Zimmer ist die Kapazität größer oder gleich der Belegung.
Wenn dieser Wert angegeben wird, muss er gleich oder größer als der Wert des Elements Der Wert für |
<Description> | Optional | Object | Eine detaillierte Beschreibung des Zimmers. Dieses Element sollte Informationen enthalten, die weder in anderen Elementen noch im Element <Name> beschrieben sind. Geben Sie die Beschreibung des Zimmers nicht ausschließlich in Großbuchstaben an.
Das Element
Verwenden Sie für jede Sprache, in der Ihre Anzeige oder Ihr kostenloser Buchungslink erscheinen könnte, ein separates Das folgende Beispiel zeigt die französische und englische Version der Zimmerbeschreibung: <Description> <Text text="Two queen-sized beds" language="en"/> <Text text="Deux lits de la reine" language="fr"/> </Description> |
<Name> | Required | string | Der Name der Zimmerkategorie. Dieser Wert sollte mit den Angaben auf der Landingpage des Hotels (früher Point of Sale) übereinstimmen. Gib den Wert dieses Elements nicht ausschließlich in Großbuchstaben an.
Dieses Element verwendet nur das untergeordnete 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 englische Version des Zimmernamens: <Name> <Text text="Standard Double Room" language="en"/> <Text text="Le chambre double" language="fr"/> </Name> |
<Occupancy> | Optional | integer | Die maximale Anzahl von Gästen, für die ein Zimmer vorgesehen ist.
Eine große Suite bietet beispielsweise Platz für 6 Personen (Kapazität = 6), ist aber nur für bis zu 4 Personen vorgesehen.
Dieser Wert muss kleiner oder gleich dem Element Der Wert für
|
<OccupancySettings> | Optional | Object | Einstellungen, die die Belegungsanforderungen eines Zimmers einschränken oder ändern können.
Das Element
<OccupancySettings> <MinOccupancy>2</MinOccupancy> <MinAge>16</MinAge> </OccupancySettings> Nicht alle untergeordneten Elemente müssen enthalten sein. |
<PhotoURL> | Optional | Object | Eine URL und optional eine Bildunterschrift für ein Foto des betreffenden Zimmers oder Zimmerpakets. Sie können mehr als eine <PhotoURL> für ein Zimmer oder Zimmerpaket angeben. Jede Foto-URL muss eine eigene <PhotoURL> haben.
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 Zimmerelementen. |
<RoomID> | Required | string | Die eindeutige ID des Zimmers. Mit dieser ID ordnen Sie die Zimmerdaten den <Result> -Blöcken in Ihren Preisaktualisierungen zu. Weitere Informationen finden Sie unter Zimmerpaket-Metadaten. Wenn Sie Zimmerdaten inline definieren, können Sie mit dieser ID auch auf eine allgemeine Zimmerdefinition in einer einzelnen Transaktionsnachricht verweisen. |
Beispiele
Zimmerdaten
Im folgenden Beispiel werden Zimmerdaten definiert:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>1234</Property>
<RoomData>
<RoomID>5440OF</RoomID>
<Name>
<Text text="Single King Bed Room" language="en"/>
<Text text="Simple Lit de Roi" language="fr"/>
</Name>
<Description>
<Text text="One king bed with pillowtop mattresses, 300-thread-count linens,
and down comforters (bedspreads). City view. 300 square feet. Desk with
rolling chair. Multi-line phone with voice mail. Cable/satellite TV with
complimentary HBO and pay movies." language="en"/>
<Text text="Un très grand lit avec matelas à plateau-coussin, ..." language="fr"/>
</Description>
<PhotoURL>
<Caption>
<Text text="Bathroom View" language="en"/>
<Text text="La salle de baines" language="fr"/>
</Caption>
<URL>http://www.foo.com/static/bar/image1234.jpg</URL>
</PhotoURL>
<Capacity>4</Capacity>
</RoomData>
</PropertyDataSet>
</Transaction>
Zimmer- und Paketmetadaten
Im folgenden Beispiel werden Zimmer- und Paketmetadaten definiert:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>180054</Property>
<RoomData>
<RoomID>060773</RoomID>
<Name>
<Text text="Single Bed Room" language="en"/>
<Text text="Chambre single" language="fr"/>
</Name>
<Description>
<Text text="Non-smoking" language="en"/>
<Text text="Pas de fumiers" language="fr"/>
</Description>
<PhotoURL>
<Caption>
<Text text="Living area" language="en"/>
<Text text="Le chambre" language="fr"/>
</Caption>
<URL>http://www.foo.com/static/bar/image1234.jpg</URL>
</PhotoURL>
</RoomData>
<PackageData>
<PackageID>P54321</PackageID>
<Name>
<Text text="Breakfast Included" language="en"/>
<Text text="Avec le petit déjeuner" language="fr"/>
</Name>
<Description>
<Text text="Includes a delightful array of jams and jellies." language="en"/>
<Text text="Comprend une délicieuse gamme de confitures et gelées." language="fr"/>
</Description>
<BreakfastIncluded>1</BreakfastIncluded>
</PackageData>
</PropertyDataSet>
</Transaction>
Pakete für mehrere Zimmer
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 gefundenen Merkmale.
Das <RoomFeatures>
-Element wird an der folgenden Stelle in der XML-Hierarchie der Transaktionsnachrichten angezeigt:
+<Transaction>
+<PropertyDataSet>
// Room and package metadata + <Property> +<RoomData>
+<RoomFeatures>
Syntax
Das <RoomFeatures>
-Element verwendet die folgende Syntax:
<?xml version="1.0" encoding="UTF-8"?> <Transaction ... > <PropertyDataSet ... > ... <RoomData> <RoomFeatures> <JapaneseHotelRoomStyle>[western|japanese|japanese_western]</JapaneseHotelRoomStyle> <Beds> <Bed size="[single|semi_double|double|queen|king]"> <Width unit="cm" number="width"/> <Length unit="cm" number="length"/> </Bed> <!-- Include with any additional beds. --> </Beds> <Suite/> <Capsule/> <Roomsharing>[shared|private]</Roomsharing> <Outdoor/> <MobilityAccessible/> <Smoking>[smoking|non_smoking]</Smoking> <BathAndToilet relation="[together|separate]"> <Bath bathtub="[false|true]" shower="[false|true]"/> <Toilet electronic_bidet="[false|true]" mobility_accessible="[false|true]"/> </BathAndToilet> <OpenAirBath/> <AirConditioning/> <Balcony/> <Views> <!-- (Optional) Defines the type of views from the room. --> <!-- Example: <OceanView/> --> </Views> </RoomFeatures> ... </RoomData> ... </PropertyDataSet> </Transactions>
Attribute
Das <RoomFeatures>
-Element hat keine Attribute.
Untergeordnete Elemente
Das <RoomFeatures>
-Element hat die folgenden untergeordneten Elemente:
Untergeordnetes Element | Erforderlich? | Typ | Beschreibung |
---|---|---|---|
<JapaneseHotelRoomStyle> | Optional | enum | Gibt den Stil eines japanischen Hotelzimmers an. Gültige Werte sind:
|
<Beds> | Optional | Object | Enthält so viele <Bed> wie der Raum. Hinweis: Die japanischen Futons sollten hier nicht mitgezählt werden.
Jeder
<Bed> hat die folgenden untergeordneten Elemente:
<Beds> <Bed size="double"> <Width unit="cm" number="140"/> <Length unit="cm" number="195"/> </Bed> <Bed/> <!-- Size unknown --> </Beds> |
<Suite> | Optional | empty | Geben Sie dieses Element an, wenn es sich bei diesem Zimmer um eine Suite handelt. |
<Capsule> | Optional | empty | Geben Sie dieses Element an, wenn dieser Raum ein Kapselraum ist. |
<Roomsharing> | Optional | enum | Gibt an, ob dieses Zimmer mit anderen Personen geteilt wird, z. B. Eigentümern oder anderen Gästen. Gültige Werte sind shared und private . |
<Outdoor> | Optional | empty | Geben Sie dieses Element an, wenn es sich bei diesem Raum um eine Unterkunft im Freien ohne feste Wände, Sanitäranlagen und Klimaanlagen handelt. Hotelzimmer sind beispielsweise keine Unterkunft im Freien. Campingplätze, auf denen Gäste in Zelten übernachten, und Wohnmobilparks, auf denen Gäste ihr eigenes Wohnmobil mitbringen, sind hingegen Outdoorunterkünfte. |
<MobilityAccessible> | Optional | empty | Geben Sie dieses Element an, wenn dieser Raum rollstuhlgerecht ist. |
<Smoking> | Optional | enum | Gibt an, ob es sich um ein Nichtraucher- oder ein Raucherzimmer handelt. Gültige Werte sind non_smoking und smoking . |
<BathAndToilet> | Optional | Object | Enthält Informationen zu einem Bad und einer Toilette im Raum.
Das Attribut lautet:
Das -Element verwendet optional die folgenden untergeordneten Elemente:
Beispiel: <BathAndToilet relation="separate"> <Bath bathtub="1" shower="1"/> <Toilet electronic_bidet="1" mobility_accessible="1"/> </BathAndToilet> |
<OpenAirBath> | Optional | empty | Geben Sie dieses Element an, wenn dieser Raum ein eigenes Bad im Freien hat. |
<AirConditioning> | Optional | empty | Geben Sie dieses Element an, wenn es in diesem Raum eine Klimaanlage gibt. |
<Balcony> | Optional | empty | Geben Sie dieses Element an, wenn dieses Zimmer einen Balkon oder eine Veranda hat. |
<Views> | Optional | Object | Gültige Optionen:
|
Beispiele
JapaneseHotelRoomStyle
hat keinen Standardwert. Das Weglassen eines Werts führt nicht zu einem XML-Fehler. Ihr Eintrag wird aber nicht in den Suchergebnissen angezeigt, wenn Nutzer nach Zimmerstil oder Betten filtern.
Zwei Einzelbetten
Das folgende Beispiel zeigt, wie <RoomFeatures>
verwendet wird:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>1234</Property>
<RoomData>
<RoomID>RoomID_1</RoomID>
<RoomFeatures>
<JapaneseHotelRoomStyle>western</JapaneseHotelRoomStyle>
<Beds> <!-- Two single beds -->
<Bed size="single">
<Width unit="cm" number="97"/>
<Length unit="cm" number="195"/>
</Bed>
<Bed size="single">
<Width unit="cm" number="97"/>
<Length unit="cm" number="195"/>
</Bed>
</Beds>
<Suite/>
<Capsule/>
<Roomsharing>private</Roomsharing>
<Outdoor/>
<MobilityAccessible/>
<Smoking>non_smoking</Smoking>
<BathAndToilet relation="separate">
<Bath bathtub="1" shower="1"/>
<Toilet electronic_bidet="1" mobility_accessible="1"/>
</BathAndToilet>
<OpenAirBath/>
<AirConditioning/>
<Balcony/>
<Views>
<LakeView/>
<MarinaView/>
<BeachView/>
<ForestView/>
<MountainView/>
<NatureView/>
</Views>
</RoomFeatures>
</RoomData>
</PropertyDataSet>
</Transaction>
Zwei Doppelbetten
Das folgende Beispiel zeigt ein 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
Hier ein Beispiel für ein Zimmer im japanischen Stil ohne Bett. Für ein Zimmer im Stil „japanese
“ sind keine Informationen zu Betten erforderlich.
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-07-23T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>1234</Property>
<RoomData>
<RoomID>RoomID_1</RoomID>
<RoomFeatures>
<JapaneseHotelRoomStyle>japanese</JapaneseHotelRoomStyle>
</RoomFeatures>
</RoomData>
</PropertyDataSet>
</Transaction>
Japanischer Western mit Bett
Das folgende Beispiel zeigt ein Zimmer im Stil japanese_western
mit einem Bett in 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>
Wenn der Partner die Anzahl der Betten in japanese_western
Zimmern nicht hat, folgen Sie dem Beispiel:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-07-23T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>1234</Property>
<RoomData>
<RoomID>RoomID_1</RoomID>
<RoomFeatures>
<JapaneseHotelRoomStyle>japanese_western</JapaneseHotelRoomStyle>
</RoomFeatures>
</RoomData>
</PropertyDataSet>
</Transaction>
<PackageData>
Definiert vom Reiseplan unabhängige Metadaten für Zimmerpakete einer Unterkunft. Dieses Element enthält Informationen, die mit einem Partner und einem Hotel, aber nicht mit einem Reiseplan verknüpft sind. Der Zweck besteht darin, alle nicht zum Reiseplan gehörenden Daten einmal zu definieren und in den Reiseplandaten darauf zu verweisen.
Das <PackageData>
-Element wird an der folgenden Stelle in der XML-Hierarchie der Transaktionsnachrichten angezeigt:
+<Transaction>
+<PropertyDataSet>
// Room and package metadata + <Property> +<RoomData>
+<PackageData>
+<Result>
// Pricing and availability +<Rates>
+<RoomBundle>
+ ...
Das <PackageData>
-Element ähnelt <RoomData>
, beschreibt jedoch Preismerkmale und Bedingungen, die nicht Teil der Beschreibung des physischen Zimmers sind. Sie verwenden <RoomData>
und <PackageData>
in Kombination, um Details zu Zimmerpaketen und Preismerkmalen bereitzustellen. Verwenden Sie für einzelne Zimmer, die nicht Teil eines Pakets sind, nur <RoomData>
.
Sie können sowohl das Element <RoomData>
als auch das Element <PackageData>
für dasselbe Zimmer oder Zimmerpaket definieren. Wenn Google dieses Zimmer oder Paket in den Suchergebnissen anzeigt, werden die Beschreibungen beider Elemente, getrennt durch einen Bindestrich, angezeigt.
Wenn Sie ein einzelnes <PackageData>
-Element für eine Unterkunft aktualisieren, müssen Sie alle <PackageData>
- und <RoomData>
-Elemente für die Unterkunft aktualisieren.
Bei jedem <PropertyDataSet>
wird davon ausgegangen, dass es sich um alle Daten zu der Property handelt, 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>1000 </NumberOfMiles>
<Provider>
<Text language="en" text="United Airlines">
</Provider>
</MilesIncluded>
</PackageData>
...
...
</PropertyDataSet>
...
</Transaction>
Attribute
Das <PackageData>
-Element hat keine Attribute.
Untergeordnete Elemente
Das <PackageData>
-Element hat die folgenden untergeordneten Elemente:
Untergeordnetes Element | Erforderlich? | Typ | Beschreibung |
---|---|---|---|
<BreakfastIncluded> | Optional | boolean | Gibt an, ob das Paket Frühstück im Preis enthalten.
Gültige Werte sind 0 (oder false ) und 1 (oder true ).
Es empfiehlt sich, |
<ChargeCurrency> | Optional | enum | Wann und wo der Nutzer für eine Buchung bezahlt. Für dieses Element wird dieselbe Syntax wie für <ChargeCurrency> in <Result> verwendet.
Der Standardwert ist |
<CheckinTime> | Optional | Time | Früheste mögliche Check-in-Zeit. Die Uhrzeit muss vor 24:00 Uhr der Ortszeit des Hotels liegen. |
<CheckoutTime> | Optional | Time | Spätester mögliche Check-out-Zeit in der Ortszeit des Hotels. |
<Description> | Optional | Object | Eine detaillierte Beschreibung des Pakets. Dieses Element sollte Informationen enthalten, die weder in anderen Elementen noch im Element <Name> beschrieben sind. Geben Sie die Beschreibung des Zimmers nicht ausschließlich in Großbuchstaben an.
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 Ausstattung nicht beinhalten. Legen Sie dieses Element nicht für Zimmerpakete eines Hotels fest, bei dem für alle Zimmer kostenloses Internet zur Verfügung steht. Dieses Element gilt nicht für kabelgebundenen oder kabellosen Internetzugang im Zimmer, der nicht in den Zimmern verfügbar ist. Gültige Werte sind 0 (oder false ) und 1 (oder true ).
|
<Meals> | Optional | Object | Enthält Informationen zu Mahlzeiten in diesem Paket.
Das Element
Die optionalen Attribute werden nur verwendet, wenn Damit Mahlzeitenfilter ( |
<Name> | Required | string | Der Name des Pakets. Dieser Wert muss mit den Angaben auf der Landingpage des Hotels übereinstimmen. Geben Sie für den Wert dieses Elements nicht nur Großbuchstaben an.
Dieses Element verwendet nur das untergeordnete Element <Name> <Text text="Bed and Breakfast" language="en"/> <Text text="Lit et petit déjeuné" language="fr"/> </Name> |
<Occupancy> | Optional | integer | Die maximale Anzahl von Gästen, für die ein Zimmerpaket vorgesehen ist.
Eine große Suite bietet beispielsweise Platz für 6 Personen, ist aber nur für bis zu 4 Personen gedacht.
Dieser Wert muss kleiner oder gleich dem Element Der Wert für Wenn Sie dieses Element sowohl in Hinweis: <Occupancy> wird möglicherweise von <OccupancyDetails> begleitet,wodurch die Art der Gäste (Erwachsene oder Kinder) angegeben wird. Informationen zur Syntax und Beschreibung untergeordneter Elemente finden Sie unter <OccupancyDetails> .
|
<PackageID> | Required | string | Die eindeutige ID für das Paket. Mit dieser ID ordnen Sie die Daten des Zimmerpakets den Blöcken Sie können mit dieser ID auch auf eine allgemeine Definition eines Zimmerpakets verweisen, die in einer einzelnen Transaktionsnachricht verwendet wird, wenn Sie Zimmerpaketdaten inline definieren. |
<ParkingIncluded> | Optional | boolean | Gibt an, ob ein Zimmerpaket kostenloses Parken beinhaltet, wenn das Parken in diesem Hotel ansonsten kostenpflichtig wäre. Geben Sie für dieses Element keinen Wert für ein Hotel an, das kostenlose Parkplätze anbietet.
Gültige Werte sind |
<PhotoURL> | Optional | Object | (Wie <PhotoURL> in <RoomData> , aber für das Paket (z.B. Fotos von Mahlzeiten).)
|
<Refundable> | Optional | Object | Ermöglicht das Eintragen eines Preises als vollständig erstattungsfähig oder mit kostenloser Stornierung. Wenn keine Angabe erfolgt, werden keine Informationen zu einer Erstattung angezeigt.
Eine Erstattungsrichtlinie auf <PackageData> -Ebene überschreibt die Erstattungsrichtlinie auf <Result> -Ebene. Eine Erstattungsrichtlinie auf <Rates> -Ebene überschreibt die Erstattungsrichtlinie auf <PackageData> -Ebene. Erstattungsfähige Preise können für Nutzer auch über alternative Optionen hervorgehoben werden, ohne das Schema für Transaktionsnachrichten direkt zu ändern. Weitere Informationen zu diesen Optionen finden Sie in der Richtlinie 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: Wir empfehlen, alle Attribute festzulegen. Wenn ein oder mehrere Attribute nicht festgelegt wurden, wird eine Warnmeldung für den Feedstatus generiert. Wenn Sie keine Attribute festlegen, wird der Preis nicht als erstattungsfähig angezeigt. Folgende Attribute sind verfügbar:
Beachten Sie beim Festlegen der Attribute Folgendes:
|
<MembershipBenefits |
Optional | boolean | Der Preis beinhaltet Vorteile des Elite-Status für die Dauer des Aufenthalts. Enthält die folgenden Parameter:
|
<CarRentalIncluded> | Optional | boolean | Der Preis beinhaltet eine kostenlose Autovermietung für die Dauer des Aufenthalts. |
<MilesIncluded>> | Optional | boolean | Der Preis beinhaltet Vielfliegermeilen. Zu den Parametern gehören:
|
<OnPropertyCredit> | Optional | boolean | Der Preis beinhaltet Guthaben in der Unterkunft (Lebensmittel und Getränke, Resort, Spa usw.). Parameter:
|
<AirportTransportationIncluded> | Optional | Object | Der Preis für den Shuttle zum/vom nahe gelegenen Flughafen ist im Preis inbegriffen. Das optionale Attribut direction gibt die Richtung der Beförderung an. Gültige Werte:
from : Es wird ein Transport vom Flughafen zur Unterkunft angeboten. Dies ist der Standardwert, wenn keine Richtung angegeben wird.
to : Ein Shuttle zum Flughafen wird vom Hotel angeboten.
round_trip : Der Transport vom und zum Flughafen wird angeboten.
|
Beispiele
Einzelzimmerpaket
Im folgenden Beispiel wird ein Einzelzimmerpaket mit einer Belegung von 2 Personen (1 Erwachsener und 1 Kind) definiert. Es enthält Frühstück:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>1234</Property>
<PackageData>
<Occupancy>2</Occupancy>
<OccupancyDetails>
<NumAdults>1</NumAdults>
<Children>
<Child age="17"/>
</Children>
</OccupancyDetails>
<PackageID>P54321</PackageID>
<Name>
<Text text="Breakfast Included" language="en"/>
<Text text="Avec le petit déjeuner" language="fr"/>
</Name>
<Description>
<Text text="Two certificates for continental
breakfast will be provided." language="en"/>
<Text text="Deux certificats pour le petit déjeuner
continental seront fournis." language="fr"/>
</Description>
<BreakfastIncluded>1</BreakfastIncluded>
</PackageData>
</PropertyDataSet>
</Transaction>
Zimmer- und Paketmetadaten
Im folgenden Beispiel werden Zimmer- und Paketmetadaten definiert:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>180054</Property>
<RoomData>
<RoomID>060773</RoomID>
<Name>
<Text text="Single Bed Room" language="en"/>
<Text text="Chambre single" language="fr"/>
</Name>
<Description>
<Text text="Non-smoking" language="en"/>
<Text text="Pas de fumiers" language="fr"/>
</Description>
<PhotoURL>
<Caption>
<Text text="Living area" language="en"/>
<Text text="Le chambre" language="fr"/>
</Caption>
<URL>http://www.foo.com/static/bar/image1234.jpg</URL>
</PhotoURL>
</RoomData>
<PackageData>
<PackageID>P54321</PackageID>
<Name>
<Text text="Breakfast Included" language="en"/>
<Text text="Avec le petit déjeuner" language="fr"/>
</Name>
<Description>
<Text text="Includes a delightful array of jams and jellies." language="en"/>
<Text text="Comprend une délicieuse gamme de confitures et gelées." language="fr"/>
</Description>
<BreakfastIncluded>1</BreakfastIncluded>
</PackageData>
</PropertyDataSet>
</Transaction>
Pakete für mehrere Zimmer
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>
<Provider>
<Text language="en" text="United Airlines"/>
</Provider>
</MilesIncluded>
<AirportTransportationIncluded direction="from"/>
</PackageData>
</PropertyDataSet>
<!-- The actual list of prices -->
<Result>
…
</Result>
</Transaction>
Mahlzeiten und Fotos
Im folgenden Beispiel werden Zimmer- und Paketmetadaten für Mahlzeiten, Fotos sowie Check-in- und Check-out-Zeiten definiert:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>1234</Property>
<PackageData>
<PackageID>PackageID_1</PackageID>
<Name>
<Text text="Meals Included" language="en"/>
</Name>
<PhotoURL>
<Caption>
<Text text="Breakfast" language="en"/>
<Text text="朝食" language="ja"/>
</Caption>
<URL>http://example.com/static/bar/image1234.jpg</URL>
</PhotoURL>
<Meals>
<!-- Guests can choose to have breakfast in their room or in another
space to avoid contact with other guests. -->
<Breakfast included="1" in_room="1" in_private_space="1"/>
<Dinner included="1" buffet="1"/>
</Meals>
<CheckinTime>15:00</CheckinTime>
<CheckoutTime>11:00</CheckoutTime>
</PackageData>
</PropertyDataSet>
</Transaction>
Frühstück
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>1234</Property>
<PackageData>
<PackageID>PackageID_1</PackageID>
<Name>
<Text text="Breakfast Included" language="en"/>
</Name>
<PhotoURL>
<Caption>
<Text text="Breakfast" language="en"/>
<Text text="朝食" language="ja"/>
</Caption>
<URL>http://example.com/static/bar/image1234.jpg</URL>
</PhotoURL>
<Meals>
<Breakfast included="true"/>
<!-- Dinner not included needs to be explicitly specified -->
<Dinner included="false"/>
</Meals>
<CheckinTime>15:00</CheckinTime>
<CheckoutTime>11:00</CheckoutTime>
</PackageData>
</PropertyDataSet>
</Transaction>
<Result>
Ein Container für Preis- und Verfügbarkeitsaktualisierungen in einer <Transaction>
-Nachricht.
Das <Result>
-Element wird an der folgenden Stelle in der XML-Hierarchie der Transaktionsnachrichten angezeigt:
+<Transaction>
+<PropertyDataSet>
// Room and package metadata + <Property> +<RoomData>
+<PackageData>
+<Result>
// Pricing and availability +<Rates>
+<RoomBundle>
+ ...
Verwenden Sie <Result>
, um Zimmerpreise festzulegen oder zu aktualisieren und um verfügbares Inventar zu definieren. In diesem Element definierte Objekte verweisen in der Regel auf vom Reiseplan unabhängige Metadaten eines Zimmers oder Pakets (z. B. eine Beschreibung oder Ausstattung), die in <PackageData>
und <RoomData>
definiert sind.
Transaktionsnachrichten mit Preisaktualisierungen werden in der Regel sehr häufig gesendet. Wie und wie oft Sie das tun, hängt von Ihrem Übermittlungsmodus ab.
Sie können <Result>
in einer Transaktionsnachricht verwenden, um Reisepläne zu entfernen, wie unter Inventar entfernen beschrieben.
Weitere Informationen zum Aktualisieren von Preisen und Verfügbarkeit mithilfe von Transaktionsnachrichten finden Sie unter Inventar hinzufügen und aktualisieren.
Eine Transaktionsnachricht kann eine beliebige Anzahl von <Result>
-Elementen enthalten, solange die Größe der Nachricht 100 MB nicht überschreitet.
Syntax
Das <Result>
-Element verwendet die folgende Syntax:
<?xml version="1.0" encoding="UTF-8"?> <Transaction ... > <Result> <!-- Required --> <Property>hotel_ID</Property> <!-- Required --> <Checkin>YYYY-MM-DD</Checkin> <!-- Required --> <Nights>number_of_nights</Nights> <Baserate currency="currency_code">price</Baserate> <!-- Only required when <Baserate> contains a real price --> <Tax currency="currency_code">tax_amount</Tax> <!-- Only required when <Baserate> contains a real price --> <OtherFees currency="currency_code">fee_amount</OtherFees> <Refundable available="[false|true]" refundable_until_days="number_of_days" refundable_until_time="time"/> <RoomID>room_ID</RoomID> <PackageID>package_ID</PackageID> <ExpirationTime>expiration_time</ExpirationTime> <ChargeCurrency>[deposit|hotel|installments|web]</ChargeCurrency> <Occupancy>max_number_of_intended_occupants</Occupancy> <!-- For Baserate, occupancy value must be greater than or equal to 2. If a value is not provided for occupancy, it defaults to 2. --> <OccupancyDetails>occupancy_info</OccupancyDetails> <Rates>...</Rates> <RoomBundle>...</RoomBundle> <AllowablePointsOfSale> <PointOfSale id="landing_page_identifier"/> ... </AllowablePointsOfSale> <Custom[1-5]>custom_value</Custom[1-5]> </Result> ... </Transaction>
Attribute
Das <Result>
-Element hat die folgenden Attribute:
Attribut | Erforderlich/Optional? | Typ | Beschreibung |
---|---|---|---|
mergeable | Optional | boolean | Standardmäßig überschreiben neue Preise für ein bestimmtes Hotel/Reiseplan-Paar alle vorherigen (nicht abgelaufenen) Preise, die im Cache von Google vorhanden sind. Mit dem Attribut „Mergeable“ können Sie zusätzliche Preise im Cache von Google speichern, ohne vorherige Preisinformationen zu löschen. Bei Livepreisabfragen mit Kontextantworten wird für dieses Attribut immer true festgelegt (unabhängig von der Antwort auf Transaktionsnachrichten). |
Untergeordnete Elemente
Das <Result>
-Element hat die folgenden untergeordneten Elemente:
Untergeordnetes Element | Erforderlich? | Typ | Beschreibung |
---|---|---|---|
<AllowablePointsOfSale> | Optional | Object | Eine oder mehrere Landingpages, die für das Hotel infrage kommen. Eine Landingpage ist eine Website, auf der der Buchungsprozess des Endnutzers verarbeitet werden kann. Wenn Sie bestimmte Landingpages explizit einschließen und andere ausschließen möchten, fügen Sie ein oder mehrere <AllowablePointsOfSale> -Elemente hinzu, die dem Attribut id des Elements <PointOfSale> in der Landingpage-Datei entsprechen.
Ohne dieses Element können alle in der Landingpage-Datei definierten Landingpages für die Buchung des Zimmers verwendet werden. Weitere Informationen finden Sie unter Syntax der Landingpage-Datei. |
<Baserate> | Optional | float | Der Preis des Zimmers für den Aufenthalt. Der Wert dieses Elements sollte Folgendes widerspiegeln:
Wenn das Zimmer für den Reiseplan nicht verfügbar ist, sollte Informationen zum Entfernen eines Zimmerpakets finden Sie unter Zimmerpaket entfernen. Der <Baserate currency="USD">1200.40</Baserate> Das Element
|
<ChargeCurrency> | Optional | enum | Wann und wo der Nutzer für eine Buchung bezahlt. Dieses Element kann in einer Transaktionsnachricht im Element <Result> für den Hotelpreis oder im <PackageData> -Block für ein Zimmerpaket verwendet werden.
Gültige Werte sind:
Der Standardwert ist |
<Checkin> | Required | Date | Das Check-in-Datum für einen Reiseplan im Format Datum. Die Kombination aus dem Element <Nights> und dem Element <Checkin> ergibt einen Reiseplan. |
<Custom[1‑5]> | Optional | string | Definiert ein benutzerdefiniertes Feld, in dem Sie zusätzliche Daten zu einem Hotel übergeben können. Sie können bis zu fünf benutzerdefinierte Werte mit den folgenden Elementnamen übergeben:
Mit den <Custom>-Elemente, die im Element |
<ExpirationTime> | Optional | DateTime | Datum und Uhrzeit, zu der der Preis als abgelaufen gilt (mindestens 3 Stunden).
Wir empfehlen, keine Ablaufzeitstempel anzugeben, wenn dies für Ihre Preisstruktur nicht entscheidend ist. Google bietet keine abgelaufenen Preise an und alle Reisepläne mit einem abgelaufenen Preis kommen für Livepreisabfragen infrage. |
<Nights> | Required | integer | Die Anzahl der Übernachtungen eines Reiseplans. Der Wert des Elements <Nights> muss eine positive Ganzzahl sein.
Die Kombination aus <Nights> und <Checkin> ergibt einen Reiseplan. |
<OtherFees> | Optional | float | Neben dem Basispreis und den Steuern anfallende Gebühren, die sich auf den endgültigen Zimmerpreis auswirken. Das Element <OtherFees> verwendet nur das Attribut currency , das den aus drei Buchstaben bestehenden Währungscode für die Gebühren definiert. Beispiel: USD
Das Element |
<Occupancy> | Optional | integer | Gibt die maximale Anzahl von Personen an.
Wenn <Occupancy> unter <Result> angezeigt wird, muss mindestens 2 angegeben werden. <Occupancy> wird möglicherweise von <OccupancyDetails> begleitet, um die Art der Gäste (Erwachsene oder Kinder) anzugeben. 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.
Hinweis: Wenden Sie sich an Ihr Supportteam, um die Funktion zum Senden von Preisen für eine von 2 abweichende Belegung zu aktivieren. |
<PackageID> | Optional | string | Die eindeutige ID des Pakets, um es vordefinierten Paketdaten zuzuordnen. Wird auch zum Ausfü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 betroffen ist (Preis, Reiseplan, Zimmerpaket oder Metadaten). Der Wert dieses Elements muss ein String sein. Der Wert dieses Elements muss mit dem Eintrag <id> übereinstimmen, den Sie in Ihrem Hotellistenfeed definiert haben.
|
<Rates> | Optional | <Rates> |
Ein Container für einen oder mehrere <Rate> -Blöcke. Jedes <Rate> -Element in <Rates> definiert einen anderen Preis für die Kombination aus Zimmer und Reiseplan.
Verwenden Sie das Element |
<Refundable> | Optional | Object | Ermöglicht das Eintragen eines Preises als vollständig erstattungsfähig oder mit kostenloser Stornierung. Wenn keine Angabe erfolgt, werden keine Informationen zu einer Erstattung angezeigt.
Eine Erstattungsrichtlinie auf <PackageData> -Ebene überschreibt die Erstattungsrichtlinie auf <Result> -Ebene. Eine Erstattungsrichtlinie auf <Rates> -Ebene überschreibt die Erstattungsrichtlinie auf <PackageData> -Ebene. Erstattungsfähige Preise können für Nutzer auch über alternative Optionen hervorgehoben werden, ohne das Schema für Transaktionsnachrichten direkt zu ändern. Weitere Informationen zur Richtlinie 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: Wir empfehlen, alle Attribute festzulegen. Wenn ein oder mehrere Attribute nicht festgelegt wurden, wird eine Warnmeldung für den Feedstatus generiert. Wenn Sie keine Attribute festlegen, wird der Preis nicht als erstattungsfähig angezeigt. Folgende Attribute sind verfügbar:
Beachten Sie beim Festlegen der Attribute Folgendes:
|
<RoomBundle> | Optional | <RoomBundle> |
Ein Container mit Informationen zu physischen Beschreibungen eines Zimmers mit Preisen, Ausstattungspakete und einigen Details zu Kaufrichtlinien für das jeweilige Hotel und den Reiseplan.
Mit diesem Element können Sie in der Regel den Preis für das Basiszimmer und verschiedene Zimmertypen innerhalb derselben Unterkunft definieren. Es ist zwar möglich, Beschreibungen von Zimmerpaketen inline zu definieren, Sie sollten diese Informationen jedoch in einer separaten Transaktionsnachricht definieren. Google speichert Metadaten, damit du bei zukünftigen Preisaktualisierungen darauf verweisen kannst, anstatt sie zu wiederholen. |
<RoomID> | Optional | string | Die eindeutige ID des Zimmers, um es vordefinierten Zimmerdaten zuzuordnen. Wird auch verwendet, um die Landingpage-Variable PARTNER-ROOM-ID auszufüllen. Weitere Informationen finden Sie unter Zimmerpaket-Metadaten. |
<Tax> | Optional | float | Die Steuern, die für den endgültigen Preis eines Zimmers berechnet werden.
Das Element <Tax> verwendet nur das Attribut currency , das den aus drei Buchstaben bestehenden Währungscode für die Steuern definiert. Beispiel: USD Das Element <Tax> ist erforderlich, wenn <Baserate> größer als null ist. |
<Unavailable> | Optional | Object | Gibt an, dass der Reiseplan nicht gebucht werden kann. Er dient als Container für detailliertere Gründe, warum der Reiseplan nicht verfügbar war. Einer oder mehrere der folgenden Nichtverfügbarkeitsgründe können unter dem <Unavailable> -Tag verschachtelt sein:
|
Beispiele
Beispiel mit mehreren Unterkünften
Im folgenden Beispiel werden ein Reiseplan und die zugehörigen Preise 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>
</Result>
</Transaction>
In diesem Beispiel werden keine Details über das Zimmer gezeigt, wie z. B. eine Beschreibung, ein Bild mit Untertitel, der Raumname oder die Kapazität.
Sie können diese Informationen einmalig in einer separaten Transaktionsnachricht definieren, die Google speichert. Sie können ihn dann in allen nachfolgenden Preis- und Inventaraktualisierungen verwenden. Weitere Informationen finden Sie unter Zimmerpaket-Metadaten.
Beispiel für mehrere Preise
Im folgenden Beispiel werden ein einzelner Reiseplan und eine Unterkunft mit mehreren Preisen für verschiedene Belegungen definiert. Mit dem Element <Rates>
können Sie Preise mit mehreren Preisen für eine bestimmte Unterkunft angeben. Das folgende Beispiel ist auch für Ferienunterkünfte 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
Im folgenden Beispiel wird ein Reiseplan definiert, dessen Verfügbarkeit nicht von nachgelagerten Kanälen abgerufen werden konnte, eine zweite, die unter der Mindestaufenthaltsdauer liegt und bereits für die angegebenen Termine gebucht wurde, und einen dritten Reiseplan, dessen Unterkunft am Ankunftsdatum geschlossen ist, aber während des Aufenthalts geöffnet wird:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-23T16:20:00-04:00" id="42">
<Result>
<Property>060773</Property>
<Checkin>2018-06-10</Checkin>
<Nights>2</Nights>
<Unavailable>
<NotFetched/>
</Unavailable>
</Result>
<Result>
<Property>073313</Property>
<Checkin>2018-06-10</Checkin>
<Nights>2</Nights>
<Unavailable>
<NoVacancy/>
<MinNightStay value=3/>
</Unavailable>
</Result>
<Result>
<Property>052213</Property>
<Checkin>2018-06-10</Checkin>
<Nights>10</Nights>
<Unavailable>
<PropertyClosed first_open="2018-06-15" first_closed="2018-06-10"/>
</Unavailable>
</Result>
</Transaction>
<Rates>
Ein Container für ein oder mehrere <Rate>
-Blöcke. Jedes <Rate>
-Element in <Rates>
definiert einen anderen Preis für die Zimmer- oder Reiseplankombination.
Verwenden Sie das Element <Rates>
nur, wenn es mehrere Preise für dasselbe Zimmer oder dieselbe Reiseplankombination gibt. Sie definieren beispielsweise mehrere Preise für nutzerabhängige Preise, Tarife für bestimmte Zielgruppen oder nutzerabhängige Preise in Zimmerpaketen.
Das <Rates>
-Element wird an der folgenden Stelle in der XML-Hierarchie der Transaktionsnachrichten angezeigt:
+<Transaction>
+<PropertyDataSet>
// Room and package metadata + <Property> +<RoomData>
+<PackageData>
+<Result>
// Pricing and availability +<Rates>
+<RoomBundle>
(Can also contain<Rates>
) + ...
Werte, die in einem <Rate>
festgelegt werden, überschreiben preisbezogene Werte für das übergeordnete Element <Result>
oder <RoomBundle>
. Wenn sie nicht in <Rate>
festgelegt sind, übernehmen sie den Wert vom übergeordneten Element. Nur <AllowablePointsofSale> wird vom Element <RoomBundle>
übernommen.
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> ... <Custom[1-5]>custom_value</Custom[1-5]> </Rate> ... </Rates> </Result> ... </Transaction>
Attribute
Das <Rates>
-Element hat die folgenden Attribute:
Attribut | Erforderlich/Optional? | Beschreibung |
---|---|---|
rate_rule_id | Optional | Bei nutzerabhängigen Preisen entspricht diese ID einem Preis einer Definition in Ihrer Datei zum Festlegen der Preisregel. Die Zeichenbeschränkung für dieses Feld beträgt 40 Zeichen. |
Untergeordnete Elemente
Das <Rates>
-Element hat die folgenden untergeordneten Elemente:
Untergeordnetes Element | Erforderlich? | Typ | Beschreibung |
---|---|---|---|
<AllowablePointsOfSale> | Optional | Object | Eine oder mehrere Landingpages, die für das Hotel infrage kommen. Für dieses Element wird die gleiche Syntax wie für <AllowablePointsOfSale> in <Result> verwendet. |
<Baserate> | Required | float | Der Preis des Zimmers für den Aufenthalt. Für dieses Element wird dieselbe Syntax wie für <Baserate> in <Result> verwendet.
Hinweis:Das untergeordnete Element |
<ChargeCurrency> | Optional | enum | Wann und wo der Nutzer für eine Buchung bezahlt. Für dieses Element wird die gleiche Syntax wie für <ChargeCurrency> in <Result> verwendet. |
<Custom[1‑5]> | Optional | string | Benutzerdefinierte Felder, mit denen Sie zusätzliche Daten zu einem Hotel an eine Landingpage übergeben können. Für dieses Element wird die gleiche Syntax wie für <Custom[1‑5]> in <Result> verwendet. Pro benutzerdefiniertes Feld dürfen maximal 200 Zeichen verwendet werden. Weitere Informationen finden Sie unter
Landingpage-Dateien.
Wenn im Element |
<ExpirationTime> | Optional | DateTime | Datum und Uhrzeit, zu der der Preis als abgelaufen gilt. Für dieses Element wird die gleiche Syntax wie für <ExpirationTime> in <Result> verwendet. |
<Occupancy> | Optional | integer | Gibt die maximale Anzahl von Personen an.
|
<OtherFees> | Required | float | Neben dem Basispreis und den Steuern anfallende Gebühren, die sich auf den endgültigen Zimmerpreis auswirken. Für dieses Element wird die gleiche Syntax wie für <OtherFees> in <Result> verwendet. |
<Refundable> | Optional | Object | Ermöglicht das Eintragen eines Preises als vollständig erstattungsfähig oder mit kostenloser Stornierung. Wenn keine Angabe erfolgt, werden keine Informationen zu einer Erstattung angezeigt.
Eine Erstattungsrichtlinie auf <PackageData> -Ebene überschreibt die Erstattungsrichtlinie auf <Result> -Ebene. Eine Erstattungsrichtlinie auf <Rates> -Ebene überschreibt die Erstattungsrichtlinie auf <PackageData> -Ebene. Erstattungsfähige Preise können für Nutzer auch über alternative Optionen hervorgehoben werden, ohne das Schema für Transaktionsnachrichten direkt zu ändern. Weitere Informationen zu diesen Optionen finden Sie in der Richtlinie 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: Wir empfehlen, alle Attribute festzulegen. Wenn ein oder mehrere Attribute nicht festgelegt wurden, wird eine Warnmeldung für den Feedstatus generiert. Wenn Sie keine Attribute festlegen, wird der Preis nicht als erstattungsfähig angezeigt. Folgende Attribute sind verfügbar:
Beachten Sie beim Festlegen der Attribute Folgendes:
|
<Tax> | Required | float | Die Steuern, die für den endgültigen Preis eines Zimmers berechnet werden. Für dieses Element wird die gleiche Syntax wie für <Tax> in <Result> verwendet. |
Beispiele
Basispreis und nutzerabhängiger Preis
Das folgende Beispiel zeigt eine Transaktionsnachricht, die einen Basispreis und einen nutzerabhängigen Preis 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>
<!-- NOTE: OtherFees is inherited from the above setting -->
<Custom1>ratecode123</Custom1>
</Rate>
</Rates>
</Result>
</Transaction>
Mehrere nutzerabhängige Preise
Im folgenden Beispiel werden ein Basispreis und mehrere nutzerabhängige Preise innerhalb eines <RoomBundle>
definiert:
<?xml version="1.0" encoding="UTF-8" ?>
<Transaction timestamp="2023-05-18T16:20:00-04:00" id="42">
<Result>
<Property>1234</Property>
<Checkin>2023-04-10</Checkin>
<Nights>2</Nights>
<!-- When Google receives new room bundle information for an itinerary, all
previous room bundle pricing is dropped from Google's cache. Thus, if you
want to delete a specific room bundle from Google's cache, you may do so
by simply not providing that specific room bundle in subsequent transaction
messages. -->
<RoomBundle>
...
<!-- RoomID is required, PackageID is recommended. -->
<RoomID>5</RoomID>
<PackageID>ABC</PackageID>
<!-- Baserate is required. -->
<Baserate currency="USD">275.00</Baserate>
<Tax currency="USD">27.50</Tax>
<OtherFees currency="USD">2.00</OtherFees>
<!-- RatePlanID is optional and represents the unique identifier for a
room and package data combination. We strongly recommend using RatePlanID
as a variable to build your dynamic landing page (formerly Point of Sale)
URL. For details, see Using Variables and Conditions. -->
<RatePlanID>5-ABC</RatePlanID>
<!-- Occupancy is mandatory for RoomBundle elements. -->
<!-- Elements below will get inherited to nested rate elements. -->
<Occupancy>2</Occupancy>
<OccupancyDetails>
<NumAdults>2</NumAdults>
</OccupancyDetails>
<InternetIncluded>1</InternetIncluded>
<!-- Rate rule "mobile" overrides chargeCurrency, "us_or_gb" doesn't. -->
<ChargeCurrency>web</ChargeCurrency>
<Custom1>ratebasic</Custom1>
<!-- Neither rate overrides Custom2. -->
<Custom2>ratebasic</Custom2>
<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>
<!-- The value below overrides Custom1 from roombundle. -->
<Custom1>ratecode321</Custom1>
<!-- Custom2 is inherited from roombundle. -->
</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>
<!-- The value below overrides Custom1 from roombundle. -->
<Custom1>ratecode432</Custom1>
<!-- Custom2 is inherited from roombundle. -->
</Rate>
</Rates>
</RoomBundle>
</Result>
</Transaction>
<RoomBundle>
Definiert Preise und Verfügbarkeit für Zimmerpakete als untergeordnetes Element von <Result>
in einer <Transaction>
-Nachricht. Definieren Sie für jedes Paket oder jede Reiseplankombination ein separates Element. Verwenden Sie <RoomData>
, um das Paket und die Bedingungen der Zimmerpakete zu definieren.
Das <RoomBundle>
-Element wird an der folgenden Stelle in der XML-Hierarchie der Transaktionsnachrichten angezeigt:
+<Transaction>
+<PropertyDataSet>
// Room and package metadata + <Property> +<RoomData>
+<PackageData>
+<Result>
// Pricing and availability +<Rates>
+<RoomBundle>
+ ...
Weitere Informationen finden Sie unter Verwenden von Zimmerpaketen.
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> <!-- 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> <Custom1>custom_value_1</Custom1> <Custom2>custom_value_2</Custom2> <Custom3>custom_value_3</Custom3> <Custom4>custom_value_4</Custom4> <Custom5>custom_value_5</Custom5> </RoomBundle> ... </Result> </Transaction>
Attribute
Das <RoomBundle>
-Element hat keine Attribute.
Untergeordnete Elemente
Das <RoomBundle>
-Element hat die folgenden untergeordneten Elemente:
Untergeordnetes Element | Erforderlich? | Typ | Beschreibung |
---|---|---|---|
<Baserate> | Required | float | Definiert den Preis des Zimmerpakets für den Aufenthalt. Für dieses Element wird die gleiche Syntax wie für <Baserate> in <Result> verwendet, mit der folgenden Ausnahme:
|
<BreakfastIncluded> | Optional | boolean | Gibt an, ob dieses Zimmerpaket Frühstück im Preis beinhaltet. |
<ChargeCurrency> | Optional | enum | Wann und wo der Nutzer für eine Buchung bezahlt. Für dieses Element wird dieselbe Syntax wie für <ChargeCurrency> in <Result> verwendet.
Der Standardwert ist |
<Custom[1‑5]> | Optional | string | Benutzerdefinierte Felder zur Weitergabe zusätzlicher Daten an die Landingpages für das Zimmerpaket. Für diese Elemente wird die gleiche Syntax wie für <Custom[1-5]> in <Result> verwendet. Pro benutzerdefiniertes Feld dürfen maximal 200 Zeichen verwendet werden. Weitere Informationen finden Sie in den Landingpage-Dateien.
Wenn im Element |
<InternetIncluded> | Optional | boolean | Wenn ein Zimmerpaket kostenlosen Internetzugang beinhaltet, andere Pakete diese Ausstattung nicht beinhalten. Legen Sie dieses Element nicht für Zimmerpakete eines Hotels fest, bei dem für alle Zimmer kostenloses Internet zur Verfügung steht. Dieses Element gilt nicht für kabelgebundenen oder kabellosen Internetzugang im Zimmer, der nicht in den Zimmern verfügbar ist. |
<Occupancy> | Required | integer | Die maximale Anzahl von Gästen, für die ein Zimmerpaket vorgesehen ist. Eine große Suite kann beispielsweise physisch Platz für 6 Personen bieten, aber das „Flitterwochenpaket“ ist nur für 2 Gäste vorgesehen.
Dieser Wert muss kleiner oder gleich Verwenden Sie beim Definieren der Belegung in Ihrer Landingpage-URL die Variablen Der Wert für Hinweise:
|
<OtherFees> | Required | float | Neben dem Basispreis und den Steuern anfallende Gebühren, die sich auf den endgültigen Zimmerpreis auswirken. Das Element <OtherFees> verwendet nur das Attribut currency , das den aus drei Buchstaben bestehenden Währungscode für die Gebühren definiert. Verwenden Sie beispielsweise USD für US-Dollar. |
<PackageID> | Optional (recommended) | string | Die eindeutige ID für die Paketdaten. Mit dieser ID ordnen Sie die Daten des Zimmerpakets den in <PackageData> gesendeten Daten zu. Weitere Informationen finden Sie unter Zimmerpaket-Metadaten. Sie können mit dieser ID auch auf eine allgemeine Definition eines Zimmerpakets verweisen, die in einer einzelnen Transaktionsnachricht verwendet wird, wenn Sie die Daten eines Zimmerpakets inline definieren. |
<ParkingIncluded> | Optional | boolean | Gibt an, ob ein Zimmerpaket kostenloses Parken beinhaltet, wenn das Parken in diesem Hotel ansonsten kostenpflichtig wäre. Geben Sie für dieses Element keinen Wert für ein Hotel an, das kostenlose Parkplätze anbietet.
Gültige Werte sind |
<RatePlanID> | Optional | string | Die Preisplan-ID ist die eindeutige Kennung für eine Kombination aus Zimmer und Paket. Bei einem <RoomID> -Wert von 5 und einem <PackageID> -Wert von ABC könnten Sie beispielsweise einen Wert von 5-ABC für <RatePlanID> verwenden. Wir empfehlen Ihnen dringend, RatePlanID als Variable zu verwenden, um Ihre dynamische Landingpage-URL (früher Point of Sale) zu erstellen.
Weitere Informationen finden Sie unter Variablen und Bedingungen verwenden. |
<Rates> | Optional | <Rates> |
Preise, die die Standardeinstellungen für dieses Zimmerpaket überschreiben. Für dieses Element wird die gleiche Syntax wie für <Rates> in <Result> verwendet. |
<Refundable> | Optional | Object | Ermöglicht das Eintragen eines Preises als vollständig erstattungsfähig oder mit kostenloser Stornierung. Wenn keine Angabe erfolgt, werden keine Informationen zu einer Erstattung angezeigt.
Eine Erstattungsrichtlinie auf <PackageData> -Ebene überschreibt die Erstattungsrichtlinie auf <Result> -Ebene. Eine Erstattungsrichtlinie auf <Rates> -Ebene überschreibt die Erstattungsrichtlinie auf <PackageData> -Ebene. Erstattungsfähige Preise können für Nutzer auch über alternative Optionen hervorgehoben werden, ohne das Schema für Transaktionsnachrichten direkt zu ändern. Weitere Informationen zu diesen Optionen finden Sie in der Richtlinie 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: Wir empfehlen, alle Attribute festzulegen. Wenn ein oder mehrere Attribute nicht festgelegt wurden, wird eine Warnmeldung für den Feedstatus generiert. Wenn Sie keine Attribute festlegen, wird der Preis nicht als erstattungsfähig angezeigt. Folgende Attribute sind verfügbar:
Beachten Sie beim Festlegen der Attribute Folgendes:
|
<RoomID> | Required | string | Die eindeutige ID für die Zimmerdaten. Mit dieser ID können Sie die Daten des Zimmerpakets mit den in <RoomData> gesendeten Daten abgleichen.
Weitere Informationen finden Sie unter
Zimmerpaket-Metadaten. Sie können mit dieser ID auch auf eine allgemeine Zimmerdefinition in einer einzelnen Transaktionsnachricht verweisen, wenn Sie Zimmerdaten inline definieren. |
<Tax> | Required | float | Die Steuern, die für den endgültigen Preis eines Zimmers berechnet werden.
Das Element <Tax> verwendet nur das Attribut currency , das den aus drei Buchstaben bestehenden Währungscode für die Steuern definiert. Verwenden Sie zum Beispiel USD für Euro. |
Beispiele
Einzelbelegung im Paket
Im folgenden Beispiel wird eine Antwort mit einem einzelnen Belegungspaket definiert.
Wenn ein Nutzer 1
in der Belegungsauswahl auswählt, zeigt Google unabhängig von der Belegung den niedrigsten zulässigen Preis an.
Wenn kein Preis für eine Einzelbelegung verfügbar ist, zeigt Google den niedrigsten Preis für ein Doppelzimmer an. Preise für Einzelbelegung werden nicht live abgefragt, wenn für einen Reiseplan ein Doppelzimmer oder mehr Preise im Cache gespeichert werden.
In diesem Beispiel wird mit den Elementen <RoomID>
und <PackageID>
auf vordefinierte Zimmer- und Paketmetadaten verwiesen. Mit den Elementen <RoomData>
und <PackageData>
können Sie diese Informationen definieren.
<!-- Efficient method of defining Room Bundles-->
<!----- Occupancy of 1 example ----->
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="12345678">
<!-- Part1: Define RoomData and PackageData in PropertyDataSet -->
<!-- Note: Once defined it does not have to be repeated for future
Transaction Messages.
PropertyDataSets can also be defined and sent in their own
Transaction Message separately from pricing. Google can be
configured to pull just PropertyDataSets once per day
(or on a predefined frequency). -->
<PropertyDataSet>
<Property>180054</Property>
<!-- Can be reused by multiple Room Bundles -->
<RoomData>
<RoomID>060773</RoomID>
<Name>
<Text text="Single Queen Room - Non-Smoking" language="en"/>
<Text text="Chambre de la Roi Premium - Pas de Fumeurs" language="fr"/>
</Name>
<!-- Room can accommodate up to 4, but package data specifies occupancy
between 1 to 4 -->
<Capacity>4</Capacity>
</RoomData>
<RoomData>
<RoomID>436233</RoomID>
<Name>
<Text text="Premium King Room - Non-Smoking" language="en"/>
<Text text="Chambre de le Roi Premium - Pas de Fumeurs" language="fr"/>
</Name>
<Capacity>4</Capacity>
</RoomData>
<!-- Can be reused by multiple Room Bundles -->
<PackageData>
<PackageID>P11111</PackageID>
<Occupancy>1</Occupancy>
<ChargeCurrency>web</ChargeCurrency>
<Refundable available="1" refundable_until_days="7"
refundable_until_time="18:00:00"/>
<ParkingIncluded>1</ParkingIncluded>
<InternetIncluded>1</InternetIncluded>
</PackageData>
<PackageData>
<PackageID>P54321</PackageID>
<Occupancy>2</Occupancy>
<ChargeCurrency>web</ChargeCurrency>
<Refundable available="1" refundable_until_days="7"
refundable_until_time="18:00:00"/>
<ParkingIncluded>1</ParkingIncluded>
<InternetIncluded>1</InternetIncluded>
</PackageData>
<PackageData>
<PackageID>P12345</PackageID>
<Occupancy>4</Occupancy>
<ChargeCurrency>web</ChargeCurrency>
<Refundable available="1" refundable_until_days="1"
refundable_until_time="18:00:00"/>
<ParkingIncluded>1</ParkingIncluded>
<InternetIncluded>1</InternetIncluded>
</PackageData>
</PropertyDataSet>
<!-- Efficient method of defining Room Bundles -->
<!-- Part 2: Reference RoomData and PackageData through ID -->
<Result>
<!-- Single occupancy pricing will be specified in a room bundle below -->
<Property>180054</Property>
<Checkin>2017-10-07</Checkin>
<Nights>2</Nights>
<!-- Base Room Bundle -->
<RoomBundle>
<RoomID>060773</RoomID>
<PackageID>P54321</PackageID>
<Baserate currency="USD">199.99</Baserate>
<Tax currency="USD">25.12</Tax>
<OtherFees currency="USD">2.00</OtherFees>
<RatePlanID>060773-P54321</RatePlanID>
</RoomBundle>
<RoomBundle>
<RoomID>060773</RoomID>
<PackageID>P11111</PackageID>
<!-- Price for 1 ("occupancy") is the lowest price and will be
displayed -->
<Baserate currency="USD">174.99</Baserate>
<Tax currency="USD">22.08</Tax>
<OtherFees currency="USD">2.00</OtherFees>
<RatePlanID>060773-P11111</RatePlanID>
</RoomBundle>
<!-- Premium Room Bundle -->
<RoomBundle>
<RoomID>436233</RoomID>
<PackageID>P12345</PackageID>
<!-- Price for 4 ("occupancy"), any eligible room bundle with 1 or more
occupancy will be displayed-->
<Baserate currency="USD">298.88</Baserate>
<Tax currency="USD">42.12</Tax>
<OtherFees currency="USD">10.00</OtherFees>
<RatePlanID>436233-P12345</RatePlanID>
</RoomBundle>
<!-- ..Continue providing all available RoomBundle rates under matched
property for 1 or more occupancies..-->
</Result>
</Transaction>
Zwei oder mehr Belegungen
Im folgenden Beispiel wird eine Antwort definiert, die zwei oder mehr Belegungen enthält.
In diesem Beispiel wird mit den Elementen <RoomID>
und <PackageID>
auf vordefinierte Zimmer- und Paketmetadaten verwiesen. Mit den Elementen <RoomData>
und <PackageData>
können Sie diese Informationen definieren.
<!-- Efficient method of defining Room Bundles-->
<!----- Occupancy of 3 example ----->
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="12345678">
<!-- Efficient method of defining Room Bundles-->
<!-- Part1: Define RoomData and PackageData in PropertyDataSet -->
<PropertyDataSet>
<Property>180054</Property>
<!-- Can be reused by multiple Room Bundles -->
<RoomData>
<RoomID>060773</RoomID>
<Name>
<Text text="Single Queen Room - Non-Smoking" language="en"/>
<Text text="Chambre de la Roi Premium - Pas de Fumeurs" language="fr"/>
</Name>
<!-- Room can accommodate up to 4, but package data specifies occupancy
between 1 to 4 -->
<Capacity>4</Capacity>
</RoomData>
<RoomData>
<RoomID>436233</RoomID>
<Name>
<Text text="Premium King Room - Non-Smoking" language="en"/>
<Text text="Chambre de le Roi Premium - Pas de Fumeurs" language="fr"/>
</Name>
<Capacity>4</Capacity>
</RoomData>
<!-- Can be reused by multiple Room Bundles -->
<PackageData>
<PackageID>P33333</PackageID>
<Occupancy>3</Occupancy>
<ChargeCurrency>web</ChargeCurrency>
<Refundable available="1" refundable_until_days="7"
refundable_until_time="18:00:00"/>
<ParkingIncluded>1</ParkingIncluded>
<InternetIncluded>1</InternetIncluded>
</PackageData>
<PackageData>
<PackageID>P12345</PackageID>
<Occupancy>4</Occupancy>
<ChargeCurrency>web</ChargeCurrency>
<Refundable available="1" refundable_until_days="1"
refundable_until_time="18:00:00"/>
<ParkingIncluded>1</ParkingIncluded>
<InternetIncluded>1</InternetIncluded>
</PackageData>
</PropertyDataSet>
<Result>
<Property>180054</Property>
<Checkin>2017-10-07</Checkin>
<Nights>2</Nights>
<!-- Efficient method of defining Room Bundles -->
<!-- Part 2: Reference RoomData and PackageData through ID -->
<!-- Base Room Bundle -->
<RoomBundle>
<!-- Baserate above and attributes must match atleast one room bundle
below -->
<RoomID>060773</RoomID>
<PackageID>P33333</PackageID>
<Baserate currency="USD">499.99</Baserate>
<Tax currency="USD">55.12</Tax>
<OtherFees currency="USD">22.00</OtherFees>
</RoomBundle>
<!-- Premium Room Bundle -->
<RoomBundle>
<RoomID>436233</RoomID>
<PackageID>P12345</PackageID>
<!-- Lowest price for 3 ("occupancy"), shown below, will be displayed -->
<Baserate currency="USD">598.88</Baserate>
<Tax currency="USD">62.12</Tax>
<OtherFees currency="USD">30.00</OtherFees>
</RoomBundle>
<!-- ..Continue providing all available RoomBundle rates under matched
property for 2 or more occupancies..-->
</Result>
</Transaction>
Pakete für mehrere Zimmer
Im folgenden Beispiel wird die Belegung in mehreren Zimmerpaketen festgelegt, um mögliche Hostelzimmerpreise zu zeigen.
<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
<Result>
...
<!-- Suite Room Bundle -->
<RoomBundle>
<RoomID>suite1</RoomID>
<PackageID>standard</PackageID>
<Occupancy>2</Occupancy>
<!-- Price for room -->
<Baserate currency="USD">80.00</Baserate>
<Tax currency="USD">5.12</Tax>
<OtherFees currency="USD">2.00</OtherFees>
<RoomData>
<Name>
<Text text="Suite for 2" language="en"/>
</Name>
</RoomData>
</RoomBundle>
<!-- Small Dorm Room Bundle -->
<RoomBundle>
<RoomID>small_dorm</RoomID>
<PackageID>economy</PackageID>
<Occupancy>1</Occupancy>
<!-- Price per bed -->
<Baserate currency="USD">35.00</Baserate>
<Tax currency="USD">3.50</Tax>
<OtherFees currency="USD">2.00</OtherFees>
<RoomData>
<Name>
<Text text="1 bed in small dorm" language="en"/>
</Name>
</RoomData>
</RoomBundle>
<!-- Large Dorm Room Bundle -->
<RoomBundle>
<RoomID>large_dorm</RoomID>
<PackageID>economy</PackageID>
<Occupancy>1</Occupancy>
<!-- Price per bed -->
<Baserate currency="USD">20.00</Baserate>
<Tax currency="USD">2.50</Tax>
<OtherFees currency="USD">2.00</OtherFees>
<RoomData>
<Name>
<Text text="1 bed in large dorm" language="en"/>
</Name>
</RoomData>
</RoomBundle>
...
</Result>
</Transaction>
Mehrere nutzerabhängige Preise
Im folgenden Beispiel werden ein Basispreis und mehrere nutzerabhängige Preise innerhalb eines <RoomBundle>
definiert:
<?xml version="1.0" encoding="UTF-8" ?>
<Transaction timestamp="2023-05-18T16:20:00-04:00" id="42">
<Result>
<Property>1234</Property>
<Checkin>2023-04-10</Checkin>
<Nights>2</Nights>
<!-- When Google receives new room bundle information for an itinerary, all
previous room bundle pricing is dropped from Google's cache. Thus, if you
want to delete a specific room bundle from Google's cache, you may do so
by simply not providing that specific room bundle in subsequent transaction
messages. -->
<RoomBundle>
...
<!-- RoomID is required, PackageID is recommended. -->
<RoomID>5</RoomID>
<PackageID>ABC</PackageID>
<!-- Baserate is required. -->
<Baserate currency="USD">275.00</Baserate>
<Tax currency="USD">27.50</Tax>
<OtherFees currency="USD">2.00</OtherFees>
<!-- RatePlanID is optional and represents the unique identifier for a
room and package data combination. We strongly recommend using RatePlanID
as a variable to build your dynamic landing page (formerly Point of Sale)
URL. For details, see Using Variables and Conditions. -->
<RatePlanID>5-ABC</RatePlanID>
<!-- Occupancy is mandatory for RoomBundle elements. -->
<!-- Elements below will get inherited to nested rate elements. -->
<Occupancy>2</Occupancy>
<OccupancyDetails>
<NumAdults>2</NumAdults>
</OccupancyDetails>
<InternetIncluded>1</InternetIncluded>
<!-- Rate rule "mobile" overrides chargeCurrency, "us_or_gb" doesn't. -->
<ChargeCurrency>web</ChargeCurrency>
<Custom1>ratebasic</Custom1>
<!-- Neither rate overrides Custom2. -->
<Custom2>ratebasic</Custom2>
<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>
<!-- The value below overrides Custom1 from roombundle. -->
<Custom1>ratecode321</Custom1>
<!-- Custom2 is inherited from roombundle. -->
</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>
<!-- The value below overrides Custom1 from roombundle. -->
<Custom1>ratecode432</Custom1>
<!-- Custom2 is inherited from roombundle. -->
</Rate>
</Rates>
</RoomBundle>
</Result>
</Transaction>
<OccupancyDetails>
<Occupancy>
in einer Transaktionsnachricht gibt die maximale Anzahl von Gästen für ein Zimmer oder Paket an. <OccupancyDetails>
kann zusätzliche Informationen enthalten, z. B. die Anzahl und die Art der Gäste (Erwachsene oder Kinder).
Wenn <Occupancy>
und <OccupancyDetails>
im Element <Rates>
von <Result>
oder <RoomBundle>
erscheinen, bedeutet dies, dass der Preis durch die Belegungsdetails eingeschränkt ist.
Syntax
Wenn <OccupancyDetails>
angezeigt wird, ist immer <Occupancy>
vorangestellt.
Beachten Sie die folgende Syntax:
<?xml version="1.0" encoding="UTF-8"?> <Transaction ... > <Result> ... <Occupancy>max_number_of_intended_occupants</Occupancy> <OccupancyDetails> <NumAdults>number_of_adults</NumAdults> <Children> <Child age=age_of_one_child_guest/> <Child age=age_of_one_child_guest/> </Children> </OccupancyDetails> </Result> </Transaction>
Untergeordnete Elemente
Das <OccupancyDetails>
-Element hat die folgenden untergeordneten Elemente:
Untergeordnetes Element | Erforderlich? | Typ | Beschreibung |
---|---|---|---|
<NumAdults> | Required | integer | Die Anzahl 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, z. B. <Child age="17"> . |
Beispiele
Die folgenden Beispiele zeigen, wie <OccupancyDetails>
in <Results>
, <RoomBundle>
oder dem untergeordneten Element <Rates>
erscheinen kann.
Ergebnisantwort
Im folgenden Beispiel werden ein Reiseplan und die zugehörigen Preise für eine Unterkunft als Antwort auf eine Livepreisabfrage definiert, bei der der Nutzer die Anzahl und die 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>
Preisantwort
Im folgenden Beispiel werden ein Reiseplan und dessen Preise für 1 Erwachsenen und 1 Kind definiert. Hier werden die <OccupancyDetails>
im <Rates>
-Element 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>
<Custom1>abc4</Custom1>
<AllowablePointsOfSale>
<PointOfSale id="yourhotelpartnersite.com"/>
</AllowablePointsOfSale>
</Rate>
</Rates>
</Result>
</Transaction>
Zimmerpaket
Im folgenden Beispiel wird eine Belegung von 2 Erwachsenen und 1 Kind für 2 Nächte mit einem erstattungsfähigen Preis definiert. Hier werden die <OccupancyDetails>
innerhalb von <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>
Pakete für mehrere Zimmer
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 <Rates>
-Element 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>
<Custom1>ratebasic</Custom1>
<Custom2>ratebasic</Custom2>
<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>
<Custom1>ratecode321</Custom1>
</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>
<Custom1>ratecode432</Custom1>
</Rate>
</Rates>
</RoomBundle>
</Result>
</Transaction>