dma61 / VBPUOdsk

2 stars 0 forks source link

Validaties bij berichtverwerking (ter opname als pseudocode voor andere partijen) #36

Open kooskaspers opened 6 months ago

kooskaspers commented 6 months ago

Ha Duco,

Zoals beloofd deel ik hier een aantal validaties die wij recentelijk hebben ingebouwd bij de implementatie van de openAPI en mogelijk onderdeel gemaakt kunnen worden van jouw generieke validatieset, zodat ook andere partijen hier hun voordeel mee kunnen doen.

Entiteit Voorwaarde Validatie Errorhandling wanneer niet wordt voldaan aan de validatie
party.pensionProvider party.pensionProvider.refKey <> null Als veld "refKey" is gevuld: party.pensionProvider.refKey is gelijk aan PUV-code van het fonds waarvoor de API beschikbaar is gesteld

Als veld "refKey" niet is gevuld: validatie niet uitvoeren
Synchrone response (400 Bad Request)
error.default.errorCode: 10 (Functionele fout)
error.default.errorCodeExplanation: "De refKey komt niet overeen met de PUV-code waarvoor de API beschikbaar is gesteld"
party.pensionProvider party.pensionProvider.rsinNumber <> null Als veld "rsinNumber" is gevuld: rsinNumber is gelijk aan rsinNumber van het fonds waarvoor de API beschikbaar is gesteld
Als veld "rsinNumber" niet is gevuld: validatie niet uitvoeren
Synchrone response (400 Bad Request)
error.default.errorCode: 10 (Functionele fout)
error.default.errorCodeExplanation: "Het rsinNumber komt niet overeen met het rsinNumber waarvoor de API beschikbaar is gesteld"
party.pensionProvider We krijgen een request binnen die niet aan onze verwachten van de structuur voldoet die we van het SIVI hebben gekregen. Het request voldoet aan het json-schema van berichtstructuur X Synchrone response (400 Bad Request)
error.default.errorCode: 10 (Functionele fout)
error.default.errorCodeExplanation: de context van de fout
party.pensionProvider - party.pensionProvider.rsinNumber is not null OR party.pensionProvider.refKey is not null Synchrone response (400 Bad Request)
error.default.errorCode: 10 (Functionele fout)
error.default.errorCodeExplanation: "Geen rsinNumber of refKey opgegeven binnen entiteit pensionProvider"
investment.portfolio investment.portfolio.netAmount <> null Als veld investment.portfolio.netAmount is gevuld:
endAmount - netAmount - startAmount = returnAmount
Als veld investment.portfolio.netAmount niet is gevuld: validatie niet uitvoeren
Synchrone response (400 Bad Request)
error.default.errorCode: 10 (Functionele fout)
error.default.errorCodeExplanation: "De som van endAmount minus netAmount minus startAmount komt niet overeen met returnAmount"

We hebben overigens nog meer validaties, echter betreffen dat validaties tussen berichten met hetzelfde messageId, zoals wijzigingsberichten. Deze heb ik, zoals besproken, buiten beschouwing gelaten.

dma61 commented 6 months ago

Interne SIVI-verwijzing 507

dma61 commented 6 months ago

@kooskaspers please check:

# comment Entiteit Voorwaarde Validatie Errorhandling wanneer niet wordt voldaan aan de validatie
1 VERVALT / want refkey vervalt party.pensionProvider party.pensionProvider.refKey <> null Als veld "refKey" is gevuld: party.pensionProvider.refKey is gelijk aan PUV-code van het fonds (pensioenuitvoerder) waarvoor de API beschikbaar is gesteld

Als veld "refKey" niet is gevuld: validatie niet uitvoeren
Synchrone response (400 Bad Request)
error.default.errorCode: 10 (Functionele fout)
error.default.errorCodeExplanation: "De refKey komt niet overeen met de PUV-code waarvoor de API beschikbaar is gesteld"
2 party.pensionProvider party.pensionProvider.rsinNumber <> null Als veld "rsinNumber" is gevuld: rsinNumber is gelijk aan rsinNumber van het fonds (pensioenuitvoerder) waarvoor de API beschikbaar is gesteld
Als veld "rsinNumber" niet is gevuld: validatie niet uitvoeren
Synchrone response (400 Bad Request)
error.default.errorCode: 10 (Functionele fout)
error.default.errorCodeExplanation: "Het rsinNumber komt niet overeen met het rsinNumber waarvoor de API beschikbaar is gesteld"
3 party.pensionProvider We krijgen een request binnen die niet aan onze verwachten van de structuur voldoet die we van het SIVI hebben gekregen. Het request voldoet aan het json-schema van berichtstructuur X Synchrone response (400 Bad Request)
error.default.errorCode: 10 (Functionele fout)
error.default.errorCodeExplanation: de context van de fout
4 VERVALT / want refkey vervalt party.pensionProvider - party.pensionProvider.rsinNumber is not null OR party.pensionProvider.refKey is not null Synchrone response (400 Bad Request)
error.default.errorCode: 10 (Functionele fout)
error.default.errorCodeExplanation: "Geen rsinNumber of refKey opgegeven binnen entiteit pensionProvider"
5 investment.portfolio investment.portfolio.netAmount <> null Als veld investment.portfolio.netAmount is gevuld:
endAmount - netAmount - startAmount = returnAmount
Als veld investment.portfolio.netAmount niet is gevuld: validatie niet uitvoeren
Synchrone response (400 Bad Request)
error.default.errorCode: 10 (Functionele fout)
error.default.errorCodeExplanation: "De som van endAmount minus netAmount minus startAmount komt niet over