In deze tutorial configureren we de referentieimplementatie van de Catalogi API (ZTC) zodat Zaken in het Zaken API (ZRC) juist worden aangemaakt en voorzien worden van de juiste meta attributen zodat archivering mogelijk is.
De tutorial is hands-on - onderaan vind je verdere referenties en bronnen indien je meer wil lezen.
De volgende componenten zijn meest relevant:
docker
en docker-compose
om lokaal op je (ontwikkelmachine) de
componenten te hosten. Zie ‘installatie en configuratie’ voor een
uitgebreide beschrijving.
Het handigste is om de containers in 1 command prompt te hebben draaien, en
extra commando’s in een tweede prompt ernaast uit te voeren. Zorg dat beide
prompts zich in de juiste directory bevinden: /pad/naar/gemma-zaken/infra
.
De eenmalige setup is uitgevoerd.
Toegang tot de publieke VNG Referentielijsten API.
Het IP-adres uit de ‘installatie en configuratie’ voorbereiding is hier nodig om de componenten via de browser aan te spreken.
Open in je browser http://<ztc-ip>:8002/admin/
en log in met je
gebruikersnaam en wachtwoord.
Een catalogus fungeert als een verzameling voor alle Zaaktypen bij een gemeente.
Navigeer naar Catalogussen en klik op Toevoegen.
Vul alle verplichte velden in.
De daadwerkelijke informatie is voor nu niet relevant.
Klik op Opslaan en opnieuw bewerken.
We definieren 1 zaaktype dat is gebaseerd op een procestype uit de Selectielijst gemeenten die ontsloten wordt middels de VNG Referentielijsten API.
Klik op Voeg een Zaaktype toe. Of navigeer naar Zaaktypen en klik op Toevoegen.
Vul alle verplichte velden in maar hanteer voor onderstaande velden de volgende waarden:
<de catalogus uit de stap hierboven>
De ingevulde URL bij Selectielijst procestype verwijst naar het procestype Verzoeken behandelen. Deze API is overigens zonder autorisatie door iedereen te raadplegen:
GET https://referentielijsten-api.vng.cloud/api/v1/procestypen/3030daa1-d516-4cd9-8276-ef0977e32b20 HTTP/1.0 { "nummer": 6, "naam": "Verzoeken behandelen", "omschrijving": "Het behandelen van een verzoek tot het doen of laten van het orgaan" }
- Deel van de API resource
procestype
(Selectielijst procestype) response
Klik op Opslaan en opnieuw bewerken.
Klik op Voeg een Resultaattype toe. Of navigeer naar Resultaattypen en klik op Toevoegen.
Vul alle verplichte velden in maar hanteer voor onderstaande velden de volgende waarden:
<het zaaktype uit de stap hierboven>
De ingevulde URL bij Selectielijstklasse verwijst naar het archiefregime dat aangeeft dat een zaak van dit zaaktype na 1 jaar vernietigd moet worden, indien dit resultaat aan de betreffende zaak wordt gegeven:
GET https://referentielijsten-api.vng.cloud/api/v1/resultaten/65559080-1d2b-4ddf-8966-b620e4ec224e HTTP/1.0 { "naam": "Afgewezen", "waardering": "vernietigen", "procestermijn": "nihil", "bewaartermijn": "P1Y" }
- Deel van de API resource
resultaten
(Selectielijstklasse) response
De Afleidingswijze brondatum kan alleen gezet worden op “Afgehandeld”. De
Selectielijstklasse geeft aan dat de procestermijn
nihil
is, wat
betekent dat na eindigen van de zaak (de zaak eindatum) er alleen rekening
hoeft worden gehouden met de bewaartermijn
van 1 jaar. Er is geen andere
eigenschap, of hoofdzaak, etc. die van belang zijn om de brondatum te
bepalen.
De Resultaattypeomschrijving is alleen een geniereke omschrijving zoals deze standaard wordt gehanteerd en voor het archiveren zelf niet relevant.
Klik op Opslaan.
We zijn voor nu klaar met het configureren van de ZTC.
We maken 2 Statustypen aan, één als initiële status (nieuw), en één om de Zaak af te sluiten (afgerond).
Navigeer naar Statustypen en klik op Toevoegen.
Vul alle verplichte velden in maar hanteer voor onderstaande velden de volgende waarden:
<het zaaktype uit de stap hierboven>
Klik op Opslaan en nieuwe toevoegen.
Vul alle verplichte velden in maar hanteer voor onderstaande velden de volgende waarden:
<het zaaktype uit de stap hierboven>
Klik op Opslaan.
Dit deel gaan we doen op basis van de API. Je kunt bijvoorbeeld Postman gebruiken, of een andere applicatie om met de ZTC en ZRC API te communiceren.
In het eerste deel hebben we een Zaaktype aangemaakt. We hebben de URL hiervan nodig om een Zaak aan te maken, samen met enkele andere URLs uit het ZTC die fungeren als de unieke identificatie van verschillende typen.
Haal de Catalogussen op:
GET http://<ztc-ip>:8002/api/v1/catalogussen HTTP/1.0
Authorization: Bearer abcd1234
Voorbeeld antwoord
[
{
"url": "<catalogus url>",
"domein": "DEMO",
"rsin": "123456782",
"contactpersoonBeheerNaam": "VNG API-lab",
"contactpersoonBeheerTelefoonnummer": "+31 (0)20 123 45 67",
"contactpersoonBeheerEmailadres": "vngapilab@example.com",
"zaaktypen": [
"<zaaktype url>"
],
"besluittypen": [],
"informatieobjecttypen": []
}
]
Uit de response kunnen we het aangemaakt Zaaktype halen. Hiervan vragen we de details op
GET <zaaktype-url> HTTP/1.0
Authorization: Bearer abcd1234
Voorbeeld (deel van) antwoord
{
"url": "<zaaktype-url>",
"catalogus": "<catalogus url>",
"omschrijving": "Melding Openbare Ruimte",
"doorlooptijd": "P30D",
"selectielijstProcestype": "https://referentielijsten-api.vng.cloud/api/v1/procestypen/3030daa1-d516-4cd9-8276-ef0977e32b20",
"statustypen": [
"<statustype nieuw url>",
"<statustype afgerond url>"
],
"resultaattypen": [
"<resultaattype url>"
]
}
Uit de response kunnen we de relevante Statustypen en Resultaattypen halen.
We hebben nu de volgende unieke URLs die we nodig hebben bij het afhandelen van een zaak. Deze gebruiken we bij de volgende stappen:
zaaktype url
statustype nieuw url
statustype afgerond url
resultaattype url
Maak een Zaak aan:
POST http://<zrc-ip>:8000/api/v1/zaken HTTP/1.0
Authorization: Bearer abcd1234
Accept-Crs: EPSG:4326
Content-Crs: EPSG:4326
Content-Type: application/json
{
"bronorganisatie": "509381406",
"omschrijving": "API-lab zaak test",
"zaaktype": "<zaaktype url>",
"verantwoordelijkeOrganisatie": "245122461",
"startdatum": "2019-04-17",
"toelichting": "Fiets in de Keizersgracht voorkomt dat rondvaartboot kan passeren."
}
Het antwoord bevat o.a. de url
van de zojuist aangemaakt Zaak. We
refereren hiernaar middels zaak url
.
Zet de initiele Status van de Zaak:
POST http://<zrc-ip>:8000/api/v1/statussen HTTP/1.0
Authorization: Bearer abcd1234
Content-Type: application/json
{
"zaak": "<zaak url>",
"statusType": "<statustype nieuw url>",
"statustoelichting": "Zaak aangemaakt door burger."
}
Voordat we de Zaak gaan afronden, bekijken we de Zaak zoals deze in het ZRC aanwezig is. Uiteraard bevat deze de gegevens zoals we deze hebben verstuurd maar we focussen nu op enkele andere attributen:
GET <zaak_url> HTTP/1.0
Authorization: Bearer abcd1234
Accept-Crs: EPSG:4326
Voorbeeld (deel van) antwoord
{
"url": "<zaak url>",
"identificatie": "3ce2848b-df34-44ae-8e10-dc12d6a69417",
"bronorganisatie": "509381406",
"omschrijving": "API-lab zaak test",
"zaaktype": "<zaaktype url>",
"verantwoordelijkeOrganisatie": "245122461",
"startdatum": "2019-04-17",
"toelichting": "Fiets in de Keizersgracht voorkomt dat rondvaartboot kan passeren.",
"einddatum": null,
"selectielijstklasse": "",
"status": "<status url>",
"archiefnominatie": null,
"archiefstatus": "nog_te_archiveren",
"archiefactiedatum": null,
"resultaat": null
}
De Zaak heeft op dit moment geen einddatum
, archiefnominatie
of
archiefactiedatum
. Deze laatste is de datum waarop de actie bij
archiefnominatie
moet plaatsvinden.
De Zaak moet voorzien worden van een Resultaat. Door een Resultaat aan de Zaak te hangen, wordt het Resultaattype bekend en kan het archiefregime bij het afsluiten van de zaak worden toegepast.
POST http://<zrc-ip>:8000/api/v1/resultaten HTTP/1.0
Authorization: Bearer abcd1234
Content-Type: application/json
{
"zaak": "<zaak url>",
"resultaatType": "<resultaattype url>",
"toelichting": "Zaak beoordeeld en is reeds opgelost."
}
Zet de laatste Status van de Zaak, waarmee de Zaak wordt gesloten:
POST http://<zrc-ip>:8000/api/v1/statussen HTTP/1.0
Authorization: Bearer abcd1234
Content-Type: application/json
{
"zaak": "<zaak url>",
"statusType": "<statustype afgerond url>",
"statustoelichting": "Zaak afgerond door ambtenaar."
}
Na het afsluiten van de Zaak wordt de einddatum
van de Zaak gezet. Ook
wordt de archiefactiedatum
berekend en archiefnominatie
overgenomen uit
het Resultaatttype.
We vragen nogmaals de Zaak details op om de gewijzigde attributen van stap 1 door te nemen:
GET <zaak_url> HTTP/1.0
Authorization: Bearer abcd1234
Accept-Crs: EPSG:4326
Voorbeeld (deel van) antwoord
{
"url": "<zaak url>",
"identificatie": "3ce2848b-df34-44ae-8e10-dc12d6a69417",
"bronorganisatie": "509381406",
"omschrijving": "API-lab zaak test",
"zaaktype": "<zaaktype url>",
"verantwoordelijkeOrganisatie": "245122461",
"startdatum": "2019-04-17",
"toelichting": "Fiets in de Keizersgracht voorkomt dat rondvaartboot kan passeren.",
"einddatum": "2019-04-17",
"selectielijstklasse": "",
"status": "<status url>",
"archiefnominatie": "vernietigen",
"archiefstatus": "nog_te_archiveren",
"archiefactiedatum": "2020-04-17",
"resultaat": "<resultaat url>"
}
Hier zien we dat alle relevante attributen zijn gezet om de Zaak op 4 april 2020 te vernietigen. Dat is 1 jaar na de einddatum, zoals opgegeven in het ZTC.
We hebben het volgende gedaan in de ZTC:
Hierna hebben we een Zaak afgehandeld:
archiefactiedatum
werd berekend.De achtergronddocumentatie over archiveren bevat meer informatie over andere scenario’s bedoeld om de archiefactiedatum
te bepalen.
Hier is de presentatie te vinden die gegeven is op het API-lab.