📚 BusinessPlatform Docs

AI Tool-API

📘 Раздел для разработчиков. Описание программного интерфейса для подключения внешних AI-сервисов.

Специальный API для AI-клиентов: AIRouter (наш прослой), ChatGPT Assistants, Claude с MCP, любой MCP-совместимый клиент.

📹 ВидеоЗа 35 сек: AI-клиент вызывает `POST /get_availability`, получает свободные слоты, затем `POST /create_appointment` создаёт запись; показываем как действие всплывает в аудит-логе кабинета как `ai.tool.create_appointment`.
AI-запросPOST /api/ai/<tool>
АвторизацияBearer-токен scope ai
Выполнение toolатомарно, re-check capacity
Ответ{ ok, data } или { ok, error }
Аудитaudit_events, actor_type=ai

Base

https://businessplatform.ru/api/ai

Auth

Bearer-токен со scope ai. Получается через Control Panel или создаётся через seeded config-token.

Формат ответа

{ "ok": true, "data": { ... } }
// или
{ "ok": false, "error": { "code": "...", "message": "..." } }

Список инструментов

GET /tools

Возвращает список всех tools (для MCP-discovery).

POST /list_catalog

{
  "businessId": "...",
  "itemType": "service",
  "search": "стрижка",
  "onlyActive": true
}

POST /get_availability

{
  "businessId": "...",
  "catalogItemId": "...",
  "date": "2026-05-01",       // или dateFrom + dateTo для диапазона
  "staffId": null
}

Возвращает массив слотов с available, capacity, bookedCount, remainingCapacity.

POST /create_order

{
  "businessId": "...",
  "clientPhone": "+79161234567",
  "clientName": "Иван",
  "items": [
    { "catalogItemId": "...", "quantity": 2 }
  ],
  "conversationId": "airouter-chat-123"
}

POST /create_appointment

{
  "businessId": "...",
  "catalogItemId": "...",
  "clientPhone": "+79161234567",
  "clientName": "Анна",
  "staffId": null,              // опционально
  "startAt": "2026-05-01T14:00:00Z",
  "conversationId": "airouter-chat-123",
  "customFields": { "plate_number": "А777АА77" }
}

Атомарная защита от двойной брони — транзакция с SELECT ... FOR UPDATE на бизнесе + re-check capacity.

POST /init_payment

{
  "businessId": "...",
  "orderId": "..." | "appointmentId": "..." | "amount": 1500,
  "description": "Оплата стрижки",
  "returnUrl": "https://business.ru/ok",
  "provider": "yookassa"
}

Возвращает confirmationUrl — редиректите клиента туда.

POST /onboard_business

Полноценное создание нового бизнеса из AI-диалога:

{
  "ownerEmail": "owner@example.com",
  "name": "Салон Glamour",
  "businessType": "Services",
  "category": "salon",
  "presetKey": "salon",
  "publish": true,
  "workingHours": "{...}",
  "parallelCapacity": 3,
  "categories": [{ "name": "Стрижки", "sortOrder": 10 }],
  "items": [
    { "name": "Женская стрижка", "type": "service", "price": 3500, "durationMinutes": 75, "categoryName": "Стрижки" }
  ],
  "staff": [
    { "name": "Елена", "role": "Стилист" }
  ]
}

POST /update_catalog

Создать или обновить позицию каталога. Без itemId — создание; с itemId — обновление.

Audit

Каждый вызов tool пишет в audit_events с actor_type='ai' и event_type='ai.tool.<name>'. Владелец бизнеса видит все AI-действия в Control Panel.

📷 СкриншотРаздел «MCP-токены» в кабинете, откуда AI-клиент получает Bearer-токен со scope `ai`: список токенов, кнопка «Создать токен» и колонка «Последнее использование».
Выпуск токена для AI-клиента в разделе «MCP-токены»