Hibák
A hibakódra ágazz el, sosem az üzenetre. A tábla az OpenAPI-dokumentumból készül.
Hibák
| Státusz | Kód | Jelentés |
|---|---|---|
| 400 | invalid_request | Sémahiba. A details.path a hibás mezőre mutat. |
| 401 | unauthorized | Hiányzó vagy ismeretlen API-kulcs. |
| 402 | quota_exceededRetry-After | A havi kvóta elfogyott. A Retry-After megadja, hány másodperc van a hónap átfordulásáig. |
| 403 | key_revoked | A kulcs létezik, de nem használható: vagy vissza lett vonva, vagy a fiók Engine API-előfizetése már nem aktív. A message megmondja, melyikről van szó. |
| 404 | not_found | Nincs ilyen útvonal — ezt kapod akkor is, ha a helyes útvonalat rossz metódussal hívod. |
| 409 | idempotency_conflictRetry-After | Csak Idempotency-Key fejléccel: a kulcsot már egy másik kéréshez használták (idempotency_conflict — használjon új kulcsot), vagy az első kérés még fut vele (idempotency_in_progress — a Retry-After után küldje újra, és megkapja a válaszát). Sosem kerül hívásba. |
| 409 | idempotency_in_progressRetry-After | Csak Idempotency-Key fejléccel: a kulcsot már egy másik kéréshez használták (idempotency_conflict — használjon új kulcsot), vagy az első kérés még fut vele (idempotency_in_progress — a Retry-After után küldje újra, és megkapja a válaszát). Sosem kerül hívásba. |
| 413 | too_large | A bemenet átlép egy korlátot (lásd a Korlátokat). |
| 429 | busyRetry-After | Épp betelt a kapacitás, vagy — bármely kulccsal hitelesített úton — a címedről egy percen belül túl sok ismeretlen API-kulcs érkezett. A Retry-After másodpercben; ez soha nem számít bele a kvótádba. |
| 500 | internal | Váratlan hiba, vagy nem érhető el az azonosítási backend (a kérések fail-closed módon elbuknak). |
| 503 | service_unavailable | A kért motor most nem szolgálható ki — a nesting motor, vagy az aszinkron max motor. A max esetében két oka lehet, és a message megmondja, melyik: a szint nincs beépítve ebbe a deploymentbe, vagy be van építve, de a jobokat megoldó worker nem válaszol. Fail-closed a hívás lefoglalása előtt, tehát semmibe nem kerül. |
| 504 | solve_timeout | A számítás túllépte a kemény időkorlátot. A téglalap-módokon ezt a proxy kényszeríti ki; a /v1/optimize/nest esetében a motor a saját, rövidebb büdzséjét, és solve_timeout kóddal, a szokásos borítékban válaszol. A proxy által feladott hívás nem terheli a keretet. |
A hiba törzse
Minden hiba, amelyet maga a motor állít elő, ugyanezt a borítékot használja. Az error értékére ágazz, mert az stabil kód; a message-re soha, mert a szövegezése verziók között változhat. A details az invalid_request esetén van jelen, ahol a path nevezi meg a hibás mezőt, és a too_large esetén, ahol a max és a got adja meg a korlátot, illetve azt, amit beküldtél.
Kivétel a méretkorlát feletti kéréstörzs: ilyenkor helyettük maxBytes érkezik. Ismeretlen engine esetén az available is megjelenik: az ezen a telepítésen elfogadott engine-azonosítók.
HTTP/1.1 400 Bad Request
Content-Type: application/json; charset=utf-8
{
"error": "invalid_request",
"message": "parts[0].h: must be greater than 0",
"details": { "path": "parts[0].h" }
}HTTP/1.1 402 Payment Required
Retry-After: 41400
Content-Type: application/json; charset=utf-8
{ "error": "quota_exceeded", "message": "monthly quota exhausted" }- A 402 és a 429 is Retry-After fejlécet visz, másodpercben. A 402-nél a kvóta visszaállásáig számol vissza, ami a következő hónap 1-jén 00:00 UTC; a 429-nél rövid várakozás, és a 429 soha nem fogyaszt kvótát — a lefoglalt hívást visszaadjuk.
- A nyilvános demókulcs elutasításai ugyanezt a borítékot használják: a hatókörén kívül (nesting, max motor, usage, jobs, import, a méretkorlátja fölötti munka) 403 key_revoked, details.reason "demo_scope"; a sebességkorlátjánál 429 busy, details.reason "demo_rate_limit" és details.limit. Mindkettő hordozza a details.testKeyUrl-t, ahol ingyenes tesztkulcs hozható létre, és minden demóválaszon ott az X-CutOptim-Demo: true fejléc.
- Az útvonal-hiba not_found kóddal válaszol; ez a kód szándékosan nincs a fenti listában, mert a router állítja elő, nem az API-szerződés. 404-et kapsz és nem 405-öt, ha az útvonal helyes, de a metódus nem: mind a négy optimalizáló végpont csak POST-ot fogad.
- A téglalap-módokon az 504 a reverse proxytól jön, nem a motortól, ezért a törzse a proxyé, nem ez a JSON-boríték; egyetlen job az alábbi bemeneti korlátokon belül bőven alatta marad, de több, egyszerre érkező legnehezebb job a várólistán túllépheti — a proxy által feladott hívás pedig nem terheli a keretet.
A /v1/optimize/nest a kivétel: az a számítás alfolyamat, saját büdzsével, amit szándékosan a proxy korlátja alatt tartunk — ott a timeout ezt a borítékot használja, solve_timeout kóddal.
Leállt egy motor? Az állapotoldal élőben mutatja a weboldal, az Engine API, a nesting motor és az async max motor állapotát: Szolgáltatás állapota ↗