Цены на продолжительность пребывания (LoS)

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-сообщения.

account_id : это строковое значение представляет собой значение «Идентификатор учетной записи», указанное на странице настроек учетной записи в Hotel Center.

property_id : значение этого элемента должно быть строкой, соответствующей идентификатору листинга в вашем ленте списка отелей.

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 .

Любое сообщение, отправленное с requestTime в течение предыдущих 24 часов, обрабатывается, а те, которые не были обработаны, отбрасываются.

Сообщения обрабатываются в порядке requestTime , независимо от порядка их получения. Например, обновление цены с requestTime 2019-05-03T14:09:00Z , полученное после сообщения для тех же маршрутов с requestTime 2019-05-03T14:10:00Z отбрасывается в пользу сообщения с более поздней меткой времени.

RFC 3339 требует полного указания даты и времени в формате YYYY-MM-DDThh:mm:ss.SSZ . Часовой пояс должен быть указан как положительное или отрицательное смещение hh:mm от UTC или как сокращённое обозначение UTC в формате Z

Доли секунд указывать необязательно и могут быть выражены с точностью до наносекунды. Например, 2017-01-15T01:30:15.01-08:00 означает 15,01 секунды после 01:30 по тихоокеанскому времени 15 января 2017 года.

propertyPrices 1 Object Цены на недвижимость. Все цены на этот propertyPrices Цены относятся к одному и тому же объекту недвижимости.

Этот элемент не повторяется. Чтобы отправить цены на несколько объектов, необходимо выполнить несколько HTTP-запросов (как минимум один на каждый объект).

arrivalDayPrices[] 1..n Object Цены на дату заезда. Все цены в рамках arrivalDayPrices относятся к конкретному объекту размещения, но к разным датам заезда.
startDate 1 Object productPrices применяется ко всем датам прибытия между startDate и endDate включительно.

Если вы пытаетесь указать только одну дату прибытия (а не диапазон), введите дату прибытия в поля 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 можно опустить.

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 Базовая составляющая стоимости проживания.

Если указана соответствующая taxes ставка, она не включает налог. Общая цена представляет собой сумму соответствующей ставки и налога.

Значение индекса n соответствует продолжительности пребывания n+1 .

Необходимо отправить полный набор из 30 цен LoS за один раз. Если вы отправите меньше 30 цен, все предоставленные цены LoS будут обработаны в обычном режиме, а оставшиеся цены до LoS 30 будут недоступны. Если вы отправите больше 30 цен, все цены, отправленные после 30-й, будут удалены.

Недоступные сроки пребывания следует обозначить 0 .

taxes[] 30 float Налоговая составляющая цены за продолжительность пребывания.

Значение индекса n соответствует продолжительности пребывания n+1 .

fees[] 30 float Плата за составляющую стоимости длительности пребывания.

Значение индекса n соответствует продолжительности пребывания n+1 .

Пример

Ставки и налоги в зависимости от 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} .