Provider × Error scenario matrix¶
Συγκεντρωτικός πίνακας: για κάθε από τους 23 providers, ποιο HTTP status code
παίρνει ο consumer σε κάθε από τα 6 σενάρια. Όλες οι τιμές παράγονται από τη
ροή <Provider>ErrorHelper.Translate → GlobalExceptionHandlingMiddleware.
Σενάρια¶
| # | Σενάριο | Περιγραφή |
|---|---|---|
| BUS | Business rejection | Provider rule failed (validation, duplicate, declined risk, κ.λπ.) — επιστρέφει έγκυρο error envelope |
| SOAP-FAULT | SOAP fault | Provider SOAP server πέταξε fault (auth, throttle, schema mismatch, κ.λπ.) |
| NET | Network failure | DNS lookup fail, TCP reset, connection refused, endpoint unreachable |
| HTTP-5xx | Upstream 5xx | REST provider γύρισε 500/502/503 |
| HTTP-4xx | Upstream 4xx no envelope | REST provider γύρισε 400/401/403 χωρίς parsable error body |
| TIMEOUT | Upstream timeout | HttpClient/WCF timeout ή client cancellation |
Master matrix¶
| Provider | Protocol | BUS | SOAP-FAULT | NET | HTTP-5xx | HTTP-4xx | TIMEOUT |
|---|---|---|---|---|---|---|---|
| Allianz | REST | 422 (X-Error header) | N/A | 502 | 502 (providerStatusCode) |
502 (providerStatusCode) |
504 |
| Apeiron | SOAP | 422 | 502 | 502 | N/A | N/A | 504 |
| Atlanet | SOAP | 422 (MessageSeverity) | 502 | 502 | N/A | N/A | 504 |
| ErgoHellas | SOAP | 422 (SAP envelope) | 502 | 502 | N/A | N/A | 504 |
| Ethniki | SOAP | 422 (filler1=Y) |
502 | 502 | N/A | N/A | 504 |
| Eurolife | REST | 422 (Success=false) |
N/A | 502 | 502 (providerStatusCode) |
502 (providerStatusCode) |
504 |
| Euroins | SOAP | 422 (ServiceError L≥2) | 502 | 502 | N/A | N/A | 504 |
| Europe | SOAP | 422 (executor IsSuccess) |
502 | 502 | N/A | N/A | 504 |
| EuroSos | REST | 422 (HTTP 400) | N/A | 502 | 502 (providerStatusCode) |
502 (providerStatusCode) |
504 |
| Extra | SOAP | 422 (ExtraResultParser) | 502 | 502 | N/A | N/A | 504 |
| Generali | SOAP | 422 (Report.Valid=false) |
502 | 502 | N/A | N/A | 504 |
| Groupama | REST | 422 (envelope) | N/A | 502 | 502 (providerStatusCode) |
502 (providerStatusCode) |
504 |
| Interamerican | SOAP | 422 (executor IsSuccess) |
502 | 502 | N/A | N/A | 504 |
| Interfast | SOAP | 422 (parser + checks) | 502 | 502 | N/A | N/A | 504 |
| InterLife | SOAP | 422 (ResponseResultCode≠0) |
422 (wrapped) | 502 | N/A | N/A | 504 |
| Intersalonica | SOAP | 422 (executor IsSuccess) |
502 | 502 | N/A | N/A | 504 |
| Minetta | SOAP | 422 (ErrorMessages[]) |
502 | 502 | N/A | N/A | 504 |
| Mondial | SOAP | 422 (response_status NOTOK/NOK) |
422 (wrapped) | 502 | N/A | N/A | 504 |
| Orizon | SOAP | 422 (ServiceError L≥2) | 502 | 502 | N/A | N/A | 504 |
| PersonalIns | SOAP | 422 (Messages[]) |
422 (wrapped) | 502 | N/A | N/A | 504 |
| Soeasy | REST | 422 (envelope) | N/A | 502 | 502 (providerStatusCode) |
502 (providerStatusCode) |
504 |
| Totalware | REST | 422 (Errors[] envelope) |
N/A | 502 | 502 (providerStatusCode) |
502 (providerStatusCode) |
504 |
| Ydrogeios | SOAP | 422 (ServiceError L≥2) | 502 | 502 | N/A | N/A | 504 |
Outliers
Οι InterLife, Mondial, PersonalIns μαπάρουν FaultException σε
ProviderBusinessException (422 αντί 502). Λόγος: ο upstream SOAP fault συχνά
μεταφέρει validation message ασφαλές για end-user. Όλοι οι υπόλοιποι SOAP
providers θεωρούν το FaultException transport-level (502).
Note ανά protocol¶
- REST providers (Allianz, Eurolife, EuroSos, Groupama, Soeasy, Totalware):
μαπάρουν
HttpRequestException/non-2xx σεProviderApiExceptionμεUpstreamStatusCode. Στο 502 response εμφανίζεται extensionproviderStatusCodeμε το upstream HTTP status (401, 500, 503, κ.λπ.). Το BUS σενάριο εντοπίζεται είτε με header (Allianz X-Error), με HTTP 400 (EuroSos), ή με envelope inspection (EurolifeSuccess=false, TotalwareErrors[], Groupama / Soeasy). - SOAP providers (οι υπόλοιποι 17): οι WCF exceptions
(
FaultException,CommunicationException,EndpointNotFoundException,TimeoutException) γίνονταιProviderApiException→ 502/504. Δεν έχουνproviderStatusCodeextension — το πεδίο δεν εφαρμόζεται φυσικά στο SOAP (δεν υπάρχει numeric upstream status κατά τη διάρκεια του fault).
Πώς αξιοποιείται ο πίνακας¶
Per-endpoint retry strategy
Ο consumer μπορεί να χρησιμοποιήσει αυτό το matrix για να σχεδιάσει per-endpoint retry strategies. Όπου εμφανίζεται N/A, το σενάριο δεν εφαρμόζεται φυσικά για αυτόν τον provider (πχ SOAP fault σε REST provider, HTTP-5xx σε SOAP WCF endpoint).
- 422: ποτέ retry — διορθώστε το input και ξαναστείλτε.
- 502 / 504: idempotent retries OK με exponential backoff. Δείτε το
providerStatusCode(REST providers) για observability — όχι για logic. - 500: σπάνιο. Υποδεικνύει ότι ένα exception δεν έγινε translate από
τον provider helper — αξίζει escalation με το
correlationId.
Σχετικά docs¶
- Error handling — γενικό envelope contract και status code semantics
Πηγές¶
Για να επιβεβαιώσετε ή να ενημερώσετε τον πίνακα ανά provider, δείτε:
src/Estia.API.Providers.<Name>/Helpers/<Name>ErrorHelper.cs— translation rules ανά exception typesrc/Estia.API.Infrastructure/Middleware/GlobalExceptionHandlingMiddleware.cs— final mapping σε HTTP status και ProblemDetails- Για REST providers, το
<Name>ServiceBase(πχAllianzServiceBase.EnsureAllianzSuccessAsync) περιέχει την business envelope detection