Documentation de référence XML sur la tarification et l'inventaire des chambres (transactions)

Cette page fournit une documentation de référence pour les messages de transaction au format XML.

<Transaction>

Élément racine d'un message de transaction. <Transaction> est un conteneur pour les informations descriptives sur les chambres et les séjours organisés et/ou sur les prix et les disponibilités des chambres et des séjours organisés.

L'élément <Transaction> apparaît à l'emplacement suivant dans la hiérarchie XML des messages de transaction :

+ <Transaction>
    + <PropertyDataSet>  // Room and package metadata
        + <Property>
        + <RoomData>
        + <PackageData>
    + <Result>           // Pricing and availability
        + <Rates>
        + <RoomBundle>
        + ...

Les messages qui utilisent <Transaction> comme élément racine doivent comporter au moins un élément enfant. Les messages de transaction peuvent comporter autant d'éléments enfants que nécessaire, à condition que la taille totale des messages ne dépasse pas 100 Mo.

Syntaxe

L'élément <Transaction> utilise la syntaxe suivante :

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

Attributs

L'élément <Transaction> comporte les attributs suivants :

Attribut Obligatoire ? Type Description
id Obligatoire Chaîne Identifiant unique de chaque message de transaction.
partner Facultatif Chaîne Définit le compte du partenaire auquel est destiné le message de transaction. De manière générale, vous devez utiliser cet attribut si votre backend fournit des flux de prix pour plusieurs comptes de partenaires. Cette valeur de chaîne correspond à la valeur "Partner key" (Clé partenaire) indiquée sur la page À propos des paramètres de compte dans Hotel Center.
timestamp Obligatoire DateTime

La date et l'heure d'envoi du message de transaction.

Tous les messages envoyés dont l'horodatage a été généré au cours des dernières 24 heures seront traités. Les autres seront supprimés.

Les messages sont traités dans l'ordre de timestamp, et non dans l'ordre de réception. Par exemple, une mise à jour de prix dont l'horodatage est 2019-05-03 14:09:00, reçue après un message dont l'horodatage est 2019-05-03 14:10:00, sera toujours traitée selon l'ordre d'horodatage. C'est donc le prix indiqué dans le message dont l'horodatage est 2019-05-03 14:10:00 qui sera utilisé.

Éléments enfants

L'élément <Transaction> comporte les éléments enfants suivants :

Élément enfant Obligatoire ? Type Description
<PropertyDataSet> Facultatif* <PropertyDataSet>

Décrit une chambre et des offres de chambres spécifiques. De manière générale, vous devez utiliser cet élément dans un autre message de transaction afin de définir les valeurs communes aux offres de chambres et ainsi réduire la taille de vos messages de transaction.

<Result> Facultatif* <Result>

Données tarifaires correspondant à un séjour en chambre ou à un élément <RoomBundle> qui définit les offres de chambres et les autres types de chambres de l'établissement concerné. Vous pouvez également utiliser l'élément <Result> pour supprimer des séjours de l'inventaire.

* Vous devez indiquer au moins un des éléments suivants : <PropertyDataSet> ou <Result>.

Exemples

Exemple 1

L'exemple suivant définit les données d'une chambre dans un message de transaction simple :

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

Exemple 2

L'exemple suivant définit les données tarifaires dans un message de transaction simple :

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

Exemple 3

L'exemple suivant définit les données tarifaires pour une à sept nuits à compter du 7 juin 2018 :

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

Exemple 4

Dans l'exemple suivant, vous pouvez voir un message de transaction contenant un tarif de base et un tarif sous conditions :

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

Exemple 5

L'exemple suivant permet de supprimer plusieurs inventaires (séjours d'une nuit à différentes dates) pour un hôtel de l'inventaire :

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <Result>
    <Property>1123581321</Property>
    <Checkin>2018-06-07</Checkin>
    <Nights>1</Nights>
    <Baserate currency="USD">-1</Baserate>
    <Tax currency="USD">0</Tax>
    <OtherFees currency="USD">0</OtherFees>
  </Result>
  <Result>
    <Property>1123581321</Property>
    <Checkin>2018-06-08</Checkin>
    <Nights>1</Nights>
    <Baserate currency="USD">-1</Baserate>
    <Tax currency="USD">0</Tax>
    <OtherFees currency="USD">0</OtherFees>
  </Result>
  <Result>
    <Property>1123581321</Property>
    <Checkin>2018-06-09</Checkin>
    <Nights>1</Nights>
    <Baserate currency="USD">-1</Baserate>
    <Tax currency="USD">0</Tax>
    <OtherFees currency="USD">0</OtherFees>
  </Result>
</Transaction>

<PropertyDataSet>

Conteneur pour les informations sur les chambres et les séjours organisés (ou les offres de chambres) dans un message <Transaction>. Les valeurs définies au niveau de l'hôtel remplacent celles définies au niveau du partenaire. Notre système stocke ces informations afin que vous n'ayez pas à les redéfinir à chaque fois que vous envoyez des mises à jour de prix.

L'élément <PropertyDataSet> apparaît à l'emplacement suivant dans la hiérarchie XML des messages de transaction :

+ <Transaction>
    + <PropertyDataSet>  // Room and package metadata
        + <Property>
        + <RoomData>
        + <PackageData>
    + <Result>  // Pricing and availability
        + <Rates>
        + <RoomBundle>
        + ...

Pour en savoir plus, consultez Métadonnées des offres de chambres.

Syntaxe

L'élément <PropertyDataSet> utilise la syntaxe suivante :

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

Attributs

L'élément <PropertyDataSet> ne comporte aucun attribut.

Éléments enfants

L'élément <PropertyDataSet> comporte les éléments enfants suivants :

Élément enfant Obligatoire ? Type Description
<PackageData> Facultatif* <PackageData> Décrit une offre de chambres. Ces données sont associées au partenaire et à l'hôtel, mais pas au séjour. Cet élément est semblable à <RoomData>, mais il décrit les services et les conditions qui ne font pas partie de la description de la chambre.

Vous devez faire référence à l'identifiant du séjour organisé dans vos mises à jour de prix.

Pour en savoir plus, consultez Métadonnées des offres de chambres.

<Property> Obligatoire Chaîne Identifiant de l'hôtel associé aux données définies. La valeur de cet élément doit être une chaîne qui correspond à l'identifiant (<id>) de la fiche d'un hôtel de votre flux Hotel List Feed.
<RoomData> Facultatif* <RoomData> Décrit une chambre. Ces données sont associées au partenaire et à l'hôtel, mais pas au séjour.

Vous devez ensuite faire référence à l'identifiant de la chambre dans vos mises à jour de prix.

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

Exemples

Exemple 1

L'exemple suivant présente les données d'une chambre et d'un séjour organisé dans un élément <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>

Lorsque vous envoyez les prix et les disponibilités de cette chambre et/ou offre de chambres, vous indiquez les identifiants de la chambre et du séjour organisé dans vos messages de tarification. Ainsi, vous réduisez considérablement la taille de vos messages, mais également les risques de rencontrer des erreurs dues à des données en double. Pour en savoir plus, consultez la section Métadonnées des offres de chambres.

<RoomData>

Définit des métadonnées indépendamment des séjours pour les chambres, et par extension, les offres de chambres (étant donné que les offres de chambres sont des chambres avec des services supplémentaires). Utilisez l'élément <RoomData> pour éviter de répéter des données descriptives dans votre flux des prix.

L'élément <RoomData> apparaît à l'emplacement suivant dans la hiérarchie XML des messages de transaction :

+ <Transaction>
    + <PropertyDataSet>  // Room and package metadata
        + <Property>
        + <RoomData>
        + <PackageData>
    + <Result>           // Pricing and availability
        + <Rates>
        + <RoomBundle>
        + ...

Les éléments <RoomData> contiennent des informations associées à un partenaire et à un hôtel, mais pas à un séjour. Le but est de définir des données indépendamment d'un séjour.

L'élément <RoomData> est semblable à <PackageData>, mais il décrit la chambre plutôt que les services et les conditions d'un séjour organisé. Vous devez utiliser les éléments <RoomData> et <PackageData> ensemble pour fournir des informations sur les offres de chambres. Pour les chambres individuelles qui ne font pas partie d'un séjour organisé, utilisez <RoomData> seulement.

Vous pouvez définir à la fois les éléments <RoomData> et <PackageData> pour la même chambre ou offre de chambres. Lorsque nous présentons cette chambre ou ce séjour organisé dans les résultats de recherche, les deux descriptions s'affichent et sont séparées par un trait d'union.

Pour en savoir plus, consultez Métadonnées des offres de chambres.

Syntaxe

L'élément <RoomData> utilise la syntaxe suivante :

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

      <PhotoURL>
        <Caption>
          <Text text="photo_description" language="language_code"/>
          ...
        </Caption>
        <URL>photo_location</URL>
      </PhotoURL>

    </RoomData>
    ...
  </PropertyDataSet>
</Transaction>

Attributs

L'élément <RoomData> ne comporte aucun attribut.

Éléments enfants

L'élément <RoomData> comporte les éléments enfants suivants :

Élément enfant Obligatoire ? Type Description
<Capacity> Facultatif Entier Nombre maximal de clients qu'une chambre peut matériellement accueillir. Pour une chambre, la capacité est supérieure ou égale au nombre de personnes.

Si elle est définie, cette valeur doit être supérieure ou égale à la valeur de l'élément <Occupancy>, qui correspond au nombre de personnes pour lequel une chambre spécifique est prévue. Par exemple, la valeur de <Capacity> d'une grande suite peut être de 6, tandis que la valeur de <Occupancy> de cette suite est de 4.

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

<Description> Facultatif Objet Description détaillée de la chambre. Cet élément doit contenir des informations non décrites dans les autres éléments ni dans l'élément <Name>. La description de la chambre ne doit pas être qu'en majuscules.

L'élément <Description> comporte un seul élément enfant, <Text>, qui comporte les deux attributs obligatoires suivants :

  • text : description détaillée de la chambre
  • language : code de langue à deux lettres, par exemple "fr"

Utilisez un élément <Text> distinct pour chaque langue dans laquelle votre annonce ou votre lien de réservation gratuit peut apparaître (avec des valeurs différentes pour les attributs language).

L'exemple suivant présente les versions française et anglaise d'une description de chambre :


<Description>
  <Text text="Two queen-sized beds" language="en"/>
  <Text text="Deux lits de la reine" language="fr"/>
</Description>
<Name> Obligatoire Chaîne Nom de la catégorie de la chambre. Cette valeur doit correspondre à ce qui figure sur la page de destination de l'hôtel (anciennement "point de vente"). La valeur de cet élément ne doit pas être qu'en majuscules.

Cet élément utilise un seul élément enfant, <Text>, qui comporte les deux attributs obligatoires suivants :

  • text : nom de la chambre
  • language : code de langue à deux lettres, par exemple "fr"

Utilisez un élément <Text> distinct pour chaque langue dans laquelle votre annonce ou votre lien de réservation gratuit peut apparaître (avec des valeurs différentes pour les attributs language).

L'exemple suivant présente les versions française et anglaise du nom de la chambre :


<Name>
  <Text text="Standard Double Room" language="en"/>
  <Text text="Le chambre double" language="fr"/>
</Name>
<Occupancy> Facultatif Entier Nombre maximum de personnes pour lequel la chambre est prévue. Par exemple, une grande suite peut accueillir matériellement six personnes (capacité = 6), mais n'être prévue que pour quatre personnes.

Cette valeur doit être inférieure ou égale à l'élément <Capacity>, qui correspond au nombre de personnes que la chambre peut matériellement accueillir.

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

<Occupancy> peut être accompagné de <OccupancyDetails>, qui spécifie le type de personnes (adultes ou enfants). Consultez <OccupancyDetails> pour connaître la syntaxe et la description des éléments enfants.

<PhotoURL> Facultatif Objet 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>
<RoomID> Obligatoire Chaîne Identifiant unique de la chambre. Utilisez cet identifiant pour faire correspondre les données de la chambre aux blocs d'éléments <Result> dans vos mises à jour de prix. Pour en savoir plus, consultez Métadonnées des offres de chambres. (Vous pouvez également utiliser cet identifiant pour faire référence à une définition de chambre commune dans un message de transaction lorsque vous définissez les données de la chambre de façon intégrée.)

Exemples

Exemple 1

L'exemple suivant définit les données de la chambre :

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

Exemple 2

L'exemple suivant définit les métadonnées d'une chambre et d'un séjour organisé :

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

Exemple 3

L'exemple suivant définit les métadonnées d'une chambre et d'un séjour organisé pour plusieurs offres de chambres :

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

<PackageData>

Définit des métadonnées indépendamment des séjours pour les offres de chambres d'un établissement. Cet élément contient des informations associées à un partenaire et à un hôtel, mais pas à un séjour. L'objectif est de définir une seule fois toutes les données indépendamment de tout séjour et de les référencer à partir de données de séjour.

L'élément <PackageData> apparaît à l'emplacement suivant dans la hiérarchie XML des messages de transaction :

+ <Transaction>
    + <PropertyDataSet>  // Room and package metadata
        + <Property>
        + <RoomData>
        + <PackageData>
    + <Result>           // Pricing and availability
        + <Rates>
        + <RoomBundle>
        + ...

L'élément <PackageData> est semblable à <RoomData>, mais il décrit des caractéristiques et conditions tarifaires ne figurant pas dans la description de la chambre. Vous devez utiliser les attributs <RoomData> et <PackageData> ensemble pour fournir des informations sur les offres de chambres et les caractéristiques tarifaires. Pour les chambres individuelles ne faisant pas partie d'un séjour organisé, utilisez simplement <RoomData>.

Vous pouvez définir à la fois les éléments <RoomData> et <PackageData> pour la même chambre ou offre de chambres. Lorsque nous présentons cette chambre ou ce séjour organisé dans les résultats de recherche, les deux descriptions s'affichent et sont séparées par un trait d'union.

Si vous mettez à jour un seul élément <PackageData> pour un établissement, vous devez mettre à jour tous les éléments <PackageData> et <RoomData> de cet établissement. Chaque élément <PropertyDataSet> englobe toutes les données liées à l'établissement et remplace toute donnée existante.

Pour en savoir plus, consultez Métadonnées des offres de chambres.

Syntaxe

L'élément <PackageData> utilise la syntaxe suivante :

<?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"/>
      <Capacity>max_number_of_occupants</Capacity>
      <ChargeCurrency>[deposit|hotel|installment|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>
      <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>

Attributs

L'élément <PackageData> ne comporte aucun attribut.

Éléments enfants

L'élément <PackageData> comporte les éléments enfants suivants :

Élément enfant Obligatoire ? Type Description
<BreakfastIncluded> Facultatif Booléen Spécifie si cette offre de chambres inclut le petit-déjeuner dans le tarif. Les valeurs valides sont 0 (ou false) et 1 (ou true).
<Capacity> Facultatif Entier Nombre maximal de personnes qu'une offre de chambres peut matériellement accueillir.

Si elle est définie, cette valeur doit être supérieure ou égale à la valeur de <Occupancy>, qui correspond au nombre de personnes prévues pour un séjour organisé spécifique. Par exemple, l'élément <Capacity> peut être "6" pour une grande suite, tandis que l'élément <Occupancy> du séjour organisé "Lune de miel" est "2".

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

Si vous spécifiez cet élément à la fois dans <RoomBundle> et <PackageData>, la valeur de <RoomBundle> est prioritaire.

<ChargeCurrency> Facultatif Énumération Le moment et l'endroit où l'utilisateur paie sa réservation. Cet élément utilise la même syntaxe que <ChargeCurrency> dans un élément <Result>.

La valeur par défaut est web.

<Description> Facultatif Objet Description détaillée du séjour organisé. Cet élément doit contenir des informations qui ne sont pas décrites dans les autres éléments ni dans l'élément <Name>. La description de la chambre ne doit pas être qu'en majuscules.

L'élément <Description> dispose d'un seul élément enfant, <Text>, qui comporte deux attributs obligatoires : text et language. L'attribut text correspond à la description, et l'attribut language définit un code de langue à deux lettres, comme illustré dans l'exemple suivant :


<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> Facultatif Booléen Si une offre de chambres inclut un accès à Internet sans frais, alors que les autres offres n'incluent pas ce service. N'utilisez pas cet élément pour les offres de chambres d'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).
<Name> Obligatoire Chaîne Nom de la catégorie de la chambre. Cette valeur doit correspondre à ce qui figure sur la page de destination de l'hôtel. La valeur de cet élément ne doit pas être qu'en majuscules.

Cet élément dispose d'un seul élément enfant, <Text>, qui comporte deux attributs : text et language. L'attribut text correspond à la description, et l'attribut language définit un code de langue à deux lettres, comme illustré dans l'exemple suivant :


<Name>
  <Text text="Bed and Breakfast" language="en"/>
  <Text text="Lit et petit déjeuné" language="fr"/>
</Name>
<Occupancy> Facultatif Entier Nombre maximal de personnes pour lequel l'offre de chambres est prévue. Par exemple, une grande suite peut accueillir matériellement six personnes, mais n'être prévue que pour quatre personnes.

Cette valeur doit être inférieure ou égale à l'élément <Capacity>, qui correspond au nombre de personnes que la chambre peut matériellement accueillir.

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

Si vous spécifiez cet élément à la fois dans <RoomBundle> et dans <PackageData>, la valeur de <RoomBundle> est prioritaire.

Remarque :

<Occupancy> peut être accompagné de <OccupancyDetails>, qui spécifie le type de personnes (adultes ou enfants). Consultez <OccupancyDetails> pour connaître la syntaxe et la description des éléments enfants.

<PackageID> Obligatoire Chaîne Identifiant unique du séjour organisé. Utilisez cet identifiant pour faire correspondre les données de l'offre de chambres aux blocs d'éléments <Result> dans vos mises à jour de prix. Pour en savoir plus, consultez Métadonnées des offres de chambres.

(Vous pouvez également utiliser cet identifiant pour référencer une définition d'offre de chambres commune utilisée dans un message de transaction lorsque vous définissez les données de l'offre de façon intégrée.)

<ParkingIncluded> Facultatif Booléen Indique si une offre de chambres inclut une place de parking sans frais, si le stationnement est normalement payant dans cet hôtel. Ne spécifiez aucune valeur pour cet élément si l'établissement 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.

<Refundable> Facultatif Objet 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 sur le remboursement ne s'affiche. Les modalités de remboursement définies au niveau <PackageData> remplacent celles du niveau <Result>. Les modalités de remboursement définies au niveau <Rates> remplacent celles du niveau <PackageData>. Vous pouvez signaler les tarifs remboursables aux utilisateurs à l'aide d'autres options sans modifier directement le schéma du message de transaction. Pour en savoir plus sur ces options, cliquez ici.

L'exemple suivant présente l'élément <Refundable> avec tous ses attributs définis :


<Refundable available="1" refundable_until_days="7"
refundable_until_time="18:00:00"/>

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 spécifiez aucun attribut, le tarif ne s'affiche pas comme remboursable. Les attributs sont les suivants :

  • available : (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.
  • refundable_until_days : (obligatoire si available comporte 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.
  • refundable_until_time : (vivement recommandé si available comporte la valeur true) indique l'heure limite, en heure locale de l'hôtel, jusqu'à laquelle un remboursement total peut être accordé. Vous pouvez associer cet 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 renseigné, la valeur par défaut est minuit.

    La valeur de cet attribut doit être spécifiée au format Heure.

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).
<MembershipBenefits
Included>
Facultatif Booléen Le tarif inclut les avantages du niveau Élite pendant toute la durée du séjour. Inclut les paramètres suivants :
  • ProgramName : nom du programme de fidélité du niveau Élite
  • ProgramLevel : niveau du programme (par exemple, "Gold")
  • NightlyValue (optional) : valeur par nuit des avantages
<CarRentalIncluded> Facultatif Booléen Le tarif inclut la location gratuite d'une voiture pendant toute la durée du séjour.
<MilesIncluded> Facultatif Booléen Le tarif inclut les miles du programme de fidélité. Les paramètres sont les suivants :
  • NumberofMiles : nombre de miles par séjour
  • Provider : fournisseurs des miles du programme de fidélité
<OnPropertyCredit> Facultatif Booléen Le tarif inclut un crédit à dépenser dans l'hôtel (aliments et/ou boissons non alcoolisées, complexe hôtelier, spa, etc.). Paramètre :
  • Amount : valeur du crédit par séjour, dans la devise locale

Exemples

Exemple 1

L'exemple suivant définit une seule offre de chambres, pour deux personnes (un adulte et un enfant), et inclut le petit-déjeuner :

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

Exemple 2

L'exemple suivant définit les métadonnées d'une chambre et d'un séjour organisé :

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

Exemple 3

L'exemple suivant définit les métadonnées d'une chambre et d'un séjour organisé pour plusieurs offres de chambres :

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

Exemple 4

L'exemple suivant définit les métadonnées d'une chambre et d'un séjour organisé pour une offre de chambres avec des conditions tarifaires :

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

<!-- The actual list of prices -->
  <Result>
…
  </Result>
</Transaction>

<Result>

Conteneur pour les mises à jour de prix et de disponibilité dans un message <Transaction>.

L'élément <Result> apparaît à l'emplacement suivant dans la hiérarchie XML des messages de transaction :

+ <Transaction>
    + <PropertyDataSet>  // Room and package metadata
        + <Property>
        + <RoomData>
        + <PackageData>
    + <Result>           // Pricing and availability
        + <Rates>
        + <RoomBundle>
        + ...

Utilisez <Result> pour définir ou mettre à jour les prix des chambres, et préciser les disponibilités. Ce qui est défini dans cet élément fait normalement référence à des métadonnées indépendamment d'un séjour concernant une chambre ou un séjour organisé (comme une description ou un ensemble de services) définis dans les éléments <PackageData> et <RoomData>.

En général, vous envoyez très fréquemment des messages de transaction avec des mises à jour de prix. Le type et la fréquence d'envoi de ces messages dépendent du mode d'envoi utilisé.

Vous pouvez utiliser <Result> dans un message de transaction pour supprimer des séjours, comme décrit sur la page Supprimer l'inventaire. Si vous souhaitez en savoir plus sur l'utilisation des messages de transaction pour modifier les prix et les disponibilités, consultez Ajouter et mettre à jour un inventaire.

Un message de transaction peut comporter autant d'éléments <Result> que nécessaire, à condition que la taille du message ne dépasse pas 100 Mo.

Syntaxe

L'élément <Result> utilise la syntaxe suivante :

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

Attributs

L'élément <Result> comporte les attributs suivants :

Attribut Obligatoire ? Type Description
mergeable Facultatif Booléen Par défaut, les nouveaux prix d'une association spécifique d'un hôtel et d'un séjour remplacent les prix précédents (non expirés) présents dans le cache de Google. L'attribut "mergeable" vous permet de stocker d'autres prix dans le cache de Google sans supprimer les informations de tarification précédentes. Pour les réponses aux requêtes de prix en temps réel avec contexte, cet attribut est toujours défini sur true (quelle que soit la réponse de votre message de transaction).

Éléments enfants

L'élément <Result> comporte les éléments enfants suivants :

Élément enfant Obligatoire ? Type Description
<AllowablePointsOfSale> Facultatif Objet Une ou plusieurs pages de destination éligibles pour l'hôtel. Une page de destination est un site Web autorisé à traiter la réservation d'un hôtel pour l'utilisateur final. Pour inclure explicitement une page de destination donnée (et exclure les autres), vous devez ajouter un ou plusieurs éléments <AllowablePointsOfSale> qui correspondent à l'attribut id de l'élément <PointOfSale> dans le fichier des pages de destination.

Si vous n'utilisez pas cet élément, toutes les pages de destination définies dans le fichier des pages de destination sont autorisées à être utilisées pour la réservation d'une chambre. Pour en savoir plus, consultez Syntaxe du fichier des pages de destination.

<Baserate> Facultatif Float Prix de la chambre pour le séjour. Vous devez respecter les consignes suivantes pour spécifier la valeur de cet élément :

  • Pour une chambre individuelle, définissez le tarif le moins cher que vous proposez pour une chambre pour deux personnes.
  • Pour une chambre partagée, laissez ce champ vide et utilisez <RoomBundle>.
  • Indiquez le prix pour la durée totale du séjour, et non le prix moyen par nuit.

Si la chambre n'est pas disponible pour le séjour sélectionné, définissez la valeur de l'élément <Baserate> sur "-1" pour indiquer qu'une chambre n'est plus disponible dans l'inventaire. Dans ce cas, vous ne recevrez pas de requête de prix en temps réel. Cependant, si aucun élément <Baserate> n'est indiqué, nous vous envoyons une requête de prix en temps réel.

Pour supprimer une offre de chambres, suivez les instructions de la section Supprimer une offre de chambres.

L'élément <Baserate> ne doit contenir aucun symbole de groupement des chiffres, tel qu'une virgule (,) ou un point (.). Utilisez un point (.) comme séparateur décimal. Par exemple, 1 200,40 $ doit être représenté sous la forme suivante :


<Baserate currency="USD">1200.40</Baserate>

L'élément <Baserate> comporte les attributs facultatifs suivants :

  • all_inclusive : valeur booléenne indiquant si ce tarif inclut les taxes et les frais. En règle générale, définissez cette valeur sur "false" pour les utilisateurs finaux situés au Canada et aux États-Unis, et indiquez les valeurs pour les éléments <Tax> et <OtherFees>. Si vous spécifiez des prix tout compris et que vous ne détaillez pas le montant des taxes et des frais pour les utilisateurs situés au Canada et aux États-Unis, il se peut que vos hôtels ne s'affichent pas dans les résultats.

    Pour tous les autres utilisateurs finaux, vous devez en principe inclure les taxes et les frais dans le tarif de base, et définir la valeur de l'attribut all_inclusive sur "true". Pour en savoir plus, consultez Taxes et frais.

    La valeur par défaut est "false".

  • currency : code de devise à trois lettres. Exemple : "USD" pour le dollar américain.
<ChargeCurrency> Facultatif Énumération Le moment et l'endroit où l'utilisateur paie sa réservation. Dans un message de transaction, cet élément peut être utilisé dans l'élément <Result> pour le prix de l'hôtel ou dans le bloc <PackageData> pour une offre de chambres.

Les valeurs valides sont les suivantes :

  • "web" : l'utilisateur paie en ligne lors de la réservation. Il s'agit de la valeur par défaut. La page de destination utilisée est définie dans le fichier des pages de destination. Elle peut changer en fonction de différents facteurs comme la devise, le lieu et la langue.
  • "hotel" : l'utilisateur paie lorsqu'il s'enregistre à l'hôtel. Si le paiement doit toujours être effectué dans la devise du pays dans lequel se situe l'hôtel, définissez la valeur de <ChargeCurrency> sur "hotel". La page de destination utilisée ne change pas en fonction de la devise de l'utilisateur.
  • "deposit" : l'utilisateur paie une partie de la réservation immédiatement et le reste plus tard (généralement, lorsqu'il libère la chambre).
  • "installment" : l'utilisateur paie au départ une partie de la somme totale due, puis verse régulièrement un montant précis pendant une période fixe.

La valeur par défaut est "web".

<Checkin> Obligatoire Date Date d'arrivée pour un séjour au format Date. La combinaison de l'élément <Nights> et de l'élément <Checkin> constitue un séjour.
<Custom[1‑5]> Facultatif Chaîne Définit un champ personnalisé que vous pouvez utiliser pour communiquer d'autres données associées à un hôtel. Vous pouvez transmettre jusqu'à cinq valeurs personnalisées à l'aide des éléments suivants :
  • <Custom1>
  • <Custom2>
  • <Custom3>
  • <Custom4>
  • <Custom5>

Les éléments <Custom> vous permettent de transmettre des données arbitraires. Par exemple, vous pouvez définir une valeur dans ce champ qui sera ensuite utilisée par le fichier des pages de destination afin de créer l'URL personnalisée d'une page de destination. Chaque champ personnalisé est limité à 200 caractères. Pour en savoir plus, consultez Syntaxe du fichier des pages de destination.

<ExpirationTime> Facultatif DateTime Date et heure auxquelles le prix est considéré comme arrivé à expiration (délai de trois heures minimum).

Nous vous conseillons de ne pas fournir d'horodatage d'expiration si ce n'est pas essentiel pour la structure de vos tarifs.

<Nights> Obligatoire Entier Nombre de nuits du séjour. La valeur de l'élément <Nights> doit être un entier positif. La combinaison de l'élément <Nights> et de l'élément <Checkin> constitue un séjour.
<OtherFees> Facultatif Float Frais, autres que le tarif de base et les taxes, répercutés sur le prix final d'une chambre. L'élément <OtherFees> comporte un seul attribut obligatoire, currency, qui définit la devise des frais sous forme de code à trois lettres. Exemple : "USD".

L'élément <OtherFees> est obligatoire si la valeur de <Baserate> est supérieure à zéro.

<Occupancy> Facultatif Entier Spécifie le nombre maximal de personnes. Lorsque <Occupancy> apparaît sous <Result>, il doit spécifier "2" ou plus. <Occupancy> peut être accompagné de <OccupancyDetails>, qui spécifie le type de personnes (adultes ou enfants). Pour connaître la syntaxe et la description des éléments enfants, consultez <OccupancyDetails>. Si l'élément <Occupancy> n'est pas fourni, le nombre de personnes est défini par défaut sur "2".
<PackageID> Facultatif Chaîne Identifiant unique du séjour organisé à associer à des données prédéfinies de séjours organisés. Sert également à renseigner la variable de page de destination PACKAGE-ID. Pour en savoir plus, consultez Métadonnées des offres de chambres.
<Property> Obligatoire Chaîne Identifiant de l'hôtel associé aux données définies (prix, séjour, offre de chambres ou métadonnées). La valeur de cet élément doit être une chaîne. Elle doit correspondre à la fiche <id> que vous avez définie dans votre flux Hotel List Feed.
<Rates> Facultatif <Rates> Conteneur pour un ou plusieurs blocs <Rate>. Chaque bloc <Rate> dans <Rates> définit un prix différent pour la combinaison chambre/séjour.

N'utilisez l'élément <Rates> que s'il existe plusieurs tarifs pour la même combinaison chambre/séjour. Par exemple, vous devez définir plusieurs tarifs pour des tarifs sous conditions, des tarifs préférentiels ou des tarifs sous conditions dans les offres de chambres).

<Refundable> Facultatif Objet 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 sur le remboursement ne s'affiche. Les modalités de remboursement définies au niveau <PackageData> remplacent celles du niveau <Result>. Les modalités de remboursement définies au niveau <Rates> remplacent celles du niveau <PackageData>. Vous pouvez signaler les tarifs remboursables aux utilisateurs à l'aide d'autres options sans modifier directement le schéma du message de transaction. Pour en savoir plus sur ces options, cliquez ici.

L'exemple suivant présente l'élément <Refundable> avec tous ses attributs définis :


<Refundable available="1" refundable_until_days="7"
refundable_until_time="18:00:00"/>

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 spécifiez aucun attribut, le tarif ne s'affiche pas comme remboursable. Les attributs sont les suivants :

  • available : (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.
  • refundable_until_days : (obligatoire si available comporte 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.
  • refundable_until_time : (vivement recommandé si available comporte la valeur true) indique l'heure limite, en heure locale de l'hôtel, jusqu'à laquelle un remboursement total peut être accordé. Vous pouvez associer cet 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 renseigné, la valeur par défaut est minuit.

    La valeur de cet attribut doit être spécifiée au format Heure.

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).
<RoomBundle> Facultatif <RoomBundle> Un conteneur pour les informations sur les options payantes d'une chambre, les formules de services et les conditions d'achat pour l'hôtel et le séjour spécifiés.

En règle générale, utilisez cet élément pour indiquer le prix de la chambre de base et ceux des différents types de chambres dans le même établissement. Bien qu'il soit possible de définir des descriptions d'offres de chambres de façon intégrée, il est préférable d'utiliser un autre message de transaction. Notre système stockera alors les métadonnées afin que vous puissiez y faire référence, plutôt que de les répéter, dans les futures mises à jour de prix.

<RoomID> Facultatif Chaîne Identifiant unique de la chambre à associer à des données prédéfinies de chambres. Sert également à renseigner la variable de page de destination PARTNER-ROOM-ID. Pour en savoir plus, consultez Métadonnées des offres de chambres.
<Tax> Facultatif Float Taxes appliquées lors du calcul du prix final d'une chambre. L'élément <Tax> comporte un seul attribut obligatoire, currency, qui définit la devise des taxes sous forme de code à trois lettres. Exemple : "USD". L'élément <Tax> est obligatoire si la valeur de <Baserate> est supérieure à zéro.

Exemples

Exemple pour plusieurs établissements

L'exemple suivant définit un séjour et ses tarifs pour deux établissements :

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

Cet exemple ne fournit pas d'informations sur la chambre, telles que sa description, une photo et sa légende, son nom et sa capacité d'accueil.

Vous pouvez définir ces informations une seule fois dans un autre message de transaction qui sera stocké par notre système. Vous pourrez ensuite y faire référence dans les futures mises à jour de prix et d'inventaire. Pour en savoir plus, consultez Métadonnées des offres de chambres.

Exemple pour plusieurs tarifs

L'exemple suivant définit un seul séjour et un seul établissement avec différents tarifs qui varient en fonction du nombre de personnes. L'élément <Rates> peut servir à indiquer différents tarifs pour un établissement spécifique. L'exemple ci-dessous peut également convenir aux établissements proposant des locations de vacances (VR, Vacation Rental).

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

<Rates>

Conteneur pour un ou plusieurs blocs <Rate>. Chaque bloc <Rate> dans <Rates> définit un prix différent pour la combinaison chambre/séjour.

N'utilisez l'élément <Rates> que s'il existe plusieurs tarifs pour la même combinaison chambre/séjour. Par exemple, vous devez définir plusieurs tarifs pour des tarifs sous conditions, des tarifs préférentiels ou des tarifs sous conditions dans les offres de chambres).

L'élément <Rates> apparaît à l'emplacement suivant dans la hiérarchie XML des messages de transaction :

+ <Transaction>
    + <PropertyDataSet>  // Room and package metadata
        + <Property>
        + <RoomData>
        + <PackageData>
    + <Result>           // Pricing and availability
        + <Rates>
        + <RoomBundle>           (Can also contain <Rates>)
        + ...

Les valeurs définies dans un élément <Rate> remplacent les valeurs liées à la tarification figurant dans l'élément parent <Result> ou <RoomBundle>. Si elles ne sont pas définies dans <Rate>, elles héritent leur valeur de l'élément parent.

Syntaxe

L'élément <Rates> utilise la syntaxe suivante :

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

Attributs

L'élément <Rates> comporte les attributs suivants :

Attribut Obligatoire ? Description
rate_rule_id Facultatif Pour les tarifs sous conditions, cet identifiant fait correspondre un tarif à une définition figurant dans votre fichier de définition des règles d'offres. Ce champ est limité à 40 caractères.

Éléments enfants

L'élément <Rates> comporte les éléments enfants suivants :

Élément enfant Obligatoire ? Type Description
<AllowablePointsOfSale> Facultatif Objet Une ou plusieurs pages de destination éligibles pour l'hôtel. Cet élément utilise la même syntaxe que <AllowablePointsOfSale> dans <Result>.
<Baserate> Obligatoire Float Prix de la chambre pour le séjour. Cet élément utilise la même syntaxe que <Baserate> dans <Result>.

Remarque : L'élément enfant <Baserate> sous <Rate> ne peut pas être défini comme indisponible (-1).

<ChargeCurrency> Facultatif Énumération Le moment et l'endroit où l'utilisateur paie sa réservation. Cet élément utilise la même syntaxe que <ChargeCurrency> dans un élément <Result>.
<Custom[1‑5]> Facultatif Chaîne Champs personnalisés que vous pouvez utiliser pour transmettre d'autres données associées à un hôtel vers une page de destination. Cet élément utilise la même syntaxe que <Custom[1‑5]> dans un élément <Result>. Chaque champ personnalisé est limité à 200 caractères. Pour en savoir plus, consultez Syntaxe du fichier des pages de destination.
<ExpirationTime> Facultatif DateTime Date et heure auxquelles le tarif est considéré comme arrivé à expiration. Cet élément utilise la même syntaxe que <ExpirationTime> dans un élément <Result>.
<Occupancy> Facultatif Entier

Spécifie le nombre maximal de personnes. <Occupancy> peut être accompagné de <OccupancyDetails>, qui spécifie le type de personnes (adultes ou enfants). Pour connaître la syntaxe et la description des éléments enfants, consultez <OccupancyDetails>.

<OtherFees> Obligatoire Float Frais, autres que le tarif de base et les taxes, répercutés sur le prix final d'une chambre. Cet élément utilise la même syntaxe que <OtherFees> dans un élément <Result>.
<Refundable> Facultatif Objet 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 sur le remboursement ne s'affiche. Les modalités de remboursement définies au niveau <PackageData> remplacent celles du niveau <Result>. Les modalités de remboursement définies au niveau <Rates> remplacent celles du niveau <PackageData>. Vous pouvez signaler les tarifs remboursables aux utilisateurs à l'aide d'autres options sans modifier directement le schéma du message de transaction. Pour en savoir plus sur ces options, cliquez ici.

L'exemple suivant présente l'élément <Refundable> avec tous ses attributs définis :


<Refundable available="1" refundable_until_days="7"
refundable_until_time="18:00:00"/>

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 spécifiez aucun attribut, le tarif ne s'affiche pas comme remboursable. Les attributs sont les suivants :

  • available : (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.
  • refundable_until_days : (obligatoire si available comporte 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.
  • refundable_until_time : (vivement recommandé si available comporte la valeur true) indique l'heure limite, en heure locale de l'hôtel, jusqu'à laquelle un remboursement total peut être accordé. Vous pouvez associer cet 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 renseigné, la valeur par défaut est minuit.

    La valeur de cet attribut doit être spécifiée au format Heure.

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).
<Tax> Obligatoire Float Taxes appliquées lors du calcul du prix final d'une chambre. Cet élément utilise la même syntaxe que <Tax> dans un élément <Result>.

Remarque : <Rates> comporte les mêmes éléments enfants que<Result>, à l'exception de <Checkin>, <Nights>, <Property>, <RoomBundle> et <RoomID>.

Exemples

Exemple 1

Dans l'exemple suivant, vous pouvez voir un message de transaction contenant un tarif de base et un tarif sous conditions :

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

Exemple 2

L'exemple suivant définit un tarif de base et plusieurs tarifs sous conditions dans un élément <RoomBundle> :

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

    <!-- Any attribute listed below will not be inherited between bundles
         or baserates. -->
    <!-- The baserate attribute is optional. -->
    <!-- If a baserate is provided, the pricing must match a specific roombundle
    price provided below. -->
    <Baserate currency="USD">300.00</Baserate>
    <Tax currency="USD">30.00</Tax>
    <OtherFees currency="USD">2.00</OtherFees>

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

Définit le prix et la disponibilité des offres de chambres en tant qu'enfant de l'élément <Result> dans un message <Transaction>. Définissez un élément distinct pour chaque combinaison séjour organisé/séjour. Pour définir le séjour organisé et les conditions des offres de chambres, utilisez <RoomData>.

L'élément <RoomBundle> apparaît à l'emplacement suivant dans la hiérarchie XML des messages de transaction :

+ <Transaction>
    + <PropertyDataSet>  // Room and package metadata
        + <Property>
        + <RoomData>
        + <PackageData>
    + <Result>           // Pricing and availability
        + <Rates>
        + <RoomBundle>
        + ...

Pour en savoir plus, consultez Utiliser les offres de chambres.

Syntaxe

L'élément <RoomBundle> utilise la syntaxe suivante :

<?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 -->
      <Capacity>max_number_of_occupants</Capacity>
      <ChargeCurrency>[deposit|hotel|installment|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>

Remarque : Vous pouvez également définir <PackageData> et/ou <RoomData> dans un élément <RoomBundle>. Cependant, cette méthode est moins efficace que de les définir séparément et de les mentionner avec <RoomID> et <PackageID>. Elle n'est donc pas recommandée.

Attributs

L'élément <RoomBundle> ne comporte aucun attribut.

Éléments enfants

L'élément <RoomBundle> comporte les éléments enfants suivants :

Élément enfant Obligatoire ? Type Description
<Baserate> Obligatoire Float Définit le prix de l'offre de chambres pour le séjour. Cet élément utilise la même syntaxe que <Baserate> dans l'élément <Result>, à une exception près :
  • Si la chambre n'est pas disponible pour le séjour, supprimez l'élément <RoomBundle> pour indiquer qu'une chambre n'est plus disponible dans l'inventaire. Pour en savoir plus, consultez Supprimer une offre de chambres.
<BreakfastIncluded> Facultatif Booléen Spécifie si cette offre de chambres inclut le petit-déjeuner dans le tarif.
<Capacity> Facultatif Entier Nombre maximal de personnes qu'une offre de chambres peut matériellement accueillir.

Si elle est définie, cette valeur doit être supérieure ou égale à la valeur de <Occupancy>, qui correspond au nombre de personnes prévues pour un séjour organisé spécifique. Par exemple, l'élément <Capacity> peut être "6" pour une grande suite, tandis que l'élément <Occupancy> du séjour organisé "Lune de miel" est "2".

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

Si vous spécifiez cet élément à la fois dans <RoomBundle> et <PackageData>, la valeur de <RoomBundle> est prioritaire.

<ChargeCurrency> Facultatif Énumération Le moment et l'endroit où l'utilisateur paie sa réservation. Cet élément utilise la même syntaxe que <ChargeCurrency> dans un élément <Result>.

La valeur par défaut est web.

<Custom[1‑5]> Facultatif Chaîne Champs personnalisés pour transmettre des données supplémentaires aux pages de destination pour l'offre de chambres. Ces éléments utilisent la même syntaxe que <Custom[1-5]> dans l'élément <Result>. Chaque champ personnalisé est limité à 200 caractères. Pour en savoir plus, consultez Syntaxe du fichier des pages de destination.
<InternetIncluded> Facultatif Booléen Si une offre de chambres inclut un accès à Internet sans frais, alors que les autres offres n'incluent pas ce service. N'utilisez pas cet élément pour les offres de chambres d'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.
<Occupancy> Obligatoire Entier Nombre maximal de personnes pour lequel l'offre de chambres est prévue. Par exemple, une grande suite peut matériellement accueillir six personnes, tandis que le séjour organisé "Lune de miel" n'est prévu que pour deux personnes.

Cette valeur doit être inférieure ou égale à l'élément <Capacity>, qui correspond au nombre de personnes que la chambre peut matériellement accueillir.

Lorsque vous définissez le nombre de personnes dans l'URL de votre page de destination, utilisez les variables NUM-ADULTS et NUM-CHILDREN, comme décrit sur la page Utiliser des variables et des conditions. La valeur par défaut est "2" adultes et "0" enfant.

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

Remarques :

  • <Occupancy> peut être accompagné de <OccupancyDetails>, qui spécifie le type de personnes (adultes ou enfants). Pour connaître la syntaxe et la description des éléments enfants, consultez <OccupancyDetails>.
  • Si vous spécifiez <Occupancy> à la fois dans <RoomBundle> et <PackageData>, la valeur de <RoomBundle> est prioritaire.
<OtherFees> Obligatoire Float Frais, autres que le tarif de base et les taxes, répercutés sur le prix final d'une chambre. L'élément <OtherFees> comporte un seul attribut obligatoire, currency, qui définit la devise des frais sous forme de code à trois lettres. Exemple : "USD" pour le dollar américain.
<PackageID> Facultatif (recommandé) Chaîne Identifiant unique des données du séjour organisé. Utilisez cet identifiant pour faire correspondre les données de l'offre de chambres avec les données envoyées dans <PackageData>. Pour plus d'informations, consultez Métadonnées des offres de chambres. (Vous pouvez également utiliser cet identifiant pour faire référence à une définition d'offre de chambres commune utilisée dans un message de transaction lorsque vous définissez les données de l'offre de façon intégrée.)
<ParkingIncluded> Facultatif Booléen Indique si une offre de chambres inclut une place de parking sans frais, si le stationnement est normalement payant dans cet hôtel. Ne spécifiez aucune valeur pour cet élément si l'établissement 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.

<RatePlanID> Facultatif Chaîne L'élément "RatePlanID" correspond à l'identifiant unique d'une combinaison chambre/séjour organisé. Par exemple, si vous définissez "5" pour <RoomID> et "ABC" pour <PackageID>, vous pourriez alors utiliser la valeur "5-ABC" pour <RatePlanID>. Nous vous recommandons vivement d'utiliser l'élément "RatePlanID" comme une variable pour créer l'URL dynamique de votre page de destination (anciennement "point de vente").

Pour plus d'informations, consultez Utiliser des variables et des conditions.

<Rates> Facultatif <Rates> Tarifs qui remplacent les valeurs par défaut pour cette offre de chambres. Cet élément utilise la même syntaxe que <Rates> dans <Result>.
<Refundable> Facultatif Objet 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 sur le remboursement ne s'affiche. Les modalités de remboursement définies au niveau <PackageData> remplacent celles du niveau <Result>. Les modalités de remboursement définies au niveau <Rates> remplacent celles du niveau <PackageData>. Vous pouvez signaler les tarifs remboursables aux utilisateurs à l'aide d'autres options sans modifier directement le schéma du message de transaction. Pour en savoir plus sur ces options, cliquez ici.

L'exemple suivant présente l'élément <Refundable> avec tous ses attributs définis :


<Refundable available="1" refundable_until_days="7"
refundable_until_time="18:00:00"/>

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 spécifiez aucun attribut, le tarif ne s'affiche pas comme remboursable. Les attributs sont les suivants :

  • available : (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.
  • refundable_until_days : (obligatoire si available comporte 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.
  • refundable_until_time : (vivement recommandé si available comporte la valeur true) indique l'heure limite, en heure locale de l'hôtel, jusqu'à laquelle un remboursement total peut être accordé. Vous pouvez associer cet 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 renseigné, la valeur par défaut est minuit.

    La valeur de cet attribut doit être spécifiée au format Heure.

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).
<RoomID> Obligatoire Chaîne Identifiant unique des données de la chambre. Utilisez cet identifiant pour faire correspondre les données de l'offre de chambres aux données que vous avez envoyées dans <RoomData>. Pour en savoir plus, consultez Métadonnées des offres de chambres. (Vous pouvez également utiliser cet identifiant pour faire référence à une définition de chambre commune dans un message de transaction lorsque vous définissez les données de la chambre de façon intégrée.)
<Tax> Obligatoire Float Taxes appliquées lors du calcul du prix final d'une chambre. L'élément <Tax> comporte un seul attribut obligatoire, currency, qui définit la devise des taxes sous forme de code à trois lettres. Exemple : "USD" pour le dollar américain.

Exemples

Exemple 1

L'exemple suivant définit une réponse avec une offre pour une seule personne. Lorsqu'un utilisateur sélectionne 1 dans l'outil de sélection du nombre de personnes, nous affichons le prix éligible le plus bas, quel que soit le nombre de personnes.

Si aucun prix n'est disponible pour une seule personne, nous affichons le tarif le plus bas pour deux personnes. Sachez que nous n'envoyons pas de requête de prix en temps réel pour une seule personne si les prix pour deux personnes (ou plus) sont mis en cache pour un séjour.

Cet exemple fait référence à des métadonnées de chambres et de séjours organisés prédéfinies avec les éléments <RoomID> et <PackageID>. Utilisez les éléments <RoomData> et <PackageData> pour spécifier ces informations.

<!-- 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>
    <!-- Note: The default baserate must still show lowest price for double
         occupancy or more. -->
    <!-- Single occupancy pricing will be specified in a room bundle below -->
    <Property>180054</Property>
    <Checkin>2017-10-07</Checkin>
    <Nights>2</Nights>
    <!-- The Baserate, Tax, and OtherFees elements below are optional. If
    provided, these elements much match at least one room bundle pricing
    below -->
    <Baserate currency="USD">199.99</Baserate>
    <Tax currency="USD">25.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
    <Occupancy>2</Occupancy>
    <OccupancyDetails>
      <NumAdults>2</NumAdults>
    </OccupancyDetails>

    <!-- Base Room Bundle -->
    <RoomBundle>
      <RoomID>060773</RoomID>
      <PackageID>P54321</PackageID>
      <!-- Price for 2 ("occupancy") is repeated and matches baserates and
           attributes provided above -->
      <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>

Exemple 2

L'exemple suivant définit une réponse pour plus de deux personnes.

Il fait référence à des métadonnées de chambres et de séjours organisés prédéfinies avec les éléments <RoomID> et <PackageID>. Utilisez les éléments <RoomData> et <PackageData> pour spécifier ces informations.

<!-- 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>
    <!-- Note: The default baserate must still show lowest price for double
               occupancy or more. -->
    <Property>180054</Property>
    <Checkin>2017-10-07</Checkin>
    <Nights>2</Nights>
    <!-- Any attribute listed below will not be inherited between bundles or
         baserates -->
    <Baserate currency="USD">499.99</Baserate>
    <Tax currency="USD">55.12</Tax>
    <OtherFees currency="USD">22.00</OtherFees>
    <Occupancy>3</Occupancy>
    <OccupancyDetails>
      <NumAdults>3</NumAdults>
    </OccupancyDetails>

    <!-- 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>
      <!-- Price for 2 ("occupancy") is repeated and matches baserates and
           attributes provided above -->
      <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>

Exemple 3

L'exemple suivant définit le nombre de personnes dans plusieurs offres de chambres afin de présenter les différents tarifs possibles pour une chambre d'hôtel.

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

Exemple 4

L'exemple suivant définit un tarif de base et plusieurs tarifs sous conditions dans un élément <RoomBundle> :

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

    <!-- Any attribute listed below will not be inherited between bundles
         or baserates. -->
    <!-- The baserate attribute is optional. -->
    <!-- If a baserate is provided, the pricing must match a specific roombundle
    price provided below. -->
    <Baserate currency="USD">300.00</Baserate>
    <Tax currency="USD">30.00</Tax>
    <OtherFees currency="USD">2.00</OtherFees>

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

Dans un message de transaction, <Occupancy> spécifie le nombre maximal de personnes pour une chambre ou un séjour organisé. <OccupancyDetails> peut contenir des renseignements supplémentaires, tels que le nombre et le type de personnes (adultes ou enfants).

Lorsque <Occupancy> et <OccupancyDetails> apparaissent dans l'élément <Rates> de <Result> ou <RoomBundle>, cela signifie que le tarif est limité par les informations sur le nombre de personnes.

Syntaxe

Lorsque <OccupancyDetails> apparaît, il est toujours précédé de <Occupancy>. Voici la syntaxe :

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

Éléments enfants

L'élément <OccupancyDetails> comporte les éléments enfants suivants :

Élément enfant Obligatoire ? Type Description
<NumAdults> Obligatoire Entier Nombre d'adultes. Minimum : 1 ; maximum : 20.
<Children> Facultatif Entier Si certains clients sont des enfants.
<Child "age"> Facultatif Entier Âge maximal de chaque enfant.

Exemples

Les exemples suivants montrent comment <OccupancyDetails> peut apparaître dans <Results>, <RoomBundle> ou l'élément enfant <Rates>.

Exemple 1

L'exemple suivant définit un séjour et ses prix pour un établissement en réponse à une requête de prix en temps réel, où l'utilisateur a spécifié le nombre et le type de clients. Ici, les informations de <OccupancyDetails> (deux adultes et un enfant) sont renvoyées dans <Result>.

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

Exemple 2

L'exemple ci-dessous définit un séjour et ses prix pour un adulte et un enfant. Ici, les informations de <OccupancyDetails> sont renvoyées dans l'élément <Rates> de <Result>.

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

Exemple 3

Dans l'exemple suivant, le nombre de personnes est défini sur deux adultes et un enfant pour deux nuits, avec un tarif remboursable. Ici, <OccupancyDetails> apparaît dans <RoomBundle>.

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

Exemple 4

L'exemple suivant définit plusieurs tarifs <RoomBundle> limités à un nombre de personnes de deux adultes et deux enfants. Ici, les informations de <OccupancyDetails> apparaissent dans l'élément <Rates> de <RoomBundle>.

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