applatenmaken.com/ZGW-API’s koppelen
ZGW-API’s koppelen aan uw eigen applicatie
De ZGW-API’s zien er bij eerste kennismaking uit als vijf losse koppelingen. Dat zijn ze niet: zonder de catalogus weet u niet welk zaaktype u aanmaakt, zonder autorisaties komt u nergens binnen, en zonder notificaties merkt u niet dat er iets is veranderd. Wie er één begint, komt de andere vier vanzelf tegen.
Waar dit om draait
De ZGW-API’s zijn de standaard-API’s voor zaakgericht werken van VNG Realisatie, ontwikkeld binnen Common Ground. Zij vervangen de oudere, op SOAP gebaseerde koppelvlakken door een samenhangende set REST-API’s: de Zaken API voor zaken, de Documenten API voor documenten, de Catalogi API voor zaaktypen, de Besluiten API voor besluiten en de Notificaties API voor gebeurtenissen. Autorisatie loopt via een eigen API.
Elke API bestaat uit een Open API-specificatie, technische documentatie over het gedrag tijdens gebruik en een of meer datamodellen. Die specificatie is samen met de documentatie normatief. Dat is prettig precies en het betekent ook dat een implementatie die alleen de specificatie volgt, nog steeds fout kan zijn op het gedrag.
Wat u tegenkomt bij een eerste koppeling
De volgorde waarin u de onderdelen nodig heeft, is bijna altijd dezelfde en zelden de volgorde waarin u begint.
- Autorisaties: welke applicatie mag wat, per API en per zaaktype.
- Catalogi: welk zaaktype, welke statustypen, welke resultaattypen bestaan er.
- Zaken: aanmaken, statussen doorlopen en betrokkenen vastleggen.
- Documenten: bestanden koppelen aan een zaak, met de juiste vertrouwelijkheid.
- Besluiten: het besluit dat uit de zaak volgt, apart van de zaak zelf.
- Notificaties: op de hoogte blijven van wijzigingen zonder te blijven pollen.
Waarom de catalogus het vertrekpunt is
De meeste implementaties beginnen bij de Zaken API, omdat dat de kern lijkt. In de praktijk loopt dat binnen een dag vast op de vraag welk zaaktype u eigenlijk aanmaakt en welke statussen daarbij horen. Die informatie staat in de Catalogi API, en zij verschilt per gemeente.
Dat laatste is het punt dat leveranciers onderschat. De standaard is gelijk, de inrichting niet: zaaktypen, statustypen en resultaattypen worden per organisatie vastgesteld. Een koppeling die zaaktypen hardcodeert, werkt bij één gemeente en breekt bij de volgende.
Wij bouwen de koppeling daarom vanaf de catalogus. Uw applicatie haalt op wat er bestaat en werkt daarmee, in plaats van uit te gaan van wat er bij de eerste gemeente toevallig stond.
Notificaties in plaats van bevragen
Het tweede punt waarop implementaties vastlopen, is actualiteit. Een applicatie die elke paar minuten de Zaken API bevraagt om te zien of er iets is veranderd, belast de omgeving en loopt toch achter.
Er komt bij dat bevragen niet alleen traag is maar ook incompleet. Een zaak die wordt aangemaakt en binnen een minuut weer wordt gewijzigd, ziet u bij een interval van vijf minuten als één gebeurtenis. Voor een overzichtsscherm maakt dat weinig uit; voor een proces dat op een statuswijziging moet reageren, is het het verschil tussen werken en niet werken.
De Notificaties API is daarvoor bedoeld: u abonneert zich op gebeurtenissen en krijgt bericht. Dat vraagt aan uw kant een ontvangstpunt dat altijd bereikbaar is en dat een bericht dat twee keer binnenkomt netjes afhandelt. Dat is een ontwerpkeuze die u vooraf maakt, niet iets dat u er later bij bouwt.
Integraties en techniek
Aan de gemeentekant staat een implementatie van de standaard, van een leverancier of als open-source component. Aan uw kant staat uw eigen applicatie. Wij bouwen daartussen een laag die de catalogus uitleest, de autorisaties afhandelt en de gebeurtenissen ontvangt.
Werkt u met meerdere gemeenten, dan is die laag ook de plek waar de verschillen in inrichting landen. Voor bredere gegevensstromen sluit dit aan op data-integratie software. Hoe koppelingen in het algemeen werken staat op systemen koppelen met een api.
Waar u op let
Let op de versies. De API’s ontwikkelen door en niet elke gemeente draait dezelfde versie. Vraag vooraf welke versies van de Zaken-, Documenten- en Catalogi-API draaien en houd er rekening mee dat die per omgeving verschillen, ook binnen dezelfde organisatie tussen test en productie.
Let ook op de autorisaties. Rechten worden per applicatie en vaak per zaaktype toegekend, en een ontbrekend recht geeft een foutmelding die niet altijd verraadt dat het om autorisatie gaat. Vraag vroeg om een testomgeving met representatieve rechten; zonder dat bouwt u tegen een omgeving waarin alles mag.
Wat de kosten bepalen
Het aantal API’s dat u werkelijk raakt, bepaalt het meeste. Alleen zaken lezen is aanzienlijk kleiner dan zaken aanmaken met documenten en besluiten, omdat u dan ook met de catalogus en de vertrouwelijkheidsniveaus te maken krijgt.
Daarnaast telt het aantal organisaties. Eén gemeente is een koppeling; vijf gemeenten is een koppeling plus een laag die de verschillen in inrichting opvangt, en die laag is het werk dat u vooraf wilt inschatten.
Hoe wij het aanpakken
- We vragen de versies en een testomgeving op, met rechten die op productie lijken.
- We beginnen bij de Catalogi API en halen zaaktypen en statustypen op.
- We bouwen de eerste stroom, meestal zaken lezen en tonen in uw eigen applicatie.
- Daarna schrijven: aanmaken, status doorzetten en documenten koppelen.
- Pas als dat staat, sluiten we op notificaties aan in plaats van te blijven bevragen.
Veelgestelde vragen
Vervangen de ZGW-API’s de oude koppelvlakken?
Dat is de bedoeling. De ZGW-API’s zijn ontwikkeld binnen Common Ground als opvolger van de oudere, op SOAP gebaseerde koppelvlakken, in de vorm van samenhangende REST-API’s. In de praktijk draaien beide bij veel organisaties nog naast elkaar, dus vraag vooraf wat er bij uw gemeente beschikbaar is.
Kunnen we met alleen de Zaken API beginnen?
U kunt ermee beginnen, maar u komt er niet ver mee. Om een zaak aan te maken heeft u een zaaktype uit de Catalogi API nodig, en om binnen te komen een recht uit de Autorisaties API. Dat is geen ontwerpfout maar de opzet: de API’s zijn samenhangend bedoeld en niet los bruikbaar.
Werkt één koppeling bij alle gemeenten?
De standaard is gelijk, de inrichting niet. Zaaktypen, statustypen en resultaattypen worden per organisatie vastgesteld, en ook de draaiende versie verschilt. Een koppeling die zaaktypen vastlegt in code, werkt bij één gemeente en breekt bij de volgende; daarom lezen wij ze uit de catalogus.
Hoe blijven we op de hoogte van wijzigingen?
Via de Notificaties API, waarop u zich abonneert voor gebeurtenissen. Dat vraagt aan uw kant een ontvangstpunt dat bereikbaar is en dat een dubbel bericht netjes afhandelt. Blijven bevragen is het alternatief en dat belast de omgeving terwijl u toch achterloopt.
Hebben jullie een testomgeving nodig?
Ja, en het liefst een met rechten die op de productiesituatie lijken. Een omgeving waarin alles mag, levert een koppeling op die op de dag van livegang alsnog stukloopt op autorisatie. Dat is de meest voorkomende vertraging bij dit soort trajecten.
Van wie is de software na oplevering?
Van u. Code en omgeving staan op uw naam, zodat u niet vastzit aan een leverancier voor elke wijziging.