Перейти к основному содержимому

project-messages

Эндпоинтов: 4

GET /api/projects/{id}/messages/activity

График активности сообщений

Авторизация: Cookie (connect.sid) или Bearer PAT

Точки для графика в Analytics / Stats: сколько сообщений за интервалы времени.

granularity (предпочтительно): 1m / 5m / 1h — короткие окна с заполнением пустых слотов нулями; 1w / 1d / 7d / 30d — дневные агрегаты (не зависят от удаления старых сообщений).

period (legacy, если нет granularity): 7d / 30d / 90d (по умолчанию 30d).

split=true — отдельно входящие (от пользователей) и исходящие (от бота), иначе одно поле count.

Опционально tokenId — только этот бот.

Auth: cookie или Bearer PAT + доступ к проекту.

Клиент: use-messages-activity → Analytics / Stats.

curl -s 'http://localhost:5000/api/projects/42/messages/activity?granularity=1h&split=true&tokenId=7' \
-b cookies.txt

Параметры

ИмяInОбязательныйОписаниеПример
idpathдаЧисловой ID проекта"42"
tokenIdqueryнетОпциональный ID токена бота. Без него — все токены."7"
granularityqueryнет"1h"
periodqueryнет"30d"
splitqueryнетtrue — разбивка incoming/outgoing"true"
AuthorizationheaderнетAuthorization: Bearer mcp_… — PAT агента (альтернатива cookie)"Bearer mcp_xxxxxxxx"
connect.sidcookieнетSession cookie после login. Не нужна при Authorization: Bearer mcp_…"s%3Axxxx.yyyy"

Ответы

КодОписание
200Ряд точек активности
401Нет session cookie и Bearer PAT
403Нет доступа к проекту
500Ошибка БД

Пример ответа 200

[
{
"date": "2026-08-11T13:00:00.000Z",
"count": 4
},
{
"date": "2026-08-11T14:00:00.000Z",
"count": 12
}
]

GET /api/projects/{id}/messages/all

Список сообщений проекта

Авторизация: Cookie (connect.sid) или Bearer PAT

Лента всех сообщений бота в проекте (системная таблица «Сообщения» в Database). Текст обрезается до 100 символов; полный диалог — через …/users/{userId}/messages.

Новые сверху. Можно ограничить токеном (tokenId), пагинация: limit (по умолчанию 200) и offset.

Auth: cookie или Bearer PAT + доступ к проекту.

Клиент: панель Database → системные таблицы (use-system-tables).

curl -s 'http://localhost:5000/api/projects/42/messages/all?limit=50&tokenId=7' \
-b cookies.txt

Параметры

ИмяInОбязательныйОписаниеПример
idpathдаЧисловой ID проекта"42"
tokenIdqueryнетОпциональный ID токена бота. Без него — все токены."7"
limitqueryнетЛимит записей (default 200)"200"
offsetqueryнетСмещение пагинации (default 0)"0"
AuthorizationheaderнетAuthorization: Bearer mcp_… — PAT агента (альтернатива cookie)"Bearer mcp_xxxxxxxx"
connect.sidcookieнетSession cookie после login. Не нужна при Authorization: Bearer mcp_…"s%3Axxxx.yyyy"

Ответы

КодОписание
200Массив сообщений
401Нет session cookie и Bearer PAT
403Нет доступа к проекту
500Ошибка БД

Пример ответа 200

[
{
"id": 501,
"userId": "123456789",
"messageType": "bot",
"messageText": "Привет! Чем могу помочь?",
"chatType": "private",
"chatId": "123456789",
"createdAt": "2026-08-11T15:00:00.000Z"
},
{
"id": 500,
"userId": "123456789",
"messageType": "user",
"messageText": "/start",
"chatType": "private",
"chatId": "123456789",
"createdAt": "2026-08-11T14:59:00.000Z"
}
]

DELETE /api/projects/{projectId}/messages/{messageId}

Удалить сообщение из чата и базы

Авторизация: Cookie (connect.sid) или Bearer PAT

Удаляет одно сообщение из панели Диалогов: сначала в Telegram, при успехе — из нашей БД, затем обновление UI по WebSocket.

Нужен Telegram message id у записи. Если Telegram отклонил запрос — запись в БД не трогаем (400).

Query tokenId — каким ботом слать deleteMessage (иначе дефолтный/первый токен проекта).

Auth: cookie или Bearer PAT + доступ к проекту.

Клиент: диалоги → use-delete-message.

curl -s -X DELETE 'http://localhost:5000/api/projects/42/messages/501?tokenId=7' \
-b cookies.txt

Параметры

ИмяInОбязательныйОписаниеПример
projectIdpathдаID проекта"42"
messageIdpathдаID сообщения в bot_messages"501"
tokenIdqueryнетID токена бота; иначе default/first токен проекта"7"
AuthorizationheaderнетAuthorization: Bearer mcp_… — PAT агента (альтернатива cookie)"Bearer mcp_xxxxxxxx"
connect.sidcookieнетSession cookie после login. Не нужна при Authorization: Bearer mcp_…"s%3Axxxx.yyyy"

Ответы

КодОписание
200Удалено в Telegram и БД
400Неверные ID / нет telegramMessageId / нет токена / Telegram reject
401Нет session cookie и Bearer PAT
403Нет доступа к проекту или message.projectId mismatch
404Сообщение не найдено
500Внутренняя ошибка

Пример ответа 200

{
"success": true,
"deletedFromTelegram": true
}

PATCH /api/projects/{projectId}/messages/{messageId}

Редактировать текст сообщения бота

Авторизация: Cookie (connect.sid) или Bearer PAT

Правит исходящее сообщение бота в диалоге: сначала в Telegram, потом у нас в БД, UI обновляется по WebSocket.

Только сообщения бота (не пользователя) с известным Telegram id. Тело: обязательный messageText; опционально buttons / buttonsPerRow (пустой массив кнопок снимает клавиатуру).

Query tokenId — каким ботом слать edit (иначе дефолтный/первый токен проекта).

Auth: cookie или Bearer PAT + доступ к проекту.

Клиент: диалоги → use-edit-message.

curl -s -X PATCH 'http://localhost:5000/api/projects/42/messages/501?tokenId=7' \
-H 'Content-Type: application/json' \
-d '{"messageText":"Обновлённый текст"}' \
-b cookies.txt

Тело запроса: EditMessageRequest

Параметры

ИмяInОбязательныйОписаниеПример
projectIdpathдаID проекта"42"
messageIdpathдаID сообщения в bot_messages"501"
tokenIdqueryнетID токена бота; иначе default/first токен проекта"7"
AuthorizationheaderнетAuthorization: Bearer mcp_… — PAT агента (альтернатива cookie)"Bearer mcp_xxxxxxxx"
connect.sidcookieнетSession cookie после login. Не нужна при Authorization: Bearer mcp_…"s%3Axxxx.yyyy"

Пример тела запроса

{
"messageText": "Обновлённый текст сообщения",
"buttons": [],
"buttonsPerRow": 0
}

Ответы

КодОписание
200Отредактировано в Telegram и БД
400Пустой текст / не bot / нет telegramMessageId / нет токена / Telegram reject
401Нет session cookie и Bearer PAT
403Нет доступа к проекту или message.projectId mismatch
404Сообщение не найдено
500Внутренняя ошибка

Пример ответа 200

{
"success": true,
"editedInTelegram": true
}