В некоторых блоках SpectrumData источники в качестве входных данных запроса могут принимать двоичные файлы (например, фотографии лица или сканы документов). Для этого при отправке запроса на генерацию отчёта необходимо передать в нём уникальный идентификатор, который присваивается файлу при его загрузке в хранилище сервиса SpectrumData.
Запрос сохранения файла в хранилище следует отправлять с помощью метода POST. Для скачивания файла из хранилища необходимо использовать метод GET.
Для загрузки файлов в систему используются специальные типы отчётов, которые, как и обычные отчёты, имеют квоты. Квота определяет разрешения на количество загрузок за период (день, месяц и всё время). Если хотя бы один из лимитов исчерпан, файл не будет сохранён.
Получив запрос на сохранение файла, API проверяет квоту и помещает объект в хранилище. Идентификатор объекта в хранилище возвращается в ответе API.
Загружаемые в сервис файлы не проверяются на уникальность. Это означает, что при загрузке файла, который уже был отправлен ранее, API вернёт новый идентификатор.
Максимальный размер загружаемого файла — 5 Мбайт.
Загруженный объект хранится в системе и доступен клиенту в течение 30 дней. Скачивать файлы может любой пользователь домена, в котором этот файл был загружен.
Изменение баланса происходит только при загрузке объекта в сервис. Операция получения файла из хранилища бесплатна.
Для загрузки файла отправьте POST-запрос к /user/assets/upload/{report_type_uid}
. В параметре report_type_uid
укажите нужный тип отчёта, в --form
— полный путь к загружаемому файлу. Также укажите в заголовке тип тела запроса: Content-Type: multipart/form-data
.
curl -X POST \
--url https://b2b-api.spectrumdata.ru/b2b/api/v1/user/assets/upload/test_report_type@test_domain \
--header 'Authorization: AR-REST dGVzdF91c2VyQHRlc3RfZG9tYWluOjE0ODM2MzQ3MjM6OTk5OTk5OTk5OjN3ZzgyRXVUd2VjMjkvT3ZRN215eUE9PQ==' \
--header 'Content-Type: multipart/form-data; boundary=---011000010111000001101001' \
--form 'file=@C:\path\photo.png'
После получения запроса API проверяет баланс пользователя, сохраняет файл и отправляет пользователю уникальный идентификатор этого файла.
Ответ API включает массив data[]
, содержащий:
uid
,make_mode_log
.Если при загрузке файла возникла ошибка, API вернёт HTTP-код ошибки и её описание в теле ответа.
{
"state": "ok",
"size": 1,
"version": "2.0",
"stamp": "2022-04-12T13:21:45.065Z",
"data": [
{
"uid": "67af46c589e54d419c0d9693856d6aab@test_domain",
"make_mode_log": {
"make_mode": "TRANSACTIONAL_CONDITIONAL_NON_LOCK",
"need_transaction": true,
"balance_map": {
"TOTAL": {
"quote_init": 10,
"quote_up": 100,
"quote_use": 24
},
"MONTH": {
"quote_init": 0,
"quote_up": 0,
"quote_use": 0
},
"DAY": {
"quote_init": 0,
"quote_up": 0,
"quote_use": 0
}
},
"need_lock": true,
"need_balance_calculate": true
}
}
]
}
Для того, чтобы получить объект из хранилища, используйте GET-запрос к /user/assets/download/{uid}
. В {uid}
укажите уникальный идентификатор объекта, который был получен при сохранении объекта.
{primary.fa-info} Запрос на получение объекта не изменяет баланс. Вы можете обращаться к объекту неограниченное количество раз.
Файл с указанным идентификатором API возвращает в теле ответа. Заголовки ответа содержат данные о файле: тип контента, размер и наименование.
При отсутствии в хранилище необходимого файла API вернёт HTTP-код 500
с типом ошибки DataSeekObjectError
.
curl -X GET \
--url http://b2b-api.spectrumdata.ru/b2b/api/v1/user/assets/download/67af46c589e54d419c0d9693856d6aab@test_domain \
--header 'Authorization: AR-REST dGVzdF91c2VyQHRlc3RfZG9tYWluOjE0ODM2MzQ3MjM6OTk5OTk5OTk5OjN3ZzgyRXVUd2VjMjkvT3ZRN215eUE9PQ=='
Server: nginx
Date: Fri, 15 Apr 2022 06:54:02 GMT
Content-Type: image/png
Content-Length: 85457
Connection: keep-alive
Vary: Origin
Content-Disposition: attachment; filename=photo.png