Задачи
Долгие операции отвечают 202 с id задачи. Прогресс — GET /jobs/{jobId}, отмена до переключения алиаса — DELETE.
Перестройка индекса, краул DocSearch, импорт файлов, создание и восстановление
снимка никогда не выполняются внутри HTTP-запроса: эндпоинт ставит задачу в очередь
и отвечает 202 Accepted, воркер планировщика берёт её под lease. Если процесс
упал, lease истекает и задача подхватывается снова.
| Тип | Запускает | Scope для чтения / отмены |
|---|---|---|
reindex | POST /indexes/{slug}/reindex | settings:write |
crawl | POST /indexes/{slug}/docsearch/preview | documents:write |
file_import | запуск файлового коннектора | settings:write |
snapshot | POST /indexes/{slug}/snapshots | settings:write |
restore | POST /indexes/{slug}/snapshots/{id}/restore | settings:write |
eval | POST /quality/sets/{setId}/run | settings:write |
reembed | POST /indexes/{slug}/reembed?all=true | settings:write (запуск — с documents:write) |
{
"index": "products",
"job_id": "clx8f2k9q0001",
"status": "queued",
"status_url": "/api/v1/jobs/clx8f2k9q0001",
"request_id": "req_…"
}GET /jobs/{jobId}
Ответ { job, request_id }, где job: id, type, status (queued ·
running · completed · partial · failed · cancelled), phase (reindex:
queued → loading → copying → swapping → done; crawl: crawling → done), progress
0–100, attempts, index, documents_processed, error, result, created_at,
started_at, finished_at.
| Тип | result |
|---|---|
reindex | { documents, duration_ms, source, snapshot_kept } |
crawl | { pages, skipped, errors[], total, records[] } — первые 25 записей, в индекс ничего не пишется |
file_import | { loaded, indexed, failed, skipped, ocr_pages, files[] } |
snapshot | { snapshot_id, documents, bytes } |
restore | { snapshot_id, documents, duration_ms, snapshot_kept } |
reembed | { documents, failed, restored, embed_model, embed_model_version, duration_ms } |
eval | нет — метрики читайте из GET /quality/runs/{runId} |
DELETE /jobs/{jobId}
Отменяет задачу в статусе queued или running, ещё не дошедшую до swapping.
Иначе — 409 JOB_NOT_CANCELLABLE с details.status и details.phase. Отмена
пишется в аудит.
Что делает отмена, зависит от типа задачи:
| Тип | После отмены |
|---|---|
reindex, restore | Воркер останавливается между страницами и удаляет недостроенную коллекцию; живой индекс не затрагивается |
snapshot | Ничего не публикуется; частично записанные объекты удаляются |
file_import, reembed | Останавливается между файлами / пачками; уже записанное остаётся |
crawl | Краул доходит до конца в фоне, но его результат отбрасывается |
eval | Прогон закрывается со статусом failed |
Изоляция и конфликты
- Чужая задача (другой тенант или, для ключа с привязкой к индексу, другой индекс) —
404 JOB_NOT_FOUND, никогда не 403. - Запуск reindex или restore, пока reindex или restore в очереди или выполняется, —
409 JOB_CONFLICTс активнымdetails.job_id. Это относится и к?sync=true. Задачаreembedна индекс тоже выполняется только одна. POST /reindex?sync=true— старый блокирующий вызов (200 { index, job_id, documents, duration_ms }), только для тестов.POST /quality/sets/{setId}/run?sync=trueтак же сохраняет старую блокирующую оценку.
Сессия встраивания
POST /api/v1/embed/session — обмен API-ключа на сервере на короткоживущий токен сессии только для поиска, который безопасно класть на страницу. А также браузерные эндпоинты /embed/*, принимающие этот токен.
Снимки
Эндпоинты снимков индекса — создание, список, чтение со ссылкой на скачивание, удаление и восстановление.