REST API

Задания

Опрашивайте фоновую работу и получайте все страницы результатов.

GET https://www.ninjabuy.com/api/v1/jobs/{id} требует Bearer-токен того же аккаунта. Отсутствующие, неизвестные и чужие задания возвращают 404.

Жизненный цикл

job.statusЗначение
queuedОжидает запуска.
runningИдёт обработка; могут появиться новые результаты.
doneОбработка завершена. Проверьте статус каждого результата.
failedЗадание завершилось с ошибкой. Прочитайте job.error, если поле есть.

job содержит id, kind, status и startedAt, а также необязательные progress (done, total), finishedAt, result и error. Временные метки — миллисекунды с начала эпохи Unix. При queued или running поле poll_after_seconds и заголовок Retry-After указывают время ожидания; начальная рекомендация — 5 секунд.

Пакеты ссылок имеют kind: "link_mints". Итоговый result сообщает total, converted, failed и необязательные campaign и label. Здесь failed считает значения, на которые получен ответ без преобразования; это не означает статус failed у всего задания. Преобразования таблиц имеют kind: "sheet_conversion"; итоговый job.result содержит счётчики и подписанный URL скачивания XLSX. Схема задания также охватывает sheet_read, picture_copy и resolution_run.

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

Ответ содержит job, results, cursor, has_more и request_id. На каждой странице до 50 результатов в порядке ввода.

  1. Опустите cursor для первой страницы (смещение 0).
  2. Обработайте results и сохраните полученный cursor, если он не равен null.
  3. Если has_more равно true, запросите следующую страницу с ?cursor=RETURNED_CURSOR.
  4. Если has_more равно false, а задание имеет статус queued или running, подождите poll_after_seconds и опросите снова с сохранённым курсором. Позже могут появиться новые результаты.
  5. Завершайте только когда задание имеет статус done или failed и все страницы результатов прочитаны (cursor равен null).

Курсор должен быть единственным параметром запроса из 1–6 цифр (от 0 до 999999). Неправильные или повторяющиеся параметры курсора возвращают 400. Одного has_more: false недостаточно для завершения. См. примеры curl.