Шаг 5. Обновления API в реальном времени.

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

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

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

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

Требуемые API для обновления в реальном времени

API-интерфейсы обновления в реальном времени (RTU)
Уведомление о бронировании Обязательный Отправляйте уведомления о бронировании RTU каждый раз при изменении бронирования (например, при внесении изменений или отмене).
Доступность Заменить RTU Условно требуется[1] Отправьте RTU- запросы на пакетную или одиночную замену для обновления информации о наличии товара на складе. Распространение и отражение изменений может занять несколько минут.
Торговый RTU Необязательный Отправьте Merchant RTU, если хотите внести изменения в информацию о торговце в режиме реального времени. Распространение и отражение изменений может занять несколько часов.
Сервисный RTU Необязательный Отправляйте RTU-запросы на обслуживание, если хотите вносить изменения в информацию об услугах в режиме реального времени. Распространенный вариант использования — резкие колебания цен на услуги в течение дня. Рекомендуется использовать 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

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

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

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

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

  • API бронирования Google Карт
  • API бронирования Google Карт (разработка)

Пошаговое руководство о том, как это сделать, можно найти в руководстве «Аутентификация с помощью API бронирования Карт» .

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

Мы рекомендуем выполнять RESTful-вызовы напрямую к Maps Booking API с полезными данными JSON. Подробнее см. в документации REST API .

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

Язык Ссылка для скачивания
Ява Клиентская библиотека 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()