Documentation de référence XML sur les requêtes et les indications

Cette section fournit une documentation de référence sur l'API Google Messages Hint request Messages de réponse d'indication et Messages de demande.

<Hint> (message de réponse d'indication)

Élément racine d'un message Hint response. Messages de réponse d'indication spécifie les combinaisons d'hôtel ou de séjour dont les prix doivent être mis à jour. Ce sont vos Réponse à un message Hint request de Google.

Un message de réponse d'indication ne doit spécifier que les hôtels dont les prix ont modifié depuis la dernière fois que Google a reçu une réponse d'indication réussie de la part 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 de la date d'arrivée et la durée du séjour.

  • Plage de dates d'arrivée: indique la plage de dates d'arrivée. dates, commençant par la première date d'arrivée et se terminant par la date d'arrivée.

  • Séjours inclus dans une période (ou séjours inclus dans une période)

Chacune de ces méthodes nécessite une syntaxe différente pour la réponse d'indication .

Pour en savoir plus, consultez la section Messages de réponse d'indication.

Syntaxe

L'élément <Hint> utilise une syntaxe différente selon le type d'indice Message de réponse:

Séjours exacts

Le code suivant indique la syntaxe des séjours exacts dans une réponse d'indication. message:

<!-- 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 d'arrivée

Vous trouverez ci-dessous la syntaxe des plages d'arrivée dans une réponse d'indication. message:

<!-- 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>hotel_ID</Property>
    [...]

    <StaysIncludingRange>
      <!-- Required -->
      <FirstDate>first_date</FirstDate>

      <!-- Optional -->
      <LastDate>last_date</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 cet élément <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 l'itinéraire.
<FirstDate> Required Date Plages de dates d'arrivée et itinéraires inclus dans une période Première date d'une plage de dates d'arrivée ou plage de dates reste le message de réponse d'indication. Les dates sont incluses.
<Item> Required Object Tous Conteneur pour l'hôtel/le séjour à mettre à jour.
<LastDate> Required* Date Plages de dates d'arrivée et itinéraires inclus dans une période

Dernière date d'une plage de dates d'arrivée reste le message de réponse d'indication. 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, exprimé sous forme de valeur positive entier.
<Property> Required string Tous

ID de l'hôtel, qui apparaît dans la liste d'hôtels. Le nombre d'éléments <Property> que vous pouvez spécifier dans un seul Le bloc <Item> est déterminé par le type d'indice Message de réponse:

  • Séjours exacts: jusqu'à 100 hôtels.
  • Plages d'arrivée: plusieurs si vous les avez définies <MultipleItineraries> à "checkin_range" dans votre message <QueryControl>.
  • Séjours inclus dans une période: plusieurs si vous définissez <MultipleItineraries> à "affected_dates" dans votre message <QueryControl>.
<Stay> Required Object Séjours exacts Un conteneur pour <CheckinDate> et Éléments <LengthOfStay> pour un itinéraire exact Message de réponse. Chaque <Item> ne peut contenir qu'un seul <Stay>
<StaysIncludingRange> Required Object Séjours inclus dans une période Un conteneur pour <FirstDate> et Éléments <LastDate> dans une réponse d'indication pour des séjours inclus dans une période .

Exemples

Séjours exacts

L'exemple suivant définit plusieurs séjours pour un même établissement un message de réponse d'indication:

<!-- 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 d'arrivée

L'exemple suivant spécifie deux hôtels dont les prix ont changé et doivent être extraits à nouveau. Google récupère tous les itinéraires entre le 3 juillet et le 3 juillet 6 pour les propriétés 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 avec un <Query>. Vous devez puis répondre avec un <Transaction> qui inclut les mises à jour des prix pour le les hôtels/séjours spécifiés.

<HintRequest>

Élément racine d'un message Hint request. Google envoie une demande d'indication message à votre serveur et attend une réponse spécifiant les hôtels et séjours dont les prix ont changé depuis la dernière fois que Google a reçu une la 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 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 reçu un message de réponse d'indication à un message Hint request.

Si cette date est postérieure à la dernière fois que vous mis à jour les prix sur votre serveur, répondez par un Indice Message de réponse spécifiant les hôtels modifiés.

En l'absence d'une récupération réussie récente, la valeur valeur d'intervalle fixe (pour éviter des problèmes plus graves avec des en attente). La valeur actuelle de l'intervalle fixe est de 1 000 secondes, mais sont susceptibles d'être modifiées.

Pour plus d'informations, consulter Messages de réponse d'indication.

Exemples

Voici un exemple de 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. Query messages sont des requêtes de Google pour mettre à jour les prix ou les métadonnées. Ils sont utilisés avec les modes et "Requête de prix modifiés" modes d'envoi.

Il existe trois types de messages Query:

  • Requête de prix en temps réel:Google répond à la demande spécifique de l'utilisateur en demandant une mise à jour des prix en temps réel. Lorsque les partenaires reçoivent une Live pricing query s'affiche, les partenaires doivent renvoyer un message <Transaction> qui contient les informations tarifaires demandées dans les é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 With context query , vous devez répondre avec un message <Transaction> contenant le les informations tarifaires demandées dans les éléments <Result>.

  • Métadonnées:Google demande la mise à 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 doit répondre par un message <Transaction> spécifiant les données relatives à chambres et offres de chambres dans les éléments <PropertyDataSet>.

Pour en savoir plus, consultez la présentation des tarifs. pour les requêtes de prix et les métadonnées des offres de chambres pour les requêtes de métadonnées.

Les trois différents types de syntaxes sont les suivants:

Syntaxe

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

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 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. Si fourni et défini sur true, cela indique que la requête est de type Live Pricing Query. Pour que Google envoie des requêtes avec l'attribut latencySensitive, contactez votre responsable de compte technique.

É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. Les éléments enfants sont les suivants:
  • <Occupancy>: nombre total d'invités
  • <OccupancyDetails> : type de clients, par exemple les adultes ou les enfants
  • <UserCountry>: pays de l'utilisateur localisé
  • <UserDevice>: type d'appareil utilisé par l'invité pour rechercher un hôtel, tel que "mobile" "tablet" ou "desktop".

L'élément <Context> peut être répété dans une une seule requête, ce qui permet d'effectuer des requêtes selon le nombre de personnes. Consulter <Context> pour obtenir la liste des éléments enfants, la syntaxe et des exemples.

<FirstDate> Pricing Date Date de début d'un ensemble de séjours auxquels s'applique. 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 Un ou plusieurs établissements dont Google souhaite mettre à jour les métadonnées de chambre et d'offre de chambres dans un message de métadonnées Query. Cet élément peut contenir un ou plusieurs <Property> spécifiant les ID d'établissements hôteliers.
<LastDate> Pricing Date Date de fin d'un ensemble de séjours auxquels s'applique. Cet élément n'est utilisé que pour les tarifs d'une plage de dates d'arrivée les requêtes utilisées avec le mode d'envoi Pull + Hints.
<Nights> Pricing integer Nombre de nuits pour un séjour donné (jusqu'à 30).
<PropertyList> Pricing Object

Un ou plusieurs ID d'hôtels pour lesquels les prix doivent être mis à jour.

Définissez chaque hôtel dans un élément <Property>. La valeur est une chaîne correspondant à un identifiant d'hôtel dans votre liste d'hôtels. Par exemple :

<PropertyList>
  <Property>pid1</Property>
  <Property>pid2</Property>
</PropertyList>

Exemples

Requête de prix

L'exemple suivant illustre un message de demande de prix qui demande un prix des mises à jour pour un ensemble d'hôtels, disponibles pour trois nuits et à partir du 10 juin 2018:

<?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 illustre une requête de prix en temps réel avec un temps de réponse. limite de 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>

Avec requête contextuelle

<?xml version="1.0" encoding="UTF-8"?>
<Query>
  <Checkin>2023-05-23</Checkin>
  <Nights>2</Nights>
  <PropertyContextList>
    <PropertyContext>
      <Property>8675309</Property>
      <!-- In the future, occupancy and 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>

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 obtenir d'autres exemples, y compris une plage de dates de séjour inclus dans une période et d'arrivée, requêtes de prix, consultez les exemples de message Query.

<Context>

L'élément <Context> décrit les informations relatives à un Live pricing query, comme le nombre et le type de clients, le pays de l'utilisateur et l'appareil de l'utilisateur.

Les <Context> multiples ne seront jamais utilisés avec des pays ou des utilisateurs différents appareils des utilisateurs. Lorsque plusieurs <Context> sont utilisés pour interroger plusieurs nombre de personnes, fournissez chaque tarif en tant qu'offre de chambres supplémentaire pour l'établissement ou le séjour en question. Chaque établissement ou séjour doit avoir un seul bloc <Result> avec les prix pour plusieurs nombres de personnes ; inclus.

Pour obtenir les détails de 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 Spécifie le nombre total de clients.

Bien que cela ne soit pas obligatoire, les requêtes avec <Occupancy> devraient renvoyer un message Transaction contenant les offres de chambres appropriées définies pour chaque élément <Occupancy>. Toutefois, si les offres de chambres ne sont pas disponibles, il est recommandé de spécifier l'élément <Occupancy>.

Remarque:<Occupancy> peut ne pas toujours s'afficher dans une requête. Dans ce cas, vous devez renvoyer les prix le nombre de personnes.

<OccupancyDetails> Pricing Object Est précédé de <Occupancy>. Spécifie les invités par y compris:
  • <NumAdults>: nombre d'adultes
  • <Children> et <Child="age">: spécifie si les clients sont des enfants (généralement de 0 à 17 ans) ; inclut facultativement l'âge de chaque enfant.

Bien que ce ne soit pas obligatoire, les requêtes avec <OccupancyDetails> doit entraîner l'envoi d'un message de transaction avec l'identifiant Room Groupes définis pour chaque <Occupancy>, mais si le Les offres de chambres ne sont pas disponibles. Nous vous recommandons de spécifiez l'élément <OccupancyDetails>.

Remarque : <OccupancyDetails> n'est pas toujours dans une requête. Dans ce cas, vous devez partir du principe que tous les clients sont des adultes.

<UserCountry> Pricing string

Filtre les tarifs en fonction du pays où se trouve l'utilisateur. Cette valeur est une Code pays à deux lettres, comme "US" pour les États-Unis ou un code régional, tel que "EU" pour "Europe".

Les requêtes pour lesquelles <UserCountry> est défini doivent générer un message Transaction avec l'identifiant <Rates> approprié défini pour le pays interrogé.

<UserDevice> Pricing string

Filtre les tarifs en fonction du type d'appareil à partir duquel l'utilisateur effectue sa recherche. Valeurs possibles :

  • mobile
  • desktop
  • tablet

Les requêtes pour lesquelles <UserDevice> est défini doivent générer un message Transaction avec le bloc <Rates> approprié défini pour le type d'appareil interrogé.

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 du nombre de personnes

L'exemple suivant illustre 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 sont des enfants, et cherchent un tarif applicable à une réservation effectuée aux États-Unis auprès de 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 montre comment utiliser 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>