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