API Reference / Errori e envelope

Errori e envelope

L'involucro comune di ogni risposta e il catalogo completo dei codici di errore: struttura, stati HTTP, dettagli e requestId per la diagnostica.

01L'envelope

Ogni risposta dell'API, di successo o di errore, usa lo stesso involucro JSON. In caso di successo il payload utile sta in data:

json · successo
{ "success": true, "data":  }

In caso di errore, success è false e i dettagli stanno in error:

json · errore
{
  "success": false,
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Field \"name\" is required",
    "details": {  },
    "requestId": "a1b2c3d4"
  }
}

02Struttura dell'errore

L'oggetto error ha sempre code e message; details e requestId compaiono solo quando disponibili.

CampoTipoDescrizione
codestringsempreCodice macchina stabile (vedi tabella sotto). Usalo per il branching, non il messaggio.
messagestringsempreDescrizione leggibile, pensata per il debug più che per l'utente finale.
detailsobjecttalvoltaContesto aggiuntivo (es. campo non valido, campi non scrivibili). Presente quando l'errore lo fornisce.
requestIdstringtalvoltaIdentificativo della richiesta per correlare l'errore ai log del server.
Nota

Basa la logica applicativa su error.code e sullo stato HTTP, mai sul testo di message: il messaggio può cambiare, il codice no.

03Codici e stati

I codici che l'API può restituire, con lo stato HTTP e la causa tipica.

StatoCodiceQuando
400BAD_REQUESTRichiesta malformata o parametro non accettabile.
400INVALID_JSONBody JSON non parsabile.
401UNAUTHORIZEDAutenticazione fallita: token assente/scaduto/revocato, credenziali di login errate (risposta identica per utente inesistente) o refresh token non valido. Distingui i casi dall'endpoint chiamato, non dal codice.
403FORBIDDENAutenticato ma senza permesso per modulo/azione/campo, o fuori scope in scrittura.
403PASSWORD_CHANGE_REQUIREDCambio password obbligatorio pendente: solo le rotte di cambio password rispondono.
404NOT_FOUNDRisorsa inesistente o fuori dal tuo scope di visibilità (stessa risposta, anti information-disclosure).
413PAYLOAD_TOO_LARGEBody oltre il limite configurato.
422VALIDATION_ERRORBody o query non validi; il messaggio indica il campo.
429TOO_MANY_REQUESTSRate limit di autenticazione o account temporaneamente bloccato.
500INTERNAL_SERVER_ERRORErrore inatteso lato server: il requestId aiuta a rintracciarlo nei log.
501NOT_IMPLEMENTEDFunzionalità non ancora disponibile.

04Dettagli utili

Alcuni errori arricchiscono details per farti reagire con precisione:

05requestId e diagnostica

Ogni risposta d'errore può includere un requestId. È lo stesso identificativo che il server scrive nei log per quella richiesta: allegalo quando segnali un problema, così l'errore lato client si aggancia esattamente alla traccia lato server. Gli errori 5xx sono sempre loggati con stack; i 4xx come warning.