En esta sección, se proporciona una referencia para los mensajes de solicitud de sugerencias, los mensajes de respuesta de sugerencias y los mensajes de consulta basados en XML de Google.
<Hint>
(mensaje de respuesta con sugerencias)
Es el elemento raíz de un mensaje de respuesta con sugerencias. Los mensajes de respuesta de sugerencias especifican qué combinaciones de hoteles o itinerarios deben volver a tener un precio. Son tu respuesta a un mensaje de solicitud de sugerencias de Google.
Un mensaje de respuesta de sugerencia debe especificar solo aquellos hoteles cuyos precios cambiaron desde la última vez que Google recibió una respuesta de sugerencia correcta de tus servidores.
Los mensajes de respuesta de sugerencias usan uno de los siguientes métodos para especificar qué hoteles e itinerarios Google debe volver a fijar el precio:
Itinerarios exactos: Es una combinación de la fecha de entrada y la duración de la estadía.
Períodos de fechas de entrada: Especifica un período de fechas de entrada, que comienza con la primera fecha de entrada y finaliza con la última.
Estadías con rango (o itinerarios con rango)
Cada uno de estos métodos requiere una sintaxis diferente para el mensaje de respuesta de la sugerencia.
Para obtener más información, consulta Mensajes de respuesta de sugerencias.
Sintaxis
El elemento <Hint>
usa una sintaxis diferente, según el tipo de mensaje de respuesta de Hint:
Itinerarios exactos
A continuación, se muestra la sintaxis de los itinerarios exactos en un mensaje de respuesta de sugerencia:
<!-- 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>
Rangos de registro
A continuación, se muestra la sintaxis de los intervalos de registro en un mensaje de respuesta de sugerencia:
<!-- 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>
Estadías con rango
A continuación, se muestra la sintaxis de las estadías con rango en un mensaje de respuesta de sugerencia:
<!-- 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
El elemento <Hint>
contiene un atributo opcional: id
. Cuando se proporciona, se incluye como el atributo hintId
en los mensajes <Query>
enviados en función de este <Hint>
.
Elementos secundarios
El elemento <Hint>
tiene los siguientes elementos secundarios:
Elemento secundario | ¿Obligatorio? | Tipo | Tipo de respuesta de sugerencia | Descripción |
---|---|---|---|---|
<CheckInDate> | Required | Date | Itinerarios exactos | Es la fecha de entrada del itinerario. |
<FirstDate> | Required | Date | Rangos de entrada y itinerarios con rangos | Es la primera fecha del período para un rango de registro de entrada o un mensaje de respuesta de sugerencia de estadía con rango. Las fechas son inclusivas. |
<Item> | Required | Object | Todos | Es un contenedor para el hotel o el itinerario que se actualizará. |
<LastDate> | Required* | Date | Rangos de entrada y itinerarios con rangos | Es la última fecha del período para un mensaje de respuesta de sugerencia de estadía o de intervalo de registro de entrada. Las fechas son inclusivas. * Este elemento es opcional para las estadías con rango. |
<LengthOfStay> | Required | integer | Itinerarios exactos | Es la cantidad de noches del itinerario, expresada como un número entero positivo. |
<Property> | Required | string | Todos | Es el ID de un hotel, que debe ser el mismo que el de la lista de hoteles. La cantidad de elementos
|
<Stay> | Required | Object | Itinerarios exactos | Es un contenedor para los elementos <CheckinDate> y <LengthOfStay> en un mensaje de respuesta de sugerencia de itinerario exacto. Cada <Item> puede contener solo un <Stay> . |
<StaysIncludingRange> | Required | Object | Itinerario con recorrido | Es un contenedor para los elementos <FirstDate> y <LastDate> en un mensaje de respuesta de Hint de estadía con rango. |
Ejemplos
Itinerarios exactos
En el siguiente ejemplo, se definen varios itinerarios para una sola propiedad en un mensaje de respuesta de sugerencia:
<!-- 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>
Rangos de registro
En el siguiente ejemplo, se especifican dos hoteles cuyos precios cambiaron y se deben recuperar nuevamente. Google recibe todos los itinerarios entre el 3 y el 6 de julio para las propiedades 12345 y 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>
Estadías con rango
En el siguiente ejemplo, se muestran dos usos diferentes de las estadías con rango, uno para un rango de noches y el otro para una sola noche:
<!-- 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>
En cada uno de estos ejemplos, Google responde con un <Query>
y, luego, debes responder con un <Transaction>
que incluya actualizaciones de precios para los hoteles o itinerarios especificados.
<HintRequest>
Es el elemento raíz de un mensaje de solicitud de sugerencias. Google envía un mensaje de solicitud de sugerencia a tu servidor y espera una respuesta que especifique los hoteles y los itinerarios cuyos precios cambiaron desde la última vez que Google recibió una respuesta de sugerencia correcta de tu servidor.
Si hay algún cambio de precio, Google envía un <Query>
que recupera los datos de precios actualizados de los hoteles y los itinerarios indicados.
Para obtener más información, consulta Mensajes de solicitud de sugerencias.
Sintaxis
El elemento <HintRequest>
usa la siguiente sintaxis:
Sintaxis
<?xml version="1.0" encoding="UTF-8"?>
<HintRequest>
<LastFetchTime>last_fetch_time</LastFetchTime>
</HintRequest>
Atributos
El elemento <HintRequest>
no tiene atributos.
Elementos secundarios
El elemento <HintRequest>
tiene los siguientes elementos secundarios:
Elemento secundario | Tipo | Descripción |
---|---|---|
<LastFetchTime> | DateTime | La última vez que Google pudo obtener un mensaje de respuesta de sugerencia para un mensaje de solicitud de sugerencia.
Si esta hora es anterior a la última vez que actualizaste los precios en tu servidor, debes responder con un mensaje de respuesta de sugerencia en el que especifiques qué hoteles cambiaron. Si no hubo una recuperación correcta reciente, se establecerá en un valor de intervalo fijo (para evitar problemas más graves con listas de tareas pendientes grandes). El valor actual del intervalo fijo es de 1,000 segundos, pero está sujeto a cambios. Para obtener más información, consulta Mensajes de respuesta de sugerencias. |
Ejemplos
En el siguiente ejemplo, se muestra un mensaje de solicitud de sugerencia:
Mensaje de solicitud de sugerencias
En el siguiente ejemplo, se muestra un mensaje de solicitud de sugerencia:
<?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>
Es el elemento raíz de un mensaje Query
. Los mensajes Query
son solicitudes de Google para actualizaciones de precios o metadatos. Se usan con los modos de entrega de precios modificados y de extracción.
Mensajes de consulta de precios
Los mensajes de consulta de precios especifican las combinaciones de propiedad e itinerario para las que proporcionas los precios.
Cuando tu servidor recibe un mensaje de consulta de precios, debe responder con un mensaje <Transaction>
que contenga la información de precios solicitada.
Para obtener más información, consulta Descripción general de los precios.
Existen tres tipos especiales de mensajes Query
:
Precios en tiempo real: Google responde a una solicitud específica del usuario y solicita una actualización de precios en tiempo real. Cuando los socios reciben un mensaje
Live pricing query
, deben responder con un mensaje<Transaction>
que contenga la información de precios solicitada en los elementos<Result>
.Con los precios contextuales: Google actualiza su caché de precios en función de los contextos que históricamente son populares. Cuando recibas un mensaje
With context query
, debes responder con un mensaje<Transaction>
que contenga la información de precios solicitada en los elementos<Result>
.Metadatos: Google solicita actualizaciones de metadatos para las habitaciones y los paquetes de habitaciones de los hoteles especificados. Cuando recibas un mensaje
Metadata Query
, debes responder con un mensaje<Transaction>
que especifique datos sobre las habitaciones y los paquetes de habitaciones en los elementos<PropertyDataSet>
. Para obtener más información, consulta Metadatos de paquetes de Room.
Sintaxis
El elemento <Query>
usa la siguiente sintaxis:
Consulta de precios
<?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>
Precios en tiempo 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>
Con 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>
Metadatos
<HotelInfoProperties>
<Property>property_ID</Property>
...
</HotelInfoProperties>
Atributos
El elemento <Query>
puede contener un atributo: latencySensitive
.
El atributo latencySensitive
es opcional. Cuando se proporciona y se establece en true
, indica que la consulta es un Live Pricing Query
. Para que Google envíe consultas con el atributo latencySensitive
, comunícate con tu administrador técnico de cuentas (TAM).
Elementos secundarios
El elemento <Query>
tiene los siguientes elementos secundarios:
Elemento secundario | Tipo de consulta | Tipo | Descripción |
---|---|---|---|
<AffectedNights> | Pricing | integer | Es la cantidad de noches de una estadía con un rango. Este elemento solo se usa para las consultas de precios de estadías por rango que se usan con los precios modificados. |
<Checkin> | Pricing | Date | Las fechas de un cambio de precio específico. |
<Context> | Pricing (Live Pricing Queries only) | <Context> | En el caso de las consultas de precios en vivo, especifica ciertos parámetros en los que se realiza la consulta. Entre los elementos secundarios, se incluyen los siguientes:
El elemento |
<FirstDate> | Pricing | Date | Es la fecha de inicio de un rango de itinerarios a los que se aplica la tarifa. Este elemento solo se usa para las consultas de precios de la fecha de entrada que se usan con los precios modificados. |
<HotelInfoProperties> | Metadata | string | Una o más propiedades para las que Google desea actualizar los metadatos de la habitación y del paquete de habitaciones en un mensaje Query de metadatos.
Este elemento puede contener uno o más elementos <Property> que especifiquen los IDs de las propiedades de hoteles. |
<LastDate> | Pricing | Date | Es la fecha de finalización de un rango de itinerarios a los que se aplica la tarifa. Este elemento solo se usa para las consultas de precios de rango de fechas de registro que se usan con Pull + Hints. |
<Nights> | Pricing | integer | Es la cantidad de noches de un itinerario en particular, hasta 30. |
<PropertyList> | Pricing | Object | Uno o más IDs de hoteles que requieren actualizaciones de precios. Define cada hotel en un elemento <PropertyList> <Property>pid1</Property> <Property>pid2</Property> </PropertyList> |
Ejemplos
Búsqueda de precios
En el siguiente ejemplo, se muestra un mensaje de consulta de precios que solicita actualizaciones de precios para un conjunto de hoteles, disponibles para 3 noches y a partir del 23 de mayo 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 precios en tiempo real
En el siguiente ejemplo, se muestra una consulta de precios en vivo con un límite de tiempo de respuesta de 500 milisegundos:
<?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>
Con la 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, 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>
Consulta de metadatos
<?xml version="1.0" encoding="UTF-8"?>
<Query>
<HotelInfoProperties>
<Property>pid5</Property>
<Property>pid8</Property>
<Property>pid13</Property>
<Property>pid21</Property>
</HotelInfoProperties>
</Query>
Para ver ejemplos adicionales, incluidas las consultas de precios de estadías y fechas de entrada, consulta los ejemplos de mensajes Query
.
<Context>
El elemento <Context>
describe la información de un Live pricing query
, incluida la cantidad y el tipo de invitados, el país y el dispositivo del usuario.
Nunca se usarán varios <Context>
con diferentes países o dispositivos del usuario. Cuando se usan varios <Context>
para consultar varias ocupaciones, proporciona el precio de cada ocupación como un paquete de habitaciones adicional para la propiedad o el itinerario correspondiente. Cada propiedad o itinerario debe tener un solo bloque <Result>
con los precios para varias ocupaciones.
Para obtener los detalles de la respuesta de la consulta <Context>
, consulta <OccupancyDetails>
.
Sintaxis
El elemento <Context>
usa la siguiente sintaxis:
Sintaxis
<?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 secundarios
El elemento <Context>
tiene los siguientes elementos secundarios:
Elemento secundario | Tipo de consulta | Tipo | Descripción |
---|---|---|---|
<Occupancy> | Pricing | integer | Especifica la cantidad total de invitados. Si bien no es obligatorio, las consultas con Nota: Es posible que |
<OccupancyDetails> | Pricing | Object | Está precedido por <Occupancy> . Especifica los invitados por tipo, incluidos los siguientes:
Si bien no es obligatorio, las consultas con Nota: Es posible que |
<UserCountry> | Pricing | string | Filtra las tarifas según el país en el que se encuentra el usuario. El valor es un código de país de 2 letras, como Las consultas con |
<UserDevice> | Pricing | string | Filtra las tarifas por el tipo de dispositivo desde el que el usuario realiza la búsqueda. Valores posibles:
Las consultas con |
Ejemplos
Ocupación
En el siguiente ejemplo, se muestra una consulta de precios en vivo para <Occupancy>
dentro de <Context>
. La búsqueda de precios en tiempo real es para 3 invitados 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>
Detalles de ocupación
En el siguiente ejemplo, se muestra una consulta de precios en vivo con <OccupancyDetails>
dentro de <Context>
.
La consulta de precios en vivo es para 4 huéspedes, 2 de los cuales son niños, y busca una tarifa aplicable a una reserva de un huésped de EE.UU. desde un dispositivo móvil:
<?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>
Varios contextos
En el siguiente ejemplo, se muestra el uso de un elemento <Context>
adicional en una consulta de precios en vivo.
<?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>