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

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

<Transaction>

L'élément racine d'un message Transaction est <Transaction>. Il s'agit d'un conteneur contenant des informations descriptives sur les chambres et les formules, ainsi que sur les prix et la disponibilité des chambres et des formules.

L'élément <Transaction> apparaît à l'emplacement suivant dans la hiérarchie XML des messages 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 nécessitent au moins un élément enfant. Les messages Transaction peuvent comporter un nombre illimité d'éléments enfants, à condition que leur taille totale 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 :

Attribute Requis ? Type Description
id Required chaîne Identifiant unique de chaque message Transaction.
partner Optional string Compte partenaire auquel est destiné le message Transaction. Vous l'utilisez généralement si votre backend fournit des flux de prix pour plusieurs comptes partenaires. Cette valeur de chaîne correspond à la valeur "Partner key" (Clé partenaire) indiquée sur la page Paramètres du compte dans Hotel Center.
timestamp Required DateTime

Heure à laquelle le message Transaction a été envoyé.

Tous les messages envoyés avec un code temporel au cours des 24 dernières 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 le code temporel est 2019-05-03 14:09:00 et qui est reçue après un message dont le code temporel est 2019-05-03 14:10:00 sera tout de même traité dans l'ordre, et le prix indiqué dans le message dont le code temporel est 2019-05-03 14:10:00 sera utilisé.

Éléments enfants

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

Élément enfant Requis ? Type Description
<PropertyDataSet> Optional* <PropertyDataSet>

Décrit une chambre et des offres de chambres spécifiques. Vous devez généralement utiliser cet élément dans un message Transaction distinct pour définir les valeurs partagées pour les offres de chambres et réduire la taille de vos messages Transaction.

<Result> Optional* <Result>

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

* Vous devez indiquer au moins l'une des valeurs suivantes : <PropertyDataSet> ou <Result>.

Exemples

Données des chambres

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

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

Données de tarification

L'exemple suivant définit les données tarifaires dans un message Transaction:

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

Tarifs par nuit

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

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


Tarifs de base et sous conditions

L'exemple suivant présente un message Transaction contenant un tarif de base et un tarif sous conditions:

<?xml version="1.0" encoding="UTF-8" ?>
<Transaction timestamp="2023-05-18T16:20:00-04:00" id="42">
  <Result>
    <Property>1234</Property>
    <Checkin>2023-04-10</Checkin>
    <Nights>1</Nights>

    <Baserate currency="USD">200.00</Baserate>
    <Tax currency="USD">20.00</Tax>
    <OtherFees currency="USD">1.00</OtherFees>

    <Rates>
      <!-- The rate_rule_id is required when using conditional rates -->
      <Rate rate_rule_id="mobile">
        <!-- Override base rate and taxes for conditional rates -->
        <Baserate currency="USD">180.00</Baserate>
        <Tax currency="USD">18.00</Tax>
        <!-- NOTE: OtherFees is inherited from the above setting -->
        <Custom1>ratecode123</Custom1>
      </Rate>
    </Rates>

  </Result>
</Transaction>

Supprimer l'inventaire

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

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-05-23T16:20:00-04:00" id="42">
  <Result>
    <Property>1123581321</Property>
    <Checkin>2023-05-23</Checkin>
    <Nights>1</Nights>
    <Unavailable>
      <NoVacancy/>
    </Unavailable>
    <Tax currency="USD">0</Tax>
    <OtherFees currency="USD">0</OtherFees>
  </Result>
  <Result>
    <Property>1123581321</Property>
    <Checkin>2023-05-24</Checkin>
    <Nights>1</Nights>
    <Unavailable>
      <NoVacancy/>
    </Unavailable>
    <Tax currency="USD">0</Tax>
    <OtherFees currency="USD">0</OtherFees>
  </Result>
  <!---Sending <Baserate> is optional with <Unavailable> -->
  <Result>
    <Property>1123581321</Property>
    <Checkin>2023-05-25</Checkin>
    <Nights>1</Nights>
    <Baserate currency="USD">-1</Baserate>
    <Unavailable>
      <NoVacancy/>
    </Unavailable>
    <Tax currency="USD">0</Tax>
    <OtherFees currency="USD">0</OtherFees>
  </Result>
</Transaction>

<PropertyDataSet>

Conteneur pour les informations sur les chambres et les formules (ou les offres de chambres) dans un message <Transaction>. Les valeurs définies pour un hôtel remplacent celles définies au niveau d'un partenaire. Google stocke ces informations afin que vous n'ayez pas à les dé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 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 Requis ? Type Description
<PackageData> Optional* <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 faites référence à l'identifiant de la formule dans vos mises à jour des prix.

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

<Property> Required string Identifiant d'un hôtel auquel les données associées s'appliquent. La valeur de cet élément doit être une chaîne correspondant à la fiche <id> de votre flux Hotel List Feed.
<RoomData> Optional* <RoomData> Décrit une chambre. Ces données sont associées au partenaire et à l'hôtel, mais pas au séjour.

Vous faites référence à l'identifiant de la chambre dans vos mises à jour des prix.

* Vous devez indiquer au moins l'une des valeurs suivantes : <PackageData> ou <RoomData>.

Exemples

Données sur les chambres et les formules

L'exemple suivant montre les données de chambres et de formules dans un <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 la disponibilité de cette chambre et de cette offre de chambres, vous faites référence aux identifiants de la chambre et de la formule dans vos messages de tarification. En conséquence, vous réduisez considérablement la taille de vos messages, ainsi que le nombre d'erreurs que vous pourriez rencontrer en raison de données en double. Pour en savoir plus, consultez Métadonnées des offres de chambres.

<RoomData>

Définit des métadonnées indépendantes du séjour pour les chambres et, par extension, les offres de chambres (puisque les offres de chambres correspondent à des chambres avec des services supplémentaires). Utilisez <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 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 autres qu'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'une formule. Utilisez <RoomData> et <PackageData> conjointement pour fournir des informations sur les offres de chambres. Pour les chambres individuelles qui ne font 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 Google affiche cette chambre ou ce séjour organisé dans les résultats de recherche, il inclut les deux descriptions, 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>
      <OccupancySettings>
        <MinOccupancy>min_number_of_occupants</MinOccupancy>
        <MinAge>min_age_of_occupants</MinAge>
      </OccupancySettings>

      <PhotoURL>
        <Caption>
          <Text text="photo_description" language="language_code"/>
          ...
        </Caption>
        <URL>photo_location</URL>
      </PhotoURL>
      <RoomFeatures>
        ...
      </RoomFeatures>
    </RoomData>
    ...
  </PropertyDataSet>
</Transaction>

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 Requis ? Type Description
<Capacity> Optional integer Nombre maximal de personnes que la chambre peut matériellement accueillir. La capacité d'une chambre est supérieure ou égale au nombre de personnes.

Si elle est spécifiée, cette valeur doit être supérieure ou égale à la valeur de l'élément <Occupancy>, qui correspond au nombre de personnes prévu pour une chambre donnée. Par exemple, la valeur <Capacity> d'une grande suite peut être de 6, mais la valeur de <Occupancy> pour celle-ci est de 4.

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

<Description> Optional Object Description détaillée de la chambre. Cet élément doit contenir des informations non décrites dans d'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 sans frais peut s'afficher (avec des valeurs différentes pour les attributs language).

L'exemple suivant montre les versions française et anglaise de la description d'une chambre:

<Description>
  <Text text="Two queen-sized beds" language="en"/>
  <Text text="Deux lits de la reine" language="fr"/>
</Description>
<Name> Required string Nom de la catégorie de la chambre. Cette valeur doit correspondre à ce qui apparaît sur la page de destination de l'hôtel (anciennement "point de vente"). Ne définissez pas la valeur de cet élément en lettres majuscules.

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

  • text: nom de la pièce.
  • 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 sans frais peut s'afficher (avec des valeurs différentes pour les attributs language).

L'exemple suivant montre 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> Optional integer Nombre maximal de personnes pour lequel la chambre est prévue. Par exemple, une grande suite peut accueillir physiquement six personnes (capacité = six), mais n'est 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). Reportez-vous à <OccupancyDetails> pour connaître la syntaxe et la description des éléments enfants.

<OccupancySettings> Optional Object Paramètres pouvant restreindre ou modifier les exigences d'occupation d'une salle.

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

  • <MinOccupancy>: nombre minimal de personnes pouvant séjourner dans une chambre Par exemple, si la valeur est 2, la chambre ne peut pas être réservée pour un seul client.

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

  • <MinAge>: âge minimal pour tous les clients séjournant dans la chambre. Par exemple, si la valeur est 18, la salle ne peut être réservée que pour des groupes dont tous les invités sont âgés d'au moins 18 ans.

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

<OccupancySettings>
  <MinOccupancy>2</MinOccupancy>
  <MinAge>16</MinAge>
</OccupancySettings>

Tous les éléments enfants n'ont pas besoin d'être inclus.

<PhotoURL> Optional Object URL et légende facultative de la photo de la chambre ou de l'offre de chambres donnée. Vous pouvez spécifier plusieurs paramètres <PhotoURL> pour une chambre ou une offre de chambres. Chaque URL de photo doit être dans son propre <PhotoURL>.

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

  • <URL>: spécifie l'emplacement de la photo. L'emplacement doit être public (et non situé derrière un pare-feu) et inclure le protocole (par exemple, https://). N'utilisez qu'un seul <URL> par <PhotoURL>.
  • <Caption>: définit la légende de la photo. Cet élément comporte 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, tel que en.

Exemple :

<PhotoURL>
  <URL>https://www.example.com/static/bar/image1234.jpg</URL>
  <Caption>
    <Text text="A bright and breezy way to enjoy your mornin'
      cuppa tea." language="en"/>
    <Text text="Une façon lumineuse et aérée pour profiter
      de votre journée tasse de thé." language="fr"/>
  </Caption>
</PhotoURL>
<PhotoURL>
  <URL>https://www.foo.com/static/bar/image5678.jpg</URL>
  <Caption>
    <Text text="Or, perhaps you prefer coffee." language="en"/>
    <Text text="Ou peut-être préférez-vous le café." language="fr"/>
  </Caption>
</PhotoURL>
<RoomFeatures> Optional <RoomFeatures> Contient des informations sur les caractéristiques de la chambre.
<RoomID> Required string Identifiant unique de la chambre. Utilisez cet identifiant pour faire correspondre les données de la chambre aux blocs <Result> dans vos mises à jour des 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 Transaction lorsque vous définissez les données de la chambre de façon intégrée.)

Exemples

Données des chambres

L'exemple suivant définit les données d'une 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>

Métadonnées des chambres et des formules

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>

Plusieurs offres de chambres

L'exemple suivant définit les métadonnées de chambres et de formules 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>

<RoomFeatures>

Définit les éléments géographiques trouvés dans la salle.

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

+ <Transaction>
    + <PropertyDataSet>  // Room and package metadata
        + <Property>
        + <RoomData>
            + <RoomFeatures>

Syntaxe

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

<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
  <PropertyDataSet ... >
    ...
    <RoomData>
      <RoomFeatures>
        <JapaneseHotelRoomStyle>[western|japanese|japanese_western]</JapaneseHotelRoomStyle>
        <Beds>
           <Bed size="[single|semi_double|double|queen|king]">
             <Width unit="cm" number="width"/>
             <Length unit="cm" number="length"/>
           </Bed>
           <!-- Include with any additional beds. -->
        </Beds>
        <Suite/>
        <Capsule/>
        <Roomsharing>[shared|private]</Roomsharing>
        <Outdoor/>
        <MobilityAccessible/>
        <Smoking>[smoking|non_smoking]</Smoking>
        <BathAndToilet relation="[together|separate]">
          <Bath bathtub="[false|true]" shower="[false|true]"/>
          <Toilet electronic_bidet="[false|true]" mobility_accessible="[false|true]"/>
        </BathAndToilet>
        <OpenAirBath/>
        <AirConditioning/>
        <Balcony/>
        <Views>
          <!-- (Optional) Defines the type of views from the room. -->
          <!-- Example: <OceanView/> -->
        </Views>

      </RoomFeatures>
      ...
    </RoomData>
    ...
  </PropertyDataSet>
</Transactions>

Attributs

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

Éléments enfants

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

Élément enfant Requis ? Type Description
<JapaneseHotelRoomStyle> Optional enum

Indique le style d'une chambre d'hôtel japonaise.

Les valeurs possibles sont les suivantes :

  • western: chambre de style occidental avec literie.
  • japanese: chambre de style japonais avec futon.
  • japanese_western: chambre de style occidental japonais avec lits de style occidental et futons de style japonais.
<Beds> Optional Object Contient autant de <Bed> que la salle en possède. Notez que les futons japonais ne doivent pas être comptabilisés ici.

Chaque <Bed> possède les attributs suivants:

  • size (facultatif): les valeurs valides sont single, semi_double, double, queen et king.
Chaque <Bed> comporte les éléments enfants suivants :
  • <Width> (facultatif): spécifie la largeur du lit. Doit avoir l'attribut unit avec la valeur cm et l'attribut number avec la largeur du lit en centimètres entiers.
  • <Length> (facultatif): spécifie la longueur du lit. Vous devez utiliser l'attribut unit avec la valeur cm et l'attribut number avec la longueur du lit en centimètres entiers.
Exemple :
<Beds>
  <Bed size="double">
    <Width unit="cm" number="140"/>
    <Length unit="cm" number="195"/>
  </Bed>
  <Bed/> <!-- Size unknown -->
</Beds>
<Suite> Optional empty Indiquez cet élément si la chambre est une suite.
<Capsule> Optional empty Indiquez cet élément lorsque la chambre est une chambre capsule.
<Roomsharing> Optional enum Indique si la chambre est partagée avec d'autres occupants, tels que les propriétaires ou d'autres invités. Les valeurs valides sont shared et private.
<Outdoor> Optional empty Indiquez cet élément lorsque la chambre est un hébergement en extérieur et qui n'a pas de murs fixes, de plomberie ni de climatisation. Par exemple, les chambres d'hôtel ne sont pas des hébergements en plein air, tandis que les campings où les clients séjournent dans des tentes et des parcs pour camping-cars où les clients apportent leur propre camping-car sont des hébergements en plein air.
<MobilityAccessible> Optional empty Fournissez cet élément lorsque cette chambre est accessible aux personnes à mobilité réduite.
<Smoking> Optional enum Indique s'il s'agit d'une pièce non-fumeurs ou d'un fumoir. Les valeurs valides sont non_smoking et smoking.
<BathAndToilet> Optional Object Contient des informations sur la baignoire et les toilettes dans la chambre.

L'attribut est le suivant:

  • relation (facultatif): indique comment la baignoire et les toilettes sont placées l'une à l'autre. Les valeurs valides sont together (les baignoires et les toilettes sont situées dans la même pièce, par exemple, la salle de bain), juste à côté de l'autre, et separate (la salle de bain et les toilettes disposent chacune d'un espace dédié). Cet attribut ne doit pas être défini lorsque la chambre ne comprend pas à la fois une baignoire et des toilettes.

L'élément comporte facultativement les éléments enfants suivants:

  • <Bath> (facultatif): l'existence de cet élément indique que la chambre dispose d'une baignoire.

    Les attributs sont les suivants :

    • bathtub (facultatif): indique que la salle de bain est dotée d'une baignoire. Les valeurs valides sont 0 (ou false) et 1 (ou true).
    • shower (facultatif): indique que le bain est équipé d'une douche. Les valeurs valides sont 0 (ou false) et 1 (ou true).
  • <Toilet> (facultatif): l'existence de cet élément indique que la chambre est équipée de toilettes.

    Les attributs sont les suivants :

    • electronic_bidet (facultatif): indique que les toilettes sont équipées d'un bidet électronique. Les valeurs valides sont 0 (ou false) et 1 (ou true).
    • mobility_accessible (facultatif): indique que les toilettes sont accessibles aux personnes à mobilité réduite. Les valeurs valides sont 0 (ou false) et 1 (ou true).

Exemple :

<BathAndToilet relation="separate">
  <Bath bathtub="1" shower="1"/>
  <Toilet
    electronic_bidet="1"
    mobility_accessible="1"/>
</BathAndToilet>
<OpenAirBath> Optional empty Indiquez cet élément lorsque la chambre dispose d'un bain privé en plein air.
<AirConditioning> Optional empty Fournissez cet élément si cette pièce est climatisée.
<Balcony> Optional empty Indiquez cet élément si la chambre dispose d'un balcon ou d'une véranda.
<Views> Optional Object Les options suivantes sont acceptées:

<AirportView/>
<BayView/>
<BeachView>/>
<CastleView/>
<CityView/>
<CountrysideView/>
<CourtyardView/>
<DuneView/>
<ForestView/>
<GardenView/>
<GolfCourseView/>
<HarborView/>
<LagoonView/>
<LakeView/>
<MarinaView/>
<MountainView/>
<NatureView/>
<OceanView/>
<ParkView/>
<PartialOceanView/>
<PisteView/>
<PoolView/>
<PyramidView/>
<RiverView/>
<StreetView/>

Exemples

Aucune valeur par défaut n'est définie pour JapaneseHotelRoomStyle. L'omission d'une valeur n'entraîne pas d'erreur XML, mais votre fiche ne s'affiche pas dans les résultats de recherche lorsque l'utilisateur filtre par style de chambre ou par lit.

Deux lits simples

L'exemple suivant montre comment utiliser <RoomFeatures>:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <RoomData>
      <RoomID>RoomID_1</RoomID>
      <RoomFeatures>
        <JapaneseHotelRoomStyle>western</JapaneseHotelRoomStyle>
        <Beds> <!-- Two single beds -->
          <Bed size="single">
            <Width unit="cm" number="97"/>
            <Length unit="cm" number="195"/>
          </Bed>
          <Bed size="single">
            <Width unit="cm" number="97"/>
            <Length unit="cm" number="195"/>
          </Bed>
        </Beds>
        <Suite/>
        <Capsule/>
        <Roomsharing>private</Roomsharing>
        <Outdoor/>
        <MobilityAccessible/>
        <Smoking>non_smoking</Smoking>
        <BathAndToilet relation="separate">
          <Bath bathtub="1" shower="1"/>
          <Toilet electronic_bidet="1" mobility_accessible="1"/>
        </BathAndToilet>
        <OpenAirBath/>
        <AirConditioning/>
        <Balcony/>
        <Views>
          <LakeView/>
          <MarinaView/>
          <BeachView/>
          <ForestView/>
          <MountainView/>
          <NatureView/>
        </Views>
      </RoomFeatures>
    </RoomData>
  </PropertyDataSet>
</Transaction>

Deux lits doubles

Voici un exemple de chambre japonaise de style western avec deux lits double.

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-07-23T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <RoomData>
      <RoomID>RoomID_1</RoomID>
      <RoomFeatures>
        <JapaneseHotelRoomStyle>western</JapaneseHotelRoomStyle>
        <Beds> <!-- Two double beds-->
          <Bed size="double"></Bed>
          <Bed size="double"></Bed>
        </Beds>
      </RoomFeatures>
    </RoomData>
  </PropertyDataSet>
</Transaction>


Style japonais sans lit

Voici un exemple de chambre de style japonais sans lit. Les informations sur les lits ne sont pas obligatoires pour une chambre de style japanese.

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-07-23T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <RoomData>
      <RoomID>RoomID_1</RoomID>
      <RoomFeatures>
        <JapaneseHotelRoomStyle>japanese</JapaneseHotelRoomStyle>
      </RoomFeatures>
    </RoomData>
  </PropertyDataSet>
</Transaction>

Occident japonais avec un lit

Voici un exemple de chambre de style japanese_western avec un lit de king.

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-07-23T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <RoomData>
      <RoomID>RoomID_1</RoomID>
      <RoomFeatures>
        <JapaneseHotelRoomStyle>japanese_western</JapaneseHotelRoomStyle>
        <Beds>
          <Bed size="king"></Bed>
        </Beds>
      </RoomFeatures>
    </RoomData>
  </PropertyDataSet>
</Transaction>

Si le partenaire ne dispose pas des informations sur le nombre de lits dans japanese_western chambres, suivez l'exemple:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-07-23T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <RoomData>
      <RoomID>RoomID_1</RoomID>
      <RoomFeatures>
        <JapaneseHotelRoomStyle>japanese_western</JapaneseHotelRoomStyle>
      </RoomFeatures>
    </RoomData>
  </PropertyDataSet>
</Transaction>

<PackageData>

Définit les métadonnées relatives aux offres de chambres indépendamment du séjour pour 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 hors séjour et de les référencer à partir des données sur le séjour.

L'élément <PackageData> apparaît à l'emplacement suivant dans la hiérarchie XML des messages 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 les caractéristiques et les conditions tarifaires qui ne font pas partie de la description de la chambre. Utilisez les champs <RoomData> et <PackageData> conjointement pour fournir des informations sur les offres de chambres et les caractéristiques tarifaires. Pour les chambres individuelles qui ne font 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 Google affiche cette chambre ou ce séjour organisé dans les résultats de recherche, il inclut les deux descriptions, 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 <PropertyDataSet> est considéré comme toutes les données concernant la propriété et écrase toutes les données existantes.

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"/>
      <ChargeCurrency>[deposit|hotel|installments|web]</ChargeCurrency>
      <Occupancy>max_number_of_intended_occupants</Occupancy>
      <OccupancyDetails><!-- optional info about the types of guests,
      whether adults or children --></OccupancyDetails>
      <!-- For these next 3 elements, boolean_value can be 0/1 or true/false -->
      <BreakfastIncluded>boolean_value</BreakfastIncluded>
      <InternetIncluded>boolean_value</InternetIncluded>
      <ParkingIncluded>boolean_value</ParkingIncluded>
      <PhotoURL>
        <Caption>
          <Text text="photo_description" language="language_code"/>
          ...
        </Caption>
        <URL>photo_location</URL>
      </PhotoURL>
      ...
      <Meals>
        <Breakfast
          included="[true|false]" buffet="[true|false]"
          in_room="[true|false]" in_private_space="[true|false]"/>
        <Dinner
          included="[true|false]" buffet="[true|false]"
          in_room="[true|false]" in_private_space="[true|false]"/>
      </Meals>
      <CheckinTime>checkin_time</CheckinTime>
      <CheckoutTime>checkout_time</CheckoutTime>
      <MembershipBenefitsIncluded>
        <ProgramName>
          <Text language="en" text="Special Rewards">
        </ProgramName>
        <ProgramLevel>
          <Text language="en" text="Platinum">
        </ProgramLevel>
      </MembershipBenefitsIncluded>
      <OnPropertyCredit>
        <Amount currency="USD">123.45</Amount>
      </OnPropertyCredit>
    </PackageData>
    <!-- a PackageID with a MilesIncluded rate feature -->
    <PackageData>
      <PackageID>room_with_miles</PackageID>
      <Name>
       <Text text="Room with Bundled Miles" language="en">
      </Name>
      <ChargeCurrency>hotel </ChargeCurrency>
      <MilesIncluded>
        <NumberOfMiles>1000 </NumberOfMiles>
        <Provider>
          <Text language="en" text="United Airlines">
        </Provider>
      </MilesIncluded>
    </PackageData>
    ...
    ...
  </PropertyDataSet>
  ...
</Transaction>

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 Requis ? Type Description
<BreakfastIncluded> Optional boolean Indique si la formule inclut le petit-déjeuner au tarif. Les valeurs valides sont 0 (ou false) et 1 (ou true).

Il est préférable d'utiliser <Meals> plutôt que <BreakfastIncluded>.

<ChargeCurrency> Optional enum Où et quand 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.

<CheckinTime> Optional Time Heure d'arrivée la plus proche possible. L'heure doit être antérieure à 24h (heure locale de l'hôtel).
<CheckoutTime> Optional Time Heure de départ la plus tardive possible en heure locale de l'hôtel.
<Description> Optional Object Description détaillée du package. Cet élément doit contenir des informations non décrites dans d'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 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 le montre 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> Optional boolean Si un forfait comprend un accès sans frais à Internet, alors que d'autres forfaits n'incluent pas ce service. Ne définissez pas cet élément pour les offres de chambres d'un hôtel qui fournit un accès Internet sans frais à toutes les chambres. Cet élément ne s'applique pas à l'accès Internet filaire ou sans fil dans les chambres qui n'est pas disponible dans les chambres. Les valeurs valides sont 0 (ou false) et 1 (ou true).
<Meals> Optional Object Contient des informations sur les repas de ce colis.

L'élément <Meals> comporte deux éléments enfants facultatifs, <Breakfast> et <Dinner>, qui possèdent les attributs suivants:

  • included (obligatoire): à définir sur 1 (ou true) si le tarif inclut le petit-déjeuner et le dîner, ou sur 0 ou false.
  • in_room (facultatif): définissez la valeur sur 1 (ou true) si les clients ont la possibilité de prendre le petit-déjeuner/dîner dans la chambre où ils séjournent. Sinon, définissez la valeur sur 0 (ou false).
  • in_private_space (facultatif): définissez la valeur sur 1 (ou true) si les clients ont la possibilité de prendre le petit-déjeuner/dîner dans un espace (à l'exception de la chambre dans laquelle ils séjournent) afin d'éviter tout contact avec les autres invités. Sinon, définissez la valeur sur 0 (ou false).
  • buffet (facultatif): à définir sur 1 (ou true) si le petit-déjeuner/dîner est proposé sous forme de buffet, sinon sur 0 (ou false).

Les attributs facultatifs ne sont utilisés que lorsque included est défini sur "true".

Pour que les filtres de repas (no meals, breakfast only, dinner only et breakfast and dinner) fonctionnent, <Breakfast> et <Dinner> doivent être fournis avec l'attribut included.

<Name> Required string Nom du package. Cette valeur doit correspondre à ce qui apparaît sur la page de destination de l'hôtel. Ne définissez pas la valeur de cet élément en lettres majuscules.

Cet élément comporte 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 le montre l'exemple suivant:

<Name>
  <Text text="Bed and Breakfast" language="en"/>
  <Text text="Lit et petit déjeuné" language="fr"/>
</Name>
<Occupancy> Optional integer 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'est 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 <PackageData>, la valeur de <RoomBundle> est prioritaire.

Remarque :

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

Identifiant unique du package. Utilisez cet identifiant pour faire correspondre les données de l'offre de chambres aux blocs <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 d'offre de chambres commune utilisée dans un message Transaction lorsque vous définissez les données de l'offre de manière intégrée.)

<ParkingIncluded> Optional boolean Indique si l'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'hôtel offre un parking gratuit.

Les valeurs valides sont 0 (ou false) et 1 (ou true). La valeur par défaut est false.

<PhotoURL> Optional Object (Identique à <PhotoURL> dans <RoomData>, mais pour le package (par exemple, photos de repas).
<Refundable> Optional Object Permet d'indiquer qu'un tarif est entièrement remboursable ou de proposer une annulation sans frais. Si ce champ n'est pas défini, aucune information sur le remboursement ne s'affiche. Les conditions de remboursement définies au niveau <PackageData> remplacent celles du niveau <Result>. Les conditions de remboursement définies au niveau <Rates> remplacent celles du niveau <PackageData>. Vous pouvez également mettre en avant les tarifs remboursables aux utilisateurs à l'aide d'autres options sans modifier directement le schéma de votre message de transaction. En savoir plus sur ces options dans les Règles relatives aux tarifs remboursables

L'exemple suivant montre 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 définissez 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 intégralement remboursé. Sinon, définissez-le sur 0 ou false.
  • refundable_until_days (obligatoire si available est défini sur true) : spécifie 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 est défini sur true) Spécifie l'heure limite, en heure locale de l'hôtel, à laquelle un remboursement total peut être accordé. Cette valeur peut être combinée à refundable_until_days pour spécifier, par exemple, que "les remboursements sont disponibles jusqu'à 16h deux jours avant l'arrivée". Si refundable_until_time n'est pas défini, la valeur par défaut est minuit.

    La valeur de cet attribut utilise le 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 correspond à 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 ou les deux sont définis.
<MembershipBenefits Included> Optional boolean Le tarif inclut les avantages du statut Élite pendant la durée du séjour. Inclut les paramètres suivants :
  • ProgramName: nom du programme de statut Élite
  • ProgramLevel: niveau du programme Par exemple : "Or".
  • NightlyValue (optional): valeur par nuit des avantages.
<CarRentalIncluded> Optional boolean Le tarif comprend la location sans frais d'une voiture pour la durée du séjour.
<MilesIncluded>> Optional boolean Le tarif inclut les miles du programme de fidélité. Les paramètres sont les suivants :
  • NumberofMiles: nombre de miles par séjour
  • Provider: fournit les miles du programme de fidélité.
<OnPropertyCredit> Optional boolean Le tarif inclut un crédit à utiliser dans l'établissement (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.
<AirportTransportationIncluded> Optional Object Le tarif inclut le transport sans frais depuis/vers un aéroport voisin. L'attribut direction facultatif spécifie le sens du transport. Les valeurs valides sont les suivantes :
    from: le transport est assuré entre l'aéroport et l'établissement. Il s'agit de la valeur par défaut si aucune direction n'est indiquée. to: un service de navette est assuré depuis l'établissement vers l'aéroport. round_trip: le transport est assuré à destination et en provenance de l'aéroport.

Exemples

Offre pour une seule chambre

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>

Métadonnées de chambres et de formules

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>

Plusieurs offres de chambres

L'exemple suivant définit les métadonnées de chambres et de formules 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>


Offre de chambres avec tarifs

L'exemple suivant définit les métadonnées de chambres et de formules pour une offre de chambres avec des caractéristiques 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>
      <AirportTransportationIncluded direction="from"/>
    </PackageData>
  </PropertyDataSet>

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

Repas et photos

L'exemple suivant définit les métadonnées de chambres et de formules pour les repas, les photos, et les heures d'arrivée et de départ:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <PackageData>
      <PackageID>PackageID_1</PackageID>
      <Name>
        <Text text="Meals Included" language="en"/>
      </Name>
      <PhotoURL>
        <Caption>
          <Text text="Breakfast" language="en"/>
          <Text text="朝食" language="ja"/>
        </Caption>
        <URL>http://example.com/static/bar/image1234.jpg</URL>
      </PhotoURL>
      <Meals>
        <!-- Guests can choose to have breakfast in their room or in another
        space to avoid contact with other guests. -->
        <Breakfast included="1" in_room="1" in_private_space="1"/>
        <Dinner included="1" buffet="1"/>
      </Meals>
      <CheckinTime>15:00</CheckinTime>
      <CheckoutTime>11:00</CheckoutTime>
    </PackageData>
  </PropertyDataSet>
</Transaction>

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>
      <PackageID>PackageID_1</PackageID>
      <Name>
        <Text text="Breakfast Included" language="en"/>
      </Name>
      <PhotoURL>
        <Caption>
          <Text text="Breakfast" language="en"/>
          <Text text="朝食" language="ja"/>
        </Caption>
        <URL>http://example.com/static/bar/image1234.jpg</URL>
      </PhotoURL>
      <Meals>
        <Breakfast included="true"/>
        <!-- Dinner not included needs to be explicitly specified -->
        <Dinner included="false"/>
      </Meals>
      <CheckinTime>15:00</CheckinTime>
      <CheckoutTime>11:00</CheckoutTime>
    </PackageData>
  </PropertyDataSet>
</Transaction>

<Result>

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

L'élément <Result> apparaît à l'emplacement suivant dans la hiérarchie XML des messages 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 définir l'inventaire disponible. Les éléments définis dans cet élément font généralement référence à des métadonnées indépendantes du séjour concernant une chambre ou une formule (description ou ensemble d'équipements, par exemple) définies dans <PackageData> et <RoomData>.

En général, vous envoyez très fréquemment des messages Transaction contenant des mises à jour de prix. La manière exacte et la fréquence de cette opération dépendent du mode d'envoi.

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

Un message Transaction peut inclure plusieurs éléments <Result>, à condition que sa taille 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|installments|web]</ChargeCurrency>

    <Occupancy>max_number_of_intended_occupants</Occupancy>
    <!-- For Baserate, occupancy value must be greater than or equal to 2.
         If a value is not provided for occupancy, it defaults to 2. -->
    <OccupancyDetails>occupancy_info</OccupancyDetails>

    <Rates>...</Rates>

    <RoomBundle>...</RoomBundle>

    <AllowablePointsOfSale>
      <PointOfSale id="landing_page_identifier"/>
      ...
    </AllowablePointsOfSale>

    <Custom[1-5]>custom_value</Custom[1-5]>
  </Result>
  ...
  </Transaction>

Attributs

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

Attribute Requis ? Type Description
mergeable Optional boolean Par défaut, les nouveaux prix d'une paire hôtel/séjour spécifique remplaceront tous les prix précédents (qui n'ont pas expiré) présents dans le cache de Google. L'attribut "mergeable" vous permet de stocker des prix supplémentaires dans le cache de Google sans supprimer les informations tarifaires précédentes. L'attribut des requêtes de prix en temps réel avec contexte sera 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 Requis ? Type Description
<AllowablePointsOfSale> Optional Object Une ou plusieurs pages de destination éligibles pour l'hôtel. Une page de destination est un site Web qui peut gérer le processus de réservation pour l'utilisateur final. Pour inclure explicitement certaines pages de destination (et en exclure d'autres), ajoutez un ou plusieurs éléments <AllowablePointsOfSale> correspondant à l'attribut id de l'élément <PointOfSale> dans le fichier des pages de destination.

Si vous n'incluez pas cet élément, toutes les pages de destination définies dans le fichier des pages de destination sont considérées comme pouvant être utilisées pour réserver la chambre. Pour en savoir plus, consultez Syntaxe du fichier de pages de destination.

<Baserate> Optional float

Prix de la chambre pour le séjour. La valeur de cet élément doit refléter les éléments suivants:

  • 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>.
  • la durée totale du séjour, et non le tarif moyen par nuit.

Lorsque la chambre n'est pas disponible pour le séjour, <Baserate> doit être omis ou défini sur -1, et <Unavailable> doit être indiqué, ainsi que les raisons connues de cette indisponibilité.

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 regroupement de chiffres, tel qu'une virgule (,) ou un point (.). Séparez toujours les fractions en utilisant un point (.) comme séparateur décimal. Par exemple, 1 200,40 $est représenté de la manière 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 des valeurs pour les éléments <Tax> et <OtherFees>. Si vous indiquez des prix tout compris, il se peut que vous ne puissiez pas apparaître dans vos fiches si vous ne détaillez pas le montant des taxes et des frais pour les utilisateurs situés au Canada et aux États-Unis.

    Pour tous les autres utilisateurs finaux, vous devez généralement 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 les Règles relatives aux taxes et aux frais.

    La valeur par défaut est false.

  • currency: code de la devise à trois lettres. Par exemple, USD pour le dollar américain.
<ChargeCurrency> Optional enum Où et quand l'utilisateur paie sa réservation. Dans un message 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 possibles sont les suivantes :

  • web: l'utilisateur est facturé en ligne au moment de la réservation. Il s'agit de la valeur par défaut. La page de destination réelle est définie par le fichier de page de destination. Elle peut dépendre de la devise, de la zone géographique, de la langue ou d'autres facteurs de l'utilisateur.
  • hotel: l'utilisateur paie lorsqu'il s'enregistre à l'hôtel. Si le paiement doit toujours être effectué dans la devise de l'hôtel, définissez la valeur de <ChargeCurrency> sur hotel. La page de destination réelle n'est pas affectée par 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.
  • installments: une fraction initiale de la somme totale due est facturée à l'utilisateur, qui doit verser systématiquement un solde fixe sur une période déterminée.

La valeur par défaut est web.

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

Les éléments <Custom> vous permettent de transmettre des données arbitraires. Par exemple, vous pouvez spécifier une valeur dans ce champ qui sera ensuite utilisée par le fichier des pages de destination afin de créer une URL personnalisée pour une page de destination. La limite est de 200 caractères par champ personnalisé. Pour en savoir plus, consultez les fichiers de page de destination .

Les éléments <Custom> fournis dans l'élément <Rate> ne sont pas hérités de l'élément <RoomBundle>. Vous devez définir l'attribut <Custom> séparément dans chaque propriété <RoomBundle>.

<ExpirationTime> Optional DateTime Date et heure auxquelles le prix est considéré comme expiré (trois heures minimum).

Nous vous recommandons de ne pas fournir d'horodatage d'expiration si cela n'est pas essentiel à votre structure tarifaire.

Google ne propose pas de prix expirés. Tout séjour dont le prix est arrivé à expiration pourra faire l'objet de requêtes de prix en temps réel.

<Nights> Required integer Nombre de nuits pour un séjour. La valeur de l'élément <Nights> doit être un entier positif. La combinaison de <Nights> et <Checkin> constitue un séjour.
<OtherFees> Optional float Frais autres que le tarif de base et les taxes qui ont une incidence sur le prix final d'une chambre. L'élément <OtherFees> comporte un seul attribut obligatoire, currency, qui définit le code de devise à trois lettres des frais. Exemple :USD

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

<Occupancy> Optional integer 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). Consultez <OccupancyDetails> pour connaître la syntaxe et la description des éléments enfants. Si l'élément <Occupancy> n'est pas fourni, le nombre de personnes est défini par défaut sur 2.

Remarque: Contactez l'équipe d'assistance pour activer la fonctionnalité permettant d'envoyer des tarifs pour un nombre de personnes autre que "2".

<PackageID> Optional string Identifiant unique du séjour organisé à associer à des données prédéfinies. Utilisé également pour renseigner la variable de page de destination PACKAGE-ID. Pour en savoir plus, consultez Métadonnées des offres de chambres.
<Property> Required string Identifiant de l'hôtel concerné par les données associées (prix, séjour, offre de chambres ou métadonnées). La valeur de cet élément doit être une chaîne. La valeur de cet élément doit correspondre à la fiche <id> que vous avez définie dans votre flux Hotel List Feed.
<Rates> Optional <Rates> Conteneur pour un ou plusieurs blocs <Rate>. Chaque élément <Rate> dans <Rates> définit un prix différent pour la combinaison chambre/séjour.

N'utilisez l'élément <Rates> que lorsqu'il existe plusieurs tarifs pour la même combinaison chambre/séjour. Par exemple, vous pouvez 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> Optional Object Permet d'indiquer qu'un tarif est entièrement remboursable ou de proposer une annulation sans frais. Si ce champ n'est pas défini, aucune information sur le remboursement ne s'affiche. Les conditions de remboursement définies au niveau <PackageData> remplacent celles du niveau <Result>. Les conditions de remboursement définies au niveau <Rates> remplacent celles du niveau <PackageData>. Vous pouvez également mettre en avant les tarifs remboursables aux utilisateurs à l'aide d'autres options sans modifier directement le schéma de votre message de transaction. En savoir plus sur les Règles relatives aux tarifs remboursables

L'exemple suivant montre 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 définissez aucun attribut, le tarif ne s'affiche pas comme remboursable. Les attributs sont les suivants :

  • available: (obligatoire) définissez cette valeur sur 1 (ou true) pour indiquer si le tarif peut être intégralement remboursé. Sinon, définissez-la sur 0 (ou false).
  • refundable_until_days (obligatoire si available est défini sur true) : spécifie 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 est défini sur true) Spécifie l'heure limite, en heure locale de l'hôtel, à laquelle un remboursement total peut être accordé. Cette valeur peut être combinée à refundable_until_days pour spécifier, par exemple, que "les remboursements sont disponibles jusqu'à 16h deux jours avant l'arrivée". Si refundable_until_time n'est pas défini, la valeur par défaut est minuit.

    La valeur de cet attribut utilise le 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 correspond à 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 ou les deux sont définis.
<RoomBundle> Optional <RoomBundle> Conteneur pour les informations sur les descriptions physiques payantes d'une chambre, les formules de services et les conditions d'achat de l'hôtel et du séjour indiqués.

En règle générale, utilisez cet élément pour définir le prix de la chambre de base et 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 manière intégrée, vous devez utiliser un message Transaction distinct pour définir ces informations. Google stockera les métadonnées afin que vous puissiez les référencer, plutôt que de les répéter, dans toutes les futures mises à jour de prix.

<RoomID> Optional string Identifiant unique de la chambre à associer à des données prédéfinies sur la chambre. Utilisé également pour renseigner la variable de page de destination PARTNER-ROOM-ID. Pour en savoir plus, consultez Métadonnées des offres de chambres.
<Tax> Optional float Taxes appliquées au prix final d'une chambre. L'élément <Tax> comporte un seul attribut obligatoire, currency, qui définit le code de devise à trois lettres des taxes. Exemple :USD L'élément <Tax> est obligatoire si la valeur de <Baserate> est supérieure à zéro.
<Unavailable> Optional Object Indique que l'itinéraire n'est pas disponible à la réservation. Sert de conteneur pour les raisons plus détaillées pour lesquelles le séjour n'était pas disponible. Un ou plusieurs des motifs d'indisponibilité suivants peuvent être imbriqués sous la balise <Unavailable> :
  • <NoVacancy/>: aucune autre chambre n'est disponible à la vente pour une ou plusieurs nuits du séjour.
  • <MinNightStay value=N/>: l'itinéraire était inférieur à la durée de séjour minimum (N) aux dates de séjour.
  • <MaxNightStay value=N/>: l'itinéraire dépassait le nombre maximal de nuits (N) défini pour les dates de séjour.
  • <MinAdvancePurchase value=N/>: le séjour était inférieur à la période de réservation à l'avance minimale de N pour les dates du séjour.
  • <MaxAdvancePurchase value=N/>: le séjour dépassait la période de réservation à l'avance maximale de N pour les dates du séjour.
  • <ClosedToArrival/>: l'établissement n'autorise pas l'arrivée à la date d'arrivée du séjour.
  • <ClosedToDeparture/>: l'établissement n'autorise pas le départ à la date de départ du séjour.
  • <PropertyClosed first_open="YYYY-MM-DD" first_closed="YYYY-MM-DD"/>: l'établissement est fermé pour une partie ou la totalité du séjour. Les attributs recommandés first_open et first_closed spécifient les premières dates supérieures ou égales à la date d'arrivée où l'établissement est ouvert ou fermé. Si l'établissement ferme après la date d'arrivée, first_open doit être égal à la date d'arrivée, et first_closed doit correspondre à la date de fermeture de l'établissement. Pour un établissement fermé à la date d'arrivée, first_closed doit être égal à la date d'arrivée, et first_opened doit correspondre à la prochaine date d'ouverture de l'établissement.
  • <NotFetched/>: aucun prix du séjour n'a été fourni par les sources de données en aval.
  • <InvalidProperty/>: l'identifiant de propriété demandé n'a pas été reconnu.
  • <InvalidOccupancy/>: le nombre de personnes demandé n'est pas accepté par l'établissement.
  • <PriceIssue/>: un problème lié au prix a empêché son envoi.
  • <InternalError reason=""/>: une erreur non calculée s'est produite. L'attribut de motif facultatif permet de signaler l'erreur sous forme de texte.
  • <OtherRestriction restriction=""/>: le séjour n'était pas disponible en raison d'une restriction de réservation non indiquée. L'attribut de restriction facultatif permet de signaler la restriction sous forme de texte.

Exemples

Exemple pour plusieurs propriétés

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 présente pas les détails de la chambre, tels qu'une description, une image et une légende, son nom et sa capacité d'accueil.

Vous pouvez définir ces informations une seule fois dans un message de transaction distinct stocké par Google. Vous pouvez ensuite y faire référence dans toutes les mises à jour ultérieures des prix et de l'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 plusieurs tarifs en fonction du nombre de personnes. L'élément <Rates> peut être utilisé pour fournir plusieurs tarifs pour un établissement spécifique. L'exemple suivant est également utile pour les établissements proposant des locations de vacances:

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

Exemple non disponible

L'exemple suivant définit un séjour dont la disponibilité n'a pas pu être récupérée à partir des canaux en aval, un deuxième qui est à la fois inférieur à la nuit minimale et déjà réservé aux dates spécifiées, et un troisième dont l'établissement est fermé à la date d'arrivée, mais ouvre pendant la durée du séjour:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-23T16:20:00-04:00" id="42">
  <Result>
    <Property>060773</Property>
    <Checkin>2018-06-10</Checkin>
    <Nights>2</Nights>
    <Unavailable>
      <NotFetched/>
    </Unavailable>
  </Result>
  <Result>
    <Property>073313</Property>
    <Checkin>2018-06-10</Checkin>
    <Nights>2</Nights>
    <Unavailable>
      <NoVacancy/>
      <MinNightStay value=3/>
    </Unavailable>
  </Result>
  <Result>
    <Property>052213</Property>
    <Checkin>2018-06-10</Checkin>
    <Nights>10</Nights>
    <Unavailable>
      <PropertyClosed first_open="2018-06-15" first_closed="2018-06-10"/>
    </Unavailable>
  </Result>
</Transaction>

<Rates>

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

N'utilisez l'élément <Rates> que lorsqu'il existe plusieurs tarifs pour la même combinaison de chambre ou de séjour. Par exemple, vous pouvez 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 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 <Rate> remplacent les valeurs liées à la tarification dans l'élément parent <Result> ou <RoomBundle>. Si elles ne sont pas définies dans <Rate>, elles héritent de leur valeur de l'élément parent. Seul <AllowablePointsofSale> est hérité de l'élément <RoomBundle>.

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|installments|web]</ChargeCurrency>
        <AllowablePointsOfSale>
          <PointOfSale id="landing_page_identifier"/>
        </AllowablePointsOfSale>
        <Occupancy>max_number_of_intended_occupants</Occupancy>
        <OccupancyDetails> <!-- optional info about the types of guests,
      whether adults or children --></OccupancyDetails>
          ...
        <Custom[1-5]>custom_value</Custom[1-5]>
      </Rate>
      ...
    </Rates>
  </Result>
  ...
</Transaction>

Attributs

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

Attribute nécessaire Description
rate_rule_id Optional Pour les tarifs sous conditions, cet ID associe un tarif à une définition figurant dans votre fichier de définition des règles d'offres. Ce champ ne doit pas comporter plus de 40 caractères.

Éléments enfants

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

Élément enfant Requis ? Type Description
<AllowablePointsOfSale> Optional Object Une ou plusieurs pages de destination éligibles pour l'hôtel. Cet élément utilise la même syntaxe que <AllowablePointsOfSale> sur <Result>.
<Baserate> Required float Prix de la chambre pour le séjour. Cet élément utilise la même syntaxe que <Baserate> sur <Result>.

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

<ChargeCurrency> Optional enum Où et quand l'utilisateur paie sa réservation. Cet élément utilise la même syntaxe qu'un <ChargeCurrency> dans un élément <Result>.
<Custom[1‑5]> Optional string Champs personnalisés que vous pouvez utiliser pour transmettre d'autres données associées à un hôtel à une page de destination. Cet élément utilise la même syntaxe qu'un <Custom[1‑5]> dans un élément <Result>. Chaque champ personnalisé est limité à 200 caractères. Pour en savoir plus, consultez les fichiers de page de destination.

Si des éléments <Custom> sont fournis dans l'élément <Result>, ils ne sont pas hérités dans l'élément <RoomBundle> et doivent être définis séparément pour chaque <RoomBundle>. Ils peuvent également être inclus dans l'élément <PackageData>, si nécessaire.

<ExpirationTime> Optional DateTime Date et heure auxquelles le tarif est considéré comme expiré. Cet élément utilise la même syntaxe que <ExpirationTime> dans un élément <Result>.
<Occupancy> Optional integer

Spécifie le nombre maximal de personnes. <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.

<OtherFees> Required float Frais autres que le tarif de base et les taxes qui ont une incidence sur le prix final d'une chambre. Cet élément utilise la même syntaxe que <OtherFees> dans un élément <Result>.
<Refundable> Optional Object Permet d'indiquer qu'un tarif est entièrement remboursable ou de proposer une annulation sans frais. Si ce champ n'est pas défini, aucune information sur le remboursement ne s'affiche. Les conditions de remboursement définies au niveau <PackageData> remplacent celles du niveau <Result>. Les conditions de remboursement définies au niveau <Rates> remplacent celles du niveau <PackageData>. Vous pouvez également mettre en avant les tarifs remboursables aux utilisateurs à l'aide d'autres options sans modifier directement le schéma de votre message de transaction. En savoir plus sur ces options dans les Règles relatives aux tarifs remboursables

L'exemple suivant montre 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 définissez aucun attribut, le tarif ne s'affiche pas comme remboursable. Les attributs sont les suivants :

  • available: (obligatoire) définissez cette valeur sur 1 (ou true) pour indiquer si le tarif peut être intégralement remboursé. Sinon, définissez-la sur 0 (ou false).
  • refundable_until_days (obligatoire si available est défini sur true) : spécifie 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 est défini sur true) Spécifie l'heure limite, en heure locale de l'hôtel, à laquelle un remboursement total peut être accordé. Cette valeur peut être combinée à refundable_until_days pour spécifier, par exemple, que "les remboursements sont disponibles jusqu'à 16h deux jours avant l'arrivée". Si refundable_until_time n'est pas défini, la valeur par défaut est minuit.

    La valeur de cet attribut utilise le 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 correspond à 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 ou les deux sont définis.
<Tax> Required float Taxes appliquées au prix final d'une chambre. Cet élément utilise la même syntaxe que <Tax> dans un élément <Result>.

Exemples

Tarif de base et tarif sous conditions

L'exemple suivant présente un message Transaction contenant un tarif de base et un tarif sous conditions:

<?xml version="1.0" encoding="UTF-8" ?>
<Transaction timestamp="2023-05-18T16:20:00-04:00" id="42">
  <Result>
    <Property>1234</Property>
    <Checkin>2023-04-10</Checkin>
    <Nights>1</Nights>

    <Baserate currency="USD">200.00</Baserate>
    <Tax currency="USD">20.00</Tax>
    <OtherFees currency="USD">1.00</OtherFees>

    <Rates>
      <!-- The rate_rule_id is required when using conditional rates -->
      <Rate rate_rule_id="mobile">
        <!-- Override base rate and taxes for conditional rates -->
        <Baserate currency="USD">180.00</Baserate>
        <Tax currency="USD">18.00</Tax>
        <!-- NOTE: OtherFees is inherited from the above setting -->
        <Custom1>ratecode123</Custom1>
      </Rate>
    </Rates>

  </Result>
</Transaction>

Plusieurs tarifs sous conditions

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="2023-05-18T16:20:00-04:00" id="42">
  <Result>
    <Property>1234</Property>
    <Checkin>2023-04-10</Checkin>
    <Nights>2</Nights>
    <!-- When Google receives new room bundle information for an itinerary, all
    previous room bundle pricing is dropped from Google's cache. Thus, if you
    want to delete a specific room bundle from Google's cache, you may do so
    by simply not providing that specific room bundle in subsequent transaction
    messages. -->
    <RoomBundle>
     ...
      <!-- RoomID is required, PackageID is recommended. -->
      <RoomID>5</RoomID>
      <PackageID>ABC</PackageID>
      <!-- Baserate is required. -->
      <Baserate currency="USD">275.00</Baserate>
      <Tax currency="USD">27.50</Tax>
      <OtherFees currency="USD">2.00</OtherFees>

      <!-- RatePlanID is optional and represents the unique identifier for a
      room and package data combination. We strongly recommend using RatePlanID
      as a variable to build your dynamic landing page (formerly Point of Sale)
      URL. For details, see Using Variables and Conditions. -->
      <RatePlanID>5-ABC</RatePlanID>

      <!-- Occupancy is mandatory for RoomBundle elements. -->
      <!-- Elements below will get inherited to nested rate elements. -->
      <Occupancy>2</Occupancy>
      <OccupancyDetails>
        <NumAdults>2</NumAdults>
      </OccupancyDetails>
      <InternetIncluded>1</InternetIncluded>


      <!-- Rate rule "mobile" overrides chargeCurrency, "us_or_gb" doesn't. -->
      <ChargeCurrency>web</ChargeCurrency>
      <Custom1>ratebasic</Custom1>
      <!-- Neither rate overrides Custom2. -->
      <Custom2>ratebasic</Custom2>

      <Rates>
        <Rate rate_rule_id="mobile">
          <Baserate currency="USD">258.33</Baserate>
          <Tax currency="USD">25.83</Tax>
          <OtherFees currency="USD">1.00</OtherFees>
          <!-- The value below overrides ChargeCurrency from roombundle. -->
          <ChargeCurrency>hotel</ChargeCurrency>
          <!-- The value below overrides Custom1 from roombundle. -->
          <Custom1>ratecode321</Custom1>
          <!-- Custom2 is inherited from roombundle. -->
        </Rate>
        <Rate rate_rule_id="us_or_gb">
          <Baserate currency="USD">268.33</Baserate>
          <Tax currency="USD">26.83</Tax>
          <OtherFees currency="USD">1.00</OtherFees>
          <!-- The value below overrides Custom1 from roombundle. -->
          <Custom1>ratecode432</Custom1>
          <!-- Custom2 is inherited from roombundle. -->
        </Rate>
      </Rates>
    </RoomBundle>
  </Result>
</Transaction>

<RoomBundle>

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 de séjours organisés ou de séjours. Pour définir la formule 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 Transaction:

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

Pour en savoir plus, consultez l'article Utiliser des 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 -->
      <ChargeCurrency>[deposit|hotel|installments|web]</ChargeCurrency>
      <Occupancy>max_number_of_intended_occupants</Occupancy>
      <OccupancyDetails> <!-- optional info about the types of guests,
      whether adults or children --></OccupancyDetails>

      <BreakfastIncluded>boolean_value</BreakfastIncluded>
      <InternetIncluded>boolean_value</InternetIncluded>
      <ParkingIncluded>boolean_value</ParkingIncluded>

      <RatePlanID>rate_plan_ID</RatePlanID>

      <Rates>...</Rates>

      <Custom1>custom_value_1</Custom1>
      <Custom2>custom_value_2</Custom2>
      <Custom3>custom_value_3</Custom3>
      <Custom4>custom_value_4</Custom4>
      <Custom5>custom_value_5</Custom5>
    </RoomBundle>
    ...
  </Result>
</Transaction>

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 Requis ? Type Description
<Baserate> Required 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 <Result>, à l'exception suivante :
  • Lorsque la chambre n'est pas disponible pour le séjour, supprimez l'élément <RoomBundle> pour indiquer qu'une chambre ne figure plus dans l'inventaire. Pour en savoir plus, consultez Supprimer une offre de chambres.
<BreakfastIncluded> Optional boolean Indique si l'offre de chambres inclut le petit-déjeuner dans le tarif.
<ChargeCurrency> Optional enum Où et quand 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]> Optional string Champs personnalisés permettant de transmettre des données supplémentaires aux pages de destination de l'offre de chambres. Ces éléments utilisent la même syntaxe que <Custom[1-5]> dans <Result>. La limite est de 200 caractères par champ personnalisé. Pour en savoir plus, consultez les fichiers de pages de destination.

Si des éléments <Custom> sont fournis dans l'élément <Result>, ils ne sont pas hérités dans l'élément <RoomBundle> et doivent être définis séparément pour chaque <RoomBundle>. Ils peuvent également être inclus dans l'élément <PackageData>, si nécessaire.

<InternetIncluded> Optional boolean Si une offre de chambres inclut un accès sans frais à Internet, alors que les autres offres n'incluent pas ce service. Ne définissez pas cet élément pour les offres de chambres d'un hôtel qui fournit un accès Internet sans frais à toutes les chambres. Cet élément ne s'applique pas à l'accès Internet filaire ou sans fil dans les chambres qui n'est pas disponible dans les chambres.
<Occupancy> Required integer 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 le "forfait Lune de miel" n'est destiné qu'à deux personnes.

Cette valeur doit être inférieure ou égale à <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 dans la section Utiliser des variables et des conditions. La valeur par défaut est 2 adultes et 0 enfants.

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

Remarques :

  • <Occupancy> pour <RoomBundle> est vivement recommandé. Il est signalé comme obligatoire. S'il est omis, une erreur 1097 est générée.
  • <Occupancy> provient de l'objet de données dans cet ordre: <RoomBundle>, <PackageData>, puis = <RoomData>. Si aucune de ces valeurs ne contient de valeur, la valeur par défaut est 2.
  • <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.
  • Lorsque vous définissez <Occupancy> à la fois dans <RoomBundle> et <PackageData>, la valeur de <RoomBundle> est prioritaire.
<OtherFees> Required float Frais autres que le tarif de base et les taxes qui ont une incidence sur le prix final d'une chambre. L'élément <OtherFees> comporte un seul attribut obligatoire, currency, qui définit le code de devise à trois lettres des frais. Par exemple, utilisez USD pour le dollar américain.
<PackageID> Optional (recommended) string Identifiant unique des données du séjour organisé. Utilisez cet identifiant pour faire correspondre les données de l'offre de chambres à celles envoyées dans <PackageData>. 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 d'offre de chambres commune utilisée dans un message Transaction lorsque vous définissez les données de l'offre de manière intégrée.)
<ParkingIncluded> Optional boolean Indique si l'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'hôtel offre un parking gratuit.

Les valeurs valides sont 0 (ou false) et 1 (ou true). La valeur par défaut est false.

<RatePlanID> Optional string L'identifiant de l'offre de chambres représente l'identifiant unique d'une combinaison chambre/formule. Par exemple, avec une valeur <RoomID> de 5 et une valeur <PackageID> de ABC, vous pouvez utiliser 5-ABC pour <RatePlanID>. Nous vous recommandons vivement d'utiliser RatePlanID comme variable pour créer votre URL de page de destination dynamique (anciennement "point de vente").

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

<Rates> Optional <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> Optional Object Permet d'indiquer qu'un tarif est entièrement remboursable ou de proposer une annulation sans frais. Si ce champ n'est pas défini, aucune information sur le remboursement ne s'affiche. Les conditions de remboursement définies au niveau <PackageData> remplacent celles du niveau <Result>. Les conditions de remboursement définies au niveau <Rates> remplacent celles du niveau <PackageData>. Vous pouvez également mettre en avant les tarifs remboursables aux utilisateurs à l'aide d'autres options sans modifier directement le schéma de votre message de transaction. En savoir plus sur ces options dans les Règles relatives aux tarifs remboursables

L'exemple suivant montre 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 définissez aucun attribut, le tarif ne s'affiche pas comme remboursable. Les attributs sont les suivants :

  • available: (obligatoire) définissez cette valeur sur 1 (ou true) pour indiquer si le tarif peut être intégralement remboursé. Sinon, définissez-la sur 0 (ou false).
  • refundable_until_days (obligatoire si available est défini sur true) : spécifie 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 est défini sur true) Spécifie l'heure limite, en heure locale de l'hôtel, à laquelle un remboursement total peut être accordé. Cette valeur peut être combinée à refundable_until_days pour spécifier, par exemple, que "les remboursements sont disponibles jusqu'à 16h deux jours avant l'arrivée". Si refundable_until_time n'est pas défini, la valeur par défaut est minuit.

    La valeur de cet attribut utilise le 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 correspond à 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 ou les deux sont définis.
<RoomID> Required string 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 Transaction lorsque vous définissez les données de la chambre de façon intégrée.)
<Tax> Required float Taxes appliquées au prix final d'une chambre. L'élément <Tax> comporte un seul attribut obligatoire, currency, qui définit le code de devise à trois lettres des taxes. Par exemple, utilisez USD pour le dollar américain.

Exemples

Offre groupée pour une seule personne

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, Google affiche le prix éligible le plus bas, quel que soit le nombre de personnes.

Si aucun prix pour une seule personne n'est disponible, Google affiche le prix le plus bas pour une chambre pour deux personnes. Notez que les prix pour une seule personne ne sont pas interrogés en temps réel si les prix d'une chambre pour deux 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 définir 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>
    <!-- Single occupancy pricing will be specified in a room bundle below -->
    <Property>180054</Property>
    <Checkin>2017-10-07</Checkin>
    <Nights>2</Nights>
    <!-- Base Room Bundle -->
    <RoomBundle>
      <RoomID>060773</RoomID>
      <PackageID>P54321</PackageID>
      <Baserate currency="USD">199.99</Baserate>
      <Tax currency="USD">25.12</Tax>
      <OtherFees currency="USD">2.00</OtherFees>
      <RatePlanID>060773-P54321</RatePlanID>
    </RoomBundle>
    <RoomBundle>
      <RoomID>060773</RoomID>
      <PackageID>P11111</PackageID>
      <!-- Price for 1 ("occupancy") is the lowest price and will be
           displayed -->
      <Baserate currency="USD">174.99</Baserate>
      <Tax currency="USD">22.08</Tax>
      <OtherFees currency="USD">2.00</OtherFees>
      <RatePlanID>060773-P11111</RatePlanID>
    </RoomBundle>
    <!-- Premium Room Bundle -->
    <RoomBundle>
      <RoomID>436233</RoomID>
      <PackageID>P12345</PackageID>
      <!-- Price for 4 ("occupancy"), any eligible room bundle with 1 or more
           occupancy will be displayed-->
      <Baserate currency="USD">298.88</Baserate>
      <Tax currency="USD">42.12</Tax>
      <OtherFees currency="USD">10.00</OtherFees>
      <RatePlanID>436233-P12345</RatePlanID>
    </RoomBundle>
    <!-- ..Continue providing all available RoomBundle rates under matched
         property for 1 or more occupancies..-->
  </Result>
</Transaction>


Deux personnes ou plus

L'exemple suivant définit une réponse contenant deux occupations ou plus.

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 définir 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>
    <Property>180054</Property>
    <Checkin>2017-10-07</Checkin>
    <Nights>2</Nights>
    <!-- Efficient method of defining Room Bundles -->
    <!-- Part 2: Reference RoomData and PackageData through ID -->
    <!-- Base Room Bundle -->
    <RoomBundle>
      <!-- Baserate above and attributes must match atleast one room bundle
           below -->
      <RoomID>060773</RoomID>
      <PackageID>P33333</PackageID>
      <Baserate currency="USD">499.99</Baserate>
      <Tax currency="USD">55.12</Tax>
      <OtherFees currency="USD">22.00</OtherFees>
    </RoomBundle>
    <!-- Premium Room Bundle -->
    <RoomBundle>
      <RoomID>436233</RoomID>
      <PackageID>P12345</PackageID>
      <!-- Lowest price for 3 ("occupancy"), shown below, will be displayed -->
      <Baserate currency="USD">598.88</Baserate>
      <Tax currency="USD">62.12</Tax>
      <OtherFees currency="USD">30.00</OtherFees>
    </RoomBundle>
    <!-- ..Continue providing all available RoomBundle rates under matched
         property for 2 or more occupancies..-->
  </Result>
</Transaction>


Plusieurs offres de chambres

L'exemple suivant définit l'occupation dans plusieurs offres de chambres pour illustrer les différents tarifs de chambre d'auberge de jeunesse.

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

Plusieurs tarifs sous conditions

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="2023-05-18T16:20:00-04:00" id="42">
  <Result>
    <Property>1234</Property>
    <Checkin>2023-04-10</Checkin>
    <Nights>2</Nights>
    <!-- When Google receives new room bundle information for an itinerary, all
    previous room bundle pricing is dropped from Google's cache. Thus, if you
    want to delete a specific room bundle from Google's cache, you may do so
    by simply not providing that specific room bundle in subsequent transaction
    messages. -->
    <RoomBundle>
     ...
      <!-- RoomID is required, PackageID is recommended. -->
      <RoomID>5</RoomID>
      <PackageID>ABC</PackageID>
      <!-- Baserate is required. -->
      <Baserate currency="USD">275.00</Baserate>
      <Tax currency="USD">27.50</Tax>
      <OtherFees currency="USD">2.00</OtherFees>

      <!-- RatePlanID is optional and represents the unique identifier for a
      room and package data combination. We strongly recommend using RatePlanID
      as a variable to build your dynamic landing page (formerly Point of Sale)
      URL. For details, see Using Variables and Conditions. -->
      <RatePlanID>5-ABC</RatePlanID>

      <!-- Occupancy is mandatory for RoomBundle elements. -->
      <!-- Elements below will get inherited to nested rate elements. -->
      <Occupancy>2</Occupancy>
      <OccupancyDetails>
        <NumAdults>2</NumAdults>
      </OccupancyDetails>
      <InternetIncluded>1</InternetIncluded>


      <!-- Rate rule "mobile" overrides chargeCurrency, "us_or_gb" doesn't. -->
      <ChargeCurrency>web</ChargeCurrency>
      <Custom1>ratebasic</Custom1>
      <!-- Neither rate overrides Custom2. -->
      <Custom2>ratebasic</Custom2>

      <Rates>
        <Rate rate_rule_id="mobile">
          <Baserate currency="USD">258.33</Baserate>
          <Tax currency="USD">25.83</Tax>
          <OtherFees currency="USD">1.00</OtherFees>
          <!-- The value below overrides ChargeCurrency from roombundle. -->
          <ChargeCurrency>hotel</ChargeCurrency>
          <!-- The value below overrides Custom1 from roombundle. -->
          <Custom1>ratecode321</Custom1>
          <!-- Custom2 is inherited from roombundle. -->
        </Rate>
        <Rate rate_rule_id="us_or_gb">
          <Baserate currency="USD">268.33</Baserate>
          <Tax currency="USD">26.83</Tax>
          <OtherFees currency="USD">1.00</OtherFees>
          <!-- The value below overrides Custom1 from roombundle. -->
          <Custom1>ratecode432</Custom1>
          <!-- Custom2 is inherited from roombundle. -->
        </Rate>
      </Rates>
    </RoomBundle>
  </Result>
</Transaction>

<OccupancyDetails>

Dans un message Transaction, <Occupancy> spécifie le nombre maximal de personnes pour une chambre ou un séjour organisé. <OccupancyDetails> peut contenir des informations supplémentaires telles 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>. Notez la syntaxe suivante:

<?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 Requis ? Type Description
<NumAdults> Required integer Nombre de clients adultes. Min. : 1, Max. : 20
<Children> Optional Object Conteneur pour un ou plusieurs éléments <Child>.
<Child age> Optional integer Âge maximal de l'enfant (par exemple, <Child age="17">).

Exemples

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

Réponse aux résultats

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 les types de clients. Ici, les <OccupancyDetails> (deux adultes et un enfant) sont renvoyés 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>

Taux de réponse

L'exemple suivant définit un séjour et ses tarifs pour un adulte et un enfant. Ici, les <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>

Offre de chambres

L'exemple suivant définit le nombre de personnes pour deux adultes et un enfant pour deux nuits, avec un tarif remboursable. Ici, les <OccupancyDetails> apparaissent 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>

Plusieurs offres de chambres

L'exemple suivant définit plusieurs tarifs <RoomBundle> limités à un nombre de personnes de deux adultes et deux enfants. Ici, les <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>