Кодове за грешки и форматът на грешката

Един формат по всички маршрути: type, code, message, param, doc_url, request_id и грешки.

Един формат по всички маршрути: type, code, message, param, doc_url, request_id и грешки.

← Обратно към API документацията

Първата фактура в 6 стъпки

  1. Всеки 4xx и 5xx връща { "error": { type, code, message, param?, doc_url, request_id, грешки? } }.
  2. Разклонявайте логиката по type, за да решите дали повторен опит има смисъл, и съпоставяйте code в собствената си система.
  3. param сочи проблемното поле, напр. lines.0.vat_rate; грешки[] се появява, когато са няколко.
  4. Записвайте request_id при всяка грешка — така можем да намерим точната заявка в нашите логове.

Какво е 4invoices API

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

Грешки

СтатусТипКод
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

Често срещани грешки

  • rate_limit_error и двата апстрийм типа позволяват повторен опит. authentication_error, permission_error и invalid_request_error не се решават с повторен опит.
  • 404 се връща и за id, което принадлежи на друг tenant: никога не потвърждаваме, че чужди данни съществуват.
  • 409 idempotency_key_reuse означава, че сте преизползвали ключ с различно тяло. Не го форсирайте: проверете какво вече е издадено.
  • doc_url във всяка грешка сочи директно към раздела за грешки в тази документация.
  • Съобщенията са на румънски, защото API-то обслужва румънски фискален поток; не парсвайте message, разклонявайте по code.

Въпроси и отговори за разработчици

Мога ли да разчитам на стойностите на code между версиите?

Да, code е стабилен и съществува точно за това. message е текст за хора и може да бъде преформулиран.

Какво да правя при 502 или 503?

Опитайте отново с експоненциален експоненциално забавяне. Това са апстрийм грешки или грешки от временна недостъпност, а не проблеми със заявката ви.

Защо 422, а не 400 за невалидни данни?

422 обозначава синтактично правилен, но семантично невалиден JSON — например vat_rate като дроб. 400 е запазен за неправилно оформена заявка.