Обновления API в реальном времени

Наличие товаров в вашей системе колеблется в течение дня из-за новых бронирований, отмен и изменений в расписании от ваших продавцов. API обновления в реальном времени — это механизм для уведомления Google об этих изменениях в наличии товаров. Вы также можете использовать обновления API в реальном времени для уведомления Google об изменениях, внесенных в существующие бронирования.

Обновления в режиме реального времени не требуются, если все ваши продавцы используют функцию списка ожидания.

Обновления и каналы данных в режиме реального времени через API

Обновления API в режиме реального времени используются для уведомления Google о постепенных изменениях в наличии товаров и бронированиях по мере их возникновения. В дополнение к обновлениям API в режиме реального времени, ежедневно отправляйте полные данные о наличии товаров, чтобы Google располагал наиболее точной и актуальной информацией о наличии товаров в вашей системе. Полные данные представляют собой снимок текущего состояния наличия товаров в вашей системе.

Хотя обновления API можно использовать для обновления любой информации, предоставляемой фидами, например, информации о продавцах и услугах, обычно они используются только для обновления информации о наличии товаров.

Необходимые API для обновления в реальном времени.

API для обновления в реальном времени (RTU)
Уведомление о бронировании Обязательный Отправляйте уведомления BookingNotification RTU всякий раз, когда происходят изменения в бронировании (например, внесение изменений или отмена).
Наличие. Замена RTU. Условно требуется[1] Для обновления информации о наличии товара на складе отправьте либо пакетное , либо единичное обновление RTU. Для распространения и отображения изменений может потребоваться несколько минут.
Торговый RTU Необязательный Отправляйте запросы на изменение данных продавца (RTU), если хотите вносить изменения в информацию о продавце в режиме реального времени. Для распространения и отображения изменений может потребоваться несколько часов.
Сервисный RTU Необязательный Отправляйте запросы на изменение информации об услугах (Service RTU), если хотите вносить изменения в информацию об услугах в режиме реального времени. Распространенный сценарий использования — резкие колебания цен на услуги в течение дня; в этом случае рекомендуется использовать Service RTU, чтобы избежать сбоев в обработке заказов из-за несоответствия цен. Для распространения и отображения изменений может потребоваться несколько часов.

Доступность Замена API RTU

Используйте API Availability Replace для обновления доступности в следующих сценариях:

  • Пользователь оформил бронирование в вашей системе, поэтому освободившееся место стало недоступным.
  • Продавец изменил информацию о наличии товара в вашей системе.
  • Пользователь оформил бронирование через Google, поэтому свободный слот оказался недоступен.
  • Бронирование, сделанное через Google, отменяется с вашей стороны, например, непосредственно продавцом. Вам необходимо обновить бронирование, а также информацию о наличии мест, поскольку первоначальное время снова стало доступным.
  • Вызов функции BatchAvailabilityLookup сервера бронирования возвращает информацию о наличии мест, которая не соответствует фактическому количеству доступных номеров.

Для получения более подробной информации обратитесь к следующим ресурсам:

API уведомлений о бронировании RTU

API уведомлений о бронированиях сообщает Google об обновлениях существующих бронирований. При отправке уведомления об отмене бронирования отправляйте в запросе только необходимую информацию с параметром запроса updateMask . Вот пример:

Request:
PATCH https://mapsbooking.googleapis.com/v1alpha/notification/partners/<PARTNER_ID>/bookings/<BOOKING_ID>?updateMask=status

Body:
{"name":"partners/<PARTNER_ID>/bookings/<BOOKING_ID>", "status":"CANCELED"}

Доступ к API

Создайте учетную запись службы

Для создания сервисной учетной записи используйте вкладку «Учетные данные» в консоли Google API. Сохраните закрытый ключ в формате JSON в безопасном месте. При создании учетной записи у вас есть возможность установить роль «Владелец».

Аутентификация API бронирования карт

После создания учетной записи службы выполните аутентификацию следующих API:

  • API бронирования Google Maps
  • API бронирования Google Maps (для разработчиков)

Пошаговое руководство по выполнению этой процедуры вы найдете в руководстве по аутентификации с помощью Maps Booking API .

Используйте RESTful-запросы или загрузите клиентскую библиотеку.

Мы рекомендуем выполнять RESTful-запросы непосредственно к API бронирования карт с использованием JSON-данных. Для получения дополнительной информации см. документацию по REST API .

Для подключения к API также можно использовать клиентские библиотеки.

Язык Ссылка для скачивания
Java Клиентская библиотека Java . Для получения дополнительной информации см. инструкции по использованию клиента Java .

Для загрузки доступны дополнительные библиотеки поддержки , которые обрабатывают авторизацию и другие аспекты вызовов к API Google. При необходимости ознакомьтесь с этими примерами .

Получить документ Discovery

Для некоторых клиентских библиотек, таких как Ruby, необходимо получить документ Discovery для API, в котором описываются его методы и параметры.

Для получения документа Discovery используйте следующую команду:

curl -s -o 'mapsbooking_rest' 'https://mapsbooking.googleapis.com/$discovery/rest?version=v1alpha'

Для получения дополнительной информации о доступе к API из Ruby перейдите по этим ссылкам: Ruby API Client и Ruby Auth Library .

Выполняйте авторизованные вызовы к API.

При обращении к API, обратитесь к разделу «Подготовка к авторизованному вызову API» , чтобы авторизовать свою учетную запись службы с помощью закрытого ключа и следующего диапазона OAuth: https://www.googleapis.com/auth/mapsbooking .

квоты API

Для обновлений API установлен лимит в 1500 запросов каждые 60 секунд, или в среднем 25 запросов в секунду. При превышении квоты (что может произойти, если вы не указали правильный номер проекта Google Cloud на своем партнерском портале) Google выдает следующее сообщение об ошибке:

{
  "error": {
    "code": 429,
    "message": "Insufficient tokens for quota ...",
    "status": "RESOURCE_EXHAUSTED",
    "details": [...]
  }
}

Для решения этой проблемы повторяйте вызов с экспоненциально большими интервалами, пока он не будет успешным. Если вы регулярно исчерпываете квоту с помощью ReplaceServiceAvailability , переключитесь на BatchReplaceServiceAvailabily , чтобы уменьшить количество вызовов API. Этот метод позволяет обновлять несколько сервисов за один вызов API.

Тестовые и производственные конечные точки

Через API можно обращаться как к тестовой, так и к производственной среде. Убедитесь, что оба API включены в вашем проекте Google Cloud. Оба API используют одну и ту же область видимости, но имеют разные конечные точки.

Конечная точка доступа в рабочей среде: https://mapsbooking.googleapis.com/

Конечная точка тестовой среды: https://partnerdev-mapsbooking.googleapis.com/

Ниже приведён пример на Java, демонстрирующий переключение между конечными точками:

    // This block of code is for OAuth and is the same for prod and sandbox.
    GoogleCredential
      .fromStream(new FileInputStream(...))
      .createScoped(Collections.singleton("https://www.googleapis.com/auth/mapsbooking"))

    // This block of code sets the endpoint. This is what you'd change to connect to the sandbox.
    new GoogleMapsBookingAPI.Builder(...)
      .setApplicationName(...)
      .setRootUrl("https://partnerdev-mapsbooking.googleapis.com/") // you add this to change the endpoint to use partnerdev.
      .build()