Cette section fournit une documentation de référence pour les messages Hint request, les messages Hint response et les messages Query.
<Hint> (message Hint response)
Élément racine d'un message Hint response. Les messages Hint response spécifient les combinaisons hôtel/séjour dont les tarifs doivent être mis à jour. Il s'agit de votre réponse à un message Hint request de Google.
Un message Hint response ne doit spécifier que les hôtels dont les prix ont changé depuis la dernière fois que Google a reçu une réponse d'indication réussie de vos serveurs.
Les messages Hint response utilisent l'une des méthodes suivantes pour spécifier les hôtels et les séjours dont les prix doivent être modifiés sur Google :
Séjours exacts : combinaison date d'arrivée/durée du séjour.
Plages de dates d'arrivée : plage allant de la première date d'arrivée à la dernière date d'arrivée possibles.
Séjours inclus dans une période (ou itinéraires inclus dans une période)
Chacune de ces méthodes nécessite une syntaxe différente pour le message Hint response.
Pour en savoir plus, consultez Messages Hint response.
Syntaxe
L'élément <Hint> utilise une syntaxe différente, en fonction du type de message Hint response :
Séjours exacts
Voici la syntaxe des séjours exacts dans un message Hint response :
<!-- Exact Itinerary Hint Response -->
<?xml version="1.0" encoding="UTF-8"?>
<Hint>
<Item>
<Property>hotel_ID</Property>
...
<Stay>
<CheckInDate>checkin_date</CheckInDate>
<LengthOfStay>number_of_nights</LengthOfStay>
</Stay>
</Item>
...
</Hint>
Plages de dates d'arrivée
Voici la syntaxe des plages d'arrivée dans un message Hint response :
<!-- Check-in Ranges Hint Response -->
<?xml version="1.0" encoding="UTF-8"?>
<Hint>
<Item>
<!-- At least one is required -->
<Property>hotel_ID</Property>
[...]
<!-- Required -->
<FirstDate>first_checkin_date</FirstDate>
<!-- Required -->
<LastDate>last_checkin_date</LastDate>
</Item>
...
</Hint>
Séjours inclus dans une période
Voici la syntaxe des séjours inclus dans une période dans un message Hint response :
<!-- Ranged Stay Hint Response -->
<?xml version="1.0" encoding="UTF-8"?>
<Hint>
<Item>
<!-- At least one is required -->
<Property>1458700</Property>
<Property>5418701</Property>
<StaysIncludingRange>
<!-- Required -->
<FirstDate>2025-04-28</FirstDate>
<!-- Optional -->
<LastDate>2025-04-29</LastDate>
</StaysIncludingRange>
</Item>
...
</Hint>
Attributs
L'élément <Hint> contient un attribut facultatif : id. Lorsqu'il est fourni, il est inclus en tant qu'attribut hintId dans les messages <Query> envoyés en fonction de ce <Hint>.
Éléments enfants
L'élément <Hint> comporte les éléments enfants suivants :
| Élément enfant | Obligatoire ? | Type | Type de réponse d'indication | Description |
|---|---|---|---|---|
| <CheckInDate> | Required | Date | Séjours exacts | Date d'arrivée pour le séjour. |
| <FirstDate> | Required | Date | Plages de dates d'arrivée et séjours inclus dans une période | Première date de la plage dans un message Hint response de plage de dates d'arrivée ou de séjours inclus dans une période. Les dates sont incluses. |
| <Item> | Required | Object | Tous | Conteneur de l'hôtel/du séjour à mettre à jour. |
| <LastDate> | Required* | Date | Plages de dates d'arrivée et séjours inclus dans une période | Dernière date de la plage dans un message Hint response de plage de dates d'arrivée ou de séjours inclus dans une période. Les dates sont incluses. * Cet élément est facultatif pour les séjours inclus dans une période. |
| <LengthOfStay> | Required | integer | Séjours exacts | Nombre de nuits pour le séjour sous forme d'entier positif. |
| <Property> | Required | string | Tous | ID de l'hôtel, qui apparaît dans la liste d'hôtels. Le nombre d'éléments
|
| <Stay> | Required | Object | Séjours exacts | Conteneur pour les éléments <CheckinDate> et <LengthOfStay> dans un message Hint response de séjour exact. Chaque <Item> ne peut contenir qu'un seul <Stay>. |
| <StaysIncludingRange> | Required | Object | Séjours inclus dans une période | Conteneur pour les éléments <FirstDate> et <LastDate> dans un message Hint response de séjour inclus dans une période. |
Exemples
Séjours exacts
L'exemple suivant définit plusieurs séjours pour un même établissement dans un message Hint response :
<!-- Exact Itinerary Hint Response -->
<?xml version="1.0" encoding="UTF-8"?>
<Hint>
<Item>
<Property>12345</Property>
<Stay>
<CheckInDate>2018-07-03</CheckInDate>
<LengthOfStay>3</LengthOfStay>
</Stay>
</Item>
<Item>
<Property>12345</Property>
<Stay>
<CheckInDate>2018-07-03</CheckInDate>
<LengthOfStay>4</LengthOfStay>
</Stay>
</Item>
</Hint>
Plages de dates d'arrivée
L'exemple suivant spécifie deux hôtels dont les prix ont changé et doivent être extraits à nouveau. Google extrait tous les séjours allant du 3 au 6 juillet pour les établissements 12345 et 67890 :
<!-- Check-in Ranges Hint Response -->
<?xml version="1.0" encoding="UTF-8"?>
<Hint>
<Item>
<Property>12345</Property>
<Property>67890</Property>
<FirstDate>2018-07-03</FirstDate>
<LastDate>2018-07-06</LastDate>
</Item>
</Hint>
Séjours inclus dans une période
L'exemple suivant illustre deux utilisations différentes des séjours inclus dans une période : un séjour avec une plage de plusieurs nuits et un autre d'une seule nuit :
<!-- Ranged Stay Hint Response -->
<?xml version="1.0" encoding="UTF-8"?>
<Hint>
<!-- Google fetches prices for all itineraries (first and last date are set) -->
<Item>
<Property>12345</Property>
<StaysIncludingRange>
<FirstDate>2018-07-03</FirstDate>
<LastDate>2018-07-06</LastDate>
</StaysIncludingRange>
</Item>
<!-- Google fetches prices for a single night (first date only) -->
<Item>
<Property>67890</Property>
<StaysIncludingRange>
<FirstDate>2018-07-03</FirstDate>
</StaysIncludingRange>
</Item>
</Hint>
Pour chacun de ces exemples, Google répond par un message <Query>. Vous devez ensuite renvoyer un message <Transaction> incluant les mises à jour des prix pour les hôtels/séjours indiqués.
<HintRequest>
Élément racine d'un message Hint request. Google envoie un message Hint request à votre serveur. Il attend une réponse spécifiant les hôtels et les séjours dont les prix ont changé depuis la dernière fois que Google a reçu une réponse d'indication réussie de votre serveur.
En cas de changement de prix, Google envoie un message <Query> qui extrait les données tarifaires mises à jour pour les hôtels et séjours indiqués.
Pour en savoir plus, consultez la page Messages Hint request.
Syntaxe
L'élément <HintRequest> utilise la syntaxe suivante :
Syntaxe
<?xml version="1.0" encoding="UTF-8"?>
<HintRequest>
<LastFetchTime>last_fetch_time</LastFetchTime>
</HintRequest>
Attributs
L'élément <HintRequest> ne comporte aucun attribut.
Éléments enfants
L'élément <HintRequest> comporte les éléments enfants suivants :
| Élément enfant | Type | Description |
|---|---|---|
| <LastFetchTime> | DateTime | Dernière fois que Google a obtenu un message Hint response suite à un message Hint request.
Si cette date est antérieure à la dernière fois où vous avez modifié les prix sur votre serveur, vous devez répondre en envoyant un message Hint response. Celui-ci doit préciser les hôtels dont les prix ont été modifiés. Si aucune récupération récente n'a réussi, cette valeur sera définie sur un intervalle fixe (pour éviter des problèmes plus graves avec les grands journaux). La valeur actuelle de l'intervalle fixe est de 1 000 secondes, mais elle peut changer. Pour en savoir plus, consultez la page Messages Hint response. |
Exemples
L'exemple suivant présente un message Hint request :
Message Hint request
L'exemple suivant présente un message Hint request :
<?xml version="1.0" encoding="UTF-8"?>
<HintRequest id="ABCDEF" timestamp="2018-06-07T16:20:00Z">
<LastFetchTime>2018-03-25T00:04:09Z</LastFetchTime>
</HintRequest>
<Query>
Élément racine d'un message Query. Les messages Query sont des requêtes que Google vous envoie pour la mise à jour de vos tarifs et de vos métadonnées. Ils sont utilisés avec les modes d'envoi Pull et Requête de prix modifiés.
Messages de requête de prix
Les messages de requête de prix spécifient les combinaisons hôtel/séjour pour lesquelles vous devez fournir les prix.
Lorsque votre serveur reçoit un message de requête de prix, il doit renvoyer un message <Transaction> comportant les informations tarifaires requises.
Pour en savoir plus, consultez Présentation des tarifs.
Il existe trois types spéciaux de messages Query :
Prix en temps réel : Google répond à une demande spécifique d'un utilisateur en demandant une mise à jour des prix en temps réel. Lorsque les partenaires reçoivent un message
Live pricing query, ils doivent répondre par un message<Transaction>contenant les informations tarifaires demandées dans des éléments<Result>.Avec la tarification contextuelle : Google met à jour son cache de prix en fonction des contextes qui sont historiquement populaires. Lorsque vous recevez un message
With Context query, vous devez répondre avec un message<Transaction>contenant les informations tarifaires demandées dans des éléments<Result>.Avec les requêtes contextuelles pour une seule personne
Lorsque vous fournissez des tarifs en réponse à des requêtes "Avec contexte", vous ne devez envoyer que le tarif correspondant au contexte spécifié. Le tarif de base nécessite au moins deux occupants. Si un seul occupant est indiqué dans le tarif de base, il sera ignoré et sera toujours considéré comme une occupation double. Dans ce cas, vous devez indiquer que le tarif de base n'est pas disponible et utiliser un tarif imbriqué pour l'occupation simple. Consultez l'exemple de réponse avec contexte. Vous pouvez utiliser Prix modifiés avec contexte pour fusionner les tarifs en définissant l'attribut
mergeablesur"true". En savoir plusRequête de prix modifiés (anciennement Pull avec "Conseil") avec contexte
Lorsque vous envoyez une réponse
<Transaction>à une requête de prix modifiés avec contexte, Google la traite comme un remplacement complet des informations sur les prix et la disponibilité pour un hôtel ou un itinéraire donné. Tous les tarifs spécifiques au contexte sont exclus de la réponse et supprimés du cache.Pour éviter l'écrasement, vous devez définir l'attribut
mergeablesur"true"dans l'élément<Result>du message<Transaction>. L'application Google ajoute les taux aux taux mis en cache existants pour le contexte fourni dans la réponse. Si vous n'utilisez pas l'attribut "mergeable", vous devez envoyer tous les tarifs pour tous les contextes applicables dans la réponse.Requête de prix en temps réel avec contexte
La requête de prix en temps réel avec contexte a le comportement d'attribut fusionnable par défaut. Il n'est donc pas nécessaire de définir cet attribut. Vous n'avez besoin d'envoyer le ou les tarifs pour des contextes spécifiques demandés par Google que si tous les autres contextes restent identiques. Si d'autres contextes ont changé, vous devez envoyer explicitement les modifications pour ces contextes. Sinon, les nouveaux tarifs ne seront pas mis à jour dans le cache de Google.
Métadonnées : Google demande les mises à jour des métadonnées des chambres et des offres de chambres pour les hôtels spécifiés. Lorsque vous recevez un message
Metadata Query, vous devez répondre par un message<Transaction>spécifiant les données sur les chambres et les offres de chambres dans des éléments<PropertyDataSet>. Pour en savoir plus, consultez Métadonnées des offres de chambres.
Syntaxe
L'élément <Query> utilise la syntaxe suivante :
Requête sur les prix
<?xml version="1.0" encoding="UTF-8"?>
<Query>
<Checkin>YYYY-MM-DD</Checkin>
<Nights>number_of_nights</Nights>
<PropertyList>
<Property>hotel_id</Property>
...
</PropertyList>
</Query>
Requête de prix en temps réel
<?xml version="1.0" encoding="UTF-8"?>
<Query latencySensitive="true_or_false">
<Checkin>YYYY-MM-DD</Checkin>
<Nights>number_of_nights</Nights>
<!-- Only for Check-in Date Range pricing queries (Changed Pricing) -->
<FirstDate>YYYY-MM-DD</FirstDate>
<LastDate>YYYY-MM-DD</LastDate>
<!-- Only for Ranged Stay pricing queries (Changed Pricing) -->
<AffectedNights>number_of_nights</AffectedNights>
<PropertyList>
<Property>hotel_id</Property>
...
</PropertyList>
<!-- See documentation below for <Context> -->
<Context>
...
</Context>
</Query>
Avec une requête de contexte
<?xml version="1.0" encoding="UTF-8"?>
<Query>
<Checkin>YYYY-MM-DD</Checkin>
<Nights>number_of_nights</Nights>
<!-- Only for Check-in Date Range pricing queries (Changed Pricing) -->
<FirstDate>YYYY-MM-DD</FirstDate>
<LastDate>YYYY-MM-DD</LastDate>
<!-- Only for Ranged Stay pricing queries (Changed Pricing) -->
<AffectedNights>number_of_nights</AffectedNights>
<PropertyContextList>
<PropertyContext>
<Property>hotel_id</Property>
...
<!-- See documentation below for <Context> -->
<Context>
...
</Context>
</PropertyContext>
</PropertyContextList>
</Query>
Métadonnées
<HotelInfoProperties>
<Property>property_ID</Property>
...
</HotelInfoProperties>
Attributs
L'élément <Query> peut contenir un seul attribut : latencySensitive.
L'attribut latencySensitive est facultatif. S'il est fourni et défini sur true, il indique qu'il s'agit d'une Live Pricing Query. Pour que Google envoie des requêtes avec l'attribut latencySensitive, contactez votre responsable de compte technique (TAM).
Éléments enfants
L'élément <Query> comporte les éléments enfants suivants :
| Élément enfant | Type de requête | Type | Description |
|---|---|---|---|
| <AffectedNights> | Pricing | integer | Nombre de nuits d'un séjour inclus dans une période. Cet élément n'est utilisé que pour les requêtes de prix des séjours inclus dans une période en mode Requête de prix modifiés. |
| <Checkin> | Pricing | Date | Dates d'un changement de prix spécifique. |
| <Context> | Pricing (Live Pricing Queries only) | <Context> | Pour les requêtes de prix en temps réel, spécifie certains paramètres sous lesquels la requête est effectuée. Éléments enfants :
L'élément |
| <FirstDate> | Pricing | Date | Date de début d'un ensemble de séjours auxquels les prix s'appliquent. Cet élément n'est utilisé que pour les requêtes sur les prix d'une plage de dates d'arrivée en mode Requête de prix modifiés. |
| <HotelInfoProperties> | Metadata | string | Une ou plusieurs propriétés pour lesquelles Google souhaite obtenir des métadonnées de chambre et d'offre de chambre mises à jour dans un message de métadonnées Query.
Cet élément peut contenir un ou plusieurs éléments <Property> spécifiant les ID d'établissement des hôtels. |
| <LastDate> | Pricing | Date | Date de fin d'un ensemble de séjours auxquels les prix s'appliquent. Cet élément n'est utilisé que pour les requêtes sur les prix d'une plage de dates d'arrivée en mode Pull with Hints. |
| <Nights> | Pricing | integer | Nombre de nuits pour un séjour donné (jusqu'à 30). |
| <PropertyList> | Pricing | Object | Un ou plusieurs ID pour les hôtels qui nécessitent une mise à jour des prix. Définissez chaque hôtel dans un élément <PropertyList> <Property>pid1</Property> <Property>pid2</Property> </PropertyList> |
Exemples
Requête sur les prix
L'exemple suivant illustre un message de requête sur les prix qui demande la mise à jour des prix d'un ensemble d'hôtels, disponibles pendant trois nuits à compter du 23 mai 2023 :
<?xml version="1.0" encoding="UTF-8"?>
<Query>
<Checkin>2023-05-23</Checkin>
<Nights>3</Nights>
<PropertyList>
<Property>pid5</Property>
<Property>pid8</Property>
<Property>pid13</Property>
<Property>pid21</Property>
</PropertyList>
</Query>
Requête de prix en temps réel
L'exemple suivant présente une requête de prix en temps réel dont le temps de réponse est limité à 500 millisecondes :
<?xml version="1.0" encoding="UTF-8"?>
<Query latencySensitive="true">
<Checkin>2017-06-07</Checkin>
<Nights>5</Nights>
<DeadlineMs>500</DeadlineMs>
<PropertyList>
<Property>8675309</Property>
</PropertyList>
<Context>
<Occupancy>4</Occupancy>
<OccupancyDetails>
<NumAdults>2</NumAdults>
<Children>
<Child age="8"/>
<Child age="5"/>
</Children>
</OccupancyDetails>
<UserCountry>US</UserCountry>
<UserDevice>mobile</UserDevice>
</Context>
</Query>
Requête avec contexte
<?xml version="1.0" encoding="UTF-8"?>
<Query>
<Checkin>2023-05-23</Checkin>
<Nights>2</Nights>
<PropertyContextList>
<PropertyContext>
<Property>8675309</Property>
<!-- In the future, device might be specified -->
<Context><UserCountry>US</UserCountry></Context>
<Context><UserCountry>GB</UserCountry></Context>
</PropertyContext>
<PropertyContext>
<Property>8675310</Property>
<Property>8675311</Property>
<Context><UserCountry>CA</UserCountry></Context>
</PropertyContext>
</PropertyContextList>
</Query>
Avec réponse contextuelle
L'exemple suivant explique comment définir le tarif de base sur unavailable(-1) pour une personne et imbriquer les tarifs dans l'élément <Occupancy>.
<?xml version="1.0" encoding="UTF-8"
<Transaction id="Wtdj8QoQIWcAAbaTGlIAAAC4" timestamp="2025-11-19T18:36:48Z">
<Result>
<Property>6781291</Property>
<Checkin>2026-01-15</Checkin>
<Nights>1</Nights>
<!-- Base rate is set to -1 to indicate unavailability for the default (2-person) occupancy -->
<Baserate currency="USD">-1</Baserate>
<Tax currency="USD">0</Tax>
<OtherFees currency="USD">0</OtherFees>
<Rates>
<!-- Nested Rate for Single Occupancy -->
<Rate rate_rule_id="rule-951">
<Occupancy>1</Occupancy>
<OccupancyDetails>
<NumAdults>1</NumAdults>
</OccupancyDetails>
<Baserate currency="USD">150.00</Baserate>
<Tax currency="USD">15.00</Tax>
<OtherFees currency="USD">5.00</OtherFees>
</Rate>
<!-- Other nested rates for different occupancies or room types could be included here if available -->
</Rates>
</Result>
</Transaction>
Requête de métadonnées
<?xml version="1.0" encoding="UTF-8"?>
<Query>
<HotelInfoProperties>
<Property>pid5</Property>
<Property>pid8</Property>
<Property>pid13</Property>
<Property>pid21</Property>
</HotelInfoProperties>
</Query>
Pour plus d'exemples, en particulier sur les requêtes sur les prix avec séjour inclus dans une période et plage de dates d'arrivée, consultez les exemples de messages Query.
<Context>
L'élément <Context> décrit les informations relatives à une Live pricing query, comme le nombre et le type de clients, le pays de l'utilisateur et l'appareil de l'utilisateur.
Vous ne pouvez pas utiliser plusieurs éléments <Context> avec des pays ou des appareils différents. Lorsque plusieurs éléments <Context> sont utilisés pour rechercher divers nombres de personnes, fournissez le prix associé à chaque nombre en tant qu'offre de chambres supplémentaire pour l'établissement ou le séjour correspondant. Chaque établissement ou séjour doit comporter un seul bloc <Result> avec les prix des différents nombres de personnes.
Pour en savoir plus sur la réponse à la requête <Context>, consultez <OccupancyDetails>.
Syntaxe
L'élément <Context> utilise la syntaxe suivante :
Syntaxe
<?xml version="1.0" encoding="UTF-8"?>
<Query latencySensitive="true_or_false">
<Checkin>date</Checkin>
<Nights>number_of_nights</Nights>
<DeadlineMs>number_of_milliseconds</DeadlineMs>
<PropertyList>
<Property>property_ID</Property>
</PropertyList>
<Context>
<Occupancy>total_number_of_guests</Occupancy>
<OccupancyDetails>
<NumAdults>number_of_adults</NumAdults>
<Children>
<Child age=age_of_one_child_guest/>
<Child age=age_of_one_child_guest/>
</Children>
</OccupancyDetails>
<UserCountry>end_user_country</UserCountry>
<UserDevice>user_device_type</UserDevice>
</Context>
</Query>
Éléments enfants
L'élément <Context> comporte les éléments enfants suivants :
| Élément enfant | Type de requête | Type | Description |
|---|---|---|---|
| <Occupancy> | Pricing | integer | Indique le nombre total de clients. Bien que cela ne soit pas obligatoire, les requêtes avec Remarque : |
| <OccupancyDetails> | Pricing | Object | Est précédé de <Occupancy>. Spécifie les clients par type, y compris :
Bien que cela ne soit pas obligatoire, les requêtes avec Remarque : |
| <UserCountry> | Pricing | string | Filtre les tarifs en fonction du pays où se trouve l'utilisateur. Sa valeur est un code pays à deux lettres, comme Les requêtes pour lesquelles |
| <UserDevice> | Pricing | string | Filtre les tarifs en fonction du type d'appareil sur lequel l'utilisateur effectue sa recherche. Valeurs possibles :
Les requêtes pour lesquelles |
Exemples
Nombre de personnes
L'exemple suivant présente une requête de prix en temps réel pour <Occupancy> dans <Context>. La requête de prix en temps réel concerne trois adultes.
<?xml version="1.0" encoding="UTF-8"?>
<Query latencySensitive="true">
<Checkin>2017-06-07</Checkin>
<Nights>4</Nights>
<DeadlineMs>500</DeadlineMs>
<PropertyList>
<Property>45617</Property>
</PropertyList>
<Context>
<Occupancy>3</Occupancy>
<UserCountry>US</UserCountry>
<UserDevice>mobile</UserDevice>
</Context>
</Query>
Détails sur l'occupation
L'exemple suivant présente une requête de prix en temps réel avec <OccupancyDetails> dans <Context>.
La requête de prix en temps réel concerne quatre personnes, dont deux enfants, et recherche un tarif applicable à une réservation de personnes venant des États-Unis depuis un appareil mobile :
<?xml version="1.0" encoding="UTF-8"?>
<Query latencySensitive="true">
<Checkin>2017-06-07</Checkin>
<Nights>5</Nights>
<DeadlineMs>500</DeadlineMs>
<PropertyList>
<Property>8675309</Property>
</PropertyList>
<Context>
<Occupancy>4</Occupancy>
<OccupancyDetails>
<NumAdults>2</NumAdults>
<Children>
<Child age="4"/>
<Child age="12"/>
</Children>
</OccupancyDetails>
<UserCountry>US</UserCountry>
<UserDevice>mobile</UserDevice>
</Context>
</Query>
Contextes multiples
L'exemple suivant illustre l'utilisation d'un élément <Context> supplémentaire dans une requête de prix en temps réel.
<?xml version="1.0" encoding="UTF-8"?>
<Query latencySensitive="true">
<Checkin>2017-06-07</Checkin>
<Nights>4</Nights>
<DeadlineMs>500</DeadlineMs>
<PropertyList>
<Property>45617</Property>
</PropertyList>
<Context>
<Occupancy>3</Occupancy>
<UserCountry>US</UserCountry>
<UserDevice>mobile</UserDevice>
</Context>
<Context>
<Occupancy>6</Occupancy>
<OccupancyDetails>
<NumAdults>4</NumAdults>
<Children>
<Child age="6"/>
<Child age="10"/>
</Children>
</OccupancyDetails>
<UserCountry>US</UserCountry>
<UserDevice>mobile</UserDevice>
</Context>
</Query>