Перейти к содержимому

Загрузить PDF-файлы для извлечения данных

POST
/upload
curl --request POST \
--url https://passports.dev.techcon-ml.ru/upload \
--header 'Content-Type: multipart/form-data' \
--form files=example

Принимает один или несколько PDF через multipart/form-data. При наличии заголовка Accept: application/json возвращает JSON со списком задач. Иначе — редирект 303 на главную страницу. Повторно загруженные файлы возвращают результат из кэша мгновенно (status=SUCCESS).

Media typemultipart/form-data
Body_upload_file_upload_post
object
files
required
Files

PDF-файлы для обработки

Array<string>

JSON со списком созданных задач (только при заголовке Accept: application/json)

Media typeapplication/json
UploadResponse
object
tasks
required
Tasks
Array<object>
UploadTaskItem
object
id
required
Id

UUID созданной задачи

string
status
required
Status

PENDING (новый файл) или SUCCESS (из кэша)

string
Example
{
"tasks": [
{
"id": "3f1a2b4c-...",
"status": "PENDING"
},
{
"id": "7e9d0c1a-...",
"status": "SUCCESS"
}
]
}

Редирект на / для браузерных запросов

Не авторизован или токен истёк

Media typeapplication/json
ApiErrorResponse
object
ok
Ok
boolean
error
required
ApiErrorDetail
object
code
required
Code

Машиночитаемый код ошибки (UPPER_SNAKE_CASE)

string
message
required
Message

Человекочитаемое описание ошибки

string
Example
{
"ok": false
}

Validation Error

Media typeapplication/json
HTTPValidationError
object
detail
Detail
Array<object>
ValidationError
object
loc
required
Location
Array
msg
required
Message
string
type
required
Error Type
string
input
Input
ctx
Context
object
Examplegenerated
{
"detail": [
{
"loc": [
"example"
],
"msg": "example",
"type": "example",
"input": "example",
"ctx": {}
}
]
}

Превышен лимит запросов (20/час с одного IP)

Media typeapplication/json
ApiErrorResponse
object
ok
Ok
boolean
error
required
ApiErrorDetail
object
code
required
Code

Машиночитаемый код ошибки (UPPER_SNAKE_CASE)

string
message
required
Message

Человекочитаемое описание ошибки

string
Example
{
"ok": false
}