[POST] .../v1/chatmessage/addfile
Загружает новый файл в системную папку чата для последующего использования в сообщении.
Метод поддерживает два формата запроса:
application/json для обратной совместимости, когда файл передается в data как Base64.multipart/form-data для потоковой загрузки бинарного файла без Base64 в клиентском запросе.Входные параметры
Для application/json:
| Название | Тип данных | Обязательность | Описание |
|---|---|---|---|
| chat_id | String | Обязательный | UUID чата |
| name | String | Обязательный | Отображаемое имя файла |
| extension | String | Обязательный | Расширение файла без точки |
| data | String | Обязательный | Содержимое файла в Base64, допускается формат data:*;base64,... |
| width | Int32 | Необязательный | Ширина визуального файла в пикселях |
| height | Int32 | Необязательный | Высота визуального файла в пикселях |
| duration_ms | Int64 | Необязательный | Длительность audio/video файла в миллисекундах |
Для multipart/form-data:
| Название | Тип данных | Обязательность | Описание |
|---|---|---|---|
| chat_id | String | Обязательный | UUID чата |
| name | String | Необязательный | Имя файла. Если не передано, сервер возьмет его из имени загружаемого файла |
| extension | String | Необязательный | Расширение без точки. Если не передано, сервер возьмет его из имени загружаемого файла |
| file | File | Обязательный | Бинарный поток файла |
| width | Int32 | Необязательный | Ширина визуального файла в пикселях |
| height | Int32 | Необязательный | Высота визуального файла в пикселях |
| duration_ms | Int64 | Необязательный | Длительность audio/video файла в миллисекундах |
Ограничения и проверки
chat_id обязателен всегда.name, extension, data.multipart/form-data обязателен file; name и extension можно не передавать, если они есть в имени файла.name не длиннее 200 символов.extension не длиннее 10 символов.width и height передаются только парой и должны быть больше 0.duration_ms не может быть отрицательным.media_type; поле возвращается в модели File.file_max_filesize; при превышении возвращается ошибка 1024 (file.size).1222 (disk_space).multipart/form-data содержимое файла передаётся бинарным потоком без Base64.file_add (655) и доступ к чату.chat_message_add (685).Lead/Deal/Ticket/Task, загрузка файла требует доступ к связанной сущности и участие текущего пользователя в этой сущности.Task-чатов используются права project_task_select, project_task_manage_all; crm_manage_all на task-чаты не распространяется.closed = true) загрузка файла отклоняется с ошибкой 1220.chat_manage_all (688) запись файла доступна только участнику чата.chat_manage_all (688) участником чата быть не обязательно (только для обычных чатов).Channel файл может загрузить участник User/Staff или пользователь с правом chat_manage_all (688).folder_id и access_level извне не принимаются и задаются сервером.access_level = system.Пример запроса
{
"chat_id": "6f6fdb2f-7d0b-4c34-b6fd-1fbcf40d37ef",
"name": "photo.jpg",
"extension": "jpg",
"data": "/9j/4AAQSkZJRgABAQ...",
"width": 1280,
"height": 720,
"duration_ms": null
}
Пример multipart-запроса
curl -X POST "https://example.com/v1/chatmessage/addfile" \
-H "Authorization: Bearer <token>" \
-F "chat_id=6f6fdb2f-7d0b-4c34-b6fd-1fbcf40d37ef" \
-F "width=1280" \
-F "height=720" \
-F "file=@photo.jpg"
Выходные параметры
| Название | Тип данных | Описание |
|---|---|---|
| result.file_id | Int64 | Идентификатор созданного файла в CommonFile |
Пример ответа
{
"ok": true,
"result": {
"file_id": 12051
}
}