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

project-versions

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

GET /api/projects/{id}/versions

Список версий проекта

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

Метаданные снимков без snapshot (экономия трафика). authorName — из Telegram или «ИИ-агент» при authorKind=agent.

Auth: cookie / Bearer PAT + requireProjectAccess.

Клиент: VersionsPanel / useProjectVersions; MCP db_list_versions.

Полный снимок — GET …/versions/{versionId}.

curl -s http://localhost:5000/api/projects/42/versions -b cookies.txt

Параметры

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

Ответы

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

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

[
{
"id": 7,
"projectId": 42,
"label": "Добавил приветствие",
"authorId": 123456789,
"authorName": "Иван @ivan",
"authorKind": null,
"kind": "manual",
"createdAt": "2026-08-11T12:00:00.000Z"
},
{
"id": 6,
"projectId": 42,
"label": null,
"authorId": null,
"authorName": "ИИ-агент",
"authorKind": "agent",
"kind": "auto",
"createdAt": "2026-08-11T11:30:00.000Z"
}
]

DELETE /api/projects/{id}/versions/{versionId}

Удалить одну версию

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

Необратимо удаляет запись истории. Broadcast versions-changed.

Auth: cookie / Bearer PAT + requireProjectAccess.

Клиент: UI не вызывает. MCP db_delete_version / deleteVersionInDb.

curl -s -X DELETE http://localhost:5000/api/projects/42/versions/7 \
-b cookies.txt

Параметры

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

Ответы

КодОписание
200Результат удаления
400Невалидный id / versionId
401Нет session cookie и Bearer PAT
403Нет доступа к проекту
404Версия не найдена или чужой projectId
500Ошибка БД

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

{
"deleted": true
}

GET /api/projects/{id}/versions/{versionId}

Версия со snapshot

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

Полная запись включая тяжёлый snapshot (project.data). versionId должен принадлежать проекту, иначе 404.

Auth: cookie / Bearer PAT + requireProjectAccess.

Клиент: diff (useProjectVersionSnapshot); MCP restore читает snapshot отсюда и пишет через PUT /api/projects/{id}.

curl -s http://localhost:5000/api/projects/42/versions/7 -b cookies.txt

Параметры

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

Ответы

КодОписание
200Версия со snapshot
400Невалидный id / versionId
401Нет session cookie и Bearer PAT
403Нет доступа к проекту
404Версия не найдена или чужой projectId
500Ошибка БД

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

{
"id": 7,
"projectId": 42,
"label": "Добавил приветствие",
"authorId": 123456789,
"authorName": "Иван @ivan",
"authorKind": null,
"kind": "manual",
"createdAt": "2026-08-11T12:00:00.000Z",
"snapshot": {
"sheets": [
{
"id": "main",
"name": "Основной",
"nodes": [],
"edges": []
}
],
"activeSheetId": "main"
}
}

POST /api/projects/{id}/versions/{versionId}/restore

Откатить проект к версии

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

Пишет version.snapshot в project.data, sync _content, Redis bot:table_updated. Тело не требуется.

Auth: cookie / Bearer PAT + requireProjectAccess.

Клиент: VersionsPanel / useRestoreProjectVersion.

MCP: этот URL не вызывает — читает GET snapshot и делает PUT /api/projects/{id} (live + новый чекпоинт отката).

curl -s -X POST http://localhost:5000/api/projects/42/versions/7/restore \
-b cookies.txt

Параметры

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

Ответы

КодОписание
200Обновлённый проект после отката
400Невалидный id / versionId
401Нет session cookie и Bearer PAT
403Нет доступа к проекту
404Версия или проект не найдены
500Сбой отката

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

{
"id": 42,
"ownerId": 123456789,
"name": "Мой бот",
"description": "Приветственный бот",
"data": {
"sheets": [
{
"id": "main",
"name": "Основной",
"nodes": [],
"edges": []
}
]
},
"botToken": null,
"sessionId": null,
"userDatabaseEnabled": 1,
"sortOrder": 0,
"adminIds": null,
"createdAt": "2026-08-01T10:00:00.000Z",
"updatedAt": "2026-08-11T12:00:00.000Z",
"isArchivedForMe": false
}

POST /api/projects/{id}/versions/commit

Создать ручной чекпоинт версии

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

Снимок текущего project.data с kind=manual. Всегда создаётся (без дедупликации). Broadcast versions-changed.

Тело: { message } — непустая строка после trim.

Auth: cookie / Bearer PAT + requireProjectAccess.

Клиент: CommitForm / useCreateProjectCommit. MCP-тула commit нет.

curl -s -X POST http://localhost:5000/api/projects/42/versions/commit \
-b cookies.txt -H 'Content-Type: application/json' \
-d '{"message":"Добавил приветствие"}'

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

Параметры

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

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

{
"message": "Добавил приветствие"
}

Ответы

КодОписание
201Созданная версия (со snapshot)
400Пустой message или невалидный id
401Нет session cookie и Bearer PAT
403Нет доступа к проекту
404Проект не найден
500Сбой создания чекпоинта

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

{
"id": 7,
"projectId": 42,
"label": "Добавил приветствие",
"authorId": 123456789,
"authorName": "Иван @ivan",
"authorKind": null,
"kind": "manual",
"createdAt": "2026-08-11T12:00:00.000Z",
"snapshot": {
"sheets": [
{
"id": "main",
"name": "Основной",
"nodes": [],
"edges": []
}
],
"activeSheetId": "main"
}
}

POST /api/projects/{id}/versions/prune

Массово удалить версии (prune)

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

Необратимая чистка по фильтру. Broadcast versions-changed.

Тело (все поля опциональны): keep — сколько последних оставить; kindauto|manual; authorKindagent|user.

Auth: cookie / Bearer PAT + requireProjectAccess.

Клиент: UI нет. MCP db_prune_versions. Авто-prune при save (keep≈30) — отдельный серверный путь, не этот API.

curl -s -X POST http://localhost:5000/api/projects/42/versions/prune \
-b cookies.txt -H 'Content-Type: application/json' \
-d '{"keep":30,"kind":"auto"}'

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

Параметры

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

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

{
"keep": 30,
"kind": "auto"
}

Ответы

КодОписание
200Число удалённых версий
400Невалидный ID проекта
401Нет session cookie и Bearer PAT
403Нет доступа к проекту
500Ошибка БД

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

{
"deleted": 12
}