Наличие товара в вашей системе меняется в течение дня из-за новых бронирований, отмен и изменений в расписании у ваших продавцов. 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сервера бронирования возвращает инвентарь, который не соответствует фактическому инвентарю.
Более подробную информацию можно найти на следующих ресурсах:
- Учебное пособие: как структурировать обновления в реальном времени
- Пример клиента Java для обновлений в реальном времени с использованием вызовов RESTful
- Справочная страница API обновления инвентаря
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()