Zoekdefinities voorbeelden
Voorbeeld 1: basic
Uitleg
Basic voorbeeld waar het “es/tasks” endpoint aangesproken wordt. Je krijgt per record drie eigenschappen terug: het dossierlabel, de naam van de actieve taak en het dossiertype (dienstverlening). De resultaten worden getoond met dossierlabel als sorteercriterium. De eigenschap “allowSelectableItems” betekent dat de backoffice gebruiker die de bulkactie uitvoert, de gewenste records kan aanduiden via selectievakjes.
Voorbeeld
{
"key": "bulk-print",
"label": "Select bulk print tasks",
"allowViewConfiguration": false,
"allowViewSelection": true,
"allowSelectableItems": true,
"datasourceType": "es/tasks",
"columnDefinitions": [{
"heading": "Dossiernummer",
"select": ["dossier.label", "dossier.id"],
"type": "search/keyword",
"field": "dossier.label"
},{
"heading": "Taak",
"type": "search/keyword",
"field": "task.name"
},{
"heading": "Dossier type",
"key": "dossier.type",
"type": "search/keyword",
"field": "dossier.dossierDefinition.label"
}],
"views": [{
"name": "Default view",
"searchTerm": "",
"columns": [
"dossier.label",
"task.name",
"dossier.type"
],
"filters": [],
"sort": {
"criterion": "dossier.label"
}
}]
}
Voorbeeld 2: eenvoudig
Uitleg
Eenvoudig voorbeeld waar het “es/dossiers” endpoint aangesproken wordt. In de “columnDefinitions” bevatten sommige velden expliciete dossierinformatie (bijvoorbeeld het dossierlabel), andere velden putten dan weer uit formulieren (zie velden waarbij verwezen wordt naar een pad met syntax “document.keyFormulier.keyVeld”). Er zijn samengestelde velden (type “multi-field”) die dus twee of meerdere velden met elkaar combineren (typisch naam en voornaam). Verder valt ook de “aggregations” sectie op waarbij de som berekend wordt van alle berekende premiebedragen. Tot slot is er ook de “allowExport” eigenschap die toelaat dat de backoffice gebruiker de resultaten exporteert.
Voorbeeld
{
"key": "bulkpBehandelingMantelzorgpremieSearchdef",
"label": "Selecteer dossiers voor agendering CBS",
"allowSelectableItems": true,
"datasourceType": "es/dossiers",
"columnDefinitions": [
{
"heading": "Dossiernummer",
"select": [
"dossier.label",
"dossier.id"
],
"field": "dossier.label"
},
{
"heading": "Mantelzorger",
"key": "mantelzorger",
"type": "multi-field",
"fields": [
{
"type": "search/text",
"field": {
"path": "document.aanvraagformulierMantelzorgpremie.gegevensAanvrager.voornaamAanvrager",
"options": {
"nesting": "document"
}
}
},
{
"type": "search/text",
"field": {
"path": "document.aanvraagformulierMantelzorgpremie.gegevensAanvrager.naamAanvrager",
"options": {
"nesting": "document"
}
}
}
]
},
{
"heading": "Zorgbehoevende",
"key": "zorgbehoevende",
"type": "multi-field",
"fields": [
{
"type": "search/text",
"field": {
"path": "document.aanvraagformulierMantelzorgpremie.gegevensZorgbehoevende.voornaamZorgbehoevende",
"options": {
"nesting": "document"
}
}
},
{
"type": "search/text",
"field": {
"path": "document.aanvraagformulierMantelzorgpremie.gegevensZorgbehoevende.naamZorgbehoevende",
"options": {
"nesting": "document"
}
}
}
]
},
{
"heading": "Maanden inwonend",
"key": "maandenInwonend",
"field": {
"path": "document.premieformulierAanvraagMantelzorgpremie.maandenInwonend",
"options": {
"nesting": "document"
}
}
},
{
"heading": "Uitdoofscenario?",
"key": "uitdoofscenario",
"type": "search/document/boolean",
"field": {
"path": "document.aanvraagformulierMantelzorgpremie.uitdoofscenario",
"options": {
"nesting": "document"
}
}
},
{
"heading": "Finaal premiebedrag",
"key": "finaalPremiebedrag",
"field": {
"path": "document.exportBetaallijstMantelzorgpremie.premiebedrag",
"options": {
"nesting": "document"
}
}
}
],
"views": [
{
"name": "Default view",
"searchTerm": "",
"columns": [
"dossiernummer",
"dossier.label",
"mantelzorger",
"zorgbehoevende",
"maandenInwonend",
"uitdoofscenario",
"finaalPremiebedrag"
],
"filters": [],
"sort": {
"criterion": "dossier.label"
}
}
],
"aggregations": [
{
"label": "Totaal geselecteerde premie",
"key": "geselecteerdePremie",
"type": "full-selection",
"operator": "sum",
"field": "document.exportBetaallijstMantelzorgpremie.berekendePremiebedragGetal"
}
],
"allowExport": true,
"allowViewConfiguration": true,
"allowViewSelection": true
}
Voorbeeld 3: uitgebreid
Uitleg
Uitgebreider voorbeeld waar opnieuw het endpoint “es/dossiers” aangesproken wordt, maar met extra logica in de kolomdefinities en in de aggregatie. De zoekdefinitie is bedoeld om betalingsdossiers te selecteren, met in het bijzonder:
een samengestelde weergave van begunstigden via de
“content"‑functie.een kolom met een lijst van bereikte mijlpalen binnen het dossier (
milestones.status).een berekende som van premiebedragen via
aggregations.action.
Content-functie
Extra uitleg “content”-functie:
lookupAll('document.betalingsregels.begunstigden.elements', item)haalt alle begunstigden op uit een geneste array in het document.Voor elk element (
item) wordt bekeken of het om een natuurlijke persoon gaat (item.natuurlijke_persoon.name) of om een rechtspersoon (item.naam_rechtspersoon+item.btw).Per begunstigde wordt een leesbare string opgebouwd in de vorm:
Voor natuurlijke persoon:"[naam natuurlijke persoon] - [rekeningnummerGeformateerd]"
Voor rechtspersoon:"[naam rechtspersoon] ([btw]) - [rekeningnummerGeformateerd]"Het resultaat is een samengestelde tekstweergave van alle begunstigden in één kolom, die toch gebaseerd blijft op de achterliggende gestructureerde data.
Aggregations
Onderaan is er een aggregations‑sectie met één aggregatie:
"aggregations": [{
"label": "Totaal geselecteerde premie",
"key": "geselecteerde_premie",
"action": "selectedItems ? selectedItems.reduce(function(accumulated,current) { return accumulated + Number(lookup('document.betalingsregels.premie_na_inhouding',current) ); },0) : 0"
}]
Deze aggregatie werkt als volgt:
Doel: toon het totale premiebedrag voor de huidig geselecteerde dossiers (bulkselectie).
selectedItemsbevat de dossiers die de gebruiker in de lijst heeft aangevinkt.Via
reduce(...)wordt over alle geselecteerde dossiers geloopt:met
lookup('document.betalingsregels.premie_na_inhouding', current)wordt voor elk dossier het veldpremie_na_inhoudingopgehaald (het uiteindelijke premiebedrag na eventuele inhoudingen);Number(...)zorgt ervoor dat de waarde als numeriek bedrag behandeld wordt;alle bedragen worden opgeteld tot één totaalbedrag (
accumulated).
Als er geen
selectedItemszijn, wordt gewoon0teruggegeven.
De action‑expressie in deze aggregatie laat je dus toe om client-side berekeningen uit te voeren op de geselecteerde records, in plaats van op alle resultaten in de dataset. Dat sluit nauw aan bij het gebruik van bulkacties: de gebruiker vinkt een set dossiers aan en ziet meteen het totaalbedrag van de bijhorende premies.
Voorbeeld
{
"key": "bulk-orafin",
"label": "Select payment tasks",
"allowViewConfiguration": false,
"allowViewSelection": true,
"allowSelectableItems": true,
"datasourceType": "es/dossiers",
"columnDefinitions": [{
"heading": "Dossiernummer",
"select": ["dossier.label", "dossier.id"],
"type": "search/keyword",
"field": "dossier.label"
},{
"heading": "Aanvraagdatum",
"key": "aanvraagdatum",
"type": "search/date",
"format": "dd/MM/yyyy",
"field": {
"path": "document.betalingsregels.requestDate",
"options": { "nesting": "document" }
}
},{
"heading": "Begunstigden",
"key": "begunstigden",
"type": "search/keyword",
"field": {
"path": "document.betalingsregels.begunstigden",
"options": { "nesting": "document" }
},
"content": "lookupAll(
'document.betalingsregels.begunstigden.elements',item
).map(
function(item){
return (
(item.natuurlijke_persoon.name ? item.natuurlijke_persoon.name : item.naam_rechtspersoon + ' (' + item.btw +')' ) + ' - ' + item.rekeningnummerGeformateerd)
})"
},{
"heading": "Beslissingsdatum",
"key": "decision-date",
"type": "search/date",
"format": "dd/MM/yyyy",
"field": {
"path": "document.betalingsregels.decisionDate",
"options": { "nesting": "document" }
}
},{
"heading": "Naam volgens KBO",
"key": "kboNaam",
"type": "search/keyword",
"field": "dossier.type"
},{
"heading": "Premiebedrag",
"key": "totale-premie",
"field": {
"path": "document.betalingsregels.premie_na_inhouding",
"options": { "nesting": "document" }
}
},{
"heading": "Mijlpalen",
"field": "milestones.status"
}],
"views": [{
"name": "Default view",
"searchTerm": "",
"columns": [
"dossier.label",
"aanvraagdatum",
"begunstigden",
"kboNaam",
"decision-date",
"totale-premie"
],
"filters": [],
"sort": {
"criterion": "dossier.label"
}
}],
"aggregations": [{
"label": "Totaal geselecteerde premie",
"key": "geselecteerde_premie",
"action": "selectedItems ? selectedItems.reduce(function(accumulated,current) { return accumulated + Number(lookup('document.betalingsregels.premie_na_inhouding',current) ); },0) : 0"
}]
}
Voorbeeld 4: complex
Uitleg
Complex voorbeeld waarbij het search/dossiers‑endpoint aangesproken wordt. In vergelijking met de vorige voorbeelden valt hier vooral op:
het gebruik van een custom search‑endpoint (
search/dossiers) in plaats van een rechtstreekse Elasticsearch‑datasource (es/tasksofes/dossiers).een uitgebreide
searchOptions‑sectie met een definitieschema voor zoekvelden en bijhorende validaties.queryRules die de zoekvelden mappen naar onderliggende documentpaden.
meerdere views met elk een eigen
searchTerm,dossierTypeen sortering.
Search endpoint
In tegenstelling tot de voorbeelden hierboven (die rechtstreeks op es/tasks of es/dossiers werken), gebruikt dit voorbeeld een ander “datasourceType”:
"datasourceType": "search/dossiers"
Belangrijk daarbij:
de datasource is niet langer een ‘platte’ ES‑index, maar een search‑service met:
een zoekschema (velden, types, masks);
validatie op invoer (bv. rijksregisternummer, EAN‑code);
query‑mapping (welke invoervelden zoeken waar in het document).
dit maakt het mogelijk om een rijk zoekformulier aan te bieden aan de gebruiker, in plaats van enkel een simpele vrijetekstzoekterm.
Search options sectie
Een belangrijk nieuw blok is searchOptions.definition. Dit definieert het zoekformulier dat de gebruiker kan invullen. Dit zoekformulier heeft een eigen, ingebouwde logica.
computedExpressions
CODE"computedExpressions": { "valid_ssin": "..." }definieert herbruikbare expressies (hier: validatie van een rijksregisternummer);
kan in
conditionsworden aangeroepen via$$.computedExpressions.valid_ssin.
Velden met maskers en validatie
maskConfig.predefinedMask: "ssin"en"ean":bepalen het invoerformaat (bv. 11 cijfers voor SSIN, 13 cijfers voor EAN).
conditionsmet eenexpression:voeren client‑side validatie uit;
bij fout: tonen een
errorMessageen blokkeren of markeren het veld.
Fieldsets en custom components
CODE{ "type": "fieldset", "label": "Adres", "name": "address", "customComponentName": "skrAddressInput", "fields": [ ... ] }groepeert meerdere velden (straat, huisnummer, postcode, …) onder één adresblok;
customComponentNameverwijst naar een aangepaste UI‑component.
In de vorige voorbeelden had je enkel passieve filters, hier definieer je echt een formulier met eigen logica, validatie en UI‑componenten.
searchOptions.queryRules
De queryRules geven aan waar in het document gezocht moet worden wanneer een gebruiker een bepaald zoekveld invult. Dit is nieuw ten opzichte van de voorgaande voorbeelden:
daar werden filters en kolommen rechtstreeks op ES‑velden gezet.
hier wordt een abstract zoekveld (bv.
rijksregisternummerofaddress.street) gekoppeld aan één of meerdere concrete paths in de index.dit maakt de zoekdefinitie veel flexibeler:
de UI hoeft de interne veldnamen niet te kennen;
de mapping kan aangepast worden zonder de UI te wijzigen.
Views met geavanceerde functionaliteiten
Er zijn meerdere views die gebruik maken van de veel rijkere searchTerm-expressies en een dossierType.
"views": [
{
"name": "Open dossiers",
"searchTerm": "_exists_:task AND dossier.label:2?-MVP-*",
"columns": [ ... ],
"dossierType": "mijn_verbouwpremie",
"sort": {
"criterion": "document.aanvraag.aanvraagdatum",
"desc": false
}
},
{
"name": "Dossiers zonder actieve taak",
"searchTerm": "!exists:(task.active:true)",
...
},
{
"name": "Conceptdossiers",
"searchTerm": "dossier.label:2?-CONCEPT-*",
...
}
]
Nieuw t.o.v. de eerdere voorbeelden:
Elasticsearch‑achtige query‑expressies in
searchTerm:_exists_:taskom enkel dossiers met een taak op te halen;!exists:(task.active:true)om dossiers zonder actieve taak te tonen;dossier.label:2?-MVP-*endossier.label:2?-CONCEPT-*om via een patroon op het dossierlabel te filteren.
dossierTypebeperkt de resultaten tot een bepaald dossiertype ("mijn_verbouwpremie"), wat bovenop desearchTermwerkt.Geavanceerde sortering op een documentveld (
document.aanvraag.aanvraagdatum), eerder dan een eenvoudige sorteerexpressie op één kolomnaam.
Voorbeeld
{
"key": "dienstverlening_dossier_search",
"label": "dossiers",
"datasourceType": "search/dossiers",
"showDossierTypeFilter": true,
"allowExport": true,
"allowSearch": true,
"columnDefinitions": [
{
"heading": "Dossier",
"select": [
"dossier.label",
"dossier.id"
],
"field": "dossier.label",
"type": "search/keyword"
},
{
"heading": "Aanvraagdatum",
"key": "aanvraagdatum",
"type": "search/date",
"format": "dd/MM/yyyy",
"field": {
"path": "document.aanvraag.aanvraagdatum",
"options": {
"nesting": "document"
}
}
},
{
"heading": "Laatste activiteitsdatum",
"type": "search/date",
"field": "dossier.latestActivity"
},
{
"heading": "Latest milestone",
"type": "search/keyword",
"field": "lastMilestone.status"
},
{
"heading": "Alle mijlpalen",
"sort": null,
"field": "milestones.status"
},
{
"heading": "Aangevraagde categorieën",
"key": "categorieen",
"type": "search/document/multichoice",
"sort": false,
"field": {
"path": "document.aanvraag.selectieCategorieen.geselecteerdeCatgeorieen",
"options": {
"nesting": "document"
}
},
"choices": [
{
"name": "binnenrenovatie",
"label": "Binnenrenovatie"
},
{
"name": "muurrenovatie",
"label": "Buitenmuur"
},
{
"name": "dakrenovatie",
"label": "Dak"
},
{
"name": "technischeInstallaties",
"label": "(Voorbereidingswerken) sanitair en elektriciteit"
},
{
"name": "gascondensatieketel",
"label": "Gascondensatieketel"
},
{
"name": "buitenschrijnwerkGlas",
"label": "Ramen en deuren"
},
{
"name": "vloerrenovatie",
"label": "Vloer"
},
{
"name": "vocht",
"label": "Voorbereidingswerken voor isolatie"
},
{
"name": "warmtepomp",
"label": "Warmtepomp"
},
{
"name": "warmtepompboiler",
"label": "Warmtepompboiler"
},
{
"name": "zonneboiler",
"label": "Zonneboiler"
}
]
},
{
"heading": "Naam aanvrager",
"key": "aanvrager",
"type": "search/document/text",
"sort": false,
"filter": false,
"field": {
"path": "document.aanvraag.naamVanDeAanvrager",
"options": {
"nesting": "document"
}
},
"content": "lookupAll('document.loginData',item).map(function(item) { return item.rrnOrKBONumberOfMandaatgever ? item.naamOrganisatie ? item.naamOrganisatie + ' door ' + item.naamOrganisatieMandaatnemer : item.voornaam + ' ' + item.naam + ' door ' + item.naamOrganisatieMandaatnemer : item.naamOrganisatie ? item.naamOrganisatie : item.voornaam + ' ' + item.naam})",
"select": [
"document.loginData.rrnOrKBONumberOfMandaatgever",
"document.loginData.naamOrganisatie",
"document.loginData.naamOrganisatieMandaatnemer",
"document.loginData.voornaam",
"document.loginData.naam"
]
},
{
"heading": "Uitvoeringsadres",
"key": "uitvoeringsadres",
"type": "search/document/text",
"sort": false,
"field": {
"path": "document.aanvraag.uitvoeringsAdresVolledig",
"options": {
"nesting": "document"
}
}
},
{
"heading": "Type aanvrager",
"key": "typeAanvrager",
"type": "search/document/choice",
"sort": false,
"field": {
"path": "document.CategorieenStatus.typeAanvrager",
"options": {
"nesting": "document"
}
},
"choices": [
{
"name": "eigenaarBewoner",
"label": "Eigenaar-bewoner"
},
{
"name": "svkVerhuurder",
"label": "SVK-verhuurder"
},
{
"name": "onderneming",
"label": "Onderneming"
},
{
"name": "vme",
"label": "VME"
},
{
"name": "onbekend",
"label": "Andere"
},
{
"name": "huurder",
"label": "Huurder"
},
{
"name": "externeInvesteerder",
"label": "Enterne investeerder"
}
]
},
{
"heading": "Type gebouw",
"key": "typeGebouw",
"type": "search/document/choice",
"sort": false,
"field": {
"path": "document.CategorieenStatus.typeGebouw",
"options": {
"nesting": "document"
}
},
"choices": [
{
"name": "appartement",
"label": "Appartement"
},
{
"name": "eengezinswoning",
"label": "Eéngezinswoning"
},
{
"name": "appartementsgebouw",
"label": "Appartementsgebouw"
},
{
"name": "nietResidentieel",
"label": "Niet residentieel"
}
]
},
{
"heading": "Type dossier",
"key": "typeDossier",
"type": "search/document/choice",
"sort": false,
"field": {
"path": "document.CategorieenStatus.typeDossier",
"options": {
"nesting": "document"
}
},
"choices": [
{
"name": "wvl",
"label": "Wonen-Vlaanderen"
},
{
"name": "fluvius",
"label": "Fluvius"
},
{
"name": "mix",
"label": "Gemixt"
}
]
},
{
"heading": "Organisatie",
"type": "search/document/choice",
"key": "organisatie",
"field": {
"path": "document.CategorieenStatus.toegewezenAan",
"options": {
"nesting": "document"
}
},
"choices": [
{
"name": "wvl",
"label": "Wonen-Vlaanderen"
},
{
"name": "fluvius",
"label": "Fluvius"
}
]
},
{
"heading": "In beroep",
"key": "dossierInBeroep",
"sort": false,
"type": "search/document/choice",
"field": {
"path": "document.CategorieenStatus.dossierInBeroep",
"options": {
"nesting": "document"
}
},
"choices": [
{
"name": "ja",
"label": "Ja"
},
{
"name": "nee",
"label": "Nee"
}
]
},
{
"heading": "Is heropend",
"key": "dossierHeropend",
"type": "search/document/choice",
"sort": false,
"field": {
"path": "document.CategorieenStatus.dossierIsHeropend",
"options": {
"nesting": "document"
}
},
"choices": [
{
"name": "ja",
"label": "Ja"
},
{
"name": "nee",
"label": "Nee"
}
]
},
{
"heading": "Behandeling",
"key": "behandeling",
"type": "search/document/choice",
"sort": false,
"field": {
"path": "document.CategorieenStatus.behandeling",
"options": {
"nesting": "document"
}
},
"choices": [
{
"name": "parent",
"label": "Parent"
},
{
"name": "child",
"label": "Child"
},
{
"name": "standaard",
"label": "Standaard"
}
]
}
],
"views": [
{
"name": "Open dossiers",
"searchTerm": "_exists_:task AND dossier.label:2?-MVP-*",
"columns": [
"dossier.label",
"aanvraagdatum",
"lastMilestone.status",
"categorieen",
"uitvoeringsadres",
"dossierInBeroep",
"dossierHeropend"
],
"dossierType": "mijn_verbouwpremie",
"filters": [],
"sort": {
"criterion": "document.aanvraag.aanvraagdatum",
"desc": false
}
},
{
"name": "Dossiers zonder actieve taak",
"searchTerm": "!exists:(task.active:true)",
"columns": [
"dossier.label",
"aanvraagdatum",
"lastMilestone.status",
"categorieen",
"uitvoeringsadres"
],
"dossierType": "mijn_verbouwpremie",
"filters": [],
"sort": {
"criterion": "document.aanvraag.aanvraagdatum",
"desc": false
}
},
{
"name": "Conceptdossiers",
"searchTerm": "dossier.label:2?-CONCEPT-*",
"columns": [
"dossier.label",
"aanvraagdatum",
"lastMilestone.status",
"categorieen",
"uitvoeringsadres"
],
"dossierType": "mijn_verbouwpremie",
"sort": {
"criterion": "document.aanvraag.aanvraagdatum",
"desc": false
}
}
],
"searchOptions": {
"definition": {
"computedExpressions": {
"valid_ssin": "($.rijksregisternummer && $.rijksregisternummer.length > 0) ? (97 - ($.rijksregisternummer.substring(0,9) % 97) - $.rijksregisternummer.substring(9,11) === 0) || (97 - ((2 + $.rijksregisternummer.substring(0,9)) % 97) - $.rijksregisternummer.substring(9,11) === 0) : true"
},
"fields": [
{
"type": "text",
"label": "Rijksregisternummer",
"name": "rijksregisternummer",
"maskConfig": {
"predefinedMask": "ssin"
},
"conditions": [
{
"name": "rijksregisternummer",
"level": "error",
"expression": "$$.computedExpressions.valid_ssin",
"errorMessage": "Gelieve een geldig rijksregisternummer in te geven."
}
]
},
{
"type": "fieldset",
"label": "Adres",
"name": "address",
"customComponentName": "skrAddressInput",
"fields": [
{
"type": "text",
"label": "Straatnaam",
"name": "street"
},
{
"type": "text",
"label": "Huisnummer",
"name": "housenumber"
},
{
"type": "text",
"label": "Busnummer",
"name": "boxnumber"
},
{
"type": "number",
"label": "Postcode",
"name": "zipcode"
},
{
"type": "text",
"label": "NIS code",
"name": "nis_code"
},
{
"type": "text",
"label": "Gemeente",
"name": "municipality"
}
]
},
{
"name": "eanCodeWoning",
"label": "EAN-code uitvoeringsadres",
"type": "text",
"maskConfig": {
"predefinedMask": "ean"
},
"conditions": [
{
"name": "geldigeEANcodeWoning",
"level": "error",
"expression": "($ === '' || $ === undefined) ? true : ((10 - (((5*3 + 4 + 1*3 + 4 + 4*3 + parseInt($[0]) + parseInt($[1])*3 + parseInt($[2]) + parseInt($[3])*3 + parseInt($[4]) + parseInt($[5])*3 + parseInt($[6]) + parseInt($[7])*3 + parseInt($[8]) + parseInt($[9])*3 + parseInt($[10]) + parseInt($[11])*3)) % 10)) % 10) === parseInt($[12])",
"errorMessage": "Gelieve een geldig EAN-nummer in te geven"
}
]
},
{
"name": "naam",
"label": "Naam",
"type": "text"
},
{
"name": "voornaam",
"label": "Voornaam",
"type": "text"
}
]
},
"queryRules": {
"rijksregisternummer": {
"paths": [
"document.aanvraag.rijksregisternummerAanvrager"
]
},
"address.street": {
"paths": [
"document.aanvraag.uitvoeringsadres.street"
]
},
"address.housenumber": {
"paths": [
"document.aanvraag.uitvoeringsadres.housenumber"
]
},
"address.boxnumber": {
"paths": [
"document.aanvraag.uitvoeringsadres.boxnumber"
]
},
"address.municipality": {
"paths": [
"document.aanvraag.uitvoeringsadres.municipality"
]
},
"address.zipcode": {
"paths": [
"document.aanvraag.uitvoeringsadres.zipcode"
]
},
"eanCodeWoning": {
"paths": [
"document.aanvraag.eanAndAddress.eanCodeWoning"
]
},
"naam": {
"paths": [
"document.aanvraag.naam"
]
},
"voornaam": {
"paths": [
"document.aanvraag.voornaam"
]
}
}
}
}