Кодови грешака и омот грешке

Један облик на свим рутама: 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 је резервисан за неисправно формиран захтев.