Referencia de XML de consultas y sugerencias

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 de sugerencia)

Es el elemento raíz de un mensaje de respuesta de sugerencia. Mensajes de respuesta de sugerencia especifiquen las combinaciones de hoteles o itinerarios que deben cambiarse de precio. Son tu respuesta a un mensaje de solicitud de sugerencia de Google.

Un mensaje de respuesta de sugerencia solo debe especificar aquellos hoteles cuyos precios tienen cambió desde la última vez que Google recibió una respuesta exitosa a la sugerencia de tus servidores.

Los mensajes de respuesta de sugerencia usan uno de los siguientes métodos para especificar cuál itinerarios y hoteles a los que Google debería cambiar el precio:

  • Itinerarios exactos: Es una combinación de la fecha de entrada y la duración de la estadía.

  • Períodos de entrada: Especifica un período de entrada. fechas que comienzan con la primera fecha de entrada y finalizan con la última fecha de entrada.

  • Estadías con intervalos (o itinerarios con intervalos)

Cada uno de estos métodos requiere una sintaxis diferente para la respuesta de sugerencia. mensaje.

Para obtener más información, consulta Mensajes de respuesta con sugerencias.

Sintaxis

El elemento <Hint> usa una sintaxis diferente, según el tipo de sugerencia. Mensaje de respuesta:

Itinerarios exactos

A continuación, se muestra la sintaxis de los itinerarios exactos en una respuesta de sugerencia. mensaje:

<!-- 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 rangos de registro en una respuesta de sugerencia. mensaje:

<!-- 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 alcance

A continuación, se muestra la sintaxis de las estadías con intervalos en una respuesta de sugerencia mensaje:

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

Atributos

El elemento <Hint> contiene un atributo opcional: id. Cuándo proporcionado, se incluye como el atributo hintId en <Query> mensajes enviados en función de esta <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 Itinerarios y rangos de registro de entrada La primera fecha del período de un período de registro o de rango sigue siendo el mensaje de respuesta de pista. Las fechas son inclusivas.
<Item> Required Object Todos Un contenedor para el hotel o itinerario que se actualizará.
<LastDate> Required* Date Itinerarios y rangos de registro de entrada

La última fecha del período de un período de registro o de fechas sigue siendo el mensaje de respuesta de pista. Las fechas son inclusivas.

* Este elemento es opcional para estadías prolongadas.

<LengthOfStay> Required integer Iterarios exactos La cantidad de noches del itinerario, expresada como positiva entero.
<Property> Required string Todos

Es el ID de un hotel, que debe ser el mismo que el de la lista de hoteles. El número de elementos <Property> que puedes especificar en un solo El bloque <Item> se determina por el tipo de pista. Mensaje de respuesta:

  • Itinerarios exactos: hasta 100 hoteles.
  • Rangos de registro: Más de uno si configuras <MultipleItineraries> como "checkin_range" en tu mensaje <QueryControl>.
  • Estadía con alcance: Más de una opción si la estableces <MultipleItineraries> a "affected_dates" en tu mensaje <QueryControl>.
<Stay> Required Object Itinerarios exactos Un contenedor para <CheckinDate> y <LengthOfStay> elementos en una sugerencia exacta del itinerario Mensaje de respuesta. Cada <Item> puede contener solo un <Stay>
<StaysIncludingRange> Required Object Iterarios a distancia Un contenedor para <FirstDate> y Respuesta de sugerencia de <LastDate> de elementos en una estadía dentro de un rango mensaje.

Ejemplos

Itinerarios exactos

En el siguiente ejemplo, se definen varios itinerarios para una sola propiedad un mensaje de respuesta con una pista:

<!-- 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 de entrada

En el siguiente ejemplo, se especifican dos hoteles cuyos precios cambiaron y debería recuperarse de nuevo. Google obtiene todos los itinerarios entre el 3 de julio y el de julio 6 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>

Para cada uno de estos ejemplos, Google responde con un <Query>, y deberías Luego, responde con un <Transaction> que incluya actualizaciones de precios del itinerarios o hoteles especificados.

<HintRequest>

Es el elemento raíz de un mensaje de solicitud de sugerencia. Google envía una solicitud de propina mensaje a tu servidor y espera una respuesta que especifique los hoteles y itinerarios cuyos precios cambiaron desde la última vez que Google recibió un respuesta de sugerencia exitosa de tu servidor.

Si hay algún cambio de precio, Google envía un <Query> que Recupera los datos de precios actualizados de los itinerarios y los hoteles 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 obtuvo un mensaje de respuesta de sugerencia a un mensaje de solicitud de pista.

Si esta fecha es anterior a la última vez precios actualizados en tu servidor, deberías responder con una sugerencia. Mensaje de respuesta que especifica qué hoteles cambiaron.

Si no se realizó correctamente una recuperación reciente, el valor se establecerá en un valor de intervalo fijo (para evitar problemas más graves con tareas pendientes). El valor actual del intervalo fijo es de 1,000 segundos, pero sujeto a cambios.

Para obtener más información, consultar Mensajes de respuesta con 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. Query mensajes son solicitudes de Google para actualizar los precios o los metadatos. Se usan tanto con el método Pull y Precios modificados modos de entrega.

Existen tres tipos de mensajes Query:

  • Precios en tiempo real: Google responde a la solicitud de un usuario específico y pide 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 precios por contexto: Google actualiza su caché de precios según el contexto. que son históricamente populares. Cuando recibes un With context query debes responder con un mensaje <Transaction> que contenga solicitó la información de precios 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 la Descripción general de precios. para las consultas de precios y los metadatos de los paquetes de habitaciones para consultas de metadatos.

Los tres tipos diferentes de sintaxis son los siguientes:

Sintaxis

El elemento <Query> usa la siguiente sintaxis:

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 Live Pricing Query. Para tener envía consultas con el atributo latencySensitive; comunícate con el equipo de asistencia Administrador 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 precios modificados.
<Checkin> Pricing Date Las fechas de un cambio de precio específico.
<Context> Pricing (Live Pricing Queries only) <Context> Para las consultas de precios en tiempo real, especifica ciertos parámetros bajo los cuales se realiza la consulta. Entre los elementos secundarios, se incluyen los siguientes:
  • <Occupancy>: Es la cantidad total de invitados.
  • <OccupancyDetails>: El tipo de invitados, como adultos o niños
  • <UserCountry>: Es el país en el que se encuentra el usuario.
  • <UserDevice>: Es el tipo de dispositivo que usó el huésped para buscar un hotel, como "mobile, tablet o desktop.

El elemento <Context> se puede repetir en un solicitud única, lo que permite realizar consultas para diferentes ocupaciones. Consulta <Context> para obtener una lista de elementos secundarios, sintaxis y ejemplos.

<FirstDate> Pricing Date Es la fecha de inicio de un rango de itinerarios a los que se aplica el precio. aplica. Este elemento solo se usa para los precios del período de entrada las consultas usadas con precios modificados.
<HotelInfoProperties> Metadata string Una o más propiedades que Google quiere actualizar Los metadatos de habitación y paquete de habitación en un mensaje de metadatos Query. Este elemento puede contener uno o más <Property> elementos que especifican los IDs de propiedad del hotel.
<LastDate> Pricing Date Es la fecha de finalización de un rango de itinerarios a los que se les aplica el precio. aplica. Este elemento solo se usa para las consultas de precios de la fecha de registro que se usan con Pull + Hints.
<Nights> Pricing integer La cantidad de noches de un itinerario en particular, hasta 30.
<PropertyList> Pricing Object

Uno o más IDs del hotel que requieren actualizaciones de precios.

Define cada hotel en un elemento <Property>. El value es una cadena que coincide con un ID de hotel de tu Lista de hoteles. Por ejemplo:

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

Ejemplos

Consulta de precios

En el siguiente ejemplo, se muestra un mensaje de consulta de precios que solicita el precio actualizaciones para un conjunto de hoteles, disponible por 3 noches, que comienza el 10 de junio de 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>

Consulta de precios en tiempo real

En el siguiente ejemplo, se muestra una consulta de precios en tiempo real con un tiempo de respuesta límite 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 búsqueda 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 otros ejemplos, como los períodos de estadía y de entrada precios, revisa los ejemplos de mensajes Query.

<Context>

El elemento <Context> describe la información de una Live pricing query. que incluye la cantidad y el tipo de invitados, el país y el dispositivo del usuario.

Nunca se usarán varias <Context> con diferentes países de usuario ni de los dispositivos de los usuarios. Cuando se usan varios <Context> para consultar por varios de ocupación, incluyen el precio de cada ocupación como un paquete de habitación adicional para la propiedad o el itinerario correspondiente. Cada propiedad o itinerario debe tener un solo bloque <Result> con los precios para varias ocupaciones incluidos.

Para obtener los detalles de 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 son obligatorias, las consultas con <Occupancy> deben generar un mensaje de transacción con los paquetes de habitación adecuados definido para cada <Occupancy>, pero si Los paquetes de habitación no están disponibles, se recomienda especificar <Occupancy>.

Nota: Es posible que <Occupancy> no aparezca siempre. en una consulta. En esos casos, debes mostrar los precios de todas ocupaciones.

<OccupancyDetails> Pricing Object Está precedida por <Occupancy>. Especifica invitados por como los siguientes:
  • <NumAdults>: Cantidad de huéspedes adultos
  • <Children> y <Child="age">: Especifica qué invitados son niños (por lo general, entre 0 y 17 años) opcionalmente incluye la edad de cada niño.

Si bien no es obligatorio, las consultas con <OccupancyDetails> deberían generar un mensaje de transacción con los paquetes de habitaciones adecuados definidos para cada <Occupancy>, pero si los paquetes de habitaciones no están disponibles, te recomendamos que especifiques el elemento <OccupancyDetails>.

Nota: Es posible que <OccupancyDetails> no siempre aparecen en una consulta. En esos casos, debes suponer que todos los invitados son adultos.

<UserCountry> Pricing string

Filtra las tarifas por el país en el que se encuentra el usuario. El valor es un Código de país de 2 letras, como "US" para Estados Unidos, o un regional, p. ej., "EU" para “Europa”.

Las consultas con <UserCountry> definido deben dar como resultado un mensaje de transacción con el <Rates> adecuado bloque definido para el país consultado.

<UserDevice> Pricing string

Filtra las tarifas por el tipo de dispositivo desde el que el usuario está buscando. Valores posibles:

  • mobile
  • desktop
  • tablet

Las consultas con <UserDevice> definido deben dar como resultado un mensaje de transacción con el <Rates> adecuado definido para el tipo de dispositivo consultado.

Ejemplos

Ocupación

En el siguiente ejemplo, se muestra una consulta de precios en tiempo real para <Occupancy> en <Context>. La consulta de precios en tiempo real es para 3 adultos invitados.

<?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 tiempo real con <OccupancyDetails> en <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 tiempo 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>