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

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 (см. ниже).

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

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

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 .

Любое сообщение, отправленное с помощью 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 или Z как сокращение от UTC.

Дробные секунды являются необязательными и могут быть выражены с точностью до наносекунды. Например, 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 .
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 .

Вы должны отправить полный набор LoS из 30 цен одновременно. Если вы отправляете менее 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 позволяет устанавливать разные тарифы для разных заполнений. Поэтому отсутствие вакансии на 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} .