Kody błędów i koperta błędu

Jeden format na wszystkich trasach: type, code, message, param, doc_url, request_id i errors.

Jeden format na wszystkich trasach: type, code, message, param, doc_url, request_id i errors.

← Powrót do dokumentacji API

Pierwsza faktura w 6 krokach

  1. Każdy 4xx i 5xx zwraca { "error": { type, code, message, param?, doc_url, request_id, errors? } }.
  2. Rozgałęziaj logikę według type, aby zdecydować, czy ponowienie ma sens, a code mapuj na własny system.
  3. param wskazuje błędne pole, np. lines.0.vat_rate; errors[] pojawia się, gdy jest ich kilka.
  4. Loguj request_id przy każdym błędzie — pozwala nam znaleźć dokładnie to żądanie w naszych logach.

Czym jest 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

Błędy

StatusTypKod
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

Częste błędy

  • rate_limit_error i dwa typy upstream można ponawiać. authentication_error, permission_error i invalid_request_error nie znikną po ponowieniu.
  • 404 jest zwracane także dla id należącego do innego tenanta: nigdy nie potwierdzamy, że cudze dane istnieją.
  • 409 idempotency_key_reuse oznacza, że użyto ponownie klucza z inną treścią. Nie wymuszaj: sprawdź, co zostało już wystawione.
  • doc_url w każdym błędzie prowadzi bezpośrednio do sekcji błędów tej dokumentacji.
  • Komunikaty są po rumuńsku, ponieważ API obsługuje rumuński obieg fiskalny; nie parsuj message, rozgałęziaj według code.

Pytania i odpowiedzi dla programistów

Czy mogę polegać na wartościach code między wersjami?

Tak, code jest stabilny i istnieje właśnie w tym celu. message to tekst dla człowieka i może zostać przeformułowany.

Co zrobić przy 502 lub 503?

Ponów z wykładniczym backoffem. To błędy upstream lub chwilowej niedostępności, a nie problemy z Twoim żądaniem.

Dlaczego 422, a nie 400 dla niepoprawnych danych?

422 oznacza JSON poprawny składniowo, ale niepoprawny semantycznie — na przykład vat_rate jako ułamek. 400 jest zarezerwowane dla źle sformułowanego żądania.