Kodovi grešaka i omotač greške

Jedan oblik na svakoj ruti: type, code, message, param, doc_url, request_id i errors.

Jedan oblik na svakoj ruti: type, code, message, param, doc_url, request_id i errors.

← Nazad na API dokumentaciju

Vaša prva faktura u 6 koraka

  1. Svaki 4xx i 5xx vraća { "error": { type, code, message, param?, doc_url, request_id, errors? } }.
  2. Odlučite po type da li ima smisla ponoviti pokušaj, i mapirajte code u svoj sistem.
  3. param pokazuje na polje koje je problem, npr. lines.0.vat_rate; errors[] se pojavljuje kada ih ima više.
  4. 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

StatusTipKod
401authentication_errormissing_bearer_token
401authentication_errorunauthorized
403permission_errorforbidden
404not_found_errornot_found
409conflict_erroridempotency_key_reuse
409conflict_erroridempotency_in_progress
422invalid_request_errorvalidation_failed
422invalid_request_errorinvalid_json_number
502upstream_errorupstream_error
503service_unavailable_errorservice_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.