API цен туристических партнеров
API цен туристических партнеров предоставляет вам RESTful-интерфейс для отправки цен на недвижимость в Google.
Сервис: travelpartnerprices.googleapis.com
Для вызова этой службы мы рекомендуем использовать клиентские библиотеки, предоставленные Google. Если вашему приложению необходимо использовать ваши собственные библиотеки для вызова этой службы, обратитесь к своему техническому менеджеру по работе с клиентами (TAM), чтобы получить документ Discovery для этой службы.
Конечная точка службы
Конечная точка сервиса — это базовый URL-адрес, который определяет сетевой адрес сервиса API. У одного сервиса может быть несколько конечных точек. Этот сервис имеет следующую конечную точку сервиса, и все перечисленные URI относятся к этой конечной точке сервиса:
https://travelpartnerprices.googleapis.com
| Методы | |
|---|---|
ingestLosPropertyPrices | POST /v1/accounts/ account_id /properties/ property_id :ingestLosPropertyPricesЗагрузите предоставленные цены на длительность проживания для указанного объекта недвижимости. Требуется сообщение о ценах LoS в кодировке JSON (см. ниже) в качестве тела HTTP-сообщения. |
API-аутентификация
API цен туристических партнеров использует OAuth 2.0 для аутентификации вашего приложения, чтобы вы могли получить доступ к API.
Следуйте инструкциям по настройке OAUTH 2.0 , чтобы получить авторизацию для API цен туристических партнеров.
При создании нового проекта для API цен Travel Partners вам необходимо включить доступ к новому проекту консоли Google Cloud, что аналогично инструкциям, приведенным в API Travel Partner.
Чтобы включить свой проект, следуйте инструкциям в API туристических партнеров и замените все упоминания «API туристических партнеров» на «API цен туристических партнеров».
Область действия API цен туристических партнеров: "https://travelpartnerprices.googleapis.com"
Путь загрузки для API цен туристических партнеров: "/travel/lodging/uploads/accounts/<account_id>/property_data"
Запросы
Синтаксис
Сообщение LoS Prices использует следующий синтаксис:
{
"requestTime": YYYY-MM-DDTHH:mm:ss.SSSZ,
"propertyPrices": {
"arrivalDatePrices": [{
"startDate": {
"year": int
"month": int
"day": int
}
"endDate": {
"year": int
"month": int
"day": int
}
"productPrices": [{
"roomTypeId": "string"
"ratePlanId": "string"
"occupancyPrices": [{
"adults": int
"prices": [{
"rateRuleId": "string"
"currencyCode": "string"
"rates": [night_1,night_2,...]
"taxes": [night_1,night_2,...]
"fees": [night_1,night_2,...]
}]
}]
}]
}]
}
}
Элементы и атрибуты
Сообщение о ценах на длительность пребывания имеет следующие элементы и атрибуты:
| Элемент | Происшествия | Тип | Описание |
|---|---|---|---|
| requestTime | 1 | string | Момент времени отправки сообщения LoS Price, выраженный в виде строки в формате RFC 3339 . Любое сообщение, отправленное с Сообщения обрабатываются в порядке RFC 3339 требует полного указания даты и времени в формате Доли секунд указывать необязательно и могут быть выражены с точностью до наносекунды. Например, |
| propertyPrices | 1 | Object | Цены на недвижимость. Все цены на этот propertyPrices Цены относятся к одному и тому же объекту недвижимости.Этот элемент не повторяется. Чтобы отправить цены на несколько объектов, необходимо выполнить несколько HTTP-запросов (как минимум один на каждый объект). |
| arrivalDayPrices[] | 1..n | Object | Цены на дату заезда. Все цены в рамках arrivalDayPrices относятся к конкретному объекту размещения, но к разным датам заезда. |
| startDate | 1 | Object | productPrices применяется ко всем датам прибытия между startDate и endDate включительно. Если вы пытаетесь указать только одну дату прибытия (а не диапазон), введите дату прибытия в поля |
| startDate.year | 1 | integer | Год startDate . Должен быть от 1 до 9999. |
| startDate.month | 1 | integer | Месяц года. Должен быть от 1 до 12. |
| startDate.day | 1 | integer | День месяца. Должен быть от 1 до 31 и действителен для года и месяца. |
| endDate | 0..1 | Object | productPrices применяется ко всем датам прибытия между startDate и endDate включительно. Если пытаетесь указать только одну дату прибытия (а не диапазон), |
| endDate.year | 1 | integer | Год endDate . Должен быть от 1 до 9999. |
| endDate.month | 1 | integer | Месяц года. Должен быть от 1 до 12. |
| endDate.day | 1 | integer | День месяца. Должен быть от 1 до 31 и действителен для года и месяца. |
| productPrices[] | 1..n | Object | Цены на продукт. Все цены в этом productPrices Цены применяются к конкретной комбинации объекта и даты заезда, но к разным продуктам. |
| roomTypeId | 0..1 | string | Уникальный идентификатор номера, к которому относится эта цена. Используйте этот идентификатор для сопоставления данных Room Bundle с данными, отправленными в roomdata. Подробнее см. в метаданных Room Bundle . |
| ratePlanId | 0..1 | string | Уникальный идентификатор данных пакета, к которому относится эта цена. Используйте этот идентификатор для сопоставления данных Room Bundle с данными, отправленными в packagedata. Подробнее см. в метаданных Room Bundle . |
| occupancyPrices[] | 1..n | Object | Цены за размещение. Все цены в рамках данного occupancyPrices Цены применяются к конкретному объекту недвижимости, дате заезда, комбинации продуктов, но к разным размещениям. |
| adults | 1 | integer | Максимальное количество гостей, которое можно забронировать в одном номере, включая взрослых и детей. Это значение устанавливается для всех тарифов в соответствующем поле occupancyPrices и должно быть положительным целым числом от 1 до 99.Примечание: обратитесь в службу поддержки, чтобы узнать количество мест для более чем четырех взрослых. |
| prices[] | 1..n | Object | Цены, зависящие от продолжительности проживания. Все цены в разделе prices относятся к конкретному объекту размещения, дате заезда, продукту и комбинации условий размещения. |
| rateRuleId | 0..1 | string | Для условных ставок этот идентификатор сопоставляет ставку с определением в файле определения правил ставок. Длина этого поля ограничена 40 символами. |
| currencyCode | 1 | string | Трехбуквенный код валюты , в которой указаны rates и taxes . Например, "USD" для долларов США. |
| rates[] | 30 | float | Базовая составляющая стоимости проживания. Если указана соответствующая Значение индекса Необходимо отправить полный набор из 30 цен LoS за один раз. Если вы отправите меньше 30 цен, все предоставленные цены LoS будут обработаны в обычном режиме, а оставшиеся цены до LoS 30 будут недоступны. Если вы отправите больше 30 цен, все цены, отправленные после 30-й, будут удалены. Недоступные сроки пребывания следует обозначить |
| taxes[] | 30 | float | Налоговая составляющая цены за продолжительность пребывания. Значение индекса |
| fees[] | 30 | float | Плата за составляющую стоимости длительности пребывания. Значение индекса |
Пример
Ставки и налоги в зависимости от LOS
В следующем примере показана установка минимальной продолжительности пребывания (2) для одной даты заезда и указание отсутствия мест для другой даты заезда. Если вы укажете startDate с 01.09.2023 без endDate , это означает, что вы указываете цены только для одной даты, и endDate можно опустить.
Массив occupancyPrices , значение которого равно 2 позволяет устанавливать разные тарифы для разных уровней занятости. Таким образом, отсутствие свободных мест на 09.04.23 ограничивает доступные rates .
Приведенный массив taxes рассчитан как 10% от ставки.
В приведенном выше списке fees указана плата за уборку в размере 50 долларов США за весь период проживания.
Если вся дата заезда (9/3/2023) недоступна, необходимо явно указать дату и опустить rates , taxes и productPrices , чтобы обозначить отсутствие свободных мест на запрашиваемую дату.
{
"requestTime": "2023-08-10T12:15:222",
"propertyPrices": {
"arrivalDatePrices": [
{
"startDate": {
"year": 2023,
"month": 9,
"day": 1
},
"productPrices": [
{
"occupancyPrices": [
{
"adults": 2,
"prices": [
{
"currencyCode": "USD",
"rates": [
0, 200, 300, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
],
"taxes": [
0, 20, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
],
"fees": [
0, 50, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
]
}
]
}
]
}
]
},
{
"startDate": {
"year": 2023,
"month": 9,
"day": 3
},
"productPrices": [
{
"occupancyPrices": [
{
"adults": 2,
"prices": [
{
"currencyCode": "USD",
"rates": [
0, 200, 300, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
],
"taxes": [
0, 20, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
],
"fees": [
0, 50, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
]
}
]
}
]
}
]
}
]
}
}
Тело ответа
В случае успеха тело ответа содержит данные со следующей структурой:
| JSON-представление | |
|---|---|
{
"name": "string"
}
| |
| Поля | |
|---|---|
name | Имя ресурса PropertyPrices, который был изменён. Имеет форму:accounts/{account}/properties/{property} . |