Асинхронные действия

Часть действий в Integration API являются асинхронными.

Это означает, что запрос на выполнение действия ставит задачу для интеграционного модуля Продукта и возвращает идентификатор задачи. Интеграционный модуль через некоторое время обрабатывает задачу и выдает результат обработки.

Таким образом, для выполнения асинхронного действия нужно:

  • поставить задачу;

  • дождаться завершения ее обработки;

  • запросить результаты обработки.

Чтобы дождаться завершения обработки задачи, внешняя система может периодически запрашивать статус обработки по идентификатору поставленной задачи. В ответ на запрос возвращается JSON, который содержит статус задачи и, опционально, сообщение об ошибке:

{
    "TaskStatus": 0,                        // статус обработки задачи
    "TaskHandlingErrorMessage": "string"    // сообщение об ошибке, если задача обработана с ошибкой
}

Возможные значения статуса обработки:

  • 0 - задача запланирована к обработке;

  • 1 - задача успешно обработана;

  • 2 - задача обработана с ошибкой;

  • 3 - черновик задачи запланирован к обработке;

  • 4 - обработка задачи поставлена на паузу;

  • 5 - обработка задачи отменена.

Сразу после постановки задача может оказаться в статусах 0 или 3. Любое другое значение статуса внешняя система должна воспринимать как завершение обработки задачи и прекращать ожидание.

Поле TaskHandlingErrorMessage заполняется только в случае, если задача была обработана с ошибкой. Поле TaskStatus при этом равно 2.

Примечание

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