Transaction (Données sur un établissement)

Requêtes

Syntaxe

Le message Transaction (Property Data) utilise la syntaxe suivante :
<?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>

Éléments et attributs

Le message Transaction (Données sur un établissement) contient les éléments et les attributs suivants :
Élément / @Attribut Occurrences Type Description
Transaction 1 Élément complexe Dans une mise en œuvre ARI, il s'agit de l'élément racine d'un message définissant les types de chambres et les formules pour un même établissement.
Transaction / @timestamp 1 DateTime Date et heure de création de ce message.
Transaction / @id 1 Chaîne Identifiant unique pour ce message de requête. Cette valeur est renvoyée dans le message de réponse. Les caractères suivants sont autorisés : a-z, A-Z, 0-9, _ (trait de soulignement) et - (tiret).
Transaction / @partner 1 Chaîne Compte partenaire pour ce message. Cette valeur de chaîne correspond à la valeur "Partner key" (Clé partenaire) indiquée sur la page Paramètres du compte dans Hotel Center.

Remarque : Si vous avez un backend qui fournit des flux pour plusieurs comptes, cette valeur doit correspondre à la valeur de l'attribut ID spécifiée dans l'élément <RequestorID> de vos messages <OTA_HotelRateAmountNotifRQ> et <OTA_HotelAvailNotifRQ> pour le même compte.

Transaction / PropertyDataSet 1..n PropertyDataSet Conteneur permettant de définir les types de chambres et les formules pour un même établissement.
Transaction / PropertyDataSet / @action 0..1 Énumération

Type de mise à jour à appliquer aux définitions des prix de chambres.

Les valeurs valides sont les suivantes :

  • overlay (superposition) : remplace tous les éléments <RoomData> et <PackageData> définis précédemment pour l'établissement. Seuls les éléments <RoomData> et <PackageData> du message actuel sont valides.
  • delta : ajoute les éléments <RoomData> et <PackageData> non définis précédemment, ou modifie les existants.

Cet attribut est facultatif et est défini par défaut sur delta si aucune valeur n'est spécifiée.

Transaction / PropertyDataSet / Property 1 Chaîne Identifiant unique de l'établissement. Cette valeur doit correspondre à l'identifiant de l'hôtel spécifié à l'aide de <id> dans l'élément <listing> du flux Hotel List Feed. L'identifiant de l'hôtel est également répertorié dans Hotel Center.
Transaction / PropertyDataSet / RoomData 0..n RoomData

Décrit une chambre.

Remarque : Vous devez indiquer au moins l'un des éléments <RoomData> ou <PackageData>.

Transaction / PropertyDataSet / RoomData / RoomID 1 RoomID Identifiant unique d'un type de chambre. Cette valeur est référencée à l'aide de l'attribut InvTypeCode dans l'élément <StatusApplicationControl> des messages <OTA_HotelAvailNotifRQ> et <OTA_HotelRateAmountNotifRQ>.
Transaction / PropertyDataSet / RoomData / Name 1 Nom Conteneur pour le nom de la catégorie de chambre dans une ou plusieurs langues.
Transaction / PropertyDataSet / RoomData / Name / Text 1..n Texte Conteneur pour le nom de la catégorie de chambre dans une langue.
Transaction / PropertyDataSet / RoomData / Name / Text / @text 1..n Chaîne Nom de la catégorie de chambre dans la langue spécifiée par l'attribut language.
Transaction / PropertyDataSet / RoomData / Description 1 Nom Conteneur pour la description de la catégorie de chambre dans une ou plusieurs langues.
Transaction / PropertyDataSet / RoomData / Description / Text 1..n Texte Spécifie la description de la catégorie de chambre dans une langue.
Transaction / PropertyDataSet / RoomData / Description / Text / @text 1..n Chaîne Description de la catégorie de chambre dans la langue spécifiée par l'attribut language.
Transaction / PropertyDataSet / RoomData / Description / Text / @language 1..n Chaîne Code de langue à deux lettres.
Transaction / PropertyDataSet / RoomData / AllowablePackageIDs 0..1 AllowablePackageIDs Conteneur pour les éléments <AllowablePackageID>.

Si <AllowablePackageIDs> est spécifié, le type de chambre identifié par la valeur <RoomID> dans l'élément parent <RoomData> ne peut être associé qu'aux plans tarifaires définis par les éléments <AllowablePackageID>.

Si <AllowablePackageIDs> n'est pas spécifié, le type de chambre identifié par la valeur <RoomID> dans l'élément parent <RoomData> peut être associé à n'importe quel plan tarifaire.

Transaction / PropertyDataSet / RoomData / AllowablePackageIDs / AllowablePackageID 1..n AllowablePackageID Spécifie la valeur PackageID d'un plan tarifaire pouvant être associé à ce type de chambre. Un plan tarifaire est défini par la combinaison d'une formule, de tarifs et d'une disponibilité. La valeur PackageID correspond à l'élément RatePlanCode dans les messages OTA_HotelRateAmountNotifRQ et OTA_HotelAvailNotifRQ.
Transaction / PropertyDataSet / RoomData / Capacity 0..1 Entier Nombre maximal de clients que la chambre peut matériellement accueillir. Cette valeur doit être supérieure ou égale à toutes les valeurs NumberOfGuests que vous envoyez avec des tarifs.

La valeur de <Capacity> doit être un entier positif compris entre 1 et 99 inclus.

Transaction / PropertyDataSet / RoomData / PhotoURL 0..n PhotoURL URL d'une photo de la chambre ou de l'offre de chambres sélectionnée, et sa légende facultative. Vous pouvez spécifier plusieurs éléments <PhotoURL> pour une chambre ou une offre de chambres.

Cet élément comporte les éléments enfants suivants :

  • <URL> : spécifie l'emplacement de la photo. Celui-ci doit être public (et non situé derrière un pare-feu) et inclure le protocole (http://).
  • <Caption> : définit la légende de la photo. Cet élément dispose d'un seul élément enfant, <Text>, qui comporte deux attributs obligatoires : text et language. L'attribut text correspond à la légende et l'attribut language spécifie un code de langue à deux lettres, par exemple "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 Chaîne Dans ces messages, PackageID correspond à l'élément RatePlanCode des messages OTA_HotelRateAmountNotifRQ et OTA_HotelAvailNotifRQ.
Transaction / PropertyDataSet / PackageData / Name 1 Nom Conteneur pour le nom de la catégorie de séjour organisé dans une ou plusieurs langues.
Transaction / PropertyDataSet / PackageData / Name / Text 1..n Texte Spécifie le nom de la catégorie de séjour organisé dans une langue.
Transaction / PropertyDataSet / PackageData / Name / Text / @text 1..n Chaîne Nom de la catégorie de séjour organisé dans la langue spécifiée par l'attribut language.
Transaction / PropertyDataSet / PackageData / Description 1 Nom Conteneur pour la description de la catégorie de séjour organisé dans une ou plusieurs langues.
Transaction / PropertyDataSet / PackageData / Description / Text 1..n Texte Spécifie la description de la catégorie de séjour organisé dans une langue.
Transaction / PropertyDataSet / PackageData / Description / Text / @text 1..n Chaîne Description de la catégorie de séjour organisé dans la langue spécifiée par l'attribut language.
Transaction / PropertyDataSet / PackageData / Description / Text / @language 1..n Chaîne Code de langue à deux lettres.
Transaction / PropertyDataSet / PackageData / AllowableRoomIDs 0..1 AllowableRoomIDs Conteneur pour les éléments <AllowableRoomID>.

Si <AllowableRoomIDs> est spécifié, le plan tarifaire identifié par la valeur <PackageID> dans l'élément parent <PackageData> ne peut être associé qu'aux types de chambres définis par les éléments <AllowableRoomID>.

Si <AllowableRoomIDs> n'est pas spécifié, le plan tarifaire identifié par la valeur <PackageID> dans l'élément parent <PackageData> peut être associé à n'importe quel type de chambre.

Transaction / PropertyDataSet / PackageData / AllowableRoomIDs / AllowableRoomID 1..n AllowableRoomID Spécifie la valeur RoomID d'un type de chambre pouvant être associé à ce plan tarifaire. Un type de chambre est défini dans un élément <RoomData>.
Transaction / PropertyDataSet / PackageData 0..n PackageData Conteneur pour les éléments qui décrivent les conditions et les caractéristiques tarifaires ne figurant pas dans la description de la chambre.
Transaction / PropertyDataSet / PackageData / Refundable 0..1 Remboursable Permet de répertorier le tarif comme totalement remboursable ou de proposer une annulation gratuite. Si cet élément n'est pas défini, aucune information relative au remboursement ne s'affiche.

Remarque : Nous vous recommandons de définir tous les attributs. Un message d'avertissement concernant l'état du flux est généré lorsqu'un ou plusieurs attributs ne sont pas définis.

Si vous ne définissez aucun attribut, le tarif ne s'affiche pas comme remboursable.

Lorsque vous définissez les attributs, tenez compte des points suivants :

  • Si available ou refundable_until_days n'est pas défini, le tarif ne s'affiche pas comme remboursable.
  • Si available a la valeur 0 ou false, les autres attributs sont ignorés. Le tarif ne s'affiche pas comme remboursable même si l'un des autres attributs est défini (ou bien les deux).
Transaction / PropertyDataSet / PackageData / Refundable / @available 1 Booléen (Obligatoire) Définissez cet attribut sur 1 ou true pour indiquer si le tarif peut être totalement remboursé. Sinon, définissez-le sur 0 ou false.
Transaction / PropertyDataSet / PackageData / Refundable / @refundable_until_days 0..1 Entier (Obligatoire si available a la valeur true) Indique le nombre de jours avant la date d'arrivée où un remboursement total peut être demandé. La valeur de refundable_until_days doit être un entier compris entre 0 et 330 inclus.
Transaction / PropertyDataSet / PackageData / Refundable / @refundable_until_time 0..1 Heure (Vivement recommandé si available a la valeur true) Indique l'heure limite, en heure locale de l'hôtel, à laquelle un remboursement total peut être accordé. Cet attribut peut être associé à l'attribut refundable_until_days pour indiquer, par exemple, que "les remboursements sont possibles jusqu'à 16h deux jours avant la date d'arrivée". Si refundable_until_time n'est pas défini, la valeur par défaut est minuit.
Transaction / PropertyDataSet / PackageData / BreakfastIncluded 0..1 Booléen Spécifie si le type de chambre inclut le petit-déjeuner.

Les valeurs valides sont 0 (ou false) et 1 (ou true).

Transaction / PropertyDataSet / PackageData / InternetIncluded 0..1 Booléen Indique si la chambre inclut un accès gratuit à Internet, alors que ce service n'est pas compris dans d'autres chambres. Ne définissez pas cet élément dans un hôtel qui propose un accès gratuit à Internet dans toutes les chambres. Cet élément ne s'applique pas à l'accès Internet câblé ou sans fil non disponible dans les chambres. Les valeurs valides sont 0 (ou false) et 1 (ou true).
Transaction / PropertyDataSet / PackageData / ParkingIncluded 0..1 Booléen Indique si une chambre inclut une place de parking gratuite, si le stationnement est normalement payant dans cet hôtel. Ne spécifiez aucune valeur pour cet élément si l'hôtel offre un accès gratuit au parking. Les valeurs valides sont 0 (ou false) et 1 (ou true). La valeur par défaut est false.

Exemples

Exemple 1

Ci-dessous figure un exemple de base montrant comment définir les données sur les chambres et les formules d'un établissement dans un message Transaction (Données sur un établissement). L'attribut overlay permet de s'assurer que, si des données existent déjà de manière inattendue, toutes les données existantes sont supprimées et remplacées par les données figurant dans ce message :

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

Exemple 2

Ci-dessous figure un exemple d'ajout d'un type de chambre et d'une formule à des données <Transaction> existantes :

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

Exemple 3

Ci-dessous figure un exemple de suppression des types de chambres et des formules existants. Dans ce scénario, si les messages des exemples 1 et 2 ont été précédemment envoyés à Google, les types de chambres "King" (Très grand lit) et "Double" (Lit double) n'existent plus une fois que Google a reçu le message ci-dessous. Notez que la suppression de données de formules a une incidence sur le plan tarifaire global défini dans les messages Transaction (Données sur un établissement), OTA_HotelRateAmountNotifRQ et OTA_HotelAvailNotifRQ (en référençant la même valeur PackageID). Par conséquent, des mises à jour correspondantes à l'aide des autres types de messages peuvent être nécessaires pour indiquer que PackageID_2 et PackageID_3 ne sont plus définis ici.

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

Exemple 4

Ci-dessous figure un exemple d'utilisation de l'élément <AllowablePackageIDs> afin de limiter les plans tarifaires autorisés pour un type de chambre. Dans cet exemple, le type de chambre "Queen" (Grand lit) (RoomID_2) ne peut être associé qu'à la formule et au plan tarifaire identifiés comme PackageID_1.

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

Réponses

Syntaxe

Le message TransactionResponse (Property Data) utilise la syntaxe suivante :
<?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>

Éléments et attributs

Le message TransactionResponse (Property Data) inclut les éléments et les attributs suivants :
Élément / @Attribut Occurrences Type Description
TransactionResponse 1 Élément complexe Élément racine indiquant le succès ou les problèmes liés à un message de requête Transaction reçu.
TransactionResponse / @timestamp 1 DateTime Date et heure de création de ce message.
TransactionResponse / @id 1 Chaîne Identifiant unique du message Transaction associé.
TransactionResponse / @partner 1 Chaîne Compte partenaire pour ce message.
TransactionResponse / Success 0..1 Opération réussie Indique que le message Transaction a été traité avec succès, sans avertissement, erreur ou échec.

Chaque message contient soit <Success>, soit <Issues>.

TransactionResponse / Issues 0..1 Problèmes Conteneur pour un ou plusieurs problèmes rencontrés lors du traitement du message Transaction.

Chaque message contient soit <Success>, soit <Issues>.

TransactionResponse / Issues / Issue 1..n Problème Description d'un avertissement, d'une erreur ou d'un échec survenu lors du traitement du message Transaction. Pour en savoir plus sur ces problèmes, consultez Messages d'erreur concernant l'état du flux.
TransactionResponse / Issues / Issue / @code 1 Entier Identifiant du problème.
TransactionResponse / Issues / Issue / @status 1 Énumération

Type de problème rencontré.

Les valeurs valides sont warning, error et failure.

Exemples

Opération réussie

La réponse ci-dessous est une réponse à un message Transaction correctement traité.

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

Problèmes

La réponse ci-dessous est une réponse à un message Transaction non traité en raison d'erreurs.

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