Kode napak in ovojnica napake

Ena oblika na vseh poteh: type, code, message, param, doc_url, request_id in errors.

Ena oblika na vseh poteh: type, code, message, param, doc_url, request_id in errors.

← Nazaj na dokumentacijo API

Prvi račun v 6 korakih

  1. Vsak odgovor 4xx in 5xx vrne { "error": { type, code, message, param?, doc_url, request_id, errors? } }.
  2. Po type razvejite logiko, da presodite, ali je ponovni poskus smiseln, code pa preslikajte v svoj sistem.
  3. param kaže na problematično polje, npr. lines.0.vat_rate; errors[] se pojavi, kadar jih je več.
  4. 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

StanjeTipKoda
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

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.