Bij het gebruik van de API’s voor Zaakgericht werken is gebleken dat door de opzet van de API’s een goede performance lastig te realiseren is. Bovendien wordt veel van de consumer applicatie gevraagd om de noodzakelijke gegevens op te kunnen halen. Een aantal van deze tekortkomingen is fundamenteler van aard en hiervoor wordt dan ook een oplossing uitgewerkt die als API Referentie Architectuur gebruikt zal gaan worden bij de VNG API standaarden. Op de korte termijn zijn echter ook oplossingen voor de API’s voor Zaakgericht werken nodig.
Het verbeteren van de performance van de API’s voor Zaakgericht werken gebeurt op twee onderdelen, te weten:
De filtermogelijkheden zullen worden opgenomen in de betreffende Open API Specificaties (OAS). Deze kunnen geraadpleegd worden via de documentatie website https://vng-realisatie.github.io/gemma-zaken/standaard/
Het opnemen van gerelateerde informatie vereist meer achtergrondinformatie en dit wordt in deze bijlage beschreven.
Om te voorkomen dat in de korte termijn oplossing beslissingen genomen worden die in de toekomst voor problemen kunnen gaan zorgen gelden onderstaande uitgangspunten.
Het opnemen van gerelateerde informatie via een expand patroon, is op het moment van schrijven (nog) niet opgenomen in de Landelijke API Strategie. Dit betekent dat er nog geen keuze is gemaakt in een syntax om dit te bereiken. Om de gevolgen zo minimaal te laten zijn bij een keuze in de Landelijke API Strategie is het van belang dat het gekozen expand patroon voor consumers optioneel is binnen de standaard. Dat wil zeggen dat voor consumers het niet verplicht is het expand patroon toe te passen en de huidige manier van werken toepasbaar blijft. Providers dienen het expand mechanisme uiteraard in te bouwen.
Er zijn verschillende mogelijkheden voor het implementeren van een expand patroon. Elke mogelijkheid heeft eigen voor- en nadelen. Tijdens sessies van de Technische Gebruikersgroep van de API’s voor Zaakgericht werken zijn zowel het HAL patroon als het Inclusions patroon uitgebreid gepresenteerd en besproken. Ook is deze vergelijking intern bij VNG Realisatie gedaan. Inhoudelijk gezien kan met beide patronen het aantal calls verminderd worden. Uiteindelijk is gekozen voor een derde variant, nl. expand parameter met inline expand. Net als bij het Inclusions patroon is de structuur van de gegevens in expand gelijk aan die van de resources. Het voordeel is echter dat net als bij HAL de geëxpandeerde gegevens op de plek staan waar ze uitgevraagd zijn. Weliswaar kan dit leiden tot grotere berichten maar dit weegt in onze ogen niet op tegen de eenvoud voor de consumer die de informatie daar krijgt waar deze nodig is.
Hoewel de vergelijking tussen Inclusions en HAL+JSON VNG uitgesproken heeft te willen kiezen voor HAL+JSON is dit geen zuivere vergelijking geweest. Het belangrijkste is dat in de HAL+JSON variant noodzakelijk was een ander contenttype te kiezen. Weliswaar kan de consumer hiermee sturen in welk formaat de response gestuurd moet worden maar die keuze gaat over vorm, niet over inhoud. Een keuze voor een ander contenttype betekent dat dezelfde informatie op een andere manier weergegeven wordt. Dit besef heeft er toe geleid dat in Zaken API versie 1.5.0 en Documenten API 1.4.0 het expand patroon uitgewerkt is in het reeds gebruikte plain JSON formaat. De noodzaak tot HAL+JSON of een ander contenttype kwam hiermee te vervallen en dit heeft geleid tot het terugtrekken van Zaken API versie 1.2.1.
Zoals eerder genoemd in de uitgangspunten gelden de volgende grenzen aan het expand patroon:
Het is niet mogelijk om bijvoorbeeld bij een ROL de gegevens van de BETROKKENE op te halen via de rol.betrokkene. De BETROKKENE is immers opgeslagen buiten Zaken API en Catalogi API.
Op basis van de grenzen zijn de volgende versies van de API’s voor Zaakgericht werken uitgewerkt met expand:
Zaken API
Documenten API