Структура запроса
Запросы BatchAvailabilityLookup могут охватывать несколько сервисов для одного и того же продавца, а запрашиваемые слоты могут относиться к нескольким ресурсам и дням. Для упрощения интеграции мы рекомендуем использовать один идентификатор сервиса для всех продавцов.
Время отклика
Для запросов BatchAvailabilityLookup установлен порог задержки в 1,5 секунды, после которого ответ считается неудачным. Убедитесь, что ваша внутренняя сеть и маршрутизация DNS синхронизированы, чтобы минимизировать задержки в обработке запросов, поступающих в вашу инфраструктуру. При возникновении значительных ошибок тайм-аута ваша интеграция может быть отключена до тех пор, пока вы не устраните их.
В каждом ответе на запрос необходимо указывать фактическое состояние вашего инвентаря на данный момент, а не на момент начала процесса бронирования. Если слот забронирован, это должно быть отражено в текущих ответах.
Определения
Метод BatchAvailabilityLookup проверяет, что в процессе бронирования пользователям отображаются только текущие свободные места.
Запрос BatchAvailabilityLookup
message BatchAvailabilityLookupRequest {
// ID of the merchant.
string merchant_id = 1;
// Multiple slot times to be checked for availability. All queried times apply
// to the same merchant_id and service_id.
repeated SlotTime slot_time = 3;
reserved 2;
}
Ответ BatchAvailabilityLookup
// Response for the [ext.maps.booking.partner.v3.BatchAvailabilityLookupRequest]
// RPC with the availabilities of the appointment slots.
message BatchAvailabilityLookupResponse {
// The availabilities for the requested SlotTime entries. There must be
// exactly one slot_time_availability for each SlotTime entry in the
// [ext.maps.booking.partner.v3.BatchAvailabilityLookupRequest].
repeated SlotTimeAvailability slot_time_availability = 1;
}
SlotTime
// Identifies a Slot service_id and start time and optionally, the Slot duration
// and resources, for a specific merchant. Note that this differs from the
// definition of Slot, as it does not include merchant_id identifier.
message SlotTime {
// ID of the service. (required)
string service_id = 5;
// Start time of the appointment slot in seconds of UTC time since Unix epoch
// (required)
int64 start_sec = 1;
// Duration of the appointment slot in seconds (optional)
int64 duration_sec = 2;
// Opaque tag that identifies the availability slot and matches the value
// provided in the Availability Feed (optional)
string availability_tag = 3;
// The set of resources that specifies the appointment slot, e.g. by
// indicating the staff member and room selected by the user, or party size
// for dining slots (optional)
ResourceIds resource_ids = 4;
// Indicates whether bookings of this slot will be confirmed
// synchronously or asynchronously. (optional)
// An UNSPECIFIED value will be interpreted as synchronous.
ConfirmationMode confirmation_mode = 6;
}
Доступность по времени слота
Если слоты не найдены, верните пустой ответ. Не возвращайте ошибку 400, вместо этого можно вернуть 204 или другой код 2xx. Это подтверждает правильность получения ответа.
message SlotTimeAvailability {
// The SlotTime for which availability was checked.
SlotTime slot_time = 1;
// Whether the requested SlotTime is available
bool available = 2;
}
Примеры поиска BatchAvailabilityLookup
Загрузка страницы
When a user clicks Book Online to initiate the booking flow, a BatchAvailabilityLookup request is sent with known availability slots for the merchant. For each slot sent in the request, your Booking Server returns a response with the actual, current availability of the slot. Only available slots are presented to the user on the frontend.
Если пользователь изменит количество участников группы или выберет другую дату, может быть отправлен еще один запрос на загрузку страницы.
Запрос на загрузку страницы
{
"merchant_id" : "1234",
"slot_time" : [
{
"duration_sec" : "1800",
"resource_ids" : {
"party_size" : 2
},
"service_id" : "1000",
"start_sec" : "1606467600"
},
{
"duration_sec" : "1800",
"resource_ids" : {
"party_size" : 2
},
"service_id" : "1000",
"start_sec" : "1606469400"
},
{
"duration_sec" : "1800",
"resource_ids" : {
"party_size" : 2
},
"service_id" : "1000",
"start_sec" : "1606471200"
}
]
}
скорость загрузки страницы
{ "slot_time_availability" :
[
{
"available" : true,
"slot_time" : {
"duration_sec" : "1800",
"resource_ids" : {
"party_size" : 2 },
"service_id" : "1000",
"start_sec" : "1606467600" }
},
{
"available" : true,
"slot_time" : {
"duration_sec" : "1800",
"resource_ids" : {
"party_size" : 2 },
"service_id" : "1000",
"start_sec" : "1606469400" }
},
{
"available" : false,
"slot_time" : {
"duration_sec" : "1800",
"resource_ids" : {
"party_size" : 2 },
"service_id" : "1000",
"start_sec" : "1606471200" }
}
]
}
щелчок по слоту
Когда пользователь выбирает доступное для бронирования время, отправляется запрос BatchAvailabilityLookup для этого конкретного времени. Ваш сервер бронирования возвращает ответ с фактической текущей доступностью времени. Ожидаемый ответ — False , если это время забронировано другим пользователем Google, внутри вашей системы или в промежутке между загрузкой страницы и запросом на клик по слоту.
Запрос на клик по слоту
{
"merchant_id" : "1234",
"slot_time" : [
{
"duration_sec" : "1800",
"resource_ids" : {
"party_size" : 2
},
"service_id" : "1000",
"start_sec" : "1606467600"
}
]
}
Ответ на щелчок по слоту
{
"slot_time_availability" : [
{
"available" : true,
"slot_time" : {
"duration_sec" : "1800",
"resource_ids" : {
"party_size" : 2
},
"service_id" : "1000",
"start_sec" : "1606467600"
}
}
]
}
Если не указано иное, контент на этой странице предоставляется по лицензии Creative Commons "С указанием авторства 4.0", а примеры кода – по лицензии Apache 2.0. Подробнее об этом написано в правилах сайта. Java – это зарегистрированный товарный знак корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2026-05-13 UTC.