API цен партнеров по путешествиям
API цен партнеров по путешествиям предоставляет вам RESTful-интерфейс для отправки цен на недвижимость в Google.
Сервис: travelpartnerprices.googleapis.com.
Для вызова этой службы мы рекомендуем использовать клиентские библиотеки Google. Если вашему приложению необходимо использовать собственные библиотеки для вызова этой службы, обратитесь к своему техническому менеджеру (TAM), чтобы получить документ обнаружения для этой службы.
Конечная точка службы
Конечная точка службы — это базовый URL-адрес, указывающий сетевой адрес службы API. Одна служба может иметь несколько конечных точек службы. Эта служба имеет следующую конечную точку службы, и все перечисленные URI относятся к этой конечной точке службы:
https://travelpartnerprices.googleapis.com
Методы | |
---|---|
ingestLosPropertyPrices | POST /v1/accounts/ account_id /properties/ property_id :ingestLosPropertyPrices Загрузите предоставленные цены на продолжительность пребывания для указанного объекта размещения. В качестве тела HTTP-сообщения требуется сообщение о ценах LoS в формате JSON (см. ниже). |
API-аутентификация
API цен партнеров для путешествий использует OAuth 2.0 для аутентификации вашего приложения, чтобы вы могли получить доступ к API.
Следуйте инструкциям по настройке OAUTH 2.0, чтобы получить авторизацию для вашего API цен партнеров по путешествиям.
Когда вы создаете новый проект для API цен Travel Partners, вам необходимо включить доступ к новому проекту консоли Google Cloud, что аналогично инструкциям, приведенным в API Travel Partners.
Обратитесь к инструкциям, приведенным в 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, выраженный в виде строки в формате 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 . |
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 | Компонент базовой ставки цены продолжительности пребывания. Если указана соответствующая стоимость Значение индекса Вы должны отправить полный набор LoS из 30 цен одновременно. Если вы отправляете менее 30, то все предоставленные цены LoS обрабатываются как обычно, а остальные ставки до LoS 30 недоступны. Если вы отправляете более 30, то любые цены, отправленные вами за пределами 30-й ставки, отбрасываются. Недоступная продолжительность пребывания должна обозначаться цифрой |
taxes[] | 30 | float | Налоговая составляющая стоимости проживания. Значение индекса |
fees[] | 30 | float | Платная составляющая стоимости проживания. Значение индекса |
Пример
Тарифы и налоги на основе LOS
В следующем примере показана установка минимальной продолжительности пребывания 2 для одной даты заезда и установка отсутствия доступности для другой даты регистрации. Если вы установите startDate
с 01.09.2023 без endDate
, это означает, что вы указываете тарифы только на одну дату и можете опустить endDate
.
Массив occupancyPrices
, которому присвоено значение 2
позволяет устанавливать разные тарифы для разных заполнений. Поэтому отсутствие вакансии на 04.09.23 ограничивает доступные rates
.
Показанный массив taxes
рассчитан как 10% от ставки.
В приведенном массиве fees
указана плата за уборку в размере 50 долларов США за весь период проживания.
Если полная дата заезда недоступна (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} . |