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

media

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

DELETE /api/media/{id}

Удалить медиафайл

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

requireMediaOwnership. Клиент: use-media.

curl -s -X DELETE http://localhost:5000/api/media/10 -b cookies.txt

Параметры

ИмяInОбязательныйОписаниеПример
idpathдаID записи media_files"10"
connect.sidcookieнетSession cookie Studio. Не нужна при Bearer PAT. Без обоих — 401."s%3Axxxx.yyyy"

Ответы

КодОписание
200Удалён
401Не авторизован
403Чужой файл

GET /api/media/{id}

Медиафайл по ID

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

requireMediaOwnership. UI почти не вызывает (список через project).

curl -s http://localhost:5000/api/media/10 -b cookies.txt

Параметры

ИмяInОбязательныйОписаниеПример
idpathдаID записи media_files"10"
connect.sidcookieнетSession cookie Studio. Не нужна при Bearer PAT. Без обоих — 401."s%3Axxxx.yyyy"

Ответы

КодОписание
200Один файл
401Не авторизован
403Чужой файл
404Не найден

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

{
"id": 10,
"projectId": 42,
"fileName": "photo.jpg",
"fileType": "photo",
"fileSize": 12345,
"mimeType": "image/jpeg",
"url": "/uploads/42/2026-08-08/photo.jpg",
"description": null,
"tags": [],
"usageCount": 0,
"storageBackend": "local",
"createdAt": "2026-08-08T12:00:00.000Z"
}

PUT /api/media/{id}

Обновить метаданные медиа

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

requireMediaOwnership. Клиент: use-media / thumbnail.

curl -s -X PUT http://localhost:5000/api/media/10 -b cookies.txt \
-H 'Content-Type: application/json' -d '{"description":"cover"}'

Параметры

ИмяInОбязательныйОписаниеПример
idpathдаID записи media_files"10"
connect.sidcookieнетSession cookie Studio. Не нужна при Bearer PAT. Без обоих — 401."s%3Axxxx.yyyy"

Ответы

КодОписание
200Обновлённый файл
401Не авторизован
403Чужой файл

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

{
"id": 10,
"projectId": 42,
"fileName": "photo.jpg",
"fileType": "photo",
"fileSize": 12345,
"mimeType": "image/jpeg",
"url": "/uploads/42/2026-08-08/photo.jpg",
"description": null,
"tags": [],
"usageCount": 0,
"storageBackend": "local",
"createdAt": "2026-08-08T12:00:00.000Z"
}

POST /api/media/{id}/file-id

Upsert Telegram file_id для токена

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

requireMediaFileOwnership. Для бот/integration; UI не вызывает.

curl -s -X POST http://localhost:5000/api/media/10/file-id -b cookies.txt \
-H 'Content-Type: application/json' -d '{"tokenId":7,"fileId":"AgAC…"}'

Параметры

ИмяInОбязательныйОписаниеПример
idpathдаID записи media_files"10"
connect.sidcookieнетSession cookie Studio. Не нужна при Bearer PAT. Без обоих — 401."s%3Axxxx.yyyy"

Ответы

КодОписание
200file_id сохранён
401Не авторизован
403Нет доступа

POST /api/media/{id}/use

Инкремент usageCount

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

requireMediaOwnership. Клиент: use-media.

curl -s -X POST http://localhost:5000/api/media/10/use -b cookies.txt

Параметры

ИмяInОбязательныйОписаниеПример
idpathдаID записи media_files"10"
connect.sidcookieнетSession cookie Studio. Не нужна при Bearer PAT. Без обоих — 401."s%3Axxxx.yyyy"

Ответы

КодОписание
200Счётчик обновлён
401Не авторизован
403Чужой файл

POST /api/media/check-url

Проверить внешний URL медиа

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

Probe доступности/типа URL. SSRF ограничен validateExternalUrl. Только global auth (без projectId). Клиент: url-downloader.

curl -s -X POST http://localhost:5000/api/media/check-url -b cookies.txt \
-H 'Content-Type: application/json' -d '{"url":"https://example.com/a.jpg"}'

Параметры

ИмяInОбязательныйОписаниеПример
connect.sidcookieнетSession cookie Studio. Не нужна при Bearer PAT. Без обоих — 401."s%3Axxxx.yyyy"

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

{
"url": "https://example.com/a.jpg"
}

Ответы

КодОписание
200Результат проверки
401Не авторизован

POST /api/media/download-url/{projectId}

Скачать один URL в медиа проекта

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

requireProjectAccess + SSRF-check. Клиент: url-downloader.

curl -s -X POST http://localhost:5000/api/media/download-url/42 -b cookies.txt \
-H 'Content-Type: application/json' -d '{"url":"https://example.com/a.jpg"}'

Параметры

ИмяInОбязательныйОписаниеПример
projectIdpathдаID проекта bot_projects"42"
connect.sidcookieнетSession cookie Studio. Не нужна при Bearer PAT. Без обоих — 401."s%3Axxxx.yyyy"

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

{
"url": "https://example.com/a.jpg"
}

Ответы

КодОписание
200Созданный media_files
401Не авторизован
403Нет доступа

POST /api/media/download-urls/{projectId}

Скачать несколько URL в медиа проекта

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

Batch download. requireProjectAccess. Клиент: url-downloader.

curl -s -X POST http://localhost:5000/api/media/download-urls/42 -b cookies.txt \
-H 'Content-Type: application/json' -d '{"urls":["https://example.com/a.jpg"]}'

Параметры

ИмяInОбязательныйОписаниеПример
projectIdpathдаID проекта bot_projects"42"
connect.sidcookieнетSession cookie Studio. Не нужна при Bearer PAT. Без обоих — 401."s%3Axxxx.yyyy"

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

{
"urls": [
"https://example.com/a.jpg"
]
}

Ответы

КодОписание
200Результаты batch
401Не авторизован
403Нет доступа

GET /api/media/project/{projectId}

Список медиафайлов проекта

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

requireProjectAccess. Клиент: use-media.

curl -s http://localhost:5000/api/media/project/42 -b cookies.txt

Параметры

ИмяInОбязательныйОписаниеПример
projectIdpathдаID проекта bot_projects"42"
connect.sidcookieнетSession cookie Studio. Не нужна при Bearer PAT. Без обоих — 401."s%3Axxxx.yyyy"

Ответы

КодОписание
200Массив media_files (+ метаданные токенов при наличии)
401Не авторизован
403Нет доступа к проекту

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

[
{
"id": 10,
"projectId": 42,
"fileName": "photo.jpg",
"fileType": "photo",
"fileSize": 12345,
"mimeType": "image/jpeg",
"url": "/uploads/42/2026-08-08/photo.jpg",
"description": null,
"tags": [],
"usageCount": 0,
"storageBackend": "local",
"createdAt": "2026-08-08T12:00:00.000Z"
}
]

GET /api/media/search/{projectId}

Поиск медиафайлов проекта

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

Query q — строка поиска. requireProjectAccess. Клиент: use-media.

curl -s 'http://localhost:5000/api/media/search/42?q=photo' -b cookies.txt

Параметры

ИмяInОбязательныйОписаниеПример
projectIdpathдаID проекта bot_projects"42"
qqueryнетСтрока поиска по имени/тегам"photo"
connect.sidcookieнетSession cookie Studio. Не нужна при Bearer PAT. Без обоих — 401."s%3Axxxx.yyyy"

Ответы

КодОписание
200Найденные файлы
401Не авторизован
403Нет доступа

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

[
{
"id": 10,
"projectId": 42,
"fileName": "photo.jpg",
"fileType": "photo",
"fileSize": 12345,
"mimeType": "image/jpeg",
"url": "/uploads/42/2026-08-08/photo.jpg",
"description": null,
"tags": [],
"usageCount": 0,
"storageBackend": "local",
"createdAt": "2026-08-08T12:00:00.000Z"
}
]

POST /api/media/upload-from-url

Сохранить картинку по URL/base64 в uploads/

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

Пишет файл в uploads/{projectId}/…. Доступ: hasProjectAccess(projectId) (раньше не проверялся — IDOR закрыт).

UI сейчас почти не вызывает.

curl -s -X POST http://localhost:5000/api/media/upload-from-url -b cookies.txt \
-H 'Content-Type: application/json' \
-d '{"projectId":42,"nodeName":"start","imageUrl":"https://example.com/a.jpg"}'

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

Параметры

ИмяInОбязательныйОписаниеПример
connect.sidcookieнетSession cookie Studio. Не нужна при Bearer PAT. Без обоих — 401."s%3Axxxx.yyyy"

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

{
"projectId": 42,
"nodeName": "start",
"imageUrl": "https://example.com/a.jpg"
}

Ответы

КодОписание
200Файл сохранён
400Нет projectId/nodeName
401Не авторизован
403Нет доступа к проекту

POST /api/media/upload-multiple/{projectId}

Загрузить до 20 файлов (multipart)

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

multipart field files (≤20). requireProjectAccess.

curl -s -X POST http://localhost:5000/api/media/upload-multiple/42 -b cookies.txt -F files=@a.jpg -F files=@b.jpg

Параметры

ИмяInОбязательныйОписаниеПример
projectIdpathдаID проекта bot_projects"42"
connect.sidcookieнетSession cookie Studio. Не нужна при Bearer PAT. Без обоих — 401."s%3Axxxx.yyyy"

Ответы

КодОписание
200Массив созданных файлов
401Не авторизован
403Нет доступа

POST /api/media/upload/{projectId}

Загрузить один файл (multipart)

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

multipart field file. requireProjectAccess. Клиент: use-media.

curl -s -X POST http://localhost:5000/api/media/upload/42 -b cookies.txt -F file=@photo.jpg

Параметры

ИмяInОбязательныйОписаниеПример
projectIdpathдаID проекта bot_projects"42"
connect.sidcookieнетSession cookie Studio. Не нужна при Bearer PAT. Без обоих — 401."s%3Axxxx.yyyy"

Ответы

КодОписание
200Созданный media_files
401Не авторизован
403Нет доступа

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

{
"id": 10,
"projectId": 42,
"fileName": "photo.jpg",
"fileType": "photo",
"fileSize": 12345,
"mimeType": "image/jpeg",
"url": "/uploads/42/2026-08-08/photo.jpg",
"description": null,
"tags": [],
"usageCount": 0,
"storageBackend": "local",
"createdAt": "2026-08-08T12:00:00.000Z"
}