Медиафайлы

API для загрузки, скачивания и удаления файлов. Файлы хранятся в S3-совместимом хранилище (SeaweedFS).

Загрузка файла

POST /media/upload?channelId={channelId}

Требуется членство в канале и право ATTACH_FILES.

Content-Type: multipart/form-data

Параметр

Тип

Описание

channelId

UUID (query)

ID канала

file

binary (form)

Файл для загрузки

Максимальный размер файла: 50 МБ (настраивается через MAX_FILE_SIZE_MB).

Ответ (201):

{ "id": "media-uuid", "channelId": "channel-uuid", "fileName": "photo.png", "contentType": "image/png", "sizeBytes": 1048576, "uploadedAt": "2025-01-15T10:30:00Z" }

Ошибки:

Код

Описание

FORBIDDEN

Не участник канала / нет права ATTACH_FILES

FILE_TOO_LARGE

Файл превышает максимальный размер

BAD_REQUEST

Файл не передан

Скачивание файла

GET /media/{mediaId}

Аутентификация не требуется.

Ответ (200): бинарные данные файла с заголовком Content-Disposition: attachment; filename="...".

Ошибки: NOT_FOUND — файл не найден.

Удаление файла

DELETE /media/{mediaId}

Удалить может загрузивший пользователь или пользователь с правом MANAGE_MESSAGES.

Ответ (200): SuccessResponse.

Ошибки: NOT_FOUND, FORBIDDEN.