Задания и пагинация
Долгие операции возвращают 202. Клиент опрашивает статус с backoff и отдельно читает cursor-paginated результат.
Жизненный цикл
PREPARINGQUEUEDRUNNINGCOMPLETEDВозможны также CANCEL_REQUESTED, CANCELLED, PARTIALLY_COMPLETED, FAILED и ACTION_REQUIRED. Поле stage уточняет текущий этап, но terminal определяется по status.
Polling
Запрос статусаbash
curl "https://api.seonorita.ru/api/v1/projects/<projectId>/jobs/<jobId>" \
-H "Authorization: Bearer $SEO_API_TOKEN"- Используйте интервалы 1, 2, 4, затем 5–10 секунд.
- Учитывайте Retry-After и
retryAt, если они присутствуют. - Не запускайте новую команду только потому, что ответ задержался.
Cursor-pagination
Следующая страницаhttp
GET /projects/<projectId>/jobs/<jobId>/result?limit=200
GET /projects/<projectId>/jobs/<jobId>/result?limit=200&cursor=<nextCursor>Cursor непрозрачный: не декодируйте и не изменяйте его. Завершайте чтение, когда page.hasNext=false. Не смешивайте cursors разных заданий или фильтров.
Отмена и retry
Cancel cooperative: уже оплаченный запрос провайдера может завершиться и сохраниться. Повторяйте только неуспешные элементы через специальный retry endpoint, если он существует для операции.