С помощью API можно обновить файлы в файловом хранилище Saby Space.
Метод запроса: PUT
Адрес запроса: https://disk.saby.ru/disk/api/v1/{fileId}
Процесс зависит от размера файла.
Выполняется HTTP-запросом PUT по ссылке на обновляемый файл.
Запрос
Поле | Описание |
Заголовки запроса | |
Content-Type | Тип содержимого файла (MIME) меняется в зависимости загружаемого типа файла |
User-Agent | Наименование системы интеграции |
Content-Disposition | Должен иметь вид: |
Content-Length | Размер файла (размер тела запроса в байтах) |
X-SBISSessionId | Идентификатор сессии, который вернулся в результате аутентификации. Если заголовок или cookie с идентификационными данными не переданы, сервер вернет ошибку «401» |
X-Object-Filname | Заголовок указывается, если одновременно с изменением содержимого требуется изменить имя файла. |
Тело запроса | |
Новые бинарные данные файла | |
Результат
При успешном выполнении запроса вернется JSON со ссылкой на обновленный файл. Иначе — JSON с описанием ошибки.
Поле | Описание |
Заголовки результата | |
HTTP | Код ответа HTTP-сервера |
Date | Дата создания документа |
Content-Type | Тип содержимого ответа |
Content-Length | Длина тела ответа |
ETag | Хэш файла |
Last-Modified | Дата время последнего изменения файла |
X-UNIQ-ID | Идентификатор запроса |
Тело результата: json с полями | |
status | HTTP-код ответа. При успешном выполнении вернется код «200» |
href | Ссылка на файл |
relativePath | Относительная ссылка на файл |
fileid | Идентификатор файла в Saby Space |
versionid | Идентификатор редакции файла в Saby Space |
range-md5 | Хеш MD5 бинарных данных файла |
malware | Результат проверки файла антивирусом. Если проверка не готова, вернется null |
Примеры
Если размер файла превышает 75 Мб, его необходимо обновлять по частям. Загружайте обновленные части файла строго по порядку. Если загрузка оборвалась, отправьте POST-запрос, чтобы получить у сервера статус. Сервер ответит, сколько байт уже загружено. Продолжайте загрузку с этого места.
Обновление включает три этапа:
- Подготовка к обновлению — выполняется один раз. Вы резервируете место для файла в хранилище.
- Загрузка части файла — выполняется до тех пор, пока не будет загружено все содержимое, кроме последней части.
- Завершение обновления — выполняется один раз для последней части, чтобы закрыть сессию и подтвердить создание файла.
Ограничения:
- максимальный размер каждой части не более 75 Мб (78643200 байт);
- минимальный размер каждой части, кроме завершающей — 1 Мб (1048576 байт);
- размер завершающей части больше 0, но не больше максимального;
- размер каждой части, кроме завершающей, кратен 256 КБ (262144 байт).
Подготовка к обновлению
Зарезервируйте в хранилище место для файла POST-запросом.
Поле | Описание |
Заголовки запроса | |
User-Agent | Наименование системы интеграции |
Content-Type | Должен иметь вид: |
Content-Disposition | Должен иметь вид: |
Content-Length | Размер тела запроса в байтах |
X-SBISSessionId | Идентификатор сессии, который вернулся в результате аутентификации. Если заголовок или cookie с идентификационными данными не переданы, сервер вернет ошибку «401» |
X-Object-Filname | Заголовок указывается, если одновременно с изменением содержимого требуется изменить имя файла. |
X-Upload-Content-Type | Тип содержимого файла (MIME) |
X-Upload-Content-Length | Размер файла в байтах (должен содержать размер всего загружаемого файла, а не только одной части) |
Тело запроса | |
JSON со ссылкой на обновляемый файл в формате: {href: ссылка на создаваемый файл} | |
Результат
Поле | Описание |
Заголовки результата | |
HTTP | Код ответа HTTP-сервера |
Date | Дата создания документа |
Content-Type | Тип содержимого ответа |
Content-Length | Длина тела ответа |
X-UNIQ-ID | Идентификатор запроса |
Тело результата: json с полями | |
status | HTTP-код ответа. При успешном выполнении вернется код «200» |
href | Ссылка, которая используется при формировании запросов на добавление частей к файлу |
Примеры
Загрузить часть файла
Загрузите файл на диск частями с помощью PUT-запросов. Укажите:
- в заголовке «Content-Length» каждого запроса укажите размер части в байтах;
- в теле запроса бинарные данные части файла;
- адрес запроса — значение поля «href» из ответа на первый POST-запрос и добавьте к нему строку «&part=new».
Запрос
Поле | Описание |
Заголовки запроса | |
User-Agent | Наименование системы интеграции |
Content-Type | Всегда должен иметь вид: |
Content-Length | Размер части файла (размер тела запроса в байтах) |
X-SBISSessionId | Идентификатор сессии, который вернулся в результате аутентификации. Если заголовок или cookie с идентификационными данными не переданы, сервер вернет ошибку «401» |
Тело запроса | |
Бинарные данные добавляемой части файла | |
Результат
Поле | Описание |
Заголовки результата | |
HTTP | Код ответа HTTP-сервера |
Date | Дата создания документа |
Content-Type | Тип содержимого ответа |
Content-Length | Длина тела ответа |
ETag | Хэш добавленой части файла |
X-UNIQ-ID | Идентификатор запроса |
Тело результата: json с полями | |
status | HTTP-код ответа. При успешном выполнении вернется код «200» |
md5 | Хеш MD5 бинарных данных файла |
size | Размер добавленной части файла |
Примеры
Завершение обновления
Для завершения обновления файла используйте PUT запрос. Адрес запроса — значение поля «href» из ответа на первый POST-запрос.
Запрос
Поле | Описание |
Заголовки запроса | |
User-Agent | Наименование системы интеграции |
Content-Type | Content-Type:application/octet-stream |
Content-Length | Должен иметь вид: |
X-SBISSessionId | Идентификатор сессии, который вернулся в результате аутентификации. Если заголовок или cookie с идентификационными данными не переданы, сервер вернет ошибку «401» |
Тело запроса | |
Всегда пустое | |
Результат
Поле | Описание |
Заголовки результата | |
HTTP | Код ответа HTTP-сервера |
Date | Дата создания документа |
Content-Type | Тип содержимого ответа |
Content-Length | Длина тела ответа |
ETag | Хэш файла |
Last-Modified | Дата время последнего изменения файла |
X-UNIQ-ID | Идентификатор запроса |
Тело результата: json с полями | |
status | HTTP-код ответа. При успешном выполнении вернется код «200» |
href | Ссылка на файл. Содержит домен из HTTP-запроса, который изменил файл |
relativePath | Ссылка на файл без учета домена (относительная ссылка) |
fileid | Идентификатор файла в Saby Space |
versionid | Идентификатор редакции в Saby Space |
range-md5 | Хэш MD5 бинарных данных файла |