Referencia de XML de los mensajes Query y Hint

En esta página se proporciona una referencia de los mensajes Hint Request, los mensajes Hint Response y los mensajes Query, basados en XML de Google.

<Hint> (mensaje Hint Response)

Es el elemento raíz de un mensaje Hint Response. Los mensajes Hint Response indican qué combinaciones de hoteles e itinerarios deben cambiar de precio. Se envían para responder a los mensajes Hint Request de Google.

Los mensajes Hint Response deben indicar únicamente los hoteles cuyos precios hayan cambiado desde la última vez que Google recibió un mensaje Hint Response válido de tus servidores.

Los mensajes Hint Response usan uno de los siguientes métodos para indicar qué precios de hoteles e itinerarios debe cambiar Google:

  • Itinerarios exactos: combinación de la fecha de entrada y la duración de la estancia.
  • Periodos de entrada: intervalo de fechas de entrada, desde la primera fecha de entrada hasta la última.
  • Estancias desglosadas o itinerarios desglosados

En los mensajes Hint Response, cada método requiere una sintaxis diferente.

Para obtener más información, consulta el artículo Mensajes Hint Response.

Sintaxis

El elemento <Hint> usa una sintaxis diferente en función del tipo de mensaje Hint Response:

Itinerarios exactos

A continuación, se muestra la sintaxis de los itinerarios exactos en un mensaje Hint Response:

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

Periodos de entrada

A continuación, se muestra la sintaxis de los periodos de entrada en un mensaje Hint Response:

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

Estancias desglosadas

A continuación, se muestra la sintaxis de las estancias desglosadas en un mensaje Hint Response:

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

Atributos

El elemento <Hint> no tiene atributos.

Elementos secundarios

El elemento <Hint> tiene los siguientes elementos secundarios:

Elemento secundario ¿Es obligatorio? Tipo Tipo de mensaje Hint Response Descripción
<CheckInDate> Obligatorio Date Itinerarios exactos Fecha de entrada del itinerario.
<FirstDate> Obligatorio Date Periodos de entrada e itinerarios desglosados La primera fecha de un periodo de entrada o de una estancia desglosada del mensaje Hint Response. Las fechas son inclusivas.
<Item> Obligatorio Object Todos Contenedor para actualizar el hotel o el itinerario.
<LastDate> Obligatorio* Date Periodos de entrada e itinerarios desglosados La última fecha de un periodo de entrada o de una estancia desglosada del mensaje Hint Response. Las fechas son inclusivas.

* Este elemento es opcional en las estancias desglosadas.

<LengthOfStay> Obligatorio Integer Itinerarios exactos Número de noches del itinerario, expresado como un número entero positivo.
<Property> Obligatorio String Todos ID de un hotel, el mismo de la lista de hoteles. El número de elementos <Property> que se pueden especificar en un único bloque <Item> depende del tipo de mensaje Hint Response:

  • Itinerarios exactos: hasta 100 hoteles.
  • Periodos de entrada: más de un hotel si se asigna el valor "checkin_range" a <MultipleItineraries> en el mensaje <QueryControl>.
  • Estancia desglosada: más de un hotel si se asigna el valor "affected_dates" a <MultipleItineraries> en el mensaje <QueryControl>.
<Stay> Obligatorio Object Itinerarios exactos Contenedor para los elementos <CheckinDate> y <LengthOfStay> del mensaje Hint Response de un itinerario exacto. En cada elemento <Item> solo se puede incluir un elemento <Stay>.
<StaysIncludingRange> Obligatorio Object Itinerarios desglosados Contenedor para los elementos <FirstDate> y <LastDate> del mensaje Hint Response de una estancia desglosada.

Ejemplos

Itinerarios exactos

En este ejemplo se definen varios itinerarios en el mensaje Hint Response de un mismo hotel:

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

Periodos de entrada

En este ejemplo se indican dos hoteles cuyos precios han cambiado y hay que volver a obtenerlos. Google obtiene todos los itinerarios de las propiedades 12345 y 67890 entre el 3 y el 6 de julio:

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

Ten en cuenta que, para que se puedan incluir varias propiedades en un único elemento <Item> de un mensaje de periodos de entrada, se debe asignar el valor "checkin_range" a <MultipleItineraries> en <QueryControl>.

Estancias desglosadas

En este ejemplo se muestran dos usos distintos de estancias desglosadas; uno para un intervalo de noches y 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>

Ten en cuenta que, para que se puedan incluir varias propiedades en un único elemento <Item> de un mensaje de estancias desglosadas, se debe asignar el valor "affected_dates" a <MultipleItineraries> en <QueryControl>.

En estos ejemplos, Google envía un mensaje <Query> al que se debe responder con un mensaje <Transaction> que incluya las actualizaciones de precios de los hoteles e itinerarios que se indican.

<HintRequest>

Es el elemento raíz de un mensaje Hint Request. Google envía un mensaje Hint Request a tu servidor y espera una respuesta en la que se especifiquen los hoteles e itinerarios cuyos precios han cambiado desde la última vez que recibió un mensaje Hint Response válido de tu servidor.

Si hay cambios en los precios, Google envía un mensaje <Query> para obtener datos de los precios actualizados de los hoteles e itinerarios que se indican.

Para obtener más información, consulta el artículo Mensajes Hint Request.

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 Última vez que Google recibió un mensaje Hint Response válido como respuesta a un mensaje Hint Request.

Si esta fecha es anterior a la última vez que se actualizaron los precios en tu servidor, deberías responder con un mensaje Hint Response que indique qué hoteles han cambiado.

Para obtener más información, consulta el artículo Mensajes Hint Response.

Ejemplos

Mensaje Hint Request

Este es un ejemplo de un mensaje 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>

Es el elemento raíz de un mensaje Query. Los mensajes Query son solicitudes de Google para recibir actualizaciones de precios o metadatos. Se usan con los modos de envío Pull y Changed Pricing.

Hay dos tipos de mensajes Query:

  • Precios: Google solicita actualizaciones de precios para los hoteles especificados. Al recibir un mensaje Query de precios, debes responder con un mensaje <Transaction> que incluya la información de precios solicitada en los elementos <Result>.

    Las consultas de precios en tiempo real son un tipo especial de mensajes Query que Google usa para solicitar actualizaciones de precios en tiempo real.

    Para obtener más información, consulta el artículo sobre la descripción general de los precios.

  • Metadatos: Google solicita actualizaciones de metadatos de las habitaciones y las configuraciones de habitación de los hoteles especificados. Al recibir un mensaje Query de metadatos, debes responder con un mensaje <Transaction> que incluya los datos de las habitaciones y de las configuraciones de habitación en los elementos <PropertyDataSet>.

    Para obtener más información, consulta la sección sobre metadatos de la configuración de habitación.

La sintaxis de los mensajes varía en función de cada tipo. Ambos tipos se describen en esta sección.

Sintaxis

El elemento <Query> usa la siguiente sintaxis:

Sintaxis

<?xml version="1.0" encoding="UTF-8"?>
<Query latencySensitive="true_or_false">
<!-- The "latencySensitive" attribute appears only with Live Pricing Queries -->

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

    <!-- Only for Live Pricing Queries -->
    <DeadlineMs>deadline</DeadlineMs>
    <Context>
      <Occupancy>total_number_of_guests</Occupancy>
      <UserCountry>country_code</UserCountry>
      <UserDevice>device_type</UserDevice>
    </Context>

  <!-- METADATA QUERIES -->
    <HotelInfoProperties>
      <Property>property_ID</Property>
      ...
    </HotelInfoProperties>

</Query>

Atributos

El elemento <Query> puede contener un atributo: <LatencySensitive>.

El atributo <LatencySensitive> es opcional. Si se incluye y se le asigna el valor true, la consulta es de precios en tiempo real. Para que Google haga consultas con el atributo <LatencySensitive>, envía una solicitud a tu Administrador técnico de cuentas.

Elementos secundarios

El elemento <Query> tiene los siguientes elementos secundarios:

Elemento secundario Tipo de consulta Tipo Descripción
<AffectedNights> Precios Integer Número de noches de una estancia desglosada. Este elemento se usa únicamente en las consultas de precios de estancias desglosadas con Changed Pricing.
<Checkin> Precios Date Fechas de un cambio de precio concreto.
<Context> Precios (solo para consultas de precios en tiempo real) Object Especifica ciertos parámetros de las consultas de precios en tiempo real. Algunos elementos secundarios son:
  • <Occupancy>: número total de huéspedes
  • <OccupancyDetails>: tipo de huéspedes, como adultos o niños
  • <UserCountry>: país donde se encuentra el usuario
  • <UserDevice>: tipo de dispositivo que ha usado el huésped para buscar un hotel, como "mobile", "tablet" u "desktop".

El elemento <Context> solo se puede repetir en una solicitud, lo que permite realizar consultas de ocupaciones diferentes. Consulta la sección <Context> para ver a una lista de elementos secundarios, sintaxis y ejemplos.

<FirstDate> Precios Date Fecha de inicio de un intervalo de itinerarios a los que se aplican los precios. Este elemento se usa solo para las consultas de precios de periodos de entrada con Changed Pricing.
<HotelInfoProperties> Metadatos String Una o varias propiedades sobre las que Google solicita actualizaciones de metadatos de las habitaciones y la Configuración de habitación en un mensaje Query de metadatos. Este elemento puede contener uno o varios elementos <Property> que especifican los IDs de propiedad de los hoteles.
<LastDate> Precios Date Fecha de finalización de un intervalo de itinerarios a los que se aplican los precios. Este elemento se usa solo para las consultas de precios de periodos de entrada con el método Pull with Hints.
<Nights> Precios Integer Número de noches de un itinerario concreto, hasta un máximo de 30.
<PropertyList> Precios Object Uno o varios ID de hoteles cuyos precios deben actualizarse.

Define cada hotel en un elemento <Property>. El valor 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 este ejemplo se muestra un mensaje Query de precios que solicita la actualización de los precios de un conjunto de hoteles, disponibles durante 3 noches, a partir del 10 de junio del 2018:

<?xml version="1.0" encoding="UTF-8"?>
<Query>
  <Checkin>2018-06-10</Checkin>
  <Nights>3</Nights>
  <PropertyList>
    <Property>pid5</Property>
    <Property>pid8</Property>
    <Property>pid13</Property>
    <Property>pid21</Property>
  </PropertyList>
</Query>

Consulta de metadatos

En este ejemplo se muestra un mensaje Query 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 más ejemplos, como consultas de precios de estancias desglosadas y periodos de entrada, echa un vistazo a los ejemplos de mensajes Query.

<Context>

El elemento <Context> describe una consulta de precios en tiempo real e incluye información como el número y el tipo de huéspedes, así como el país y el dispositivo del usuario.

No se pueden usar varios elementos <Context> con países o dispositivos de usuario diferentes. Si se usan varios elementos <Context> para consultar ocupaciones distintas, debes incluir el precio de cada ocupación como una Configuración de habitación adicional para la propiedad o el itinerario correspondiente. Cada propiedad o itinerario debe tener un único bloque <Result> con los precios de varias ocupaciones.

Para ver la información de la respuesta a la consulta <Context>, echa un vistazo a <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> Precios Integer Indica el número total de huéspedes.

Aunque no es obligatorio, las consultas con <Occupancy> deben generar un mensaje Transaction con las configuraciones de habitación correspondientes a cada consulta <Occupancy>.

Nota: Es posible que el elemento <Occupancy> no aparezca en la consulta. En ese caso, se deben incluir los precios de todas las ocupaciones en la respuesta.

<OccupancyDetails> Precios Object Viene precedido del elemento <Occupancy>. Indica los tipos de huéspedes, como por ejemplo:

  • <NumAdults>: número de huéspedes adultos
  • <Children> y <Child "age">: número de huéspedes niños, por lo general, de entre 0 y 17 años. Pueden incluir la edad de cada uno, pero es opcional.
  • Aunque no es obligatorio, las consultas con <OccupancyDetails> deben generar un mensaje Transaction con las configuraciones de habitación correspondientes a cada <Occupancy>consulta.

    Nota: Es posible que el elemento <OccupancyDetails> no aparezca en la consulta. En ese caso, se considera que todos los huéspedes son adultos.

<UserCountry> Precios String

Filtra las tarifas por el país donde se encuentra el usuario. El valor es un código de país de dos letras, como "US" para Estados Unidos, o un código regional, como "EU" para Europa.

Las consultas con <UserCountry> deben generar un mensaje Transaction con el bloque <Rates> correspondiente al país consultado.

<UserDevice> Precios String

Filtra las tarifas por el tipo de dispositivo desde el que el usuario hace la búsqueda. Valores posibles:

  • mobile
  • desktop
  • tablet

Las consultas con <UserDevice> deben generar un mensaje Transaction con el bloque <Rates> correspondiente al tipo de dispositivo consultado.

Ejemplos

Ocupación

En este ejemplo se muestra una consulta de precios en tiempo real de <Occupancy> en <Context>. La consulta corresponde a tres 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>

Información sobre la ocupación

En este ejemplo se muestra una consulta de precios en tiempo real de <OccupancyDetails> en <Context>. La consulta corresponde a cuatro huéspedes, dos de los cuales son niños, y con ella se busca una tarifa aplicable a una reserva de huéspedes 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 este 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>