Получение статуса импорта
Статус импорта, поставленного запросом POST https://api.mindbox.ru/v3/operations/bulk, можно получить по его идентификатору. В ответе приходят статус импорта и количество обработанных строк, строк с ошибками и строк с предупреждениями.
Общая схема запросов:
- Запрос импорта и получение идентификатора импорта
importId. - Запрос статуса импорта по
importId. Повторяйте запрос, пока импорт не завершится.
Идентификатор импорта
Идентификатор импорта приходит в ответе на запрос импорта, например массового импорта клиентов, в поле data.importId.
Ответ об успешной постановке импорта
Ответ
| Поле | Описание |
|---|---|
| workItemId | Необязательное поле, приходит не для всех типов импорта. Номер задачи импорта: по нему можно найти задачу в административной панели и посмотреть ее статус. |
| importId | Идентификатор импорта. Используйте его в запросе статуса импорта. |
Ответ при повторном запросе
Если повторить запрос импорта с тем же ключом идемпотентности transactionId, новый импорт не ставится. В ответе приходит статус TransactionAlreadyProcessed и идентификатор первого импорта с этим transactionId.
Ответ
Поле workItemId в ответе на повторный запрос не приходит. Чтобы найти задачу импорта в административной панели, сохраните workItemId из ответа на первый запрос.
Для импортов, поставленных до появления метода, поле data в ответе на повторный запрос может не прийти.
Запрос статуса импорта
Запрос статуса импорта
Параметры запроса
- endpointId — идентификатор точки интеграции проекта. Подойдет любая точка интеграции проекта, не обязательно та, через которую поставлен импорт.
- importId — идентификатор импорта из ответа на запрос импорта, в формате GUID.
Ответ о статусе импорта
Ответ
| Поле | Описание |
|---|---|
| importStatus | Статус импорта. Значения описаны ниже. |
| failureReason | Причина, по которой импорт не выполнен. Заполняется только для статуса Failed, для остальных статусов — null. |
| rowsProcessed | Количество обработанных строк файла. |
| rowsWithErrors | Количество строк, которые не загрузились из-за ошибок. |
| rowsWithWarnings | Количество строк, которые загрузились с предупреждениями. |
Счетчики строк приходят всегда. Для части операций импорта счетчики заполняются только после завершения импорта, поэтому пока импорт выполняется, в них может приходить 0.
Статусы импорта
| Статус | Описание |
|---|---|
| InProgress | Импорт выполняется. |
| Paused | Импорт приостановлен из административной панели. |
| Completed | Импорт завершен без ошибок. Строки с предупреждениями при этом могут быть. |
| CompletedWithValidationErrors | Импорт завершен, но часть строк не загрузилась из-за ошибок. |
| Failed | Импорт не выполнен. Причина — в поле failureReason. |
Статусы Completed, CompletedWithValidationErrors и Failed — итоговые: после них статус импорта не меняется. Подробности по строкам с ошибками и предупреждениями смотрите в отчете по импорту в административной панели.
Ответ о статусе импорта (в случае отмены)
Ответ
Счетчики показывают строки, обработанные до остановки импорта. Для части операций импорта счетчики заполняются только после завершения, поэтому при отмене в них может прийти 0, даже если часть строк уже обработана.
Импорт может быть не выполнен:
- если его отменили из административной панели;
- из-за внутренней ошибки;
- если файл импорта не удалось обработать.
Значение failureReason — текст для чтения человеком: формулировка зависит от операции импорта и языка проекта. Не используйте его для автоматической обработки, ориентируйтесь на importStatus.
Ошибки
Ответ
| HTTP-статус | errorMessage | Что проверить |
|---|---|---|
| 400 | EndpointId is required. | Передайте параметр endpointId. |
| 400 | ImportId is required. | Передайте параметр importId. |
| 400 | Invalid ImportId='…' value. Should be non-empty GUID value. | importId должен быть непустым GUID. |
| 400 | Import with ImportId='…' not found. | Импорт с таким importId не найден в проекте точки интеграции. Проверьте importId и что endpointId относится к тому же проекту, в котором поставлен импорт. |
| 401 | Incorrect secret key for endpoint '…'. или пустое тело | Проверьте секретный ключ и что endpointId относится к нужному проекту. |
| 500 | Internal error during processing request | Временная ошибка. Повторите запрос позже. |