Een REST API voor het a-synchroon uitwisselen van berichten welke in het Logisch Ontwerp gedefinieerd zijn.
- Verwijzingen aangepast naar LO2025Q3 versie berichten schema's. Dit is puur een actualisatieslag, datamodel-technisch zijn er geen wijzigingen t.o.v. de vorige schema-versie. De wijzigingen beperken zich tot tekstuele wijzigen van de omschrijvingen.
- "Ontvanger" toegevoegd aan apiGetBerichtKenmerken en apiListBerichtKenmerken. In principe weet de ontvanger tijdens het moment van ontvangen dat deze berichten voor hem bestemd zijn. Echter in andere situaties waarbij berichten (buiten de context van de berichten-api) verwerkt worden, kan het relevant zijn dat zowel de verzender als de ontvanger gedefinieerd zijn bij het bericht.
- Aanpassing autorisatietabel elementen: De hoofdletter E is nu een kleine letter e, conform de elementen van andere berichtsoorten.
- Aangeduid dat request-body bij POST requests aanwezig moeten zijn.
- Aangeduid dat
statusbij een Foutmelding verplicht is.
- HTTP response bij het versturen berichten aangepast van 201 naar 200. De implementatie van de berichten-api gaf al 200.
- Beschrijving van het response bij het versturen van berichten aangepast explicieter wordt gemaakt dat de response gecontroleerd moet worden op succesvol en niet-succesvol verstuurde berichten.
- OAuth2 scopes beschreven zoals ze zijn in LAP en PRD.
- Aanpassingen in de structuur van de onderliggende JSON schema's, de inhoud is onveranderd gebleven.
- Details rondom MutualTLS/tweezijdig-TLS d.m.v. PKI-Overheid toegevoegd.
- Tekstuele verwijzing naar '/berichten/list' vervangen door '/berichten'.
- OAuth endpoint demo omgeving gecorrigeerd.
- Ping endpoints zijn niet langer bereikbaar zonder eerst te authenticeren.
- Servers toegevoegd.
- Hiervoor moesten de paden van de endpoints aangepast worden. Hierdoor is '/api/v1' komen te vervallen bij de endpoints. Dit is verhuisd naar de base-url's van de genoemde servers.
- Authenticatie details toegevoegd.
- Foutmeldingen bij het conversie endpoint bijgewerkt.
- Alle namespace paden van de foutmeldingen nagelopen en gecorrigeerd daar waar nodig. Dit zodat ze consistent starten met: "https://www.rvig.nl/brp/berichten-api/probleem/\".
- 'berichtVolgnummer' en 'afzender' required gemaakt in ListMessageKenmerken (en daardoor ook in GetMessageKenmerken).
- De GET en DELETE foutsituaties zijn voorzien van discriminators ten behoeve van het onderscheiden van foutsituatie subtypes door de gegenereerde client.
- Properties van PagineringResultaat en PagineerbaarResultaat welke altijd aanwezig zullen zijn bij een list-request required gemaakt.
- Required properties van put-message-antwoord gecorrigeerd.
- Schema van het Null bericht gecorrigeerd.
- Het Sv11 bericht is qua schema aangepast aangezien deze onterecht de property plData bevatte. Deze property is verwijderd uit dit bericht.
- Foutsituaties zijn voorzien van discriminators ten behoeve van het onderscheiden van foutsituatie subtypes door de gegenereerde client.
- De request die volledig afgekeurd worden en een statuscode 4xx of 5xx retourneren, doen dit nu met de response header 'Content-Type: application/problem+json'.
- Requests die een 2xx response in JSON formaat retourneren, doen dit met "Content-Type: application/json" ipv "Content-Type: application/json: charset=utf-8". Conform rfc8259 (https://www.rfc-editor.org/rfc/rfc8259) is JSON altijd in UTF-8 formaat en heeft dit type geen charset parameter.
- De fout BBA-PUT-F002 is aangepast naar een algemene fout voor onjuiste velden in een PutMessage, via het veld "invalidParams" in de response word aangegeven welke velden onjuist zijn en waarom.
- Het veld berichtId en verwijzingBerichtId zijn omgezet van type 'integer' naar type 'string' om beter aan te sluiten op de bestaande voorziening.
- Het probleem-antwoord response object is overal vervangen met de algemene Foutmelding response welke zich conformeert aan RFC7807.
- De velden 'foutTitel', 'foutType', 'foutDetail' zijn aangepast naar 'title, 'type', 'detail' zodat zij zich conformeren aan de RFC7807.
- De afhankelijkheid op 'openapi-problem-detail-v1.yml' is komen te vervallen (rvig-brp/BRP-Berichten-API#3).
- Het json-schema voor de autorisatieberichten Ct01, Cw01 en Cb01 is toegevoegd.
- De ontvanger is opgenomen in de response bij het verzenden van een bericht. Dit is met name relevant wanneer er een bericht naar een berichtgroep gestuurd wordt. In dat geval weet de verzender wie de uiteindelijke ontvangers zijn. Bij het versturen van een bericht naar de een regulier account zal dit nummer 1:1 overeenkomen met de ontvanger die bij het te verzenden bericht is opgegeven.
- De json-schema's van de berichtsoorten zijn opgenomen in de OpenAPI Specificatie. Voor elke berichtsoort die het LO beschrijft, is opgenomen hoe dit bericht gestructureerd is.
- Houdt er rekening mee dat het weergeven van de OpenAPI specificatie in de web-versie va SwaggerUI hierdoor trager geworden is. Het is aan te raden om de alternatieve (redocly) weergave te gebruiken:
- https://brp-berichten-api.dictua.ictu-sr.nl/openapi/berichten-api.html
- De JSON schema's zijn tevens te vinden op onze Github pagina.
- Houdt er rekening mee dat het weergeven van de OpenAPI specificatie in de web-versie va SwaggerUI hierdoor trager geworden is. Het is aan te raden om de alternatieve (redocly) weergave te gebruiken:
- De JSON-response van het conversie endpoint is iets aangepast zodat naast het geconverteerde bericht tevens validatiefouten opgenomen kunnen worden.
- Conversie endpoints
- Introductie bericht-conversie (/berichten/conversie) endpoint. Houdt er rekening mee dat de conversie naar JSON opgenomen is, maar nog niet geïmplementeerd is in de demo omgeving.
- Het limiet van het aantal berichten dat verwijderd kan worden is gelijkgesteld aan dat wat gelijktijdig opgehaald kan worden (100).
- De API is hernoemd van "BRP A-Synchrone berichten API" naar "BRP berichten API".
- Beschikbaarheid endpoint(s)
- Er is een tweede ping endpoint bijgekomen waardoor en nu een HEAD of een GET gedaan kan worden. De response blijft hetzelfde. U kunt zelf kiezen welke van deze twee u hanteert.
- De noodzaak voor authenticatie op het
pingendpoint is komen te vervallen. U kunt dus zonder noodzaak van authenticatie vaststellen of de dienst beschikbaar is.
- Ping operatie toegevoegd t.b.v. het verifiëren dat er communicatie met de berichtendienst mogelijks is.
- De standaard sortering bij een LIST operatie is op dit moment:
Datum + tijdstip van ontvangstwaarbij geldt dat het oudste bericht als eerste wordt weergegeven in de lijst met beschikbare berichten (rationale deze dient als eerste verwerkt worden door de ontvanger).- Indien
datum + tijdstip van ontvangstgelijk zijn (wat kan voorkomen aangezien er meerdere berichten tegelijk ingestuurd kunnen worden), dan wordenafzenderen hetmessageIdmeegenomen in de sortering. De volgorde die de afzender toegekend heen via de messageId is op dat moment dus bepalend.
- Mogelijkheden tot sortering bij een list operatie zijn verwijderd. De standaard sortering wordt nog bepaald.
- Demo omgeving is toegevoegd aan de lijst met servers.
- API te benaderen via https://brp-berichten-api.dictua.ictu-sr.nl/api/v1/berichten
- Swagger UI via: https://brp-berichten-api.dictua.ictu-sr.nl/swagger-ui/index.html
- De OpenAPI specificatie via: https://brp-berichten-api.dictua.ictu-sr.nl/openapi.brp-berichten-api-v1.yaml
- Wachtwoord wijzigingen optie is verwijderd.
- Het
berichtFormaatattribuut is komen te vervallen. Alle berichten zijn nu per definitie in JSON formaat. De eis om de berichtInhoud Base64 te encoderen komt daarmee te vervallen. - Voorbeelddata verbeterd.
- Tellingen endpoint toegevoegd welke invulling geeft aan de mailbox Summarize tegenhanger.
- Delete endpoint gecorrigeerd. De collectie
succesvolVerwijderdeBerichtenwas van het type string i.p.v. berichtTransportId. - Limieten zijn gewijzigd:
- Het aantal berichten dat via een PUT verstuurd kan worden is verhoogd naar 25. Uitgaande van een gemiddelde berichtgrootte van 40kb geeft dat een request van 1MB groot.
- Het aantal berichten dat via een LIST opgevraagd kan worden is vergroot naar 2000. Daarbij krijgt u de mogelijkheid om dit aantal te beperken.
- 2000 berichten in een LIST operatie komt neer op ongeveer 600KB response grootte.
- Het aantal berichten dat via een GET ontvangen kan worden is verhoogd naar 100. Dit heeft te maken met de gangbare (veilige) restricties van een URL qua lengte (2KB).
- Voor de URL worden 256 bytes gereserveerd.
- Voor de UUID blijven dan 1.792 bytes over.
- Een BerichtTransportId is 17 bytes groot (UUID + separatie-karakter ',')
- Uitgaande van 17 bytes, zou dit 105 keer herhaald kunnen worden. Om aan de veilige kan te zitten en om op een mooi rond getal uit te komen kiezen wij voor 100 als limiet.
- Uitgaande van een gemiddelde berichtgrootte van 40KB komt je met 100 berichten uit op 4MB qua response-grootte.
- Voor de URL worden 256 bytes gereserveerd.
- "aantalKeerOpgehaald" en "dtLaatstOpgehaald" zijn verwijderd uit response van LIST (ListMessageKenmerken schema). Wij zien hierin geen meerwaarde voor de aansluitende partijen. Wel kunt u blijven zien OF het bericht is opgehaald (boolean waarde).
- "List" verzoek is verhuisd van "/berichten/lijst" - -> "/berichten"
- "GET" van meerdere berichten wordt gedaan middels path-parameters i.p.v. query-parameters en is samengevoegd met het endpoint voor het ophalen van een enkel bericht.
(/berichten/?berichtTransportIds=[UUID],[UUID] - -> /berichten/[UUID],[UUID]) (/berichten/?berichtTransportIds=[UUID],[UUID] - -> /berichten/[UUID],[UUID]) - "DELETE" van meerdere berichten wordt gedaan middels path-parameters i.p.v. query-parameters en is samengevoegd met het endpoint voor het verwijderen van een enkel bericht.
(/berichten/?berichtTransportIds=[UUID],[UUID] - -> /berichten/[UUID],[UUID]) - Het "berichtId" wat correspondeert met het "MessageId" veld van de mailboxserver is qua type gewijzigd van String naar Integer. Maximale lengte 12.
- Beschrijving LO: MessageId, lengte: 12, Het unieke volgnummer dat aan het uitgaande bericht wordt toegekend.
- Het veld "verwijzingBerichtId" wat correspondeert met het "CrossReference" veld van de mailboxserver:
- is qua type gewijzigd van String naar Integer. Maximale lengte 12.
- kan of weggelaten worden, of gevuld worden met 0 indien het bericht een eerste bericht in de cyclus betreft.
- "aantalKeerOpgehaald" is toegevoegd aan de ListMessageKenmerken.
Initiële versie.
- Bepalen of het een checksum op de berichtinhoud van meerwaarde kan zijn.
| Waarde | Omschrijving | |- -- -- -- -|- -- -- -- -- -- -- -| | 1 | Aantal ontvangers per bericht. | | 25 | Maximum aantal berichten dat in één PUT request verstuurd mag worden. | | 100 | Maximum aantal berichten dat in één DELETE request verwijderd mag worden | | 2000 | Maximum aantal berichten dat in één LIST request getoond zal worden. Indien wenselijk kunt u dit aantal middels een query-parameter beperken. | | 100 | Maximum aantal berichten dat in één GET request ontvangen mag worden. | | 64kb | Maximum grootte van één enkel bericht. Één request zal qua grootte dan uitkomen op ((maximale-grootte-enkel-bericht * maximaal-aantal-berichten) + overhead). Houdt er rekening mee dat dit een waarde is die in te toekomst kan gaan groeien. Beperk uw oplossing dus niet op deze waarde! |
This C# SDK is automatically generated by the OpenAPI Generator project:
- API version: 0.7.6
- SDK version: 1.0.0
- Generator version: 7.17.0
- Build package: org.openapitools.codegen.languages.CSharpClientCodegen
- RestSharp - 112.0.0 or later
- Json.NET - 13.0.2 or later
- JsonSubTypes - 1.8.0 or later
- System.ComponentModel.Annotations - 5.0.0 or later
The DLLs included in the package may not be the latest version. We recommend using NuGet to obtain the latest version of the packages:
Install-Package RestSharp
Install-Package Newtonsoft.Json
Install-Package JsonSubTypes
Install-Package System.ComponentModel.Annotations
NOTE: RestSharp versions greater than 105.1.0 have a bug which causes file uploads to fail. See RestSharp#742. NOTE: RestSharp for .Net Core creates a new socket for each api call, which can lead to a socket exhaustion problem. See RestSharp#1406.
Run the following command to generate the DLL
- [Mac/Linux]
/bin/sh build.sh - [Windows]
build.bat
Then include the DLL (under the bin folder) in the C# project, and use the namespaces:
using Org.OpenAPITools.Api;
using Org.OpenAPITools.Client;
using Org.OpenAPITools.Model;A .nuspec is included with the project. You can follow the Nuget quickstart to create and publish packages.
This .nuspec uses placeholders from the .csproj, so build the .csproj directly:
nuget pack -Build -OutputDirectory out Org.OpenAPITools.csproj
Then, publish to a local feed or other host and consume the new package via Nuget as usual.
To use the API client with a HTTP proxy, setup a System.Net.WebProxy
Configuration c = new Configuration();
System.Net.WebProxy webProxy = new System.Net.WebProxy("http://myProxyUrl:80/");
webProxy.Credentials = System.Net.CredentialCache.DefaultCredentials;
c.Proxy = webProxy;using System.Collections.Generic;
using System.Diagnostics;
using Org.OpenAPITools.Api;
using Org.OpenAPITools.Client;
using Org.OpenAPITools.Model;
namespace Example
{
public class Example
{
public static void Main()
{
Configuration config = new Configuration();
config.BasePath = "https://apigw.idm.diginetwerk.net/api/brp/berichten/v1";
// Configure OAuth2 access token for authorization: LapOAuth
config.AccessToken = "YOUR_ACCESS_TOKEN";
// Configure OAuth2 access token for authorization: PrdOAuth
config.AccessToken = "YOUR_ACCESS_TOKEN";
// Configure OAuth2 access token for authorization: DemoOAuth
config.AccessToken = "YOUR_ACCESS_TOKEN";
// Configure OAuth2 access token for authorization: AccOAuth
config.AccessToken = "YOUR_ACCESS_TOKEN";
// Configure HTTP basic authorization: DemoBasicAuth
config.Username = "YOUR_USERNAME";
config.Password = "YOUR_PASSWORD";
var apiInstance = new BereikbaarheidApi(config);
try
{
// Ping operatie t.b.v. het toetsen van de bereikbaarheid van de API vanuit de aangesloten partij.
apiInstance.PingGet();
}
catch (ApiException e)
{
Debug.Print("Exception when calling BereikbaarheidApi.PingGet: " + e.Message );
Debug.Print("Status Code: "+ e.ErrorCode);
Debug.Print(e.StackTrace);
}
}
}
}All URIs are relative to https://apigw.idm.diginetwerk.net/api/brp/berichten/v1
| Class | Method | HTTP request | Description |
|---|---|---|---|
| BereikbaarheidApi | PingGet | GET /berichten/ping | Ping operatie t.b.v. het toetsen van de bereikbaarheid van de API vanuit de aangesloten partij. |
| BereikbaarheidApi | PingHead | HEAD /berichten/ping | Ping operatie t.b.v. het toetsen van de bereikbaarheid van de API vanuit de aangesloten partij. |
| BerichtconversieApi | Converteer | POST /berichten/conversie | Dit endpoint faciliteert bij de conversie van berichten tussen de verschillende soorten berichtformaten. |
| BerichtenverkeerApi | DeleteMessages | DELETE /berichten/{berichtTransportIdsParam} | Het verwijderen van een of meerdere berichten (DELETE). |
| BerichtenverkeerApi | GetMessages | GET /berichten/{berichtTransportIdsParam} | Het ophalen van een of meerdere berichten (GET). |
| BerichtenverkeerApi | ListMessages | GET /berichten | Het ophalen van een lijst met berichten die klaarstaan (LIST). |
| BerichtenverkeerApi | PutMessages | POST /berichten | Het versturen van een of meerdere berichten (PUT). |
| BerichtenverkeerApi | Summarize | GET /berichten/telling | Voert verschillende soorten tellingen uit waarmee bepaald kan worden hoeveel berichten er verwerkt dienen te worden (SUMMARIZE). |
- Model.Af01
- Model.Af01PlData
- Model.Af01PlDataC01Inner
- Model.Af01PlDataC01InnerAllOfHistorieInner
- Model.Af01PlDataC02Inner
- Model.Af01PlDataC02InnerAllOfHistorieInner
- Model.Af01PlDataC04Inner
- Model.Af01PlDataC04InnerAllOfHistorieInner
- Model.Af01PlDataC05Inner
- Model.Af01PlDataC05InnerAllOfHistorieInner
- Model.Af01PlDataC06Inner
- Model.Af01PlDataC06InnerAllOfHistorieInner
- Model.Af01PlDataC07Inner
- Model.Af01PlDataC07InnerAllOfHistorieInner
- Model.Af01PlDataC08Inner
- Model.Af01PlDataC08InnerAllOfHistorieInner
- Model.Af01PlDataC09Inner
- Model.Af01PlDataC09InnerAllOfHistorieInner
- Model.Af01PlDataC10Inner
- Model.Af01PlDataC10InnerAllOfHistorieInner
- Model.Af01PlDataC11Inner
- Model.Af01PlDataC11InnerAllOfHistorieInner
- Model.Af01PlDataC12Inner
- Model.Af01PlDataC12InnerAllOfHistorieInner
- Model.Af01PlDataC13Inner
- Model.Af01PlDataC13InnerAllOfHistorieInner
- Model.Af01PlDataC14Inner
- Model.Af01PlDataC14InnerAllOfHistorieInner
- Model.Af01PlDataC15Inner
- Model.Af01PlDataC15InnerAllOfHistorieInner
- Model.Af01PlDataC16Inner
- Model.Af01PlDataC16InnerAllOfHistorieInner
- Model.Af01PlDataC17Inner
- Model.Af01PlDataC17InnerAllOfHistorieInner
- Model.Af01PlDataC21Inner
- Model.Af01PlDataC21InnerAllOfHistorieInner
- Model.Af11
- Model.Ag01
- Model.Ag11
- Model.Ag21
- Model.Ag31
- Model.Ap01
- Model.Autorisatietabelregel
- Model.Av01
- Model.BBAAUTHF001
- Model.BBAAUTHF002
- Model.BBACONVF001
- Model.BBACONVF002
- Model.BBACONVF003
- Model.BBACONVF004
- Model.BBACONVF005
- Model.BBACONVF006
- Model.BBADELETEF001
- Model.BBADELETEF002
- Model.BBADELETEF003
- Model.BBADELETEF004
- Model.BBAF999
- Model.BBAGETF001
- Model.BBAGETF002
- Model.BBAGETF003
- Model.BBAGETF004
- Model.BBALISTF001
- Model.BBAPUTF001
- Model.BBAPUTF002
- Model.BBAPUTF003
- Model.BBAPUTF004
- Model.BBASUMMARIZEF001
- Model.BerichtKenmerken
- Model.Cb01
- Model.Converteer200Response
- Model.Converteer200ResponseValidatieFoutenInner
- Model.Converteer400Response
- Model.Converteer406Response
- Model.Converteer415Response
- Model.Ct01
- Model.Cw01
- Model.DeleteMessageAntwoord
- Model.DeleteMessageAntwoordAllOfFoutmeldingen
- Model.DeleteMessageAntwoordAllOfNietSuccesvolVerwijderdeBerichten
- Model.Dt01
- Model.Dw01
- Model.Foutmelding
- Model.GeneriekAntwoord
- Model.GetMessageAntwoord
- Model.GetMessageAntwoordAllOfFoutmeldingen
- Model.GetMessageAntwoordAllOfNietOpgehaaldeBerichten
- Model.GetMessageAntwoordAllOfOpgehaaldeBerichten
- Model.GetMessageKenmerken
- Model.Gv01
- Model.Gv02
- Model.Ha01
- Model.Hf01
- Model.Hq01
- Model.Ib01
- Model.If01
- Model.If21
- Model.If31
- Model.If41
- Model.Ii01
- Model.InvalidParametersInner
- Model.Iv01
- Model.Iv11
- Model.Iv21
- Model.Jb01
- Model.Jf01
- Model.Jf21
- Model.Jf31
- Model.Ji01
- Model.Jv01
- Model.La01
- Model.Lf01
- Model.Lg01
- Model.Lg01PlData
- Model.ListMessageAntwoord
- Model.ListMessageKenmerken
- Model.ListMessages401Response
- Model.LoBericht
- Model.Lq01
- Model.Ng01
- Model.Null
- Model.Of11
- Model.Og11
- Model.PagineerbaarResultaat
- Model.PagineringResultaat
- Model.PagineringVerzoek
- Model.Pf01
- Model.Pf02
- Model.Pf03
- Model.PutMessage
- Model.PutMessageAntwoord
- Model.PutMessageAntwoordAllOfFoutmeldingen
- Model.PutMessageAntwoordAllOfNietVerwerkteBerichten
- Model.PutMessageAntwoordAllOfVerwerkteBerichten
- Model.PutMessageKenmerken
- Model.PutMessageRequest
- Model.Rb01
- Model.Rf01
- Model.Rf31
- Model.Rv01
- Model.Summarize200Response
- Model.Sv01
- Model.Sv11
- Model.Tb01
- Model.Tb02
- Model.Tf01
- Model.Tf11
- Model.Tf21
- Model.Tv01
- Model.Vb01
- Model.Vb02
- Model.Wa01
- Model.Wa11
- Model.Wf01
- Model.Xa01
- Model.Xf01
- Model.Xq01
Authentication schemes defined for the API:
- Type: HTTP basic authentication
- Type: OAuth
- Flow: application
- Authorization URL:
- Scopes:
- demo-bba-mailboxid: 'mailboxid' dient vervangen te worden met het daadwerkelijke nummer van de mailbox.
- Type: OAuth
- Flow: application
- Authorization URL:
- Scopes:
- acc-bba-mailboxid: 'mailboxid' dient vervangen te worden met het daadwerkelijke nummer van de mailbox.
- Type: OAuth
- Flow: application
- Authorization URL:
- Scopes:
- afnemercode-oin: 'afnemercode' dient vervangen te worden met het daadwerkelijke afnemerId van de deelnemer (zie tabel35). 'oin' Dient vervangen te worden met het organisatie-identificatie-nummer van de deelnemer (zie https://oinregister.logius.nl/oin-register) en dient tevens overeen te komen met het OIN dat in het client-certificaat is opgenomen dat gebruik wordt voor mTLS.
- Type: OAuth
- Flow: application
- Authorization URL:
- Scopes:
- afnemercode-oin: 'afnemercode' dient vervangen te worden met het daadwerkelijke afnemerId van de deelnemer (zie tabel35). 'oin' dient vervangen te worden met het organisatie-identificatie-nummer van de deelnemer (zie https://oinregister.logius.nl/oin-register) en dient tevens overeen te komen met het OIN dat in het client-certificaat is opgenomen dat gebruik wordt voor mTLS.