Начало работы

Сценарий записи

Проверенная последовательность запросов интегратора: локации и услуги, свободные слоты, создание записи, перенос, завершение или отмена.

Ниже приведён сценарий, проверенный на тестовом аккаунте 26.09.2026 (версия v12.113.0). Все запросы содержат заголовки Authorization: Bearer … и Workspace: …, базовый адрес https://my.booknow.ru/api/public/v2.

1. Справочники

GET /locations → филиалы (uuid, название, адрес, часовой пояс). Дальше по локации: GET /locations/{locationUuid}/services и GET /locations/{locationUuid}/staffers. Услуга требуется для запроса слотов и создания записи, сотрудник — если не используется автоматическое распределение.

2. Свободные слоты

GET /locations/{locationUuid}/time-slots?service_uuid=…&range_start=2026-09-29&range_end=2026-10-03 (не больше 90 дней). Ответ по дням:

{ "today": "2026-09-26", "timezone": "Europe/Moscow", "currency": "RUB",
  "dates": [ { "date": "2026-09-29",
    "slots": [ { "start": "09:00", "start_formatted": 32400, "end": "12:30", "end_formatted": 45000, "quantity": 1, "price": 0, "price_formatted": "0,00 ₽" } ],
    "intervals": [ { "start": "09:00", "start_formatted": 32400, "end": "18:00", "end_formatted": 64800 } ] } ] }

start и end — местное время локации (или timezone из запроса), *_formatted — то же в секундах от начала суток. GET …/time-slots/next возвращает ближайшие дни со свободным временем без указания диапазона.

3. Создание записи

POST /bookings. Время передаётся в UTC: слот 09:00 по Москве это "reserved_on": "2026-09-29T06:00:00Z".

{ "reserved_on": "2026-09-29T06:00:00Z",
  "location_uuid": "28929ff4-…", "service_uuid": "ebc2b7ab-…", "staffer_uuid": "e4cba138-…",
  "customer_phone": "+79990000001", "customer_first_name": "Тест",
  "booking_comment": "Комментарий клиента", "booking_callback": false, "source": "site" }

Ответ 201 с полной записью: uuid, start_time (UTC), start_time_local, status, customer, order. Клиент определяется по номеру телефона; если такого клиента нет, он создаётся.

Набор обязательных полей зависит от настроек формы виджета аккаунта: если поле формы отмечено как обязательное, API тоже потребует его. На тестовом аккаунте таким полем был booking_callback. В этом случае возвращается ответ 422 с именем поля в errors.

4. Изменения

  • PUT /bookings/{uuid}/reschedule с { "reserved_on": "2026-09-30T06:00:00Z" } — перенос; вебхуки booking-updated и booking-rescheduled.
  • PUT /bookings/{uuid}/status с { "status_uuid": "…" } — один из статусов GET /bookings/statuses.
  • POST /bookings/{uuid}/public_notes с { "value": "текст" } — публичная заметка; вебхук при этом не отправляется.
  • PUT /bookings/{uuid}/staffer, PUT /bookings/{uuid}/services — смена сотрудника и услуги.

5. Завершение или отмена

PUT /bookings/{uuid}/status/complete с { "account_uuid": "…", "paid_amount": 0 } — визит состоялся, оплата зачисляется на счёт из GET /locations/{locationUuid}/accounts; вебхук booking-succeeded.

PUT /bookings/{uuid}/status/cancel с необязательной причиной { "cancel_reason": "canceled" } — допустимые значения canceled, didnt_come, postponed, wrong_order, spam, other, abandoned, rescheduled, not_confirmed; вебхук booking-canceled.

Полные схемы запросов и ответов — в API reference.

Copyright © 2026