Messages de requête

Les messages de requête sont des requêtes que nous vous envoyons 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".

L'élément racine des messages de requête est <Query>.

La structure du message de requête dépend du type de message :

  • Prix : nous envoyons un message de requête dans lequel nous exigeons la mise à jour des prix pour les hôtels spécifiés.
  • Métadonnées : nous envoyons un message de requête dans lequel nous exigeons les données sur les chambres et offres de chambres pour les hôtels spécifiés.

Vous définissez le point de terminaison auquel nous envoyons les messages de requête (et les requêtes de prix en temps réel) lors de la configuration initiale. Pour en savoir plus, contactez votre responsable de compte technique (TAM).

Nous envoyons un message de requête à l'aide d'une requête HTTP POST dont l'en-tête Content-Type est défini sur "application/xml" et l'en-tête User-Agent sur Google-HotelAdsPrices. Toutefois, cette règle ne s'applique pas lorsque l'intégration du point de terminaison des prix est testée manuellement via Google-TravelAds-Live. Ces exemples de requêtes peuvent ou non contenir l'en-tête User-Agent.

Pour plus d'informations sur la mise en forme détaillée des messages de requête, consultez la documentation de référence XML.

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

Dans certains cas, les messages de requête nécessitent de mettre à jour les prix pour une recherche en temps réel. Vous disposez alors d'un délai spécifique pour répondre. Il s'agit de requêtes de prix en temps réel.

Requêtes de prix en temps réel

Les requêtes de prix en temps réel sont des requêtes que nous vous envoyons pour obtenir en temps réel une mise à jour de vos prix en vue de répondre aux recherches d'un utilisateur final. Nous recevons une requête de recherche d'un utilisateur final pour une combinaison hôtel/séjour. Étant donné que les données tarifaires ne sont alors pas disponibles ou pas à jour, nous vous demandons de mettre à jour vos prix au moment de la recherche. Lorsque nous vous envoyons une requête de prix en temps réel, nous tentons d'obtenir un prix pour l'afficher dans les résultats lors de la recherche.

Toutes les requêtes de prix en temps réel ont un temps de réponse limité, généralement inférieur à 4 000 millisecondes (la limite sera spécifiée dans la requête de prix en temps réel). Si aucune réponse ne peut être fournie dans le délai imparti, vous ne pouvez pas participer aux enchères pour cette opportunité. C'est ce qu'on appelle une "participation manquée". Toutefois, nous vous recommandons de fournir un prix afin qu'il puisse être mis en cache et utilisé pour de futures opportunités. La connexion pour la réponse restera ouverte pendant 10 minutes (ou aussi longtemps que spécifié dans la configuration du partenaire).

Les requêtes de prix en temps réel sont également contextuelles et peuvent récupérer les prix pour les paramètres suivants : pays de l'utilisateur, type d'appareil, nombre de personnes (nombre de clients) et profil des clients (adultes ou enfants). Les requêtes de prix en temps réel vous permettent d'afficher des prix plus à jour qui correspondent à ce que le client a recherché.

Les requêtes de prix en temps réel constituent un système secondaire de mise à jour des prix. (Le mécanisme principal de mise à jour des prix reste soit "Pull", soit "Requête de prix modifiés".) Les requêtes de prix en temps réel permettent d'obtenir des tarifs pour des combinaisons hôtel/séjour que nous n'avons pas.

De façon générale, les requêtes de prix en temps réel sont utilisées dans les cas suivants :

  • Nous ne disposons d'aucune donnée en cache pour le séjour en question, parce que le séjour demandé est inhabituel (par exemple, les dates sont très lointaines) ou l'hôtel fait rarement l'objet d'une recherche.
  • La date demandée n'est pas une date par défaut. (Remarque : les dates par défaut ne sont pas éligibles pour les requêtes de prix en temps réel. Ces requêtes ne sont envoyées que pour des dates définies spécifiquement par les voyageurs.)

En général, nous mettons en cache les résultats d'une requête de prix en temps réel, ce qui nous permet de ne pas envoyer d'autres requêtes de ce type pour le même hôtel/séjour.

Les requêtes de prix en temps réel peuvent être utilisées à la fois pour des combinaisons hôtel/séjour et des combinaisons plusieurs hôtels/un seul séjour.

La fonctionnalité de requête de prix en temps réel en contexte nous permet de cibler nos requêtes de prix en temps réel en fonction du type d'appareil d'un utilisateur, du pays dans lequel il effectue la recherche et du nombre de personnes (y compris les enfants). Le message de requête et le message de transaction sont développés pour inclure l'élément <Context> qui définira les paramètres de requête. Les prix reçus en réponse aux requêtes de prix en temps réel en contexte peuvent être mis en cache sous la forme d'une offre de chambres (s'il s'agit d'un prix pour un nombre de personnes précis) et/ou d'un tarif sous conditions (s'il s'agit d'un prix spécifique au pays ou au type d'appareil de l'utilisateur).

Messages de requête de métadonnées

Les messages de requête de métadonnées contiennent des informations sur les chambres et les offres de chambres pour les hôtels spécifiés.

Lorsque vous recevez un message de requête de métadonnées, vous devez renvoyer un message <Transaction> comportant les tarifs pour les hôtels demandés dans les éléments <Result>.

Pour en savoir plus, consultez Définir des métadonnées de chambres et de séjours organisés.

Requêtes de contrôle

Cette section explique comment vous pouvez déterminer les hôtels et/ou les séjours pour lesquels nous pouvons envoyer des messages de requête.

Limites concernant le séjour

L'élément <ItineraryCapabilities> permet de fixer des limites aux requêtes de prix. Vous devez définir les règles qui déterminent la plage de dates et la durée maximale des séjours que vous acceptez.

Vous pouvez spécifier des valeurs par défaut pour <MaxAdvancePurchase> et <MaxLengthOfStay> qui s'appliquent à toutes les combinaisons hôtel/séjour. Vous pouvez également définir ces paramètres pour des groupes d'hôtels.

Exemples de messages de requête

Cette section présente plusieurs exemples de messages de requêtes de prix et un exemple de message de requête de métadonnées. Vous trouverez également d'autres exemples dans la documentation de référence sur les requêtes XML.

Exemple de séjour

L'exemple suivant présente une requête de prix <Query> afin d'obtenir une mise à jour des tarifs de quatre hôtels, pour trois nuits, à partir du 10 juin 2018 :

<?xml version="1.0" encoding="UTF-8"?>
<Query>
  <Checkin>2018-06-10</Checkin>
  <Nights>3</Nights>
  <PropertyList>
    <Property>pid5</Property>
    <Property>pid8</Property>
    <Property>pid13</Property>
    <Property>pid21</Property>
  </PropertyList>
</Query>

Dans cet exemple, le message demande la mise à jour des prix pour le séjour suivant uniquement (pour chaque hôtel) :

6/10/18 - 6/13/18

Exemple de requête de prix en temps réel avec contexte

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">
<!-- Note that the latencySensitive attribute is not present by default but can
     be configured to be displayed, on request, by Google. This attribute is only
     displayed for a Live Pricing Query request -->
  <Checkin>2017-07-23</Checkin>
  <Nights>2</Nights>
  <DeadlineMs>500</DeadlineMs>
<!-- The deadline represents the timeframe by which a response will need to be
     received by. This element is only displayed for a Live Pricing Query request -->
  <PropertyList>
    <Property>6781291</Property>
  </PropertyList>
<!-- Note that Context tags are potentially repeatable -->
  <Context>
<!-- The total number of guests occupying the room (adults+children) -->
    <Occupancy>3</Occupancy>
    <OccupancyDetails>
      <NumAdults>2</NumAdults>
<!-- In this example one of the 3 guests is a 5yr old child -->
      <Children>
        <Child age="5"/>
      </Children>
    </OccupancyDetails>
<!-- The user was located in the US when this search was made -->
    <UserCountry>US</UserCountry>
<!-- The user was searching from a mobile device at the time of search -->
    <UserDevice>mobile</UserDevice>
  </Context>
</Query>

Dans cet exemple, le message demande le prix du séjour suivant uniquement (pour un seul hôtel) :

07/23/17 - 7/25/17

Vous trouverez des exemples de messages de transaction répondant à cette requête dans documentation de référence XML sur la tarification et l'inventaire des chambres (messages de transaction).

Plages de dates d'arrivée

Si vous utilisez le mode d'envoi "Requête de prix modifiés", alors la structure du message de requête dépend du type d'indication utilisé (plages de dates d'arrivée, séjours exacts ou séjours inclus dans une période). Pour en savoir plus sur chaque type d'indication, consultez Messages Hint Response.

L'exemple suivant présente un message de requête de prix <Query> pour une plage de dates d'arrivée :

<?xml version="1.0" encoding="UTF-8"?>
<Query>
  <FirstDate>2018-06-10</FirstDate>
  <LastDate>2018-06-12</LastDate>
  <Nights>3</Nights>
  <PropertyList>
    <Property>pid5</Property>
    <Property>pid8</Property>
    <Property>pid13</Property>
    <Property>pid21</Property>
  </PropertyList>
</Query>

Dans cet exemple, le message demande la mise à jour des prix pour les séjours suivants (pour chaque hôtel) :

6/10/18 - 6/11/18
6/10/18 - 6/12/18
6/10/18 - 6/13/18
6/11/18 - 6/12/18
6/11/18 - 6/13/18
6/11/18 - 6/14/18
6/12/18 - 6/13/18
6/12/18 - 6/14/18
6/12/18 - 6/15/18

Itinéraires ou séjours inclus dans une période

L'exemple suivant présente un message de requête de prix <Query> pour des séjours inclus dans une période :

<?xml version="1.0" encoding="UTF-8"?>
<Query>
  <FirstDate>2018-06-10</FirstDate>
  <LastDate>2018-06-13</LastDate>
  <AffectedNights>3</AffectedNights>
  <PropertyList>
    <Property>pid5</Property>
    <Property>pid8</Property>
    <Property>pid13</Property>
    <Property>pid21</Property>
  </PropertyList>
</Query>

Dans cet exemple, le message demande la mise à jour des prix pour les séjours suivants (pour chaque hôtel) :

6/10/18 - 6/11/18
6/10/18 - 6/12/18
6/10/18 - 6/13/18
6/11/18 - 6/12/18
6/11/18 - 6/13/18
6/11/18 - 6/14/18
6/12/18 - 6/13/18
6/12/18 - 6/14/18
6/12/18 - 6/15/18

Cette requête s'applique également aux séjours débutant avant (mais incluant) la nuit du jour d'arrivée :

6/7/18 - 6/10/18
6/8/18 - 6/10/18
6/8/18 - 6/11/18
6/9/18 - 6/10/18
6/9/18 - 6/11/18
6/9/18 - 6/12/18

Message de requête de métadonnées

L'exemple suivant présente un message de requête <Query> où nous voulons obtenir une mise à jour des métadonnées pour les chambres et les offres de chambres de plusieurs hôtels :

<?xml version="1.0" encoding="UTF-8"?>
<Query>
  <HotelInfoProperties>
    <Property>pid5</Property>
    <Property>pid8</Property>
    <Property>pid13</Property>
    <Property>pid21</Property>
  </HotelInfoProperties>
</Query>

Pour répondre à ce type de message de requête, vous devez envoyer un message de transaction comportant les métadonnées des chambres et des offres de chambres. Pour en savoir plus, consultez Définir des métadonnées de chambres et de séjours organisés.