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 de réponse d'indication. Messages de réponse d'indication spécifie les combinaisons hôtel/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 de réponse d'indication utilisent l'une des méthodes suivantes pour spécifier hôtels et séjours dont Google doit mettre à jour les prix:

  • 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 -->
    <!-- Can be > 1 if MultipleItineraries is "checkin_range" in your
         QueryControl message -->
    <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 une réponse d'indication message:

<!-- Ranged Stay Hint Response -->
<?xml version="1.0" encoding="UTF-8"?>
<Hint>
  <Item>
    <!-- At least one is required -->
    <!-- Can be > 1 if MultipleItineraries is "affected_dates" in your
         QueryControl message -->
    <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. Quand ? fournie, elle est incluse en tant qu'attribut hintId dans <Query> messages envoyés à partir 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 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

Identifiant d'un hôtel, qui doit être identique à celui figurant 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 doit être récupérée à 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>

Pour qu'un message de plage d'arrivée puisse spécifier plusieurs propriétés dans un seul élément <Item>, la valeur de <MultipleItineraries> dans <QueryControl> doit être défini sur "checkin_range"

Séjours inclus dans une période

L'exemple suivant présente deux utilisations différentes des séjours inclus dans une période, l'une pour et l'autre pour 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>

Notez que pour qu'un message de séjour inclus dans une période puisse spécifier plusieurs propriétés dans un seul élément <Item>, la valeur de <MultipleItineraries> dans <QueryControl> doit être défini sur "affected_dates"

Pour chacun de ces exemples, Google renvoie un <Query>. Vous devez puis répondre avec un <Transaction> qui inclut les mises à jour de 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 une réponse d'indication réussie de votre serveur.

En cas de changement de prix, Google envoie une <Query> qui récupère 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, consultez la section Messages de réponse d'indication.

Exemples

Voici un exemple de message Hint request:

Message Hint request

Voici un exemple de 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 les modes d'envoi des prix modifiés.

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.

La syntaxe des trois types différents est décrite ci-dessous.

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 avec l'attribut latencySensitive, contactez votre responsable de compte technique 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 est utilisé Uniquement pour les requêtes de prix de séjours inclus dans une période utilisées avec le 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: <ph type="x-smartling-placeholder">
    </ph>
  • <Occupancy>: nombre total d'invités
  • <OccupancyDetails>: type d'invités, par exemple adultes ou 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 seule 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 tarifs d'une plage de dates d'arrivée des requêtes utilisées avec le 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 éléments <Property> : spécifier 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 identifiants 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 pour un ensemble d'hôtels, disponibles pour trois nuits. À 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 présente 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 de Live pricing query. y compris le nombre et le type d'invités, le pays 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 veuillez indiquer chaque nombre de personnes en tant qu'offre de chambres supplémentaire pour l'établissement/le séjour correspondant. Chaque établissement/séjour doit comporter un seul bloc <Result> avec les prix de plusieurs nombre 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 contenant <Occupancy> doivent entraîne l'envoi d'un message Transaction comportant les offres de chambres appropriées. défini pour chaque <Occupancy> interrogé.

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 type, 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 déclencher un message Transaction comportant les offres de chambres appropriées. défini pour chaque <Occupancy> interrogé.

    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 entraîner une transactionnel avec l'identifiant <Rates> approprié défini pour le type d'appareil interrogé.

Exemples

Nombre de personnes

L'exemple suivant illustre 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 invités.

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

Informations sur le 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>