====== ZGW OpenZaak API Functionaliteit ====== {{tag>openwave:1.33:applicatiebeheer:functionaliteiten:zgw}} In het kader van Zaak Gericht Werken (ZGW) kan OpenWave zich gedragen als een Open Zaak Systeem waarmee gecommuniceerd kan worden conform de OpenZaak API. Zie voor snel inzicht van de vereisten die de functioneel beheerder moet uitvoeren: [[openwave:1.33:applicatiebeheer:probleemoplossing:programmablokken:zgw_open_zaak_api_functionaliteit:vereiste_minimale_instellingen]]. Alle onderstaande POST en GET berichten moeten in de authorization header voorzien worden van een geldig Bearer JWT token, behalve het opvragen van de token zelf **Ophalen catalogus-informatie**\\ Om cataglogus-informatie (meta-informatie cq identifiers over zaaktypen, eigenschapen ,rollen, documenttypes e.d.) op te halen is het volgende berichtenverkeer mogelijk: {{:openwave:1.33:applicatiebeheer:probleemoplossing:programmablokken:zgw_openzaak_catalogiberichtenflow.png?800|}} Zie ook: [[https://vng-realisatie.github.io/gemma-zaken/standaard/catalogi/redoc-1.3.1#tag/catalogussen]] **Aanbrengen van zaken**\\ {{:openwave:1.33:applicatiebeheer:probleemoplossing:programmablokken:zgw_openzaak_zakenberichtenflow.png?800|}} Zie ook: [[https://redocly.github.io/redoc/?url=https://raw.githubusercontent.com/vng-Realisatie/zaken-api/1.5.1/src/openapi.yaml]] **Uploaden van document**\\ {{:openwave:1.33:applicatiebeheer:probleemoplossing:programmablokken:zgw_openzaak_documentenberichtenflow.png?800|}} Zie ook: [[https://redocly.github.io/redoc/?url=https://raw.githubusercontent.com/VNG-Realisatie/gemma-documentregistratiecomponent/1.5.0/src/openapi.yaml]] ===== Ophalen Authorisatie Token ===== Alle POST en GET berichten moeten in de authorization header voorzien worden van een geldig Bearer JWT token.\\ Dit token kan worden opgevraagd met een POST op het endpoint: //base-url///api/zgw/authentication/token/.\\ De //base_url// is de implementatie van OpenWave waar tegenaan gepraat moet worden. bijvoorbeeld: //https://acc.rommeldam.open-wave.nl//\\ De zender die hier om een authorisatietoken vraagt zal gewhitelist moeten worden. Dit kan in de tabellen tbendpointlist en tbipauthorisationlist onder de tegel [[openwave:1.33: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. In de authorization header van dit POST bericht om een token aan te vragen dienen alleen de parameters //Username// en //Password// onder Basic Authorization te worden gevuld. {{openwave:applicatiebeheer:probleemoplossing:programmablokken:zgw_tokenopvragen.png?600|zgw_tokenopvragen}} Per implementatie worden deze username en password uitgereikt en vastgelegd in de medewerkerstabel. In de tabel tbmedewerkers moet hiertoe een nieuwe medewerkerskaart aangemaakt worden met: * Loginnaam (dvloginnaam) = de uit te reiken //Username// * Client secret bij loginnaam t.b.v. accesstoken (dvclientsecret) = het uit te reiken //Password//. Let op: De ingetoetste waarde kan door OpenWave automatisch gecrypt worden opgeslagen indien //Getal1// van de instelling //Sectie: Encryption en Item: Method// de waarde 3 heeft. Zie [[openwave:1.33:applicatiebeheer:instellen_inrichten:2way_encryptie_externe_wachtwoorden]]. Aan de zender moet dus de ongecrypte versie worden uitgereikt. De (robot)-medewerker moet in dienst zijn (vervaldatum leeg of > vandaag) en de kolom met de omschrijving //1=robot, 2=browser, 3=beide// (dnmaginmap) moet de waarde 3 hebben. ==== Response bericht ==== In de body van het retourbericht bij responsecode 201 wordt de token afgeleverd bijv.: { "valid_from": "2024-07-29T11:19:49", "token_type": "Bearer", "expires_in": 300, "token": "eyJ0eXAiOiAiSldUIiwiYWxnIjogIkhTMjU2In0.eyJ1c2VyX2lkIjoiIiwiaXNzIjoiUmVtIEF1dG9tYXRpc2VyaW5nIiwidXNlcl9yZXByZXNlbnRhdGlvbiI6IiIsImlhdCI6MTcyMjI0NDc4OTQzNSwiY2xpZW50X2lkIjoiWkdXVGVzdCJ9.pEOZhPMLl5hC5jezq3MQYWHkApmFguruYe9aWTMCxVM" } De token is 300 seconden geldig in dit voorbeeld (is tevens de defaultwaarde).\\ In //Getal1// van de instelling //Sectie: Logon en Item: TokenExpireSeconds// kan desgewenst een afwijkende duur worden opgegeven. Indien het token niet kon worden gegenereerd wordt in de body van het responsebericht met een responsecode anders dan 200 of 201 de oorzaak daarvan weergegeven. Een succesvol uitgetrokken token wordt opgeslagen in de tabel tbaccesstoken benaderbaar via het detailscherm van de robotmedewerker (beheerportaal) waaraan de token verbonden is.\\ Een token blijft 8 uur bestaan, daarna wordt deze opgeschoond. Van deze 8 uur kan afgeweken worden met //Getal2// van de instelling //Sectie: Logon en Item: TokenExpireSeconds//. Bij de waarde 0 of kleiner wordt niet opgeschoond. ===== GET berichten ophalen Catalogus-infromatie ===== Alle onderstaande GET berichten moeten in de authorization header voorzien worden van een geldig Bearer JWT token ==== Opvragen lijst van zaaktypen ==== Op het endpoint //base-url///api/zgw/catalogi/api/v1/zaaktypen/ kan met een GET een lijst opgevraagd kan worden van de benaderbare zaaktype-uuids uit OpenWave met bijbehorende roltype-uuids en informatieobjecttype-uuids (documenttypes). Bij succes wordt de responsecode 200 geretourneerd met in de body een geneste array van deze zaaktypes met eigenschappen. Zie [[openwave:1.33:applicatiebeheer:probleemoplossing:programmablokken:zgw_open_zaak_api_functionaliteit:opvragenlijstmetzgwzaaktypen]]. ==== Opvragen lijst van informatieobjecttypen ==== Op het endpoint //base-url///api/zgw/catalogi/api/v1/informatieobjecttypen/ kan met een GET een lijst opgevraagd kan worden van de benaderbare informatieobjecttypen (documenttypes) uit OpenWave. Bij succes wordt de responsecode 200 geretourneerd met in de body een geneste array van deze informatieobjecttypes met eigenschappen.\\ Zie [[.:zgw_open_zaak_api_functionaliteit:opvragen_lijst_informatieobjecttypen|]]. ==== Opvragen lijst van zaakobjecttypen ==== Op het endpoint //base-url///api/zgw/catalogi/api/v1/zaakobjecttypen/ kan met een GET een lijst opgevraagd kan worden van de benaderbare zaakobjecttypen uit OpenWave. OpenWave ondersteunt vooralsnog alleen de objecttypen //adres// en //medewerker// Bij succes wordt de responsecode 200 geretourneerd met in de body een geneste array van deze zaakobjecttypes met eigenschappen.\\ Zie [[.:zgw_open_zaak_api_functionaliteit:opvragen_lijst_met_zaakobjecttypen|]]|. ==== Opvragen lijst van roltypen ==== Op het endpoint //base-url///api/zgw/catalogi/api/v1/roltypen/ kan met een GET een lijst opgevraagd kan worden van de benaderbare roltypen (tbzgwroltypes) uit OpenWave met de zaaktypes waaraan deze rollen gekoppeld zijn.\\ Een roltype is een unieke combinatie uit de koppeltabel tussen een adressoort (tbadressoort) en zaaktype (tbsoortomgverg of tbsoortovverg).\\ Bij succes wordt de responsecode 200 geretourneerd met in de body een geneste array van deze roltypes met eigenschappen. Bijv. initiator, belanghebbende e.d.\\ Zie [[.:zgw_open_zaak_api_functionaliteit:opvragen_lijst_met_roltypen|]]|. ==== Opvragen lijst van eigenschappen ==== Op het endpoint //base-url///api/zgw/catalogi/api/v1/eigenschappen/ kan met een GET een lijst opgevraagd kan worden van de extra eigenschappen die aan een zaak kunnen worden toegvoegd met de zaaktypes waaraan deze eigenschappen gekoppeld zijn.\\ Bij succes wordt de responsecode 200 geretourneerd met in de body een geneste array van deze eigenschappen. Bijv. om een zaak te kopelen aan een inrichting of om een domein toe te voegen: informatie die niet in de zaakobjecttypen en creeerzaak is opgenomen.\\ Zie [[.:zgw_open_zaak_api_functionaliteit:opvragen_lijst_eigenschappen|]] ===== POST berichten creeeren /complementeren zaak ===== Alle onderstaande POST berichten moeten in de authorization header voorzien worden van een geldig Bearer JWT token ==== Creëer Nieuwe Zaak ==== Op het endpoint //base-url///api/zgw/zaken/api/v1/zaken/ kan een POST worden geplaatst waarmee OpenWave een nieuwe zaak kan aanmaken. Bij succes wordt de responsecode 201 geretourneerd met in de body onder meer de uitgetrokken unieke UUID-code voor de zaak, waarmee in een vervolgbericht een contactrol kan worden aangemaakt en waarmee één of meer geüploade documenten aan deze zaak kunnen worden gekoppeld. \\ Zie [[openwave:1.33:applicatiebeheer:probleemoplossing:programmablokken:zgw_open_zaak_api_functionaliteit:creeer_zgw_zaak]]. ==== Creëer zaakobject bij zaak ==== Op het endpoint //base-url///api/zgw/zaken/api/v1/zaakobjecten/ kan een POST worden geplaatst waarmee OpenWave een zaakobject van objecttype //adres// kan aanmaken en koppelen aan een zaak. Bij succes wordt de responsecode 201 geretourneerd met in de body onder meer de uitgetrokken unieke UUID-code voor de combinatie zaak/zaakobject. Zie [[openwave:1.33:applicatiebeheer:probleemoplossing:programmablokken:zgw_open_zaak_api_functionaliteit:creeerzgwzaakobject]]. ==== Creëer Rol en contactpersoon bij zaak ==== Op het endpoint //base-url///api/zgw/zaken/api/v1/rollen/ kan een POST worden geplaatst waarmee OpenWave een contactpersoon onder een bepaalde rol kan aanmaken. Bij succes wordt de responsecode 201 geretourneerd met in de body onder meer de uitgetrokken unieke UUID-code voor de combinatie zaak/rol/contactadres. Zie [[openwave:1.33:applicatiebeheer:probleemoplossing:programmablokken:zgw_open_zaak_api_functionaliteit:creeer_zgw_rol]]. ==== Maak zaakeigenschap aan bij zaak ==== Op het endpoint //base-url///api/zgw/zaken/api/v1/zaken/{identifier}/zaakeigenschappen kan een POST worden geplaatst waarmee OpenWave een bepaalde zaakeigenschap kan toevoegen: bijv een inrichtingsnr op grond waarvan de eerder aangemaakte zaak gekoppeld kan worden aan die inrichting.\\ De {identifier} in bovengenoemd endpoint is de UUID die geretourneerd is aan een eerder gecreeerde zaak ([[openwave:1.33:applicatiebeheer:probleemoplossing:programmablokken:zgw_open_zaak_api_functionaliteit:creeer_zgw_zaak]]) Bij succes wordt de responsecode 201 geretourneerd met in de body onder meer een uitgetrokken fake unieke UUID-code. \\ Zie [[.:zgw_open_zaak_api_functionaliteit:maakzgwzaakeigenschap|]] ==== Koppel document aan een zaak ==== Op het endpoint //base-url///api/zgw/zaken/api/v1/zaakinformatieobjecten/ kan een POST worden geplaatst met de UUID van een zaak (zie response bij creëer nieuwe zaak) en een UUID van een eerder geüpload document (zie uploaden van document). OpenWave kan hiermee het document aan een zaak koppelen en dat document op de juiste bestemming plaatsen.\\ Bij succes wordt de responsecode 200 geretourneerd met in de body onder meer de uitgetrokken unieke UUID-code voor de combinatie document/zaak. Zie [[openwave:1.33:applicatiebeheer:probleemoplossing:programmablokken:zgw_open_zaak_api_functionaliteit:koppel_zgw_documentaanzaak]]. ===== Uploaden document ===== Alle onderstaande POST berichten moeten in de authorization header voorzien worden van een geldig Bearer JWT token ==== Uploaden van een document ==== Op het endpoint //base-url///api/zgw/documenten/api/v1/enkelvoudiginformatieobjecten/ kan een POST worden geplaatst met een document dat in het vervolgbericht //Koppel Document Aan Zaak// aan een zaak wordt gekoppeld. Bij succes wordt de responsecode 201 geretourneerd met in de body onder meer de uitgetrokken unieke UUID-code voor het document. Zie [[openwave:1.33:applicatiebeheer:probleemoplossing:programmablokken:zgw_open_zaak_api_functionaliteit:upload_zgw_document]].