Esta seção fornece uma referência para as mensagens de solicitação de dica, mensagens de resposta de dica e mensagens de consulta baseadas em XML do Google.
<Hint> (Hint Response message)
O elemento raiz de uma mensagem de resposta de dica. As mensagens de resposta de dica especificam quais combinações de hotel ou itinerário precisam ser reavaliadas. Elas são sua resposta a uma mensagem de solicitação de dica do Google.
Uma mensagem de resposta de dica deve especificar apenas os hotéis cujos preços mudaram desde a última vez que o Google recebeu uma resposta de dica bem-sucedida dos seus servidores.
As mensagens de resposta de dica usam um dos seguintes métodos para especificar quais hotéis e itinerários o Google deve redefinir o preço:
Itinerários exatos: uma combinação de data do check-in e duração da estadia.
Períodos de datas de check-in: especifica um período de datas de check-in, começando com a primeira e terminando com a última.
Estadias em um intervalo (ou roteiros em um intervalo)
Cada um desses métodos exige uma sintaxe diferente para a mensagem de resposta de dica.
Para mais informações, consulte Mensagens de resposta de dica.
Sintaxe
O elemento <Hint> usa uma sintaxe diferente, dependendo do tipo de mensagem de resposta de dica:
Itinerários exatos
Confira a sintaxe para itinerários exatos em uma mensagem de resposta de dica:
<!-- 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>
Intervalos de check-in
Confira a sintaxe para intervalos de check-in em uma mensagem de resposta de dica:
<!-- 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>
Estadias em um intervalo
Confira a sintaxe para permanências em um intervalo em uma mensagem 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>
Atributos
O elemento <Hint> contém um atributo opcional: id. Quando fornecido, ele é incluído como o atributo hintId em mensagens <Query> enviadas com base nesse <Hint>.
Elementos filhos
O elemento <Hint> tem os seguintes elementos filhos:
| Elemento filho | Obrigatório? | Tipo | Tipo de resposta da dica | Descrição |
|---|---|---|---|---|
| <CheckInDate> | Required | Date | Itinerários exatos | A data de check-in do itinerário. |
| <FirstDate> | Required | Date | Intervalos de check-in e itinerários com intervalos | A primeira data do período para uma mensagem de resposta de dica de intervalo de check-in ou de estadia com intervalo. As datas são inclusivas. |
| <Item> | Required | Object | Todos | Um contêiner para o hotel/itinerário a ser atualizado. |
| <LastDate> | Required* | Date | Intervalos de check-in e itinerários com intervalos | A última data do período para uma mensagem de resposta de dica de intervalo de check-in ou de estadia com intervalo. As datas são inclusivas. * Esse elemento é opcional para estadias com intervalo. |
| <LengthOfStay> | Required | integer | Itinerários exatos | O número de diárias do itinerário, expresso como um número inteiro positivo. |
| <Property> | Required | string | Todos | O ID de um hotel, usando o mesmo ID da Lista de hotéis. O número de elementos
|
| <Stay> | Required | Object | Itinerários exatos | Um contêiner para os elementos <CheckinDate> e <LengthOfStay> em uma mensagem de resposta de dica de itinerário exato. Cada <Item> pode conter apenas um único
<Stay>. |
| <StaysIncludingRange> | Required | Object | Itinerários com intervalos | Um contêiner para os elementos <FirstDate> e
<LastDate> em uma mensagem de resposta de dica de permanência
em um intervalo. |
Exemplos
Itinerários exatos
O exemplo a seguir define vários itinerários para uma única propriedade uma mensagem de resposta de dica:
<!-- 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>
Intervalos de check-in
O exemplo a seguir especifica dois hotéis cujos preços mudaram e precisam ser buscados novamente. O Google recebe todos os itinerários entre 3 e 6 de julho para as propriedades 12345 e 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>
Estadias em um intervalo
O exemplo a seguir mostra dois usos diferentes de estadias com intervalo, um para um intervalo de noites e outro para uma única noite:
<!-- 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>
Para cada um desses exemplos, o Google responde com um <Query>, e você precisa responder com um <Transaction> que inclua atualizações de preços para os hotéis/itinerários especificados.
<HintRequest>
O elemento raiz de uma mensagem de solicitação de dica. O Google envia uma mensagem de solicitação de dica ao seu servidor e espera uma resposta que especifique os hotéis e itinerários cujos preços mudaram desde a última vez que o Google recebeu uma resposta de dica bem-sucedida do seu servidor.
Se houver mudanças nos preços, o Google enviará um <Query> que
busca os dados de preços atualizados para os hotéis e itinerários indicados.
Para mais informações, consulte Mensagens de solicitação de dica.
Sintaxe
O elemento <HintRequest> usa a seguinte sintaxe:
Sintaxe
<?xml version="1.0" encoding="UTF-8"?>
<HintRequest>
<LastFetchTime>last_fetch_time</LastFetchTime>
</HintRequest>
Atributos
O elemento <HintRequest> não tem atributos.
Elementos filhos
O elemento <HintRequest> tem os seguintes elementos filhos:
| Elemento filho | Tipo | Descrição |
|---|---|---|
| <LastFetchTime> | DateTime | A última vez que o Google conseguiu enviar uma mensagem de resposta de dica
para uma mensagem de solicitação de dica.
Se esse horário for anterior à última vez que você atualizou os preços no seu servidor, responda com uma mensagem de resposta de dica especificando quais hotéis mudaram. Se não houver uma busca bem-sucedida recente, esse valor será definido como um intervalo fixo para evitar problemas mais graves com grandes pendências. O valor atual do intervalo fixo é de 1.000 segundos, mas está sujeito a mudanças. Para mais informações, consulte Mensagens de resposta de dica. |
Exemplos
O exemplo a seguir mostra uma mensagem de solicitação de dica:
Mensagem de solicitação de dica
O exemplo a seguir mostra uma mensagem de solicitação de dica:
<?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>
O elemento raiz de uma mensagem Query. As mensagens Query são solicitações do Google para atualizações de preços ou metadados. Eles são usados com os modos de transferência Pull e Changed pricing.
Mensagens de consulta de preços
As mensagens de consulta de preços especificam as combinações de propriedade e itinerário para as quais você fornece os preços.
Quando o servidor recebe uma mensagem de consulta de preços, ele precisa responder com uma mensagem <Transaction> que contenha as informações de preços solicitadas.
Para mais informações, consulte Visão geral de preços.
Há três tipos especiais de mensagens Query:
Preços em tempo real:o Google responde a uma solicitação específica do usuário, pedindo uma atualização de preço em tempo real. Quando os parceiros recebem uma mensagem
Live pricing query, eles precisam responder com uma mensagem<Transaction>que contenha as informações de preços solicitadas em elementos<Result>.Com os preços contextuais:o Google atualiza o cache de preços com base em contextos que são historicamente populares. Quando você receber uma mensagem
With Context query, responda com uma mensagem<Transaction>que contenha as informações de preços solicitadas em elementos<Result>.Com consultas de contexto para uma única ocupação
Ao fornecer tarifas em resposta a consultas "Com contexto", envie apenas a tarifa correspondente ao contexto especificado. A ocupação da tarifa básica exige um mínimo de dois ocupantes. Portanto, se um único ocupante for transmitido na tarifa básica, ele será ignorado e ainda será tratado como ocupação dupla. Nesse caso, transmita a tarifa base como indisponível e use a tarifa aninhada na ocupação individual. Consulte o exemplo de resposta com contexto. Use Preços alterados com contexto para mesclar tarifas definindo o atributo
mergeablecomo"true". Saiba mais.Preço alterado (antes conhecido como Pull with Hints) com contexto
Quando você envia uma resposta de mensagem
<Transaction>para uma consulta de preços alterados com contexto, o Google a trata como uma substituição completa das informações de preços e disponibilidade de um determinado hotel ou itinerário. Todas as tarifas específicas do contexto são excluídas da resposta e removidas do cache.Para evitar a substituição, defina o atributo
mergeablecomo"true"no elemento<Result>da mensagem<Transaction>. O Google anexa as taxas às taxas em cache atuais para o contexto fornecido na resposta. Se você não usar o atributo combinável, envie todas as taxas para todos os contextos aplicáveis na resposta.Consulta de preços em tempo real com contexto
A consulta de preços em tempo real com contexto tem o comportamento de atributo combinável por padrão. Portanto, não é necessário definir esse atributo. Você só precisa enviar as taxas para contextos específicos solicitados pelo Google se todos os outros contextos permanecerem os mesmos. Se outros contextos tiverem mudado, envie as alterações explicitamente. Caso contrário, as novas taxas não serão atualizadas no cache do Google.
Metadados:o Google solicita atualizações de metadados para os quartos e pacotes de quartos dos hotéis especificados. Quando você receber uma mensagem
Metadata Query, responda com uma mensagem<Transaction>que especifica dados sobre os quartos e as categorias de quarto nos elementos<PropertyDataSet>. Para mais informações, consulte Metadados de categorias de quarto.
Sintaxe
O elemento <Query> usa a seguinte sintaxe:
Consulta de preços
<?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>
Preço em tempo real
<?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>
Com consulta de contexto
<?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>
Metadados
<HotelInfoProperties>
<Property>property_ID</Property>
...
</HotelInfoProperties>
Atributos
O elemento <Query> pode conter um atributo: latencySensitive.
O atributo latencySensitive é opcional. Quando fornecido e definido como true, indica que a consulta é um Live Pricing Query. Para que o Google envie consultas com o atributo latencySensitive, entre em contato com seu gerente técnico de contas (TAM).
Elementos filhos
O elemento <Query> tem os seguintes elementos filhos:
| Elemento filho | Tipo de consulta | Tipo | Descrição |
|---|---|---|---|
| <AffectedNights> | Pricing | integer | O número de diárias de uma estadia com intervalo. Esse elemento é usado apenas para consultas de preços de estadias por intervalo com preços alterados. |
| <Checkin> | Pricing | Date | As datas de uma mudança de preço específica. |
| <Context> | Pricing (Live Pricing Queries only) | <Context> | Para consultas de preços em tempo real, especifica determinados parâmetros em que a consulta é feita. Os elementos filhos incluem:
O elemento |
| <FirstDate> | Pricing | Date | A data de início de um intervalo de itinerários a que os preços se aplicam. Esse elemento é usado apenas para consultas de preços de período de datas de check-in usadas com preços alterados. |
| <HotelInfoProperties> | Metadata | string | Uma ou mais propriedades para as quais o Google quer metadados atualizados de
quarto e pacote de quartos em uma mensagem de metadados Query.
Esse elemento pode conter um ou mais elementos <Property> que especificam IDs de propriedades de hotéis. |
| <LastDate> | Pricing | Date | A data de término de um intervalo de itinerários a que a precificação se aplica. Esse elemento é usado apenas para consultas de preços de período de datas de check-in usadas com Pull + Hints. |
| <Nights> | Pricing | integer | O número de noites de um itinerário específico, até 30. |
| <PropertyList> | Pricing | Object | Um ou mais IDs de hotéis que precisam de atualizações de preços. Defina cada hotel em um elemento <PropertyList> <Property>pid1</Property> <Property>pid2</Property> </PropertyList> |
Exemplos
Consulta de preços
O exemplo a seguir mostra uma mensagem de consulta de preços que solicita atualizações de preços para um conjunto de hotéis, disponíveis por três noites e com início em 23 de maio de 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>
Consulta de preço em tempo real
O exemplo a seguir mostra uma consulta de preços em tempo real com um limite de tempo de resposta de 500 milissegundos:
<?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>
Com consulta de contexto
<?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>
Com resposta contextual
O exemplo a seguir explica como definir a taxa básica como unavailable(-1)
para uma ocupação individual e aninhar as taxas no elemento <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>
Consulta de metadados
<?xml version="1.0" encoding="UTF-8"?>
<Query>
<HotelInfoProperties>
<Property>pid5</Property>
<Property>pid8</Property>
<Property>pid13</Property>
<Property>pid21</Property>
</HotelInfoProperties>
</Query>
Para mais exemplos, incluindo consultas de preços de intervalo de estadia e intervalo de datas de check-in, confira os exemplos de mensagens Query.
<Context>
O elemento <Context> descreve informações para um Live pricing query,
incluindo o número e o tipo de hóspedes, o país e o dispositivo do usuário.
Vários <Context> nunca serão usados com países ou dispositivos de usuários diferentes. Quando vários <Context> são usados para consultar várias
ocupações, forneça o preço de cada ocupação como um pacote de quarto
adicional para a propriedade ou o itinerário correspondente. Cada propriedade ou itinerário precisa ter um único bloco <Result> com os preços para várias ocupações incluídos.
Para ver os detalhes da resposta da consulta <Context>, consulte
<OccupancyDetails>.
Sintaxe
O elemento <Context> usa a seguinte sintaxe:
Sintaxe
<?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>
Elementos filhos
O elemento <Context> tem os seguintes elementos filhos:
| Elemento filho | Tipo de consulta | Tipo | Descrição |
|---|---|---|---|
| <Occupancy> | Pricing | integer | Especifica o número total de hóspedes. Embora não seja obrigatório, as consultas com Observação: |
| <OccupancyDetails> | Pricing | Object | É precedido por <Occupancy>. Especifica os convidados por
tipo, incluindo:
Embora não seja obrigatório, as consultas com Observação : |
| <UserCountry> | Pricing | string | Filtra as tarifas pelo país em que o usuário está localizado. O valor é um código de país de duas letras, como As consultas com |
| <UserDevice> | Pricing | string | Filtra as tarifas pelo tipo de dispositivo usado na pesquisa. Valores possíveis:
Consultas com |
Exemplos
Ocupação
O exemplo a seguir mostra uma consulta de preços em tempo real para <Occupancy>
em <Context>. A consulta de preços em tempo real é para três hóspedes adultos.
<?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>
Detalhes da ocupação
O exemplo a seguir mostra uma consulta de preços em tempo real com <OccupancyDetails> em <Context>.
A consulta de preços em tempo real é para quatro hóspedes, dois deles crianças, e busca uma tarifa aplicável a uma reserva de hóspede dos EUA feita em um dispositivo móvel:
<?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>
Vários contextos
O exemplo a seguir mostra o uso de um elemento <Context> adicional
em uma consulta de preços em tempo real.
<?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>