AI Tool-API
📘 Раздел для разработчиков. Описание программного интерфейса для подключения внешних AI-сервисов.
Специальный API для AI-клиентов: AIRouter (наш прослой), ChatGPT Assistants, Claude с MCP, любой MCP-совместимый клиент.
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.