Jobs
Lang laufende Operationen antworten mit 202 und einer Job-ID. Fortschritt per GET /jobs/{jobId}, Abbruch vor dem Alias-Wechsel per DELETE.
Reindex, DocSearch-Crawl, Datei-Import, Snapshot und Restore, Evaluation sowie Re-Embedding laufen nie im
HTTP-Request: Der Endpunkt legt einen Job an und antwortet 202 Accepted; ein
Scheduler-Worker übernimmt ihn unter einer Lease.
| Typ | Ausgelöst durch | Scope zum Lesen / Abbrechen |
|---|---|---|
reindex | POST /indexes/{slug}/reindex | settings:write |
crawl | POST /indexes/{slug}/docsearch/preview | documents:write |
file_import | Lauf eines Datei-Connectors | settings:write |
snapshot · 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 (gestartet mit documents:write) |
{
"index": "products",
"job_id": "clx8f2k9q0001",
"status": "queued",
"status_url": "/api/v1/jobs/clx8f2k9q0001",
"request_id": "req_…"
}GET /jobs/{jobId} → { job, request_id } mit status (queued · running ·
completed · partial · failed · cancelled), phase (Reindex: queued →
loading → copying → swapping → done), progress 0–100, attempts, result je Typ:
| Typ | result |
|---|---|
reindex | { documents, duration_ms, source, snapshot_kept } |
crawl | { pages, skipped, errors[], total, records[] } |
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 | keins — die Metriken stehen in GET /quality/runs/{runId} |
DELETE /jobs/{jobId} bricht einen Job vor swapping ab, sonst
409 JOB_NOT_CANCELLABLE. Was der Abbruch bewirkt, hängt vom Typ ab:
| Typ | Nach dem Abbruch |
|---|---|
reindex, restore | Der Worker stoppt zwischen zwei Seiten und verwirft die halb gebaute Collection; der Live-Index bleibt unberührt |
snapshot | Nichts wird veröffentlicht; Teilobjekte werden entfernt |
file_import, reembed | Stoppt zwischen Dateien / Batches; bereits Geschriebenes bleibt |
crawl | Der Crawl läuft im Hintergrund zu Ende, sein Ergebnis wird verworfen |
eval | Der Lauf wird als failed abgeschlossen |
Fremde Jobs — eines anderen Mandanten oder bei indexgebundenem Schlüssel eines anderen
Index: 404 JOB_NOT_FOUND, nie 403.
Pro Index läuft nur ein Neuaufbau gleichzeitig: Ein Reindex oder Restore, während ein
Reindex oder Restore wartet oder läuft, ergibt 409 JOB_CONFLICT mit der aktiven
job_id in details — auch mit ?sync=true. Ebenso läuft pro Index nur ein
reembed-Job gleichzeitig.
?sync=true beim Reindex blockiert wie früher und ist nur für Tests gedacht;
POST /quality/sets/{setId}/run?sync=true behält ebenso die alte blockierende
Evaluation.
Embed-Session
POST /api/v1/embed/session — tauscht einen API-Schlüssel serverseitig gegen ein kurzlebiges, reines Such-Session-Token, das sicher auf einer Seite stehen darf. Dazu die browserseitigen /embed/*-Endpunkte, die es akzeptieren.
Snapshots
Endpunkte für Index-Snapshots — anlegen, auflisten, lesen mit Download-Link, löschen und wiederherstellen.