Ena oblika na vseh poteh: type, code, message, param, doc_url, request_id in errors.
Prvi račun v 6 korakih
- Vsak odgovor 4xx in 5xx vrne { "error": { type, code, message, param?, doc_url, request_id, errors? } }.
- Po type razvejite logiko, da presodite, ali je ponovni poskus smiseln, code pa preslikajte v svoj sistem.
- param kaže na problematično polje, npr. lines.0.vat_rate; errors[] se pojavi, kadar jih je več.
- Ob vsaki napaki zabeležite request_id — z njim natanko to zahtevo najdemo v naših dnevnikih.
Kaj je API 4invoices
json
{
"error": {
"type": "invalid_request_error",
"code": "validation_failed",
"message": "Datele trimise nu sunt valide.",
"param": "lines.0.vat_rate",
"doc_url": "https://4invoices.net/ro/api-dezvoltatori#errors",
"request_id": "req_8a893f2f33d4472da8d6e144",
"errors": [
{ "param": "lines.0.vat_rate", "message": "VAT rate must be a percent (21), not a fraction", "type": "value_error" }
]
}
}https://api.4invoices.net/v1 · https://api.4invoices.net/v1/openapi.json
Napake
| Stanje | Tip | Koda |
|---|---|---|
| 401 | authentication_error | missing_bearer_token |
| 401 | authentication_error | unauthorized |
| 403 | permission_error | forbidden |
| 404 | not_found_error | not_found |
| 409 | conflict_error | idempotency_key_reuse |
| 409 | conflict_error | idempotency_in_progress |
| 422 | invalid_request_error | validation_failed |
| 422 | invalid_request_error | invalid_json_number |
| 502 | upstream_error | upstream_error |
| 503 | service_unavailable_error | service_unavailable |
Pogoste napake
- rate_limit_error in oba tipa upstream je mogoče ponoviti. authentication_error, permission_error in invalid_request_error se s ponovnim poskusom ne odpravijo.
- 404 se vrne tudi za id, ki pripada drugemu najemniku: nikoli ne potrdimo, da tuji podatki obstajajo.
- 409 idempotency_key_reuse pomeni, da ste ključ znova uporabili z drugačnim telesom. Ne silite: preverite, kaj je že izdano.
- doc_url v vsaki napaki kaže neposredno na razdelek o napakah v tej dokumentaciji.
- Sporočila so v romunščini, ker API služi romunskemu davčnemu postopku; message ne razčlenjujte, razvejite po code.
Vprašanja in odgovori za razvijalce
Ali se lahko med različicami zanesem na vrednosti code?
Da, code je stabilen in obstaja prav zato. message je besedilo za ljudi in se lahko preoblikuje.
Kaj naj storim ob 502 ali 503?
Poskusite znova z eksponentnim odlogom. To so napake upstream ali začasne nedosegljivosti, ne težave z vašo zahtevo.
Zakaj 422 in ne 400 za neveljavne podatke?
422 označuje pravilno oblikovan, a pomensko neveljaven JSON — na primer vat_rate kot ulomek. 400 je rezerviran za napačno oblikovano zahtevo.