Μία μορφή σε κάθε διαδρομή: type, code, message, param, doc_url, request_id και σφάλματα.
← Επιστροφή στην τεκμηρίωση του API
Το πρώτο τιμολόγιο σε 6 βήματα
- Κάθε 4xx και 5xx επιστρέφει { "error": { type, code, message, param?, doc_url, request_id, σφάλματα? } }.
- Βασίστε τη διακλάδωση στο type για να αποφασίσετε αν έχει νόημα η επανάληψη, και αντιστοιχίστε το code στο δικό σας σύστημα.
- Το param δείχνει το προβληματικό πεδίο, π.χ. lines.0.vat_rate· το σφάλματα[] εμφανίζεται όταν είναι περισσότερα.
- Καταγράφετε το 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
Σφάλματα
| Κατάσταση | Τύπος | Κωδικός |
|---|---|---|
| 401 | authentication_error | missing_bearer_token |
| 401 | authentication_error | unauthorized |
| 403 | permission_error | forbidden |
| 404 | not_found_error | not_found |
| 409 | conflict_error | idempotency_key_reuse |
| 409 | conflict_error | idempotency_in_progress |
| 422 | invalid_request_error | validation_failed |
| 422 | invalid_request_error | invalid_json_number |
| 502 | upstream_error | upstream_error |
| 503 | service_unavailable_error | service_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 προορίζεται για κακοσχηματισμένο αίτημα.