Полка документов

Полка документов — временное хранилище данных в Диадоке. Полка используется для удобства передачи и получения данных методами API.

В качестве данных на полке документов может храниться содержимое документов, бинарное представление электронной подписи, архив с результатом выполнения метода GenerateDocumentZip и другие бинарные данные. Условно все эти данные в контексте полки будем называть документами.

Преимущества полки

Некоторые методы API требуют передавать в них содержимое документов. Но содержимое может быть большим, что вызовет проблемы при его загрузке одной командой. Такая команда будет выполняться долго и даже может завершиться неуспехом.

Для решения этой проблемы используется полка документов. Она позволяет загрузить содержимое документа в хранилище небольшими частями, а после передавать в методы API ссылку на документ на полке — имя документа. Таким образом, в методы можно передавать не содержимое документа, а только его имя на полке. Это ускоряет работу метода и повышает его надежность.

Один и тот же документ, хранящийся на полке, можно использовать в разных методах. Для этого не придется в каждый метод загружать содержимое документа, достаточно будет указать его имя на полке.

Использование

Полка предоставляет возможность загружать, хранить и скачивать содержимое документов. Для этого в API реализованы следующие методы:

  • Метод ShelfUpload используется для загрузки содержимого документа на полку.

С помощью этого метода можно загрузить содержимое документа целиком или по частям и присвоить ему имя на полке. Если во время загрузки какой-то части возникнут проблемы, метод сообщит об этом.

  • Метод ShelfDownload используется для загрузки содержимого документа с полки.

Для загрузки содержимого документа нужно знать его имя на полке.

Полка является приоритетным методом передачи данных в методы API. Уже при размере содержимого документа от 500 Кб мы рекомендуем использовать полку, а не передавать его в методы напрямую.

Пространства имен полки

Обращение к документам на полке осуществляется с помощью имени документа. Имя присваивается документу при вызове метода ShelfUpload. Впоследствии это имя используется в других методах API.

Пространство имен документов на полке делится на локальное и публичное. Доступ к локальному пространству есть только у текущего пользователя, к публичному — у любого пользователя.

По умолчанию при загрузке на полку имя документа будет публичным. То есть если вызвать метод ShelfUpload с параметром nameOnShelf = filename, то имя загруженного документа будет публичным: public/filename.

Чтобы загрузить документ с локальным именем, при вызове метода ShelfUpload укажите в качестве параметра nameOfShelf значение __userId__/filename. Строка __userId__ в этом случае сообщает сервису, что текущий пользователь загружает данные в свое локальное пространство; ее не нужно заменять каким-либо значением. Документ будет загружен на полку с именем {userId}/filename, значение {userId} будет взято из текущего авторизационного токена. Доступ к таким файлам можно получить с помощью метода ShelfDownload, указав параметр nameOnShelf = __userId__/filename.

Методы PostMessage и PostMessagePatch всегда трактуют переданное имя документа как локальное, поэтому в этих методах имя файла нужно указывать без префикса userId.

Ограничения

  • Нельзя загрузить на полку содержимое документа размером больше 400 Мб.

  • Загруженный документ хранится на полке 7 дней, после чего автоматически удаляется.

Представление в API

Методы для работы с полкой:
  • ShelfUpload — загружает данные на полку.

  • ShelfDownload — загружает данные с полки.