Syntax
Die Nachricht „Transaktion (Unterkunftsdaten)“ verwendet die folgende Syntax:<?xml version="1.0" encoding="UTF-8"?> <Transaction timestamp="timestamp" id="message_ID" partner="partner_account_name"> <PropertyDataSet action="[overlay|delta]"> <!-- (Required) ID that matches the Hotel List Feed --> <Property>HotelID</Property> <RoomData> <!-- (Required) One room ID per RoomData element --> <RoomID>RoomID</RoomID> <!-- (Optional) Restricts the rate plans allowed for this room type to those listed here. If specified, don't specify AllowableRoomIDs. --> <AllowablePackageIDs> <AllowablePackageID>PackageID</AllowablePackageID> </AllowablePackageIDs> <Name> <Text text="room_name" language="language_code"/> </Name> <Capacity>max_number_of_occupants</Capacity> <PhotoURL> <Caption> <Text text="photo_description" language="language_code"/> ... </Caption> <URL>photo_location</URL> </PhotoURL> </RoomData> <PackageData> <!-- (Required) One package ID per PackageData element --> <PackageID>PackageID</PackageID> <!-- (Optional) Restricts the room types allowed for this rate plan to those listed here. If specified, don't specify AllowablePackageIDs. --> <AllowableRoomIDs> <AllowableRoomID>RoomID</AllowableRoomID> </AllowableRoomIDs> <Refundable available="[false|true]" refundable_until_days=" number_of_days" refundable_until_time="time"/> <BreakfastIncluded>boolean_value</BreakfastIncluded> <InternetIncluded>boolean_value</InternetIncluded> <ParkingIncluded>boolean_value</ParkingIncluded> </PackageData> </PropertyDataSet> </Transaction>
Elemente und Attribute
Die Nachricht „Transaktion (Unterkunftsdaten)“ enthält folgende Elemente und Attribute:Element / @Attribut | Vorkommnisse | Typ | Beschreibung |
---|---|---|---|
Transaktion | 1 | Komplexes Element | In einer ARI-Implementierung ist dies das Stammelement für eine Nachricht, die Zimmertypen und -pakete für eine einzelne Unterkunft definiert. |
Transaction / @timestamp | 1 | DateTime | Erstellungsdatum und -uhrzeit der Nachricht. |
Transaction / @id | 1 | String | Eine eindeutige Kennung für jede Transaktionsnachricht. |
Transaction / @partner | 1 | String | Das Partnerkonto für diese Nachricht. Dieser Stringwert ist der Wert „Partnerschlüssel“, der im Hotel Center auf der Seite „Kontoeinstellungen“ aufgeführt ist.
Hinweis: Wenn Sie ein Back-End haben, das Feeds für mehrere Konten bereitstellt, muss dieser Wert mit dem Attributwert |
Transaction / PropertyDataSet | 1 | PropertyDataSet | Ein Container zum Definieren von Zimmertypen und -paketen für eine einzelne Unterkunft. |
Transaction / PropertyDataSet / @action | 0..1 | Enum | Der Aktualisierungstyp, der auf Zimmerpreisdefinitionen angewendet wird. Gültige Werte sind:
Dieses Attribut ist optional und standardmäßig auf |
Transaction / PropertyDataSet / Property | 1 | String | Die eindeutige Kennung für die Unterkunft. Dieser Wert muss mit der Hotel-ID übereinstimmen, die mit <id> im Element <listing> im Hotellistenfeed angegeben wird. Die Hotel-ID ist auch im Hotel Center aufgelistet. |
Transaction / PropertyDataSet / RoomData | 0..n | RoomData | Beschreibt einen Raum. Hinweis: Es muss in jedem Fall entweder |
Transaction / PropertyDataSet / RoomData / RoomID | 1 | RoomID | Eine eindeutige Kennung für einen Zimmertyp. Auf diesen Wert wird mit dem Attribut InvTypeCode im Element <StatusApplicationControl> in den Nachrichten <OTA_HotelAvailNotifRQ> und <OTA_HotelRateAmountNotifRQ> referenziert. |
Transaction / PropertyDataSet / RoomData / AllowablePackageIDs | 0..1 | AllowablePackageIDs | Ein Container für <AllowablePackageID> -Elemente.
Wenn Wenn |
Transaction / PropertyDataSet / RoomData / AllowablePackageIDs / AllowablePackageID | 1..n | AllowablePackageID | Gibt die PackageID eines Preisplans an, der mit diesem Zimmertyp kombiniert werden kann. Ein Preisplan wird durch eine Kombination aus Paket, Preisen und Verfügbarkeit definiert. Die PackageID entspricht dem RatePlanCode in den Nachrichten OTA_HotelRateAmountNotifRQ und OTA_HotelAvailNotifRQ.
|
Transaction / PropertyDataSet / RoomData / Name | 1 | Name | Container für den Namen der Zimmerkategorie in einer oder mehreren Sprachen. |
Transaction / PropertyDataSet / RoomData / Name / Text | 1..n | Text | Gibt den Namen der Zimmerkategorie in einer Sprache an. |
Transaction / PropertyDataSet / RoomData / Name / Text / @text | 1..n | String | Der Name der Zimmerkategorie in der durch das Attribut language angegebenen Sprache. |
Transaction / PropertyDataSet / RoomData / Name / Text / @language | 1..n | String | Ein aus zwei Buchstaben bestehender Sprachcode. |
Transaction / PropertyDataSet / RoomData / Capacity | 0..1 | Integer | Die maximale Anzahl von Gästen, die im Zimmer Platz haben. Sie sollte größer oder gleich Ihren NumberOfGuests -Werten sein, die Sie mit den Preisen senden.
Der Wert für |
Transaction / PropertyDataSet / RoomData / PhotoURL | 0..n | PhotoURL | Eine URL und optionale Bildunterschrift für ein Foto des entsprechenden Zimmers oder Zimmerpakets. Sie können mehr als eine <PhotoURL> für ein Zimmer oder Zimmerpaket angeben.
Dieses Element verwendet die folgenden untergeordneten Elemente:
<PhotoURL> <URL>http://www.foo.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> |
Transaction / PropertyDataSet / RoomData / AllowableRoomIDs | 0..1 | AllowableRoomIDs | Ein Container für <AllowableRoomID> -Elemente.
Wenn Wenn |
Transaction / PropertyDataSet / RoomData / AllowableRoomIDs / AllowableRoomID | 1..n | AllowableRoomID | Gibt die RoomID eines Zimmertyps an, die mit diesem Preisplan kombiniert werden kann. Ein Zimmertyp wird in einem <RoomData> -Element definiert.
|
Transaction / PropertyDataSet / PackageData | 0..n | PackageData | Container für Elemente, die Preismerkmale und Konditionen beschreiben, die nicht Teil der physischen Zimmerbeschreibung sind. |
Transaction / PropertyDataSet / PackageData / PackageID | 1 | String | PackageID in diesen Nachrichten entspricht dem RatePlanCode in den Nachrichten OTA_HotelRateAmountNotifRQ und OTA_HotelAvailNotifRQ. |
Transaction / PropertyDataSet / PackageData / Refundable | 0..1 | Erstattungsfähig | Ermöglicht das Eintragen eines Preises als vollständig erstattungsfähig oder mit einer kostenlosen Stornierung. Wenn Sie dieses Element nicht angeben, werden keine Erstattungsinformationen angezeigt.
Hinweis: Es wird empfohlen, alle Attribute festzulegen. Wenn ein oder mehrere Attribute nicht festgelegt wurden, wird eine Warnmeldung für den Feedstatus generiert. Wenn Sie keine Attribute festlegen, wird der Preis nicht als erstattungsfähig angezeigt. Beachten Sie beim Festlegen der Attribute Folgendes:
|
Transaction / PropertyDataSet / PackageData / Refundable / @available | 1 | Boolescher Wert | (Erforderlich) Legen Sie 1 oder true fest, um anzugeben, ob für den Preis eine vollständige Erstattung möglich ist. Andernfalls geben Sie 0 oder false an. |
Transaction / PropertyDataSet / PackageData / Refundable / @refundable_until_days | 0..1 | Integer | (Erforderlich, wenn available den Wert true hat) Gibt die Anzahl der Tage vor dem Check-in an, für die eine vollständige Erstattung angefordert werden kann. Der Wert für refundable_until_days muss eine Ganzzahl zwischen 0 und 330 sein. |
Transaction / PropertyDataSet / PackageData / Refundable / @refundable_until_time | 0..1 | Time | (Wird ausdrücklich empfohlen, wenn available den Wert true hat) Gibt die späteste Uhrzeit des Tages in der Ortszeit des Hotels an, bis wann eine vollständige Erstattungsanforderung berücksichtigt wird. Dies kann mit refundable_until_days kombiniert werden, um beispielsweise anzugeben, dass „Erstattungen bis 16:00 Uhr zwei Tage vor dem Check-in möglich sind“. Wenn refundable_until_time nicht festgelegt ist, wird Mitternacht als Standardeinstellung verwendet. |
Transaction / PropertyDataSet / PackageData / BreakfastIncluded | 0..1 | Boolescher Wert | Gibt an, ob der Zimmertyp mit Frühstück ist. |
Transaction / PropertyDataSet / PackageData / InternetIncluded | 0..1 | Boolescher Wert | Wenn der Raum kostenlosen Internetzugang bietet und andere Zimmer diese Ausstattung nicht beinhalten. Legen Sie dieses Element nicht in einem Hotel fest, das für alle Zimmer einen kostenlosen Internetzugang bietet. Dieses Element gilt nicht für einen kabelgebundenen oder kabellosen Internetzugang, der nicht in den Zimmern verfügbar ist. |
Transaction / PropertyDataSet / PackageData / ParkingIncluded | 0..1 | Boolescher Wert | Ob ein Zimmer kostenloses Parken beinhaltet, wenn in diesem Hotel Parken andernfalls kostenpflichtig wäre. Geben Sie für dieses Element keinen Wert an, wenn das Hotel generell kostenlose Parkplätze anbietet. Gültige Werte sind |
Beispiele
Beispiel 1
Im folgenden Beispiel wird gezeigt, wie Sie die Zimmer- und Paketdaten einer Unterkunft in einer Nachricht „Transaktion (Unterkunftsdaten)“ definieren. Das Attribut overlay
sorgt dafür, dass alle vorhandenen Daten gelöscht und durch die Daten in dieser Nachricht ersetzt werden, wenn Daten bereits unerwartet vorhanden sind:
<?xml version="1.0" encoding="UTF-8"?> <Transaction timestamp="2020-05-18T16:20:00-04:00" id="12345678" partner="partner_account_name"> <PropertyDataSet action="overlay"> <Property>Property_1</Property> <RoomData> <RoomID>RoomID_1</RoomID> <Name> <Text text="King" language="en"/> </Name> <Capacity>2</Capacity> <PhotoURL> <URL>http://www.foo.com/static/bar/image.jpg</URL> <Caption> <Text text="Room with a king bed" language="en"/> </Caption> </PhotoURL> </RoomData> <RoomData> <RoomID>RoomID_2</RoomID> <Name> <Text text="Double" language="en"/> </Name> ... </RoomData> <PackageData> <PackageID>PackageID_1</PackageID> <Refundable>1</Refundable> <BreakfastIncluded>0</BreakfastIncluded> </PackageData> <PackageData> <PackageID>PackageID_2</PackageID> <Refundable>1</Refundable> <BreakfastIncluded>1</BreakfastIncluded> </PackageData> </PropertyDataSet> </Transaction>
Beispiel 2
Im folgenden Beispiel wird gezeigt, wie Sie den vorhandenen <Transaction>
-Daten einen Zimmertyp und ein Zimmerpaket hinzufügen:
<?xml version="1.0" encoding="UTF-8"?> <Transaction timestamp="2020-07-18T16:20:00-04:00" id="12345678" partner="partner_account_name"> <PropertyDataSet action="delta"> <Property>Property_1</Property> <RoomData> <RoomID>RoomID_3</RoomID> <Name> <Text text="Queen" language="en"/> </Name> ... </RoomData> <PackageData> <PackageID>PackageID_3</PackageID> <Refundable>0</Refundable> <BreakfastIncluded>1</BreakfastIncluded> <ParkingIncluded>1<ParkingIncluded> </PackageData> </PropertyDataSet> </Transaction>
Beispiel 3
Im folgenden Beispiel wird gezeigt, wie Sie vorhandene Zimmertypen und -pakete entfernen. Wenn in diesem Szenario die Nachrichten in Beispiel 1 und Beispiel 2 zuvor an Google gesendet wurden, wären die King- und Doppelzimmertypen nicht mehr vorhanden, sobald Google die unten gezeigte Nachricht erhält. Beachten Sie, dass sich das Entfernen von Paketdaten auf den gesamten Preisplan auswirkt, der für die Nachrichten Transaktion (Unterkunftsdaten), OTA_HotelRateAmountNotifRQ und OTA_HotelAvailNotifRQ (durch Referenzieren des gleichen PackageID-Werts) definiert wurde. Dadurch können entsprechende Aktualisierungen mit anderen Nachrichtentypen erforderlich sein, um anzuzeigen, dass PackageID_2 und PackageID_3 hier nicht mehr definiert sind.
<?xml version="1.0" encoding="UTF-8"?> <Transaction timestamp="2020-08-18T16:20:00-04:00" id="12345678" partner="partner_account_name"> <PropertyDataSet action="overlay"> <Property>Property_1</Property> <RoomData> <RoomID>RoomID_1</RoomID> <Name> <Text text="Queen" language="en"/> </Name> <Capacity>2</Capacity> <PhotoURL> <URL>http://www.foo.com/static/bar/image.jpg</URL> <Caption> <Text text="Room with a king bed" language="en"/> </Caption> </PhotoURL> </RoomData> <PackageData> <PackageID>PackageID_1</PackageID> <Refundable>1</Refundable> <BreakfastIncluded>0</BreakfastIncluded> </PackageData> </PropertyDataSet> </Transaction>
Beispiel 4
Im folgenden Beispiel wird gezeigt, wie Sie mit dem Element <AllowablePackageIDs>
die für einen Zimmertyp zulässigen Preispläne einschränken. In diesem Beispiel kann der Zimmertyp Queen (RoomID_2) nur mit dem Paket- und Preisplan kombiniert werden, der als PackageID_1 gekennzeichnet ist.
<?xml version="1.0" encoding="UTF-8"?> <Transaction timestamp="2020-12-18T16:20:00-04:00" id="12345678" partner="partner_account_name"> <PropertyDataSet action="overlay"> <Property>Property_1</Property> <RoomData> <RoomID>RoomID_1</RoomID> <Name> <Text text="King" language="en"/> </Name> ... </RoomData> <RoomData> <RoomID>RoomID_2</RoomID> <AllowablePackageIDs> <AllowablePackageID>PackageID_1</AllowablePackageID> </AllowablePackageIDs> <Name> <Text text="Queen" language="en"/> </Name> ... </RoomData> <PackageData> <PackageID>PackageID_1</PackageID> <Refundable>1</Refundable> <BreakfastIncluded>0</BreakfastIncluded> </PackageData> <PackageData> <PackageID>PackageID_2</PackageID> <Refundable>1</Refundable> <BreakfastIncluded>1</BreakfastIncluded> </PackageData> </PropertyDataSet> </Transaction>