С помощью API можно загружать файлы в файловое хранилище Saby Space для использования в документообороте.
Метод запроса: POST
Адрес запроса: https://disk.saby.ru/disk/api/v1/{folderId}
Возможные значения folderId:
- mydocs — Мои документы;
- commondocs — Общие документы;
- temp — временный раздел, используется для последующей передачи файла в систему электронного документооборота (ЭДО) или электронной отчетности (ЭЛО). В этом разделе файлы и папки хранятся 24 часа, затем автоматически удаляются;
- {uuid} — идентификатор пользовательской папки в Saby Space.
Запросы к https://disk.saby.ru/disk/api/v1/ без folderId запрещены.
Процесс загрузки зависит от размера файла.
Выполняется HTTP-запросом POST по ссылке на папку, в которой требуется создать файл.
Запрос
Поле | Описание |
Заголовки запроса | |
User-Agent | Название системы интеграции |
Content-Type | Тип содержимого файла (MIME) меняется в зависимости от загружаемого типа файла |
Content-Disposition | Должен иметь вид: |
Content-Length | Размер файла (размер тела запроса в байтах) |
X-SBISSessionId | Идентификатор сессии, который вернулся в результате аутентификации. Если заголовок или cookie с идентификационными данными не переданы, сервер вернет ошибку «401» |
Тело запроса | |
Бинарные данные файла | |
Результат
Поле | Описание |
Заголовки результата | |
HTTP | Код ответа HTTP-сервера |
Date | Дата создания документа |
Content-Type | Тип содержимого ответа |
Content-Length | Длина тела ответа |
ETag | Хэш файла |
Last-Modified | Дата и время последнего изменения файла |
X-UNIQ-ID | Идентификатор запроса |
Тело результата: json с полями | |
status | HTTP-код ответа. При успешном выполнении вернется код «201» |
href | Ссылка на загруженный файл |
relativePath | Относительная ссылка на файл |
fileid | Идентификатор файла в Saby Space |
versionid | Идентификатор редакции файла в Saby Space |
range-md5 | Контрольная сумма содержимого |
malware | Результат проверки файла антивирусом. Если проверка не готова, вернется null |
Примеры
Если размер файла превышает 75 Мб, его необходимо загружать по частям. Загружайте части файла строго по порядку. Если загрузка оборвалась, отправьте POST-запрос, чтобы получить у сервера статус. Сервер ответит, сколько байт уже загружено. Продолжайте загрузку с этого места.
Загрузка включает три этапа:
- Подготовка к загрузке — выполняется один раз. Вы резервируете место для файла в хранилище.
- Загрузка части файла — выполняется до тех пор, пока не будет загружено все содержимое.
- Завершение загрузки — выполняется один раз, чтобы закрыть сессию и подтвердить создание файла.
Ограничения для загрузки файла более 75 Мб:
- максимальный размер каждой части не более 75 Мб (78643200 байт);
- минимальный размер каждой части, кроме завершающей — 1 Мб (1048576 байт);
- размер завершающей части больше 0, но не больше максимального;
- размер каждой части, кроме завершающей, кратен 256 КБ (262144 байт).
Подготовка к загрузке
Запрос
Зарезервируйте в хранилище место для файла POST-запросом.
Поле | Описание |
Заголовки запроса | |
User-Agent | Название системы интеграции |
Content-Type | Content-Type: application/json; charset=utf-8 |
Content-Disposition | Должен иметь вид: |
Content-Length | Размер тела запроса в байтах |
X-SBISSessionId и/или Cookie | Идентификатор сессии, который вернулся в результате аутентификации. Если заголовок или cookie с идентификационными данными не переданы, сервер вернет ошибку «401» |
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-Type: application/json; charset=utf-8 |
Content-Disposition | Должен иметь вид: |
Content-Length | Размер части файла (размер тела запроса в байтах) |
X-SBISSessionId и/или Cookie | Идентификатор сессии, который вернулся в результате аутентификации. Если заголовок или cookie с идентификационными данными не переданы, сервер вернет ошибку «401» |
Тело запроса | |
Бинарные данные добавляемой части файла | |
Результат
Поле | Описание |
Заголовки результата | |
HTTP | Код ответа HTTP-сервера |
Date | Дата создания части документа |
Content-Type | Тип содержимого ответа |
Content-Length | Длина тела ответа |
X-UNIQ-ID | Идентификатор запроса |
Тело результата: json с полями | |
status | HTTP-код ответа. При успешном выполнении вернется код «200» |
md5 | MD5-хэш загруженной части файла |
size | Размер получаемых данных |
Примеры
Завершение загрузки
Для завершения создания файла используйте POST-запрос. Адрес запроса — значение поля «href» из ответа на первый POST-запрос.
Запрос
Поле | Описание |
Заголовки запроса | |
User-Agent | Название системы интеграции |
Content-Type | Content-Type: application/json; charset=utf-8 |
Content-Length | Должен иметь вид: |
Content-Length | Должен иметь вид: |
X-SBISSessionId и/или Cookie | Идентификатор сессии, который вернулся в результате аутентификации. Если заголовок или cookie с идентификационными данными не переданы, сервер вернет ошибку «401» |
Тело запроса | |
Всегда пустое | |
Результат
Поле | Описание |
Заголовки результата | |
HTTP | Код ответа HTTP-сервера |
Date | Дата создания документа |
Content-Type | Тип содержимого ответа |
Content-Length | Длина тела ответа |
ETag | Хэш файла |
Last-Modified | Дата и время последнего изменения файла |
X-UNIQ-ID | Идентификатор запроса |
Тело результата: json с полями | |
status | HTTP-код ответа. При успешном выполнении вернется код «201» |
href | Ссылка на файл. Содержит домен из HTTP-запроса, который создал файл |
relativePath | Ссылка на файл без учета домена (относительная ссылка) |
fileid | Идентификатор файла в Saby Space |
versionid | Идентификатор редакции в Saby Space |
range-md5 | Хэш MD5 бинарных данных файла |