Прямая интеграция Booking API доступна разработчикам CRM-систем, которые уже подключили более 300 компаний, и крупным сетям с собственной IT-инфраструктурой. Одиночные клубы используют готовые партнерские решения. Разработка собственного шлюза занимает около месяца. Ошибки в формате таймзоны или статусах отмены ведут к отказу в переводе на Production Яндекс Карт.
Кому доступно прямое подключение
Интеграция требует наличия у организации фактического адреса. Процесс включает реализацию спецификации, настройку вебхуков и прохождение E2E-тестирования на стороне Яндекса. Прямая интеграция целесообразна для сетей с самописными ERP, где передача данных через сторонние шлюзы невозможна из-за требований безопасности или архитектуры абонементов.
Срок интеграции зависит от корректности данных. Яндекс останавливает тестирование при редиректах с HTTPS на HTTP или возврате пустого тела вместо пустого массива для слотов.
Согласование заявки и брендинг
По умолчанию для подключения доступны только рубрики сегмента красоты. Если у вашей организации другой основной вид деятельности — уточните это при первом контакте с менеджером. При подаче заявки через менеджера в Telegram укажите основной вид деятельности. Для заявки предоставьте юридическое и маркетинговое название бренда. Логотип — черный векторный SVG без растровых элементов. Ограничение по высоте — 16 пикселей. После проверки менеджер выдает доступы к спецификации и тестовому окружению.
PERK-6A16-4E35-977A активируется по реферальной ссылке при пополнении бюджета от 10 000 ₽ (только для новых клиентов).
Перейти в Яндекс Бизнес
Требования к серверу и форматам обмена
Обмен данными идет в формате JSON. Заголовок Accept: application/json обязателен. Отсутствие заголовка или неверный формат вызывают ошибку 406. Аутентификация через JWT, токен генерируется в режиме --no-iat. Время передается в формате ISO 8601 с учетом таймзоны филиала. Необязательные поля с отсутствующими значениями исключаются из ответа. Передача null вызывает ошибки парсинга.
| Параметр | Требование спецификации |
|---|---|
| Протокол | Только HTTPS, без редиректов. Заголовок Content-Type: application/json |
| Пустой список слотов | Возврат {"availableTimeSlots»: []} |
| Время (datetime) | Timestamp ISO 8601 с timezone клуба |
| Статус отмены | cancelled |
Фиды организаций и расписание
Идентификаторы организаций (ID) передаются строками и уникальны. В фиде заполняется поле rubrics, названия филиалов должны совпадать с карточками в Яндекс Картах. Данные о тренерах передаются через ключ ресурсов: title — имя и фамилия, description — должность. Пагинация обязательна, переход по pagination.cursor не должен зацикливаться.
Синхронизация через вебхуки
Вебхуки обеспечивают двусторонний обмен. При отмене или переносе тренировки в CRM информация передается методом PUT https://partner.maps.yandex.net/booking/v1/partners/{partnerName}/{bookingId}. Статусы посещения visited или not_visited проставляются после завершения времени бронирования.
| Событие в CRM | Действие через Webhook |
|---|---|
| Клиент отменил запись | PUT запрос со статусом cancelled |
| Тренировка перенесена | PUT запрос с новым временем |
| Клиент прошел через турникет | PUT запрос со статусом visited |
E2E-тестирование
Яндекс проводит сквозное тестирование на тестовом хосте. Окружение должно содержать не менее 10 организаций (минимум 10% от сети). Автоматика проверяет создание бронирования через POST /bookings, перенос и отмену. После успешного прохождения 9 шагов теста открывается доступ к Production.
Пример интеграции сети на 12 точек
- Подача заявки: черный SVG 16px.
- Настройка тестового сервера: выгрузка 12 филиалов в фид.
- Генерация JWT-токенов с параметром
--no-iat. - Разметка тренеров:
titleиdescription. - Настройка отдачи
{"availableTimeSlots": []}для занятых часов. - Реализация вебхука
visitedпри проходе через турникет.
Пилотный запуск
После получения доступа к Production запускайте интеграцию поэтапно. Начните с 1-5 точек. В течение одной-двух недель отслеживайте логи вебхуков, дубликаты бронирований и корректность статусов. После стабилизации фид расширяется на всю сеть.
PERK-6A16-4E35-977A добавит 10 000 ₽ к бюджету рекламной кампании в Яндекс Директе или Яндекс Бизнесе. Условия: минимальное пополнение от 10 000 ₽, действует только для новых клиентов (компания раньше не запускала рекламу или последняя кампания была больше года назад), не применяется при запуске через агентство. Активировать нужно по реферальной ссылке.
Перейти в Яндекс Бизнес
Чек-лист готовности
- Пагинация
pagination.cursorиpagination.hasMoreработают корректно. - ID уникальны, строковый тип.
- Поле
rubricsзаполнено. - Названия филиалов идентичны Яндекс Картам.
- Заголовок
Accept: application/jsonнастроен. - Редиректы с HTTPS отключены.
- Переменные
datetimeсодержатtimezone. - Пустые слоты отдают
{"availableTimeSlots": []}. - Статус
cancelledнаписан без ошибок. - Значения
nullисключены из JSON. - Вебхук отправляет статус посещения.
FAQ
Что делать при отсутствии свободных тренеров?
Возвращайте {"availableTimeSlots": []}. Пустое тело или null вызовут ошибку парсинга.
Можно ли использовать растровые логотипы?
Нет. Только черный векторный SVG 16px по высоте.
Нужно ли передавать комментарии к бронированию?
Да. Поле comment обязательно во всех ответах GET и PUT /bookings/{id}.
Как быстро синхронизируются статусы отмены?
При изменении статуса бронирования, сообщите об этом Яндексу через вебхук в течение нескольких минут.
