Inleiding
Voertuiggegevens ophalen. Deze info kunnen gemeentes gebruiken voor het aanrekenen van parkeerretributies of GAS-boetes. Daarnaast zijn er ook use cases met betrekking tot lage emissie zones of voertuigkeuringen.
Use cases
-
Automatisch de titularis van een nummerplaat achterhalen voor het aanrekenen van parkeerretributies of GAS-boetes (bijvoorbeeld na vaststelling door een sanctionerend ambtenaar, een scanwagen of een ANPR-camera).
-
Nagaan of een voertuig toegang heeft tot een lage-emissiezone op basis van de voertuigkenmerken (brandstoftype, vermogen, euronorm), rekening houdend met het proportionaliteitsbeginsel binnen de GDPR.
-
Bepalen van de ouderdom van een voertuig ter voorbereiding van een uitnodiging tot keuring (convocatie).
-
Opzoeken van de titularis van een buitenlands voertuig, bijvoorbeeld bij een vastgestelde overtreding met een niet-Belgische nummerplaat.
-
Actuele adresgegevens van de titularis ophalen (indien de instelling hiervoor een aparte machtiging heeft) voor correcte facturatie of aanmaning.
Setup
Idem als bij alle MAGDA-connectoren. Zie MAGDA algemene setup.
Specifieke applicatie eigenschappen
Specifieke applicatie eigenschappen, los van de eigenschappen die de toegang regelen.
Car
Enkel voor giveCar.
De aangesproken service wordt uitgefaseerd langs de kant van MAGDA. Gebruik bij voorkeur de overige functies binnen de mobiliteitsconnector.
Mobility
Voor de overige functies.
De MAGDA Mobiliteit-connector is de enige MAGDA-connectorvariant die communiceert via een REST API. De andere MAGDA-connectoren hanteren SOAP als communicatiemodus.
|
Eigenschap |
Default |
Beschrijving |
|---|---|---|
|
|
- |
Base-URL voor de Mobility REST API |
|
|
- |
OAuth2 token-endpoint URL |
|
|
- |
OAuth2 scopes (spatie-gescheiden) |
|
|
- |
OAuth2 client ID (UUID-formaat) |
|
|
- |
Lokaal bestandspad naar de JWK-key (JSON-formaat) |
|
|
|
Indien |
|
|
- |
AWS Secrets Manager-pad voor de JWK-key. |
Services en functies
Overzicht
|
Functie |
Retourtype |
Info |
|---|---|---|
|
|
Voertuiggegevens op basis van nummerplaat (uitgefaseerde SOAP-dienst) |
|
|
|
Titularisgegevens van een buitenlands voertuig op basis van nummerplaat en landcode (REST API) |
|
|
|
Titularis- en voertuiggegevens van een Belgisch voertuig op basis van nummerplaat (REST API) |
Elke functie hieronder is, naast de workflow expressie, ook rechtstreeks aanroepbaar vanuit Java-code door MagdaCamundaConnector (bean magda) te injecteren in je klasse. Zie MAGDA gebruik voor een volledig voorbeeld met dependency injection. De "Java-code"-snippets per functie tonen enkel de effectieve aanroep zelf.
giveCar
Vraag voertuiggegevens op op basis van nummerplaat.
De aangesproken SOAP-service wordt uitgefaseerd langs de kant van MAGDA. Gebruik bij voorkeur de overige functies binnen de mobiliteitsconnector.
Workflow expressie
${magda.giveCar(String licensePlate, String date, String dossierId)}
Java-code
GeefVoertuigResponse response = magda.giveCar(licensePlate, date, dossierId);
Input
|
Inputparameters |
Data type |
Voorbeeld |
Uitleg |
|---|---|---|---|
|
|
String |
‘ABC 123’ |
Nummerplaat voertuig |
|
|
String (date format: YYYY-MM-DD) |
‘2025-05-30’ |
Refertedatum |
|
|
String (GUID) |
'550e8400-e29b-41d4-a716-446655440000' |
Unieke id van het dossier binnen de Skryv applicatie (met oog op logging van de call) |
MAGDA-documentatie
Technische documentatie rond geefVoertuig
Output
Je krijgt een getypeerd GeefVoertuigResponse-object terug met de gegevens van het voertuig: nummerplaat, chassisnummer, eigenaar (INSZ of ondernemingsnummer, nooit beide), commerciële naam, kleur, categorie, euronorm en datum van eerste inschrijving. Daarnaast bevat het object ook uitgebreidere technische gegevens (afmetingen, massa, vermogen, brandstof, ...) en gegevens over de status en levenscyclus van de inschrijving.
Gepseudonimiseerd voorbeeld:
<Inhoud>
<Voertuig>
<Nummerplaat>1AAA123</Nummerplaat>
<Chassisnummer>2FTJW35GXRCA04699</Chassisnummer>
<Eigenaar>
<INSZ>850102XXX45</INSZ>
</Eigenaar>
<CommercieleNaam>OPEL CORSA</CommercieleNaam>
<Kleur>
<Code>J</Code>
<Omschrijving>Oranje</Omschrijving>
</Kleur>
<Categorie>
<Code>M1</Code>
<Omschrijving>VOERTUIGEN BESTEMD VOOR PERSONENVERVOER - TEN HOOGSTE 8 ZITPLAATSEN, BESTUURDER NIET MEEGEREKEND</Omschrijving>
</Categorie>
<Euronorm>
<Code>6</Code>
<Omschrijving>Euro 6</Omschrijving>
</Euronorm>
<DatumEersteInschrijving>2015-05-06</DatumEersteInschrijving>
</Voertuig>
</Inhoud>
(Opmerking: Eigenaar bevat óf een INSZ-element óf een Ondernemingsnummer-element, nooit beide — afhankelijk van of de eigenaar een natuurlijke persoon of een onderneming is.)
Error-handling
Aan deze functie gerelateerde foutcodes:
|
Code |
Type |
Toelichting |
|---|---|---|
|
30001 |
FOUT |
Geen gegevens gevonden voor de vraag |
|
40131 |
FOUT |
Het chassisnummer is onbekend — de nummerplaat is niet (meer) gekoppeld aan een voertuig (uitgeschreven nummerplaat) |
|
40005 |
FOUT |
De toegang tot de gegevens is geweigerd |
|
60009 |
FOUT |
Er heeft zich een technisch probleem voorgedaan |
Voor een compleet overzicht, kan je terecht op de MAGDA-foutcodepagina.
Bij sommige errors wil je het proces niet laten vastlopen. In dat geval vorm je de technische error (foutcode) om naar een BPMN-error en vang je deze op via een error boundary event.
// Voorbeeld: uitzondering opvangen en gooien als BpmnError
GeefVoertuigResponse response = magda.giveCar(licensePlate, date, dossierId);
List<UitzonderingType> uitzonderingen = response.getRepliek()
.getAntwoorden().getAntwoord().getUitzonderingen().getUitzondering();
for (UitzonderingType uitzondering : uitzonderingen) {
String code = uitzondering.getIdentificatie();
if ("30001".equals(code)) {
throw new BpmnError("MAGDA_VOERTUIG_NIET_GEVONDEN", uitzondering.getDiagnose());
}
if ("40131".equals(code)) {
throw new BpmnError("MAGDA_NUMMERPLAAT_ONBEKEND", uitzondering.getDiagnose());
}
if ("40005".equals(code)) {
throw new BpmnError("MAGDA_TOEGANG_GEWEIGERD", uitzondering.getDiagnose());
}
if ("60009".equals(code)) {
throw new BpmnError("MAGDA_TECHNISCHE_FOUT", uitzondering.getDiagnose());
}
}
giveCrossbordertitularsByPlate
Vraag gegevens buitenlandse voertuigen op op basis van nummerplaat.
Workflow expressie 1
${magda.giveCrossbordertitularsByPlate(String plateNr1, String countryCode)}
Workflow expressie 2
${magda.giveCrossbordertitularsByPlate(String plateNr1, String countryCode, String dateTime)}
Java-code 1
CrossborderTitularsResponse response = magda.giveCrossbordertitularsByPlate(plateNr1, countryCode);
Java-code 2
CrossborderTitularsResponse response = magda.giveCrossbordertitularsByPlate(plateNr1, countryCode, dateTime);
Input
|
Inputparameters |
Data type |
Voorbeeld |
Uitleg |
|---|---|---|---|
|
|
String |
‘ABC 123’ |
Nummerplaat voertuig |
|
|
String (hoofdletters volgens ISO 3166-1 alpha-2 landcode) |
‘SE’ |
Landcode |
|
|
String (formaat volgens ISO-8601 date-time) |
' 2024-09-15T11:30:00Z' |
Refertedatum |
MAGDA-documentatie
Technische documentatie rond mobility/crossborderTitulars-v1
Output
Je krijgt een getypeerd CrossborderTitularsResponse-object terug (JSON-LD) met de titularisgegevens van het buitenlandse voertuig. Het antwoord bevat een items-lijst met licentie-objecten; elk licentie-object bevat de gegevens van de titularis — ofwel als natuurlijke persoon (person), ofwel als organisatie (organisation), nooit beide — samen met diens contactinformatie (adres) en de landcode van de registratiedocumenten.
Gepseudonimiseerd voorbeeld (JSON-LD, gebaseerd op de officiële elementbeschrijving):
{
"@context": "https://vlaamseoverheid.be/oslo/mobility/context",
"self": "https://api.magda.vlaanderen.be/mobility/crossborderTitulars/SE/ABC123",
"items": [
{
"license": {
"@id": "_:100",
"@type": "License",
"person": {
"firstName": "Anna",
"lastName": "Peeters"
},
"contactInfo": {
"address": {
"streetName": "Kerkstraat",
"houseNumber": "12",
"postalCode": "9000",
"municipality": "Gent",
"country": "BE"
}
},
"registrationLanguageCode": "SE",
"type": "person"
}
}
]
}
Error-handling
Deze functie spreekt een REST-dienst aan. Foutafhandeling verloopt hier niet via een Uitzonderingen-lijst in het antwoord (zoals bij de SOAP-diensten), maar via de HTTP-statuscode van de aanroep. Bij een fout gooit de onderliggende RestTemplate een HttpStatusCodeException.
|
HTTP-status |
Betekenis |
Zinvol om te herproberen? |
|---|---|---|
|
400 |
Bad Request — de vraag is foutief |
Nee, eerst de vraag aanpassen |
|
401 |
Unauthorized — geen toegangsrecht |
Nee, eerst de aansluiting/machtiging controleren |
|
500 |
Internal Server Error — onverwachte fout bij MAGDA |
Nee, contacteer de MAGDA Service Desk |
|
502 / 503 / 504 |
Tijdelijk probleem bij MAGDA of de bron |
Ja — wordt trouwens al deels automatisch herprobeerd door de connector zelf (resilience4j |
// Voorbeeld: HTTP-fout opvangen en omzetten naar een BpmnError
try {
CrossborderTitularsResponse response = magda.giveCrossbordertitularsByPlate(plateNr1, countryCode);
// verwerk response
} catch (HttpClientErrorException.BadRequest e) {
throw new BpmnError("MAGDA_ONGELDIGE_VRAAG", e.getMessage());
} catch (HttpClientErrorException.Unauthorized e) {
throw new BpmnError("MAGDA_TOEGANG_GEWEIGERD", e.getMessage());
} catch (HttpServerErrorException e) {
throw new BpmnError("MAGDA_TECHNISCHE_FOUT", e.getMessage());
}
giveRegistrationsTitularByPlate
Vraag voertuiggegevens op op basis van nummerplaat.
Workflow expressie
${magda.giveRegistrationsTitularByPlate(String plateNr, String date, String addressEnrichmentPerson, String addressEnrichmentOrganisation)}
Java-code
RegistrationsTitularResponse response = magda.giveRegistrationsTitularByPlate(plateNr, date, addressEnrichmentPerson, addressEnrichmentOrganisation);
Input
Alle parameters behalve plateNr zijn optioneel — geef null of een lege waarde mee indien niet van toepassing.
|
Inputparameters |
Data type |
Voorbeeld |
Uitleg |
|---|---|---|---|
|
|
String |
|
Nummerplaat voertuig (verplicht) |
|
|
String (date format: YYYY-MM-DD) |
|
Refertedatum van de gevraagde situatie (optioneel). Wordt intern omgezet naar |
|
|
String |
|
Optioneel: geeft aan via welke bron het actuele adres van de titularis (indien een natuurlijke persoon) verrijkt moet worden. Vereist een aparte machtiging voor het opvragen van adresgegevens. |
|
|
Boolean |
|
Optioneel: geeft aan of het adres van de titularis (indien een onderneming) verrijkt moet worden via de Kruispuntbank van Ondernemingen. |
Magda-documentatie
Technische documentatie rond mobility/registrationsTitular-v1
Output
Je krijgt een getypeerd RegistrationsTitularResponse-object terug (JSON-LD) met een items-lijst van "registration"-objecten. Elk registration-object bevat vier deelobjecten: driver (de gewone bestuurder van het voertuig), license (gegevens rond de nummerplaat), titular (de titularis — een natuurlijke persoon of een onderneming, nooit beide) en vehicle (technische gegevens van het voertuig). Doorgaans komt er 0 of 1 registration terug; meerdere zijn ook toegestaan.
Gepseudonimiseerd voorbeeld:
{
"@context": "https://vlaamseoverheid.be/oslo/mobility/context",
"self": "https://api.magda.vlaanderen.be/mobility/registrationsTitular?plateNr=1ABC123",
"items": [
{
"registration": {
"driver": {
"firstName": "Anna",
"lastName": "Peeters"
},
"license": {
"plateNumber": "1ABC123",
"firstRegistrationDate": "2015-05-06"
},
"titular": {
"person": {
"nationalNr": "850102XXX45",
"firstName": "Anna",
"lastName": "Peeters"
},
"contactInfo": {
"address": {
"streetName": "Kerkstraat",
"houseNumber": "12",
"postalCode": "9000",
"municipality": "Gent",
"country": "BE"
}
}
},
"vehicle": {
"chassisNumber": "2FTJW35GXRCA04699",
"commercialName": "OPEL CORSA",
"colour": "Oranje"
}
}
}
]
}
Error-handling
Deze functie spreekt een REST-dienst aan. Foutafhandeling verloopt hier niet via een Uitzonderingen-lijst in het antwoord (zoals bij de SOAP-diensten), maar via de HTTP-statuscode van de aanroep. Bij een fout gooit de onderliggende RestTemplate een HttpStatusCodeException.
|
HTTP-status |
Betekenis |
Zinvol om te herproberen? |
|---|---|---|
|
400 |
Bad Request — de vraag is foutief |
Nee, eerst de vraag aanpassen |
|
401 |
Unauthorized — geen toegangsrecht |
Nee, eerst de aansluiting/machtiging controleren |
|
500 |
Internal Server Error — onverwachte fout bij MAGDA |
Nee, contacteer de MAGDA Service Desk |
|
502 / 503 / 504 |
Tijdelijk probleem bij MAGDA of de bron |
Ja — wordt trouwens al deels automatisch herprobeerd door de connector zelf (resilience4j |
Bij sommige fouten wil je het proces niet laten vastlopen. In dat geval vorm je de HTTP-fout om naar een BPMN-error en vang je deze vervolgens op via een error boundary event.
try {
RegistrationsTitularResponse response = magda.giveRegistrationsTitularByPlate(plateNr, date, addressEnrichmentPerson, addressEnrichmentOrganisation);
// verwerk response
} catch (HttpClientErrorException.BadRequest e) {
throw new BpmnError("MAGDA_ONGELDIGE_VRAAG", e.getMessage());
} catch (HttpClientErrorException.Unauthorized e) {
throw new BpmnError("MAGDA_TOEGANG_GEWEIGERD", e.getMessage());
} catch (HttpServerErrorException e) {
throw new BpmnError("MAGDA_TECHNISCHE_FOUT", e.getMessage());
}