# Statusy i odpytywanie

Source: https://docs.askaniela.com/pl/reference/statuses/

Dłuższe operacje (zadania, audyty witryn, eksporty audytów) mają te same statusy maszynowe i ten sam sposób
informowania, kiedy zapytać ponownie.

## Status zadania i audytu

`status` w `POST /v1/jobs` (202), `GET /v1/jobs/{id}`, `POST /v1/audits/site` (202), `GET /v1/audits/{id}`
(na górnym poziomie i w `progress.status`) oraz `audit.status` w `export.json` to jeden enum, `JobStatus`:

| Wartość | Znaczenie |
|---|---|
| `queued` | Przyjęte, czeka na wolny worker. |
| `running` | Strony są sprawdzane. |
| `pausing` | Zlecono pauzę; strony w toku się kończą, nowe nie startują. |
| `paused` | Wstrzymane; wznów, żeby kontynuować. |
| `cancelling` | Zlecono zatrzymanie; strony w toku są rozliczane. |
| `cancelled` | Zatrzymane; sprawdzone strony zostają, niesprawdzone wracają na saldo. |
| `done` | Wszystkie strony przetworzone (część mogła się nie udać, patrz `failed`). |
| `failed` | Wszystkie strony z błędem albo zadanie nie mogło ruszyć. |

Statusy końcowe: `done`, `failed`, `cancelled`. Dopóki zadanie lub audyt nie jest zakończone (`queued`, `running`,
`pausing`, `paused`, `cancelling`), `GET` wysyła nagłówek `Retry-After` (sekundy, 15-300, z szacunku pozostałego
czasu). Wstrzymane (`paused`) samo nie ruszy - kontynuuje dopiero po wznowieniu. Odpowiedź `202` przyjmująca zadanie
albo audyt wysyła `Retry-After: 15` na pierwsze odpytanie.

## Intencja wyszukiwania

`POST /v1/intent` odpowiada `200`, gdy fraza jest już gotowa, i `202`, dopóki ma status `queued` albo `running`
(treść: raport intencji z polem `status`, wartości `queued`, `running`, `done`, `failed` - te same słowa co w
`JobStatus`), z nagłówkiem `Retry-After: 5`. Odpytuj `GET /v1/intent/{id}`. `POST /v1/intent/batch` (i `/csv`)
odpowiada `202` z `Retry-After: 5`.

## Eksporty przygotowywane w tle

`GET /v1/audits/{id}/export.json`, `export.zip` i `export.pdf` liczy worker, a wynik trafia do cache. Status
eksportu to osobny enum, `ExportStatus`: `ready` (dostajesz plik), `pending` (`202`) albo `failed` (`503`,
`export_unavailable` / `pdf_unavailable`).

Treść `202` (`Pending`) jest taka sama dla każdego eksportu:

```json
{"status": "pending", "retry_after_s": 7, "url": "/v1/audits/aud_.../export.json?lang=en", "retry_after": 7}
```

- `retry_after_s` - ile sekund odczekać; ta sama wartość jest w nagłówku `Retry-After`.
- `url` - pod ten adres zapytaj ponownie (ścieżka Twojego żądania z parametrami eksportu `lang` i `detail`).
- `retry_after` - starsza nazwa `retry_after_s`, zostaje dla istniejących klientów.

Przeglądarka (`Accept: text/html`) zamiast JSON dostaje stronę, która odświeża się sama.
