Шаг 5. Внедрение обновлений API в режиме реального времени.

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

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

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

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

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

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

Наличие Заменить API RTU

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

  • Пользователь бронирует бронирование в вашей системе, поэтому слот доступности больше не доступен.
  • Продавец меняет их доступность в вашей системе.
  • Пользователь бронирует бронирование через 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
  • API бронирования Google Maps (для разработчиков)

Пошаговое руководство о том, как это сделать, можно найти в руководстве «Аутентификация с помощью Maps Booking 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 перейдите по этим ссылкам: Клиент API Ruby и Библиотека аутентификации Ruby .

Выполнять авторизованные вызовы 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()