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

Иста форма на секоја рута: type, code, message, param, doc_url, request_id и errors.

Иста форма на секоја рута: type, code, message, param, doc_url, request_id и errors.

← Назад кон API документацијата

Првата фактура во 6 чекори

  1. Секој 4xx и 5xx враќа { "error": { type, code, message, param?, doc_url, request_id, errors? } }.
  2. Гранете според type за да одлучите дали има смисла повторување, а code мапирајте го во вашиот систем.
  3. param укажува на полето што прави проблем, на пример lines.0.vat_rate; errors[] се појавува кога има повеќе.
  4. Запишувајте го request_id при секоја грешка — со него го наоѓаме точното барање во нашите дневници.

Што е 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

Грешки

СтатусТипКод
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 и двата upstream типа се повторливи. authentication_error, permission_error и invalid_request_error не се поправаат со повторување.
  • 404 се враќа и за id што припаѓа на друг тенант: никогаш не потврдуваме дека податоците на некој друг постојат.
  • 409 idempotency_key_reuse значи дека сте го повторно искористиле клучот со различно тело. Не присилувајте: проверете што веќе е издадено.
  • doc_url во секоја грешка води директно до делот за грешки во оваа документација.
  • Пораките се на румунски бидејќи API-то служи румунски фискален тек; не парсирајте message, гранете според code.

Прашања и одговори за програмери

Можам ли да се потпрам на вредностите code низ верзиите?

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

Што да правам при 502 или 503?

Повторете со експоненцијален backoff. Тоа се upstream или привремени грешки за достапност, а не проблем со вашето барање.

Зошто 422, а не 400 за невалидни податоци?

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