Байты файла по подписанной ссылке
https://api.souz.ai/v1/files/{id}/{filename}Ссылка из url файла; ключ не нужен — подпись и есть авторизация. Работают HEAD,
Range, If-None-Match; ?download=1 отдаёт как вложение. Хост — media.souz.ai,
CORS *: файл можно встраивать на любые страницы.
Параметры пути
idstringобязательноId файла.
^file_"file_9f8e7d6c5b4a"filenamestringобязательноПараметры запроса
expinteger · int64обязательноДо какого момента (unix-секунды) действует ссылка.
sigstringобязательноПодпись ссылки.
downloadstring1 — отдать как вложение (Content-Disposition: attachment).
1Заголовки
RangestringЧасть файла, bytes=начало-конец — ответ 206.
Ответы
200Байты файла; тип — тот, что в `content_type` файла.
application/jsonapplication/octet-streamaudio/mpegaudio/wavimage/jpegimage/pngimage/webpvideo/mp4video/quicktime206Запрошенный `Range`.
application/jsonapplication/octet-streamaudio/mpegaudio/wavimage/jpegimage/pngimage/webpvideo/mp4video/quicktime304Не изменилось с прошлого раза: `If-None-Match` совпал с `ETag`.
400Запрос отклонён; `error.detail[]` называет поля и допустимые значения.
application/json403Нельзя: у ключа не тот вид (модели запускает API-ключ, аккаунт — ключ управления), у роли
Нельзя: у ключа не тот вид (модели запускает API-ключ, аккаунт — ключ управления), у роли
участника нет права или подпись ссылки на файл не сходится. detail[].reason говорит,
что именно: requires_api_key, requires_management_key, cabinet_only (только в
кабинете), insufficient_role (в allowed — роли, которым можно), not_key_author
(секрет ключа открывает только тот, кто его создал).
application/json404Нет такого объекта у этого аккаунта.
application/json410Срок жизни файла вышел, байты удалены.
application/json