В этом разделе содержится справочная информация по сообщениям-запросам подсказок , сообщениям-ответам подсказок и сообщениям-запросам Google XML.
 <Hint> (Сообщение-ответ с подсказкой)
Корневой элемент сообщения Hint Response. Сообщения Hint Response определяют, какие комбинации отелей или маршрутов должны быть переоценены. Они являются вашим ответом на сообщение Hint Request от Google.
В сообщении с ответом на подсказку следует указать только те отели, цены на которые изменились с момента последнего успешного получения Google ответа с ваших серверов.
В ответных сообщениях с подсказками используется один из следующих методов для указания того, цены на какие отели и маршруты Google следует пересмотреть:
- Точные маршруты : сочетание даты заезда и продолжительности пребывания. 
- Диапазоны дат заезда : указывает диапазон дат заезда, начиная с первой даты заезда и заканчивая последней датой заезда. 
- Дистанционное пребывание (или дистанционные маршруты ) 
Каждый из этих методов требует разного синтаксиса для сообщения Hint Response.
Для получения более подробной информации обратитесь к разделу «Сообщения с подсказками и ответами» .
Синтаксис
 Элемент <Hint> использует разный синтаксис в зависимости от типа сообщения 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>
Диапазоны регистрации
Ниже показан синтаксис диапазонов регистрации в сообщении с подсказкой:
<!-- 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>
Диапазон пребывания
Ниже показан синтаксис для диапазонных остановок в сообщении с ответом на подсказку:
<!-- 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>
Атрибуты
 Элемент <Hint> содержит необязательный атрибут: id . При предоставлении он включается как атрибут hintId в сообщения <Query> , отправляемые на основе этого <Hint> .
Дочерние элементы
 Элемент <Hint> имеет следующие дочерние элементы:
| Дочерний элемент | Необходимый? | Тип | Тип ответа на подсказку | Описание | 
|---|---|---|---|---|
| <CheckInDate> | Required | Date | Точные маршруты | Дата заезда по маршруту. | 
| <FirstDate> | Required | Date | Диапазоны регистрации и маршруты с диапазонами | Первая дата диапазона дат для диапазона регистрации или диапазонного пребывания. Сообщение с подсказкой. Даты включаются. | 
| <Item> | Required | Object | Все | Контейнер для обновления отеля/маршрута. | 
| <LastDate> | Required* | Date | Диапазоны регистрации и маршруты с диапазонами | Последняя дата диапазона дат для диапазона регистрации или диапазонного пребывания. Сообщение с подсказкой. Даты включаются. * Этот элемент необязателен для дальних поездок. | 
| <LengthOfStay> | Required | integer | Точные маршруты | Количество ночей в маршруте, выраженное положительным целым числом. | 
| <Property> | Required | string | Все |  Идентификатор отеля, использующий тот же идентификатор, что и в списке отелей . Количество элементов  
 | 
| <Stay> | Required | Object | Точные маршруты | Контейнер для элементов <CheckinDate>и<LengthOfStay>в сообщении Hint Response точного маршрута. Каждый<Item>может содержать только один<Stay>. | 
| <StaysIncludingRange> | Required | Object | Маршруты с разбросом | Контейнер для элементов <FirstDate>и<LastDate>в сообщении с подсказкой о пребывании в диапазоне. | 
Примеры
Точные маршруты
В следующем примере определяются несколько маршрутов для одного свойства в сообщении с подсказкой:
<!-- 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>
Диапазоны регистрации
В следующем примере указаны два отеля, цены на которые изменились и которые следует получить снова. Google получает все маршруты между 3 и 6 июля для объектов 12345 и 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>
Диапазон пребывания
В следующем примере показаны два различных варианта использования интервального проживания: один для диапазона ночей, а другой — для одной ночи:
<!-- 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>
 В каждом из этих примеров Google отвечает <Query> , а вы должны ответить <Transaction> , включающим обновления цен для указанных отелей/маршрутов.
 <HintRequest>
Корневой элемент сообщения запроса подсказки. Google отправляет сообщение запроса подсказки на ваш сервер и ожидает ответа, в котором указаны отели и маршруты, цены на которые изменились с момента последнего успешного получения Google ответа подсказки от вашего сервера.
 Если цены изменились, Google отправляет <Query> , который извлекает обновленные данные о ценах для указанных отелей и маршрутов.
Для получения более подробной информации см. Сообщения с запросами подсказок .
Синтаксис
 Элемент <HintRequest> использует следующий синтаксис: 
Синтаксис
<?xml version="1.0" encoding="UTF-8"?>
<HintRequest>
  <LastFetchTime>last_fetch_time</LastFetchTime>
</HintRequest>
Атрибуты
 Элемент <HintRequest> не имеет атрибутов. 
Дочерние элементы
 Элемент <HintRequest> имеет следующие дочерние элементы:
| Дочерний элемент | Тип | Описание | 
|---|---|---|
| <LastFetchTime> | DateTime | В последний раз Google удалось получить сообщение с ответом на подсказку на сообщение с запросом подсказки. Если это время старше, чем последний раз, когда вы обновляли цены на своем сервере, то вам следует отправить сообщение с подсказкой, в котором будет указано, какие отели изменились. Если не было недавних успешных выборок, будет установлено фиксированное значение интервала (чтобы избежать более серьезных проблем с большими задержками). Текущее фиксированное значение интервала составляет 1000 секунд, но может быть изменено. Для получения более подробной информации см. раздел Ответные сообщения с подсказками . | 
Примеры
В следующем примере показано сообщение с запросом подсказки :
Сообщение с просьбой подсказки
В следующем примере показано сообщение с запросом подсказки:
<?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>
 Корневой элемент сообщения Query . Сообщения Query — это запросы от Google на обновления цен или метаданных. Они используются как с режимами доставки Pull, так и с Changed pricing.
Сообщения с запросами цен
В сообщениях с запросами цен указываются комбинации объектов недвижимости и маршрутов, для которых вы предоставляете цены.
 Когда ваш сервер получает сообщение с запросом цен , он должен ответить сообщением <Transaction> , содержащим запрошенную информацию о ценах.
Более подробную информацию см. в разделе Обзор цен .
 Существует три специальных типа сообщений- Query :
- Цены в реальном времени: Google отвечает на конкретный запрос пользователя, запрашивая обновление цен в реальном времени. Когда партнеры получают сообщение - Live pricing query, партнеры должны ответить сообщением- <Transaction>, содержащим запрошенную информацию о ценах в элементах- <Result>.
- С контекстным ценообразованием: Google обновляет свой кэш цен на основе контекстов, которые исторически популярны. Когда вы получаете сообщение - With context query, вы должны ответить сообщением- <Transaction>, которое содержит запрошенную информацию о ценах в элементах- <Result>.
- Метаданные: Google запрашивает обновления метаданных для номеров и Room Bundles для указанных отелей. Когда вы получаете сообщение - Metadata Query, вы должны ответить сообщением- <Transaction>, которое указывает данные о номерах и Room Bundles в элементах- <PropertyDataSet>. Для получения дополнительной информации см. Room Bundle metadata .
Синтаксис
 Элемент <Query> использует следующий синтаксис: 
Запрос цен
<?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>
Текущее ценообразование
<?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>
С контекстом
<?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>
Метаданные
<HotelInfoProperties>
  <Property>property_ID</Property>
  ...
</HotelInfoProperties>
Атрибуты
 Элемент <Query> может содержать один атрибут: latencySensitive .
 Атрибут latencySensitive является необязательным. Если он указан и установлен в true , он указывает, что запрос является запросом Live Pricing Query . Чтобы Google отправлял запросы с атрибутом latencySensitive , обратитесь к своему техническому менеджеру по работе с клиентами (TAM).
Дочерние элементы
 Элемент <Query> имеет следующие дочерние элементы:
| Дочерний элемент | Тип запроса | Тип | Описание | 
|---|---|---|---|
| <AffectedNights> | Pricing | integer | Количество ночей для ранжированного пребывания. Этот элемент используется только для запросов ценообразования ранжированного пребывания, используемых с измененным ценообразованием. | 
| <Checkin> | Pricing | Date | Даты конкретного изменения цены. | 
| <Context> | Pricing (Live Pricing Queries only) | <Context> | Для запросов цен в реальном времени указывает определенные параметры, при которых делается запрос. Дочерние элементы включают: 
  Элемент  | 
| <FirstDate> | Pricing | Date | Начальная дата для диапазона маршрутов, к которым применяется цена. Этот элемент используется только для запросов ценообразования диапазона дат регистрации, используемых с измененными ценами. | 
| <HotelInfoProperties> | Metadata | string | Один или несколько объектов недвижимости, для которых Google хочет обновить метаданные Room и Room Bundle в сообщении Queryметаданных. Этот элемент может содержать один или несколько элементов<Property>, которые указывают идентификаторы объектов недвижимости отеля. | 
| <LastDate> | Pricing | Date | Конечная дата для диапазона маршрутов, к которым применяется цена. Этот элемент используется только для запросов ценообразования Check-in Date Range, используемых с Pull + Hints. | 
| <Nights> | Pricing | integer | Количество ночей по конкретному маршруту, до 30. | 
| <PropertyList> | Pricing | Object | Один или несколько идентификаторов отелей, для которых требуется обновление цен.  Определите каждый отель в элементе  <PropertyList> <Property>pid1</Property> <Property>pid2</Property> </PropertyList> | 
Примеры
Запрос цен
В следующем примере показано сообщение запроса цен, которое запрашивает обновление цен для набора отелей, доступных в течение 3 ночей и начинающихся 23 мая 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>
Запрос цен в реальном времени
В следующем примере показан запрос на определение цены в реальном времени с ограничением времени ответа в 500 миллисекунд:
<?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>
С контекстным запросом
<?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>
Запрос метаданных
<?xml version="1.0" encoding="UTF-8"?>
<Query>
  <HotelInfoProperties>
    <Property>pid5</Property>
    <Property>pid8</Property>
    <Property>pid13</Property>
    <Property>pid21</Property>
  </HotelInfoProperties>
</Query>
 Дополнительные примеры, включая запросы цен на проживание и даты заезда, см. в примерах сообщений Query .
 <Context>
 Элемент <Context> описывает информацию для Live pricing query , включая количество и тип гостей, страну пользователя и устройство пользователя.
 Несколько <Context> никогда не будут использоваться с разными странами или устройствами пользователей. Когда несколько <Context> используются для запроса нескольких мест размещения, укажите цену каждого места размещения как дополнительный пакет номеров для соответствующего объекта размещения или маршрута. Каждый объект размещения или маршрут должен иметь один блок <Result> с ценами для нескольких мест размещения.
 Подробную информацию об ответе на запрос <Context> см. в разделе <OccupancyDetails> .
Синтаксис
 Элемент <Context> использует следующий синтаксис: 
Синтаксис
<?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>
Дочерние элементы
 Элемент <Context> имеет следующие дочерние элементы:
| Дочерний элемент | Тип запроса | Тип | Описание | 
|---|---|---|---|
| <Occupancy> | Pricing | integer | Указывает общее количество гостей.  Хотя это и не обязательно, запросы с   Примечание:  | 
| <OccupancyDetails> | Pricing | Object | Имеет предварительный <Occupancy>. Указывает гостей по типу, включая:
  Хотя это и не обязательно, запросы с   Примечание:  | 
| <UserCountry> | Pricing | string |  Фильтрует ставки по стране, где находится пользователь. Значение представляет собой двухбуквенный код страны, например   Запросы с определенным  | 
| <UserDevice> | Pricing | string | Фильтрует ставки по типу устройства, с которого пользователь выполняет поиск. Возможные значения: 
  Запросы с определенным  | 
Примеры
Занятость
 В следующем примере показан запрос ценообразования Live для <Occupancy> в <Context> . Запрос ценообразования Live предназначен для 3 взрослых гостей. 
<?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>
Подробности размещения
 В следующем примере показан запрос ценообразования Live с <OccupancyDetails> в <Context> . Запрос ценообразования Live предназначен для 4 гостей, 2 из которых — дети, и ищет тариф, применимый к бронированию гостя из США с мобильного устройства: 
<?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>
Множественные контексты
 В следующем примере показано использование дополнительного элемента <Context> в запросе цен в реальном времени. 
<?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>