Classificazione degli Errori
Una risposta con codice 2xx indica che l’operazione ha avuto successo mentre codici diversi indicano un problema imputabile al client (4xx su API REST o da un fault code “Client” su API SOAP) o un errore dipendente dallo stato del servizio (5xx su API REST o da un fault code “Server” su API SOAP).
La tabella Tabella 19 riporta l’elenco dei possibili codici di errore restituiti da GovWay. Per ognuno di questi, nella colonna “Retry” è indicato se sia possibile o meno effettuare nuovi invii della stessa richiesta che ha ottenuto errore. Le indicazioni fornite sono le seguenti:
Sì: il client può effettuare nuovamente la stessa richiesta;
Sì, se idempotente: il client può effettuare nuovamente la stessa richiesta, ma solo se l’operazione sul backend applicativo è implementata in maniera idempotente.
No: il client deve risolvere il problema segnalato prima di effettuare una nuova richiesta (ripetere la stessa richiesta produrrebbe sempre lo stesso esito).
REST / SOAP
GovWay-Transaction-ErrorType
Retry
400 / Client
No
401 / Client
No
403 / Client
No
404 / Client
No
409 / Client
No
413 / Client
No
429 / Client
LimitExceeded - 429 (Rate Limiting)
No, fino a reset *
429 / Client
TooManyRequests - 429 (Rate Limiting)
Sì
502 / Server
Sì, se idempotente
502 / Server
ResponseSizeExceeded - 502 (Bad Gateway)
No
503 / Server
Sì
504 / Server
Sì, se idempotente
[*] Se vengono attivate policy di Rate Limiting che prevedono un limite di richieste all’interno di una finestra temporale, GovWay genera un header HTTP che indica al client il numero di secondi che mancano alla nuova finestra temporale dove saranno resettati i contatori delle richieste effettuate. I nomi degli header, che cambiano in funzione delle policy attivate, vengono descritte nella sezione Informazioni restituite dal gateway nella risposta all’applicativo client.
Nei casi in cui è prevista la rispedizione, GovWay genera un header “Retry-After” che indica al client il numero di secondi di attesa prima di ripetere la richiesta.
- Errori 400 (Bad Request)
- ContentTypeNotProvided
- ContentTypeNotSupported
- SoapMustUnderstandUnknown
- SoapVersionMismatch
- UnprocessableRequestContent
- RequestReadTimeout
- NotSupportedByProtocol
- CorrelationInformationNotFound
- ApplicationCorrelationIdentificationRequestFailed
- InvalidRequestContent
- UnexpectedInteroperabilityHeader
- InteroperabilityInvalidRequest
- AttachmentsRequestFailed
- MessageSecurityRequestFailed
- InteroperabilityRequestManagementFailed
- TransformationRuleRequestFailed
- ConnectorNotFound
- BadRequest
- Errori 401 (Authentication Error)
- Errori 403 (Authorization Deny)
- Errori 404 (NotFound)
- Errori 409 (Conflict)
- Errori 413 (Payload Too Large)
- Errori 429 (Rate Limiting)
- Errori 502 (Bad Gateway)
- InvalidResponse
- ResponseSizeExceeded
- UnprocessableResponseContent
- AttachmentsResponseFailed
- ApplicationCorrelationIdentificationResponseFailed
- MessageSecurityResponseFailed
- InvalidResponseContent
- InteroperabilityResponseManagementFailed
- InteroperabilityInvalidResponse
- UnexpectedInteroperabilityResponseHeader
- InteroperabilityResponseError
- TransformationRuleResponseFailed
- ExpectedResponseNotReceived
- ConflictResponse
- BadResponse
- GatewayError
- Errori 503 (Service Unavailable)
- Errori 504 (Endpoint Request Timed-out)