Jedan oblik na svakoj ruti: type, code, message, param, doc_url, request_id i errors.
Vaša prva faktura u 6 koraka
- Svaki 4xx i 5xx vraća { "error": { type, code, message, param?, doc_url, request_id, errors? } }.
- Odlučite po type da li ima smisla ponoviti pokušaj, i mapirajte code u svoj sistem.
- param pokazuje na polje koje je problem, npr. lines.0.vat_rate; errors[] se pojavljuje kada ih ima više.
- Zabilježite request_id uz svaku grešku — omogućava nam da nađemo tačan zahtjev u našim logovima.
Šta 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
Greške
| Status | Tip | Kod |
|---|---|---|
| 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 |
Česte greške
- rate_limit_error i dva upstream tipa se mogu ponoviti. authentication_error, permission_error i invalid_request_error se ponovnim pokušajem ne popravljaju.
- Za ID koji pripada drugom klijentu takođe se vraća 404: nikada ne potvrđujemo da tuđi podaci postoje.
- 409 idempotency_key_reuse znači da ste ponovo upotrijebili ključ sa drugačijim tijelom. Ne forsirajte: provjerite šta je već izdato.
- doc_url svake greške vodi direktno na odjeljak o greškama ove dokumentacije.
- Poruke su na rumunskom jer API služi rumunskom fiskalnom toku; ne parsirajte message, odlučujte po code.
Pitanja i odgovori za programere
Mogu li se osloniti na vrijednosti code među verzijama?
Da, code je stabilan i postoji upravo za to. message je tekst za ljude i može se preformulisati.
Šta da radim kod 502 ili 503?
Ponovite pokušaj sa eksponencijalnim backoff-om. To su upstream ili privremene greške dostupnosti, a ne problemi sa vašim zahtjevom.
Zašto 422, a ne 400 za nevažeće podatke?
422 označava pravilno formiran, ali semantički nevažeći JSON — na primjer vat_rate kao razlomak. 400 je rezervisan za neispravno formiran zahtjev.