stable:applicatiebeheer:probleemoplossing:programmablokken:zgw_open_zaak_api_functionaliteit:creeer_zgw_rol

Verschillen

Dit geeft de verschillen weer tussen de geselecteerde revisie en de huidige revisie van de pagina.

Link naar deze vergelijking

Beide kanten vorige revisie Vorige revisie
stable:applicatiebeheer:probleemoplossing:programmablokken:zgw_open_zaak_api_functionaliteit:creeer_zgw_rol [2026/07/15 10:16] – ↷ Pagina verplaatst van stable:applicatiebeheer:probleemoplossing:programmablokken:zgw_open_zaak_api_functionaliteit:creeer_zgw_rol naar dev:applicatiebeheer:probleemoplossing:programmablokken:zgw_open_zaak_api_functionaliteit:creeer_zgw_rol Kars Gottschalstable:applicatiebeheer:probleemoplossing:programmablokken:zgw_open_zaak_api_functionaliteit:creeer_zgw_rol [2026/07/15 11:07] (huidige) – aangemaakt - Externe bewerking 127.0.0.1
Regel 1: Regel 1:
 +===== Creëer rol en contactadres conform OpenZaak API =====
 +{{tag>openwave:1.34:applicatiebeheer:functionaliteiten:zgw}}
  
 +Op het endpoint //base-url//<nowiki>/api/zgw/zaken/api/v1/rollen/</nowiki> kan een POST worden geplaatst waarmee OpenWave een contactpersoon onder een rol bij een zaak kan toevoegen.
 +De //base_url// is de implementatie van OpenWave waar tegenaan gepraat moet worden, bijvoorbeeld: //<nowiki>https://acc.rommeldam.open-wave.nl</nowiki>//.\\
 +
 +Gebaseerd op versie Open Zaak API 1.2
 +
 +<adm warning Whitelist>
 +De zender die hier een creëer rolbericht POST zal gewhitelist moeten worden. Dit kan in de tabellen tbendpointlist en tbipauthorisationlist onder de tegel [[stable:applicatiebeheer:probleemoplossing:portalen_en_moduleschermen:beheerportaal_nieuw:tegels_kolom_gebruikers:endpoints_whitelist]] op het nieuwe beheerportaal onder de kolom //Gebruikers//.
 +In de tabel tbendpointlist zal minimaal het endpoint ///api/zgw// gedefinieerd moeten zijn met daaronder (in de tabel tbipauthorisationlist) het IP-adres van de zender.
 +</adm>
 +
 +===== Authorisation Token =====
 +
 +In de Authorization header van dit POST bericht moet een valide JWT-token worden meegegeven onder Bearer Token.
 +Zie voorbeeld bij [[stable:applicatiebeheer:probleemoplossing:programmablokken:zgw_open_zaak_api_functionaliteit:creeer_zgw_zaak]].
 +
 +Voor het verkrijgen van een token (met beperkte geldigheidsduur!) zie:  [[stable:applicatiebeheer:probleemoplossing:programmablokken:zgw_open_zaak_api_functionaliteit]].\\
 +
 +De token wordt opgezocht in de tabel tbaccesstoken en het tijdstip van aanvraag wordt getoetst aan de geldigheidsduur van de gevonden rij.
 +
 +<adm warning (robot) Medewerker moet gelinkt zijn aan endpoint>
 +De gevonden token is gelinkt aan een (robot)-medewerker (degene onder wiens credentials het token is gecreëerd). Bij de betreffende medewerkers kaart moet de kolom //Endpoint (robotmedewerker is gedefinieerd voor binnenkomende berichten op endpoint)// (dnkeyendpointlist) in blok login verwijzen naar een kaart in //tbendpointlist// waarvan de inhoud van de kolom //dvendpointurl// een substring is van dit endpoint //api/zgw/zaken/api/v1/rollen/ /// waarop dit creerrolbericht wordt gepost: bijvoorbeeld: ///api/zgw//
 +</adm>
 +
 +===== Headers =====
 +
 +De enige verplichte header variabele is: Content-Type met als waarde //application/json//
 +
 +===== Body =====
 +
 +In application/JSON.
 +<adm example voorbeeld natuurlijk persoon>
 +  {
 +    "zaak": "https://acc.rommeldam.open-wave.nl/api/zgw/zaken/api/v1/zaken/dc594a1a-61ac-49d2-88cd-535029033fe3",
 +    "betrokkeneType": "natuurlijk_persoon",
 +    "roltype": "https://acc.rommeldam.open-wave.nl/api/zgw/catalogi/api/v1/roltypen/049ce308-5d74-4bfa-a0f9-3e72d3d17a13",
 +    "roltoelichting": "Belanghebbende",
 +    "contactpersoonRol": {
 +        "emailadres": "smulders@rem.nl",
 +        "functie": "",
 +        "telefoonnummer": "",
 +        "naam": "Smulders, Harry"
 +    },
 +    "betrokkeneIdentificatie": {
 +        "inpBsn": "",
 +        "anpIdentificatie": "",
 +        "inpA_nummer": "",
 +        "geslachtsnaam": "Smulders",
 +        "voorvoegselGeslachtsnaam": "",
 +        "voorletters": "M.H.",
 +        "voornamen": "",
 +        "geslachtsaanduiding": "m",
 +        "geboortedatum": "",
 +        "verblijfsadres": {
 +            "aoaIdentificatie": "1234567890",
 +            "wplWoonplaatsNaam": "Assendelft",
 +            "gorOpenbareRuimteNaam": "Bakkerstraat",
 +            "aoaPostcode": "1074XK",
 +            "aoaHuisnummer": "13",
 +            "aoaHuisletter": "s",
 +            "aoaHuisnummertoevoeging": "",
 +            "inpLocatiebeschrijving": ""
 +        }
 +    }
 +  }
 +</adm>
 +<adm example voorbeeld vestiging>
 +  {
 +    "zaak": "https://acc.rommeldam.open-wave.nl/api/openzaak/zaken/api/v1/zaken/Pau04c5f-001d-46d7-a678-36054799aPau",
 +    "betrokkeneType": "vestiging",
 +    "roltype": "https://acc.rommeldam.open-wave.nl/api/openzaak/catalogi/api/v1/roltypen/b16743b9-6555-48c5-986d-b4c8c646a40c",
 +    "roltoelichting": "initiator",
 +    "contactpersoonRol": {
 +        "emailadres": "Van@rem.nl",
 +        "functie": "",
 +        "telefoonnummer": "",
 +        "naam": "Eend, Vano"
 +    },
 +    "betrokkeneIdentificatie": {
 +        "vestigingsNummer": "000004900111",
 +        "handelsnaam": ["Rem Automatisering BV"],
 +        "verblijfsadres": {
 +            "aoaIdentificatie": "",
 +            "wplWoonplaatsNaam": "Amsterdam",
 +            "gorOpenbareRuimteNaam": "Cruquiusweg",
 +            "aoaPostcode": "1019AH",
 +            "aoaHuisnummer": 60,
 +            "aoaHuisletter": "",
 +            "aoaHuisnummertoevoeging": ""
 +          },
 +        "subVerblijfBuitenland": {},
 +        "kvkNummer": "33259561"
 +    }
 +  }
 +
 +</adm>
 +
 +<adm example voorbeeld niet natuurlijk persoon>
 + {
 +  "zaak": "https://acc.rommeldam.open-wave.nl/api/openzaak/zaken/api/v1/zaken/Pau04c5f-001d-46d7-a678-36054799aPau",
 +  "betrokkeneType": "niet_natuurlijk_persoon",
 +  "roltype": "https://acc.rommeldam.open-wave.nl/api/openzaak/catalogi/api/v1/roltypen/b16743b9-6555-48c5-986d-b4c8c646a40c",
 +  "roltoelichting": "belanghebbende",
 +  "contactpersoonRol": {
 +      "emailadres": "PaulTestBV@rem.nl",
 +      "functie": "",
 +      "telefoonnummer": "",
 +      "naam": "Eend, Vano"
 +  },
 +  "betrokkeneIdentificatie": {
 +      "innNnpId": "123456789",
 +      "statutaireNaam": "Pauls test B.V.",
 +      "bezoekadres": "Van Haldstweg 43 Zomeren"
 +           }
 +  }
 +</adm>
 +Zie Github: zie POST //Maak een ROL aan bij een ZAAK// op [[https://redocly.github.io/redoc/?url=https://raw.githubusercontent.com/vng-Realisatie/zaken-api/1.5.1/src/openapi.yaml#tag/rollen/operation/rol_create]].\\
 +
 +De verwerking van het bericht door OpenWave wordt gelogd in tbmessagelog indien  
 +  * de instelling //Sectie: ZGW en Item: Messagelog// aangevinkt staat 
 +  * EN de instelling //Sectie: OWB en Item: MessageLog// aangevinkt staat
 +
 +In principe leidt de inhoud van de body tot de aanmaak van een nieuwe contactpersoon of het koppelen van een bestaande contactpersoon onder een rol (tbomgvergcontactennn of tbovcontactennn) bij een omgevingzaak of APV/Overige zaak die eerder is aangemaakt en voorzien is van een gevulde kolom dvzgwuuid. Dit, mits aan de nodige voorwaarden in de OpenWave implementatie is voldaan: 
 +  * de waarde van item: //betrokkeneType// mag alleen //natuurlijk_persoon// of //niet_natuurlijk_persoon// of //vestiging// zijn
 +  * Er moet tenminste één valide kaart zijn in de OpenWave roltype tabel (tbzgwroltypes) met een gevulde unieke UUID-code in de kolom //dvzgwuuid// die gelijk is aan de waarde (een UUID-code) vanaf de laatste slash van item //**roltype**//
 +  * De robotmedewerker die verbonden is aan de uitgereikte token moet gekoppeld zijn aan de rechtengroep die het functionele recht tbomgrechten.dlbomgins dan wel tbovrechten.dlbovvins (insertrecht op de omgevingstabel of APV/Overige tabel) aangevinkt heeft staan.
 +  * Er moet een unieke kaart zijn in tbomgvergunning waarvoor geldt dat tbomgvergunning.dvzgwuuid gelijk is aan de waarde (een UUID-code) vanaf de laatste slash van item //**zaak**//. OF moet een unieke kaart zijn in tbovvergunningen waarvoor geldt dat tbovvergunningen.dvzgwuuid gelijk is aan de waarde (een UUID-code) vanaf de laatste slash van item //**zaak**// 
 +  * Indien de instelling //Sectie: ZGW en Item: CheckEenRolContactPerZaak// bestaat en aangevinkt is dan mag er nog geen kaart aanwezig zijn in tbomgvergcontactennn bij de gevonden omgevingzaak (OF in tbovcontactennn bij de gevonden APV/Overige zaak). Hiermee kan het dubbel verwerken van een zelfde bericht voorkomen worden.
 +  * De instelling //Getal1// van //Sectie: ZGW en Item: KeyAnoniemContactadres// moet verwijzen naar de dnkey van een valide contactadreskaart (tbcontactadressen) die gebruikt gaat worden voor een anoniem contactadres bij ontbreken van de nodige informatie.
 +  * De adresrol AVR (initiator, aanvrager) mag in OpenWave maar één keer voorkomen bij een zaak. Hierop wordt gecontroleerd.
 + 
 +<adm warning UUID van roltype>
 +In de koppeltabel tbzgwroltypes (zaakbeheerportaal, in het blok roltypes binnen het detailscherm van zaaktype tbsoortomgverg of tbsoortovverg) moet door de functioneel beheerder bij één of meer zaaktypes een koppeling worden gemaakt met de tabel tbadressoort. Deze koppelingen moeten worden voorzien van een unieke UUID-code in de kolom //tbzgwroltypes.dvzgwuuid//. Deze code(s) moeten vervolgens buiten OpenWave om eenmalig gecommuniceerd worden met de zender zodat deze het item roltype in de body kan vullen. Deze roltype-uuid kan ook opgehaald worden met [[stable:applicatiebeheer:probleemoplossing:programmablokken:zgw_open_zaak_api_functionaliteit:opvragenlijstmetzgwzaaktypen]] of [[opvragen_lijst_met_roltypen|]]
 +</adm>
 +
 +De zaak wordt opgezocht in tbomgvergunning dan wel in tbovvergunningen in de kolom dvzgwuuid op basis van de waarde van item //zaak// vanaf de laatste slash.
 +Er wordt dan een nieuwe kaart gemaakt in tbomgvergcontactennn of tbovcontactennn met
 +  * dnkeyomgvergunningen = de dnkey van de gevonden rij uit tbomgvergunning OF dnkeyovvergunningen is die uit tbovvergunningen  
 +  * dvcodeadressoort = de dvcodeadressoort uit de gevonden rij in tbzgwroltypes 
 +  * dnkeycontactadressen = de dnkey van een rij in tbcontactadressen (zie hieronder voor de bepaling hiervan daarvan).  
 +Er wordt een unieke UUID-code uitgetrokken voor de aangemaakte rij en deze code komt in kolom //tbomgvergcontactennn.dvzgwuuid, dan wel tbovcontactennn.dvzgwuuid//
 +
 +**Bepaling contactadreskaart**
 +In de OpenZaak API hoeven de items “contactpersoonRol” en “betrokkeneIdentificatie” niet in de body zijn opgenomen en de onderliggende items daarvan hoeven ook niet opgenomen te zijn en de waardes daarvan mogen leeg zijn.
 +OpenWave redeneert daarom als volgt voor de bepaling van het contactadres:\\
 +
 +Indien 
 +  * item //betrokkeneIdentificatie// niet bestaat 
 +  * EN binnen item //contactpersoonRol// is:
 +     * item //naam// leeg of bestaat niet 
 +     * EN/OF item //emailadres// leeg of bestaat niet
 +dan zoekt OpenWave naar de dnkey van de contactadreskaart (tbcontactadressen) gedefinieerd door //Getal1// van de instelling //Sectie: ZGW en Item: KeyAnoniemContactadres//.\\
 +
 +Anders, indien 
 +  * item //betrokkeneIdentificatie// niet bestaat 
 +  * EN binnen item //contactpersoonRol// is item //naam// gevuld en item //emailadres// gevuld 
 +dan zoekt OpenWave naar een geldige kaart in tbcontacadressen met dvemail = //contactpersoonRol emailadres// (indien gevuld) EN dvachternaam = //contactpersoonRol naam//. Indien niet gevonden dan wordt een nieuwe kaart aangemaakt in tbcontactadressen op basis van naam en email en dvtelefoonnummer.\\
 +
 +Anders, - item //betrokkeneIdentificatie// bestaat - dan zoekt OpenWave naar een geldige kaart in tbcontactadressen met respectievelijk dvsofinummer = //betrokkeneIdentificatie inpBsn//.
 +Anders (nog geen kandidaat gevonden) dan zoekt OpenWave naar een geldige kaart in tbcontactadressen met respectievelijk dvnpnanp = //anpIdentificatie// (indien gevuld), of dvrsin = innNnpId (indien gevuld) of dvvestigingsnr = vestigingsNummer (indien gevuld). Alle in combinatie met //contactpersoonRol emailadres//.
 +Anders (en nog niet gevonden dus) dan zoekt OpenWave naar een geldige kaart in tbcontactadressen met dvemail = //contactpersoonRol emailadres// (indien gevuld) EN dvachternaam  = //betrokkeneIdentificatie geslachtsnaam// (indien gevuld).
 +Anders (en nog niet gevonden dus) dan zoekt OpenWave naar een geldige kaart in tbcontactadressen met dvemail = contactpersoonRol emailadres (indien gevuld) EN dvbedrijfsnaam = betrokkeneIdentificatie handelsnaam (indien gevuld en wel de eerste indien gevuld met een rij van handelsnamen).
 +
 +Voor deze zoekopdrachten geldt dat als er meerdere kandidaten zijn dan dan de eerste de beste de gevonden kaart is.\\
 +
 +Indien GEEN contactadreskaart is gevonden dan wordt een nieuwe contactadreskaart aangemaakt met de voorhanden gegevens.
 +
 +OpenWave maakt nu een kaart aan in tbomgvergcontactennn of in tbovcontactennn bij de zaak met een verwijzing naar de dnkey van de (gevonden of aangemaakte) contactadreskaart en de rol. Voor de combinatie wordt ook een UUID-code uitgetrokken en bij deze regel in de kolom tbomgvergcontactennn.dvzgwuuid dan wel tbovcontactennn.dvzgwuuid geplaatst.
 +
 +De statutaire naam en de handelsnaam worden zonodig overgenomen in de kolom dvbedrijfsnaam van het contactadres in OpenWave.
 +
 +Indien de instelling //Sectie: ZGW// met //Item: ContactpersoonOverschrijven// aangevinkt is dan wordt een bestaande contactpersoon altijd overschreven met de nieuwe informatie. Ook bij zaken die in het verleden liggen.
 +
 +<adm warning Contactgegevens naar StUF ZAAK/DMS>
 +Zie betreffende kopje bij [[vereiste_minimale_instellingen|]]
 +</adm>
 +
 +====== Responsebericht =====
 +
 +Indien de rol niet kon worden aangemaakt wordt een responsecode anders dan 200/201 geretourneerd met in de body de oorzaak van het falen.
 +Indien de rol succesvol is aangemaakt wordt onder de responsecode 201 het oorspronkelijke bericht geretourneerd aangevuld met de verplichte items, waarbij
 +  *  in het item //uuid// de code wordt geretourneerd die opgeslagen is in de nieuwe rol (= combinatie zaak, roltype en contactadres) (tbomgvercontactennn.dvzgwuuid of tbovcontactennn.dvzgwuuid).
 +
 +<adm example Voorbeeld response body>
 +  {
 +  "roltoelichting": "Belanghebbende",
 +  "roltype": "MilieuKlachten",
 +  "statussen": [],
 +  "betrokkeneIdentificatie": {
 +    "voornamen": "",
 +    "geslachtsaanduiding": "m",
 +    "anpIdentificatie": "",
 +    "voorletters": "M.H.",
 +    "geslachtsnaam": "Smulders",
 +    "inpBsn": "",
 +    "inpA_nummer": "",
 +    "voorvoegselGeslachtsnaam": "",
 +    "geboortedatum": "",
 +    "verblijfsadres": {
 +      "aoaIdentificatie": "1234567890",
 +      "inpLocatiebeschrijving": "",
 +      "gorOpenbareRuimteNaam": "Bakkerstraat",
 +      "wplWoonplaatsNaam": "Assendelft",
 +      "aoaHuisnummertoevoeging": "",
 +      "aoaHuisletter": "s",
 +      "aoaHuisnummer": "13",
 +      "aoaPostcode": "1074XK"
 +    }
 +  },
 +  "zaak": "https://acc.rommeldam.open-wave.nl/api/openzaak/zaken/api/v1/zaken/fda36d38dd99476eb5b49d88f1495f76",
 +  "betrokkeneType": "natuurlijk_persoon",
 +  "contactpersoonRol": {
 +    "functie": "",
 +    "telefoonnummer": "",
 +    "naam": "Smulders, Harry",
 +    "emailadres": "smulders@rem.nl"
 +  },
 +  "registratiedatum": "2024-08-12T12:37:50",
 +  "uuid": "cac10cf1d4704af8b6212200098e7841",
 +  "omschrijvingGeneriek": "initiator",
 +  "url": "https://acc.rommeldam.open-wave.nl/api/zgw/zaken/api/v1/rollen/cac10cf1d4704af8b6212200098e7841"
 +  }
 +</adm>
  • stable/applicatiebeheer/probleemoplossing/programmablokken/zgw_open_zaak_api_functionaliteit/creeer_zgw_rol.txt
  • Laatst gewijzigd: 2026/07/15 11:07
  • door 127.0.0.1