Mindbox
Разное

Получение статуса импорта

Статус импорта, поставленного запросом POST https://api.mindbox.ru/v3/operations/bulk, можно получить по его идентификатору. В ответе приходят статус импорта и количество обработанных строк, строк с ошибками и строк с предупреждениями.

Общая схема запросов:

  1. Запрос импорта и получение идентификатора импорта importId.
  2. Запрос статуса импорта по importId. Повторяйте запрос, пока импорт не завершится.

Идентификатор импорта

Идентификатор импорта приходит в ответе на запрос импорта, например массового импорта клиентов, в поле data.importId.

Ответ об успешной постановке импорта

JSONОтвет
Content-Type: application/json { "status": "Success", "data": { "workItemId": <Номер задачи импорта в административной панели>, "importId": "<Идентификатор импорта, который нужно передать в запросе статуса>" } }
ПолеОписание
workItemIdНеобязательное поле, приходит не для всех типов импорта. Номер задачи импорта: по нему можно найти задачу в административной панели и посмотреть ее статус.
importIdИдентификатор импорта. Используйте его в запросе статуса импорта.

Ответ при повторном запросе

Если повторить запрос импорта с тем же ключом идемпотентности transactionId, новый импорт не ставится. В ответе приходит статус TransactionAlreadyProcessed и идентификатор первого импорта с этим transactionId.

JSONОтвет
Content-Type: application/json { "status": "TransactionAlreadyProcessed", "data": { "importId": "<Идентификатор первого импорта с этим transactionId>" } }

Поле workItemId в ответе на повторный запрос не приходит. Чтобы найти задачу импорта в административной панели, сохраните workItemId из ответа на первый запрос.

Для импортов, поставленных до появления метода, поле data в ответе на повторный запрос может не прийти.

Запрос статуса импорта

Запрос статуса импорта
GET https://api.mindbox.ru/v3/operations/bulk/status?endpointId={endpointId}&importId={importId} Authorization: SecretKey {Секретный ключ} Accept: application/json

Параметры запроса

  • endpointId — идентификатор точки интеграции проекта. Подойдет любая точка интеграции проекта, не обязательно та, через которую поставлен импорт.
  • importId — идентификатор импорта из ответа на запрос импорта, в формате GUID.

Ответ о статусе импорта

JSONОтвет
Content-Type: application/json { "status": "Success", "importStatus": "<Статус импорта>", "failureReason": null, "rowsProcessed": 1000, "rowsWithErrors": 12, "rowsWithWarnings": 3 }
ПолеОписание
importStatusСтатус импорта. Значения описаны ниже.
failureReasonПричина, по которой импорт не выполнен. Заполняется только для статуса Failed, для остальных статусов — null.
rowsProcessedКоличество обработанных строк файла.
rowsWithErrorsКоличество строк, которые не загрузились из-за ошибок.
rowsWithWarningsКоличество строк, которые загрузились с предупреждениями.

Счетчики строк приходят всегда. Для части операций импорта счетчики заполняются только после завершения импорта, поэтому пока импорт выполняется, в них может приходить 0.

Статусы импорта

СтатусОписание
InProgressИмпорт выполняется.
PausedИмпорт приостановлен из административной панели.
CompletedИмпорт завершен без ошибок. Строки с предупреждениями при этом могут быть.
CompletedWithValidationErrorsИмпорт завершен, но часть строк не загрузилась из-за ошибок.
FailedИмпорт не выполнен. Причина — в поле failureReason.

Статусы Completed, CompletedWithValidationErrors и Failed — итоговые: после них статус импорта не меняется. Подробности по строкам с ошибками и предупреждениями смотрите в отчете по импорту в административной панели.

Ответ о статусе импорта (в случае отмены)

JSONОтвет
Content-Type: application/json { "status": "Success", "importStatus": "Failed", "failureReason": "<Причина отмены>", "rowsProcessed": 4500, "rowsWithErrors": 12, "rowsWithWarnings": 3 }

Счетчики показывают строки, обработанные до остановки импорта. Для части операций импорта счетчики заполняются только после завершения, поэтому при отмене в них может прийти 0, даже если часть строк уже обработана.

Импорт может быть не выполнен:

  • если его отменили из административной панели;
  • из-за внутренней ошибки;
  • если файл импорта не удалось обработать.

Значение failureReason — текст для чтения человеком: формулировка зависит от операции импорта и языка проекта. Не используйте его для автоматической обработки, ориентируйтесь на importStatus.

Ошибки

JSONОтвет
Content-Type: application/json { "status": "ProtocolError", "errorMessage": "Import with ImportId='<importId>' not found.", "errorId": null, "httpStatusCode": 400 }
HTTP-статусerrorMessageЧто проверить
400EndpointId is required.Передайте параметр endpointId.
400ImportId is required.Передайте параметр importId.
400Invalid ImportId='…' value. Should be non-empty GUID value.importId должен быть непустым GUID.
400Import with ImportId='…' not found.Импорт с таким importId не найден в проекте точки интеграции. Проверьте importId и что endpointId относится к тому же проекту, в котором поставлен импорт.
401Incorrect secret key for endpoint '…'. или пустое телоПроверьте секретный ключ и что endpointId относится к нужному проекту.
500Internal error during processing requestВременная ошибка. Повторите запрос позже.
Last modified on