Transaktion (Unterkunftsdaten)

Anfragen

Syntax

Die Nachricht Transaction (Property Data) 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>
      <Name>
        <Text text="room_name" language="language_code"/>
      </Name>
      <Description>
        <Text text="room_description" language="language_code"/>
      </Description>
      <!-- (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>
      <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>
      <Name>
        <Text text="package_name" language="language_code"/>
      </Name>
      <Description>
        <Text text="package_description" language="language_code"/>
      </Description>
      <!-- (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"/>
      <!-- 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>
    </PackageData>
  </PropertyDataSet>
</Transaction>

Elemente und Attribute

Die Nachricht „Transaktion (Unterkunftsdaten)“ enthält folgende Elemente und Attribute:
Element / @Attribute Vorkommen Typ Beschreibung
Transaktion 1 Komplexes Element In einer ARI-Implementierung ist dies das Stammelement für eine Nachricht, in der Zimmertypen und -pakete für eine einzelne Unterkunft definiert sind.
Transaction / @timestamp 1 DateTime Erstellungsdatum und -uhrzeit der Nachricht.
Transaction / @id 1 String Eine eindeutige Kennung für diese Anfragenachricht. Dieser Wert wird in der Antwortnachricht zurückgegeben. Zulässige Zeichen sind a-z, A-Z, 0-9, _ (Unterstrich) und - (Bindestrich).
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 ID im Element <RequestorID> der Nachrichten <OTA_HotelRateAmountNotifRQ> und <OTA_HotelAvailNotifRQ> für dasselbe Konto übereinstimmen.

Transaction / PropertyDataSet 1..n 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:

  • overlay: Ersetzt alle zuvor definierten <RoomData> und <PackageData> für die Unterkunft. Nur die <RoomData> und <PackageData> in der aktuellen Nachricht sind gültig.
  • delta: Fügt zuvor definierte <RoomData> und <PackageData> hinzu oder ändert vorhandene Daten.

Dieses Attribut ist optional und standardmäßig auf delta eingestellt, wenn keine Angabe erfolgt.

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

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

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 / 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 / Description 1 Name Container für die Beschreibung der Zimmerkategorie in einer oder mehreren Sprachen.
Transaction / PropertyDataSet / RoomData / Description / Text 1..n Text Gibt die Beschreibung der Zimmerkategorie in einer Sprache an.
Transaction / PropertyDataSet / RoomData / Description / Text / @text 1..n String Die Beschreibung der Zimmerkategorie in der durch das Attribut language angegebenen Sprache.
Transaction / PropertyDataSet / RoomData / Description / Text / @language 1..n String Ein aus zwei Buchstaben bestehender Sprachcode.
Transaction / PropertyDataSet / RoomData / AllowablePackageIDs 0..1 AllowablePackageIDs Ein Container für <AllowablePackageID>-Elemente.

Wenn <AllowablePackageIDs> angegeben ist, kann der durch <RoomID> im übergeordneten Element <RoomData> angegebene Zimmertyp nur mit den Preisplänen kombiniert werden, die durch die <AllowablePackageID>-Elemente definiert werden.

Wenn <AllowablePackageIDs> nicht angegeben ist, kann der durch <RoomID> im übergeordneten Element <RoomData> angegebene Zimmertyp mit jedem beliebigen Preisplan kombiniert werden.

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 / Capacity 0..1 Integer Die maximale Anzahl von Gästen, die im Zimmer untergebracht werden können. Sie sollte größer oder gleich Ihren NumberOfGuests-Werten sein, die Sie mit den Preisen senden.

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

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:

  • <URL>: Gibt den Speicherort des Fotos an. Der Speicherort sollte öffentlich (nicht hinter einer Firewall) sein und das Protokoll (http://) enthalten.
  • <Caption>: Definiert die Bildunterschrift für das Foto. Dieses Element verwendet das einzelne untergeordnete Element <Text>, das die beiden erforderlichen Attribute text und language hat. Das Attribut text ist die Bildunterschrift und für das Attribut language wird ein aus zwei Buchstaben bestehender Sprachcode angegeben, z. B. „en“.

<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 / PackageData / PackageID 1 String PackageID in diesen Nachrichten entspricht dem RatePlanCode in den Nachrichten OTA_HotelRateAmountNotifRQ und OTA_HotelAvailNotifRQ.
Transaction / PropertyDataSet / PackageData / Name 1 Name Container für den Namen der Paketkategorie in einer oder mehreren Sprachen.
Transaction / PropertyDataSet / PackageData / Name / Text 1..n Text Gibt den Namen der Paketkategorie in einer Sprache an.
Transaction / PropertyDataSet / PackageData / Name / Text / @text 1..n String Der Name der Paketkategorie in der durch das Attribut language angegebenen Sprache.
Transaction / PropertyDataSet / PackageData / Description 1 Name Container für die Beschreibung der Paketkategorie in einer oder mehreren Sprachen.
Transaction / PropertyDataSet / PackageData / Description / Text 1..n Text Gibt die Beschreibung der Paketkategorie in einer Sprache an.
Transaction / PropertyDataSet / PackageData / Description / Text / @text 1..n String Die Beschreibung der Paketkategorie in der durch das Attribut language angegebenen Sprache.
Transaction / PropertyDataSet / PackageData / Description / Text / @language 1..n String Ein aus zwei Buchstaben bestehender Sprachcode.
Transaction / PropertyDataSet / PackageData / AllowableRoomIDs 0..1 AllowableRoomIDs Ein Container für <AllowableRoomID>-Elemente.

Wenn <AllowableRoomIDs> angegeben ist, kann der durch <PackageID> im übergeordneten Element <PackageData> angegebene Preisplan nur mit den Zimmertypen kombiniert werden, die durch die <AllowableRoomID>-Elemente definiert werden.

Wenn <AllowableRoomIDs> nicht angegeben ist, kann der durch <PackageID> im übergeordneten Element <PackageData> angegebene Preisplan mit jedem beliebigen Zimmertyp kombiniert werden.

Transaction / PropertyDataSet / PackageData / 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 / 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:

  • Wenn available oder refundable_until_days nicht festgelegt ist, wird der Preis nicht als erstattungsfähig angezeigt.
  • Wenn available den Wert 0 oder false hat, werden die anderen Attribute ignoriert. Der Preis wird nicht als erstattungsfähig angezeigt, auch wenn eines der anderen Attribute oder beide festgelegt sind.
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 beantragt 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 zu der ein Antrag auf vollständige Erstattung berücksichtigt wird. Dies kann mit refundable_until_days kombiniert werden, um beispielsweise anzugeben, dass „Erstattungen bis 16:00 Uhr zwei Tage vor dem Check-in möglich sind“. Wenn refundable_until_time nicht festgelegt ist, wird Mitternacht als Standardeinstellung verwendet.
Transaction / PropertyDataSet / PackageData / BreakfastIncluded 0..1 Boolescher Wert Gibt an, ob der Zimmertyp mit Frühstück ist.

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

Transaction / PropertyDataSet / PackageData / InternetIncluded 0..1 Boolescher Wert Wenn der Raum kostenlosen Internetzugang bietet und andere Zimmer diese Ausstattung nicht beinhalten. Geben Sie dieses Element nicht in einem Hotel an, 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. Gültige Werte sind 0 (oder false) und 1 (oder true).
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 0 (oder false) und 1 (oder true). Der Standardwert ist false.

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>
      <Description>
        <Text text="Room with a king bed" language="en"/>
      </Description>
      <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>
      <Name>
        <Text text="Standard" language="en"/>
      </Name>
      <Description>
        <Text text="Standard rate" language="en"/>
      </Description>
      <Refundable available="true" refundable_until_days="7" refundable_until_time="18:00:00"/>
      <BreakfastIncluded>0</BreakfastIncluded>
    </PackageData>
    <PackageData>
      <PackageID>PackageID_2</PackageID>
      <Name>
        <Text text="Free Breakfast" language="en"/>
      </Name>
      <Description>
        <Text text="Free breakfast rate" language="en"/>
      </Description>
      <Refundable available="true" refundable_until_days="7" refundable_until_time="18:00:00"/>
      <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>
      <Name>
        <Text text="Non-Refundable" language="en"/>
      </Name>
      ...
      <Refundable available="false"/>
    </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 queen bed" language="en"/>
        </Caption>
      </PhotoURL>
    </RoomData>
    <PackageData>
      <PackageID>PackageID_1</PackageID>
      <Name>
        <Text text="Refundable" language="en"/>
      </Name>
      ...
      <Refundable available="true" refundable_until_days="7" refundable_until_time="18:00:00"/>
      <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>
      <Name>
        <Text text="Queen" language="en"/>
      </Name>
      <AllowablePackageIDs>
        <AllowablePackageID>PackageID_1</AllowablePackageID>
      </AllowablePackageIDs>
      ...
    </RoomData>
    <PackageData>
      <PackageID>PackageID_1</PackageID>
      <Name>
        <Text text="Standard" language="en"/>
      </Name>
      ...
      <Refundable available="true" refundable_until_days="7" refundable_until_time="18:00:00"/>
      <BreakfastIncluded>0</BreakfastIncluded>
    </PackageData>
    <PackageData>
      <PackageID>PackageID_2</PackageID>
      <Name>
        <Text text="Free Breakfast" language="en"/>
      </Name>
      ...
      <Refundable available="true" refundable_until_days="7" refundable_until_time="18:00:00"/>
      <BreakfastIncluded>1</BreakfastIncluded>
    </PackageData>
  </PropertyDataSet>
</Transaction>

Antworten

Syntax

Die Nachricht TransactionResponse (Property Data) verwendet die folgende Syntax:
<?xml version="1.0" encoding="UTF-8"?>
<TransactionResponse timestamp="timestamp"
                     id="message_ID"
                     partner="partner_account_name">
  <!-- Either Success or Issues will be populated. -->
  <Success/>
  <Issues>
    <Issue code="issue_code" status="issue_type">issue_description</Issue>
  </Issues>
</TransactionResponse>

Elemente und Attribute

Die Nachricht TransactionResponse (Property Data) enthält folgende Elemente und Attribute:
Element / @Attribute Vorkommen Typ Beschreibung
TransactionResponse 1 Komplexes Element Das Stammelement, das den Erfolg oder Probleme für eine empfangene Transaktionsanfragenachricht angibt.
TransactionResponse / @timestamp 1 DateTime Erstellungsdatum und -uhrzeit der Nachricht.
TransactionResponse / @id 1 String Die eindeutige Kennung der zugehörigen Transaktionsnachricht.
TransactionResponse / @partner 1 String Das Partnerkonto für diese Nachricht.
TransactionResponse / Success 0..1 Erfolgreich Gibt an, dass die Transaktionsnachricht ohne Warnungen oder Fehler erfolgreich verarbeitet wurde.

Entweder <Success> oder <Issues> ist in jeder Nachricht enthalten.

TransactionResponse / Issues 0..1 Probleme Ein Container für ein oder mehrere Probleme, die bei der Verarbeitung der Transaktionsnachricht aufgetreten sind.

Entweder <Success> oder <Issues> ist in jeder Nachricht enthalten.

TransactionResponse / Issues / Issue 1..n Problem Die Beschreibung einer Warnung oder eines Fehlers, die bzw. der bei der Verarbeitung der Transaktionsnachricht aufgetreten ist. Weitere Informationen zu diesen Problemen finden Sie unter Fehlercodes für den Feedstatus.
TransactionResponse / Issues / Issue / @code 1 Integer Die Kennung des Problems.
TransactionResponse / Issues / Issue / @status 1 Enum

Die Art des Problems, das aufgetreten ist.

Gültige Werte sind warning (Warnung), error (Fehler) und failure (Fehler).

Beispiele

Erfolgreich

Im Folgenden finden Sie eine Antwort auf eine erfolgreich verarbeitete Nachricht „Transaction“.

<?xml version="1.0" encoding="UTF-8"?>
<TransactionResponse timestamp="2020-05-18T16:20:00-04:00"
                     id="12345678"
                     partner="partner_account_name">
  <Success/>
</TransactionResponse>

Probleme

Im Folgenden finden Sie eine Antwort auf eine Transaktionsnachricht, die aufgrund von Fehlern nicht verarbeitet wird.

<?xml version="1.0" encoding="UTF-8"?>
<TransactionResponse timestamp="2020-05-18T16:20:00-04:00"
                     id="12345678"
                     partner="partner_account_name">
  <Issues>
    <Issue code="1001" status="error">Example</Issue>
  </Issues>
</TransactionResponse>