Ga naar inhoud
Developer Documentation

NLGov REST API Design Rules 2.2.0

De Avallo REST API is beoordeeld tegen de NLGov REST API Design Rules 2.2.0.

Deze pagina legt per relevante ontwerpregel vast of de regel van toepassing is, wat de huidige conformiteitsstatus is en waarop die beoordeling is gebaseerd.

EigenschapWaarde
NormNLGov REST API Design Rules
Normversie2.2.0
APIAvallo REST API
API-hoofdversiev1
API-contractversie1.0.0
OpenAPI-versie3.1.1
Beoordelingsdatum2026-09-10
BeoordelingsstatusReleasebeoordeling

De huidige publieke API wordt geautomatiseerd gecontroleerd met runtime conformance-tests en met Spectral tegen de vastgelegde NLGov ruleset 2.2.0.

De technische controles omvatten onder andere resourceclassificatie, pad- en querynaamgeving, HTTP-methoden, statuscodes, Problem Details, datum- en tijdnotatie, UTC-normalisatie, OpenAPI-publicatie en validatie, versieheaders, TLS-voorwaarden, security headers, CORS, statelessness, validatiefouten, versiebeheer, changelogpublicatie en de toepasselijkheid van normatieve modules.

De geautomatiseerde controles slagen voor het huidige releasecontract.

Twee onderwerpen blijven als inhoudelijke documentatiebeoordeling gedeeltelijk conform: de formele onderbouwing van de gebruikte Engelse interfaceterminologie en de taalkeuze van het OpenAPI-document. Dit zijn geen bekende technische afwijkingen in de API-uitvoering.

StatusBetekenis
VoldoetDe implementatie of het gepubliceerde contract voldoet aantoonbaar aan de regel.
Voldoet gedeeltelijkDe technische implementatie is passend, maar aanvullende inhoudelijke onderbouwing blijft gewenst.
Niet van toepassingDe regel is niet relevant voor de huidige functionaliteit van de API.
Wijkt afDe API wijkt bewust van de regel af.
Nog niet beoordeeldEr is nog onvoldoende bewijs om een status vast te stellen.

Status: Voldoet

De publieke resourcepaden worden zonder afsluitende slash aangeboden:

/groundwater-monitoring-wells
/groundwater-monitoring-tubes/{tubeIdentifier}/measurements

Requests met een trailing slash worden niet stilzwijgend geaccepteerd of omgeleid.

Status: Voldoet

Samengestelde padsegmenten gebruiken kebab-case:

groundwater-monitoring-wells
groundwater-monitoring-tubes
measurements

Status: Voldoet

De measurements-resource gebruikt:

from
to

Beide querykeys voldoen aan camelCase.

Status: Voldoet

De publieke paden beschrijven resources met zelfstandige naamwoorden:

groundwater-monitoring-wells
groundwater-monitoring-tubes
measurements

De paden bevatten geen werkwoorden waarmee RPC-bewerkingen worden gemodelleerd.

Status: Voldoet

Collectieresources gebruiken meervoudsvormen:

groundwater-monitoring-wells
groundwater-monitoring-tubes
measurements

Status: Voldoet gedeeltelijk

De publieke interface gebruikt Engelse domeinterminologie, waaronder:

groundwater-monitoring-wells
groundwater-monitoring-tubes
measurements
tubeIdentifier
observedAt
verticalDatum

De terminologie is inhoudelijk consistent binnen het publieke contract. Voor een volledige formele onderbouwing blijft het wenselijk vast te leggen op welke officiële of gezaghebbende Engelse terminologie de gekozen begrippen zijn gebaseerd.

Status: Voldoet

Het publieke contract beschrijft domeinresources en stelt geen interne implementatiedetails beschikbaar.

Geautomatiseerde controles bewaken onder andere dat het OpenAPI-document en responseheaders geen CLR-namespaces, frameworknamen, serverimplementatie of interne details publiceren.

Status: Voldoet

De velden en parameters die een tijdstip vertegenwoordigen gebruiken OpenAPI date-time.

Dit geldt voor:

from
to
observedAt

Status: Niet van toepassing

De huidige API bevat geen publieke velden die uitsluitend een kalenderdatum vertegenwoordigen.

Status: Voldoet

from en to gebruiken DateTimeOffset-semantiek. Een client mag een geldige tijdzone-offset meesturen.

Bijvoorbeeld:

2026-09-10T10:00:00+02:00

De API normaliseert tijdstippen naar UTC en retourneert bijvoorbeeld:

2026-09-10T08:00:00Z

Geautomatiseerde tests controleren zowel geldige offsets als de UTC-notatie van geretourneerde tijdstippen.

Status: Voldoet

De huidige publieke resources gebruiken:

GET

De gebruikte methoden worden zowel in routing, OpenAPI als runtime gecontroleerd.

Status: Voldoet

De publieke GET-operations lezen gegevens en wijzigen geen resources.

Geautomatiseerde tests controleren dat herhaalde uitvoering geen observeerbare resourcestatus wijzigt.

Status: Voldoet

Het publieke contract documenteert passende HTTP-statuscodes:

StatuscodeToepassing
200Succesvolle verwerking
400Ongeldige of ontbrekende invoer
401Ontbrekende of ongeldige authenticatie
403Request geweigerd door een beveiligings- of transportvoorwaarde
404URI of peilbuis niet beschikbaar
405HTTP-methode niet ondersteund
429Verzoeklimiet bereikt
500Onverwachte serverfout

Voor endpoints met pathparameters en rate limiting wordt ook gecontroleerd dat de relevante foutstatuscodes in OpenAPI zijn gedocumenteerd.

Status: Voldoet

De API gebruikt geen server-side sessiestore voor de publieke endpoints.

De conformance-tests controleren daarnaast dat een eerste request op een nieuwe applicatie-instantie zonder voorafgaande requests kan worden uitgevoerd en dat geen sessiecookie wordt aangemaakt.

Status: Voldoet

groundwater-monitoring-wells is een zelfstandige collection resource voor discovery.

De measurements-resource wordt benaderd binnen de context van een concrete peilbuis:

/groundwater-monitoring-tubes/{tubeIdentifier}/measurements

tubeIdentifier is daarmee de ancestor routeparameter van de onderliggende measurements-resource.

Status: Niet van toepassing

De huidige API bevat geen resourcespecifieke commands die als werkwoord in het pad zijn gemodelleerd.

Er zijn geen publieke paden zoals:

/calculate
/validate
/export
/execute

Status: Voldoet

Foutresponses gebruiken:

application/problem+json

Het publieke contract gebruikt de standaard Problem Details-velden:

type
title
status
detail
instance

Geautomatiseerde tests controleren Problem Details onder andere voor 400, 401, 404 en 405.

Status: Voldoet

Ongeldige of ontbrekende invoer wordt afgehandeld met:

400 Bad Request

Voor modelvalidatie wordt ValidationProblemDetails gebruikt.

Status: Voldoet

Wanneer meerdere verplichte queryparameters tegelijk ontbreken, worden de bijbehorende validatiefouten gezamenlijk in het errors-object geretourneerd.

De conformance-suite controleert dit gedrag runtime.

Status: Voldoet

De API publiceert een geldig OpenAPI-document met:

OpenAPI 3.1.1

Het document wordt door de testset geparsed en gevalideerd en bevat de conforming endpoints, schemas, parameters, responses, authenticatie, serverinformatie en contactgegevens.

Daarnaast wordt het document met Spectral gecontroleerd tegen de NLGov REST API Design Rules 2.2.0.

De Spectral-configuratie bevat één gerichte uitzondering voor de regel:

nlgov:specify-format-for-date-and-time

op:

components.schemas.GroundwaterLevelSeries.properties.verticalDatum

De reden is dat verticalDatum een geodetisch hoogtereferentiestelsel beschrijft, zoals NAP, en geen kalenderdatum of tijdwaarde.

Status: Voldoet

Het OpenAPI-document bevat een contact-object met:

name
url
email

Status: Voldoet gedeeltelijk

De primaire gebruikersdocumentatie wordt in het Nederlands gepubliceerd.

Het publieke OpenAPI-contract gebruikt Engelstalige namen en beschrijvingen. De terminologie is consistent, maar voor volledige formele conformiteit blijft dezelfde inhoudelijke onderbouwing van de Engelse terminologie nodig als bij /core/interface-language.

Status: Voldoet

Het OpenAPI-document is zonder API-sleutel beschikbaar op:

https://api.avallo.nl/v1/openapi.json

Geautomatiseerde tests controleren dat de JSON-variant publiek leesbaar, parseerbaar en minimaal OpenAPI 3 is. Voor het publieke OpenAPI-document wordt cross-origin uitlezen toegestaan.

Status: Niet van toepassing

Er wordt momenteel geen endpoint, functionaliteit of API-versie uitgefaseerd.

De huidige endpoints zijn expliciet als niet-verouderd geclassificeerd.

Status: Niet van toepassing

v1 is de eerste hoofdversie en er is geen opvolgende hoofdversie in overgang.

De major-version lifecycle is expliciet als initiële hoofdversie vastgelegd en wordt tegen de OpenAPI-versie gecontroleerd.

Status: Voldoet

Voor API-versie 1.0.0 is een publiek wijzigingsoverzicht vastgelegd.

De conformance-suite controleert dat de changeloglocatie een publieke HTTPS-URI is en dat de huidige OpenAPI-versie in de gepubliceerde versiecollectie voorkomt.

Status: Voldoet

De hoofdversie is opgenomen in het basispad:

https://api.avallo.nl/v1

Alle publieke conforming endpoints bevinden zich onder dezelfde major-versie.

Status: Voldoet

Het OpenAPI-document vermeldt:

1.0.0

Deze waarde wordt geautomatiseerd gevalideerd tegen Semantic Versioning 2.0.0.

Status: Voldoet

Door de API gegenereerde responses bevatten:

API-Version: 1.0.0

De testset controleert de header op succesvolle responses en op onder andere 401, 404 en 405. Daarnaast wordt gecontroleerd dat de header voor de gedocumenteerde responses in OpenAPI is opgenomen.

Status: Voldoet

De publieke API accepteert alleen requests die vanuit de vertrouwde ingress als versleuteld en met toegestane TLS-eigenschappen zijn doorgegeven.

De conformance-suite controleert dat requests worden geweigerd wanneer transportmetadata ontbreekt of wanneer onder andere een onversleutelde verbinding, verouderde TLS-versie, niet-toegestane cipher suite of ongeldige combinatie wordt gemeld.

Deze controle geldt binnen de vastgelegde trust boundary tussen publieke ingress en applicatie.

Status: Voldoet

Authenticatiegegevens worden uitsluitend via de header verstuurd:

X-API-Key: {apiKey}

De API-sleutel staat niet in het pad of de querystring.

Voor de huidige endpoints zijn de URI-parameters expliciet beoordeeld. tubeIdentifier is een opaque resourceidentifier zonder persoonsgegevens, locatiegegevens of credentials. from en to bevatten uitsluitend het gevraagde tijdsinterval.

Status: Voldoet

De conformance-tests controleren de beveiligingsheaders op succesvolle en foutresponses.

De gecontroleerde headers zijn:

Cache-Control: no-store
Content-Security-Policy: default-src 'none'; frame-ancestors 'none'
Strict-Transport-Security: max-age=31536000
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
Referrer-Policy: no-referrer

Daarnaast wordt het verwachte JSON-mediatype gecontroleerd.

Status: Voldoet

De beveiligde API-endpoints staan geen rechtstreekse cross-origin browsertoegang toe.

De conformance-tests controleren dat een externe origin geen Access-Control-Allow-Origin ontvangt en dat een preflight-request voor een beveiligd endpoint geen cross-origin toestemming krijgt.

Voor het publieke OpenAPI-document geldt bewust een ander beleid:

Access-Control-Allow-Origin: *

Hierdoor kan het API-contract vanuit externe documentatie- en ontwikkeltools worden gelezen.

Status: Niet van toepassing

De huidige operations wisselen geen geometrie, horizontale coördinaten of ruimtelijke filters uit.

verticalDatum kwalificeert uitsluitend de scalar groundwater-level waarden en maakt de geospatial module op zichzelf niet van toepassing.

Deze beslissing is expliciet per conforming endpoint vastgelegd.

Status: Niet van toepassing

End-to-end payload- of message signing is binnen de huidige trust boundary niet vereist.

Transportintegriteit wordt door de beveiligde verbinding afgedekt. Deze toepasselijkheidsbeslissing is expliciet vastgelegd.

Status: Niet van toepassing

Application-level payload encryption is niet vereist.

Transportconfidentialiteit wordt door TLS geleverd. Deze toepasselijkheidsbeslissing is expliciet vastgelegd.

Er zijn voor het huidige releasecontract geen bekende openstaande technische punten in de geautomatiseerde NLGov conformance-suite of Spectral-linting.

Voor de documentatie blijven twee inhoudelijke onderbouwingen relevant:

  • leg de bron of rationale voor de gebruikte Engelse interfaceterminologie formeel vast;
  • leg vast waarom het OpenAPI-document Engelstalig is terwijl de primaire gebruikersdocumentatie Nederlandstalig is.

Deze punten veranderen het huidige API-contract niet.

De Avallo REST API voldoet voor het huidige v1-releasecontract aan de geautomatiseerd controleerbare technische eisen die in de Avallo conformance-suite voor NLGov REST API Design Rules 2.2.0 zijn vastgelegd.

Het gegenereerde OpenAPI-document voldoet daarnaast aan de gebruikte Spectral-ruleset, met één expliciet gemotiveerde uitzondering voor verticalDatum.

De beoordeling is transparant en herleidbaar, maar vormt geen onafhankelijke certificering. De twee resterende gedeeltelijke beoordelingen hebben betrekking op formele taalonderbouwing en niet op bekende functionele of beveiligingstechnische afwijkingen.