Eduarte Connect — documentatie Overzicht
Vertrouwelijk — niet verspreiden
Technische specificatie

EKS — Stamdata

Technische documentatie voor developers
Connector EKS · domein Stamdata · versie 1.0 · 15 juni 2026

Overzicht & scope

EKS (Eduarte Koppeling Stamdata) is een read-only REST-API voor het opvragen van algemene stamdata uit Eduarte. De API levert JSON en volgt de gemeenschappelijke Connect-conventies.

Deze specificatie beschrijft de technische uitgangspunten en geeft een overzicht op hoofdlijnen; de volledige endpoint- en schemadefinities staan in de meegeleverde EKS_v1.0.yml en in de online referentie.

Aan de slag & dev-omgeving

  1. Toegang aanvragen — vraag via Eduarte (connect@eduarte.nl) OAuth2-clientgegevens aan voor EKS.
  2. Scope — EKS gebruikt de scope eks. Vraag een token aan met deze scope.
  3. Token ophalen — haal een access-token op via de OAuth2 Client Credentials-flow (zie Beveiliging voor het token-endpoint).
  4. Aanroepen — stuur het token mee als Authorization: Bearer <token> en roep endpoints aan onder /connect/eks/v1_0.
  5. Testen — gebruik de beschikbare ontwikkel-/testomgeving om de integratie te beproeven voordat deze in productie gaat.

Beveiliging

Alle Connect API’s worden uniform beveiligd. De maatregelen hieronder gelden voor elke connector; afwijkingen staan in de connector-specifieke secties.

Transport (TLS)

Alle communicatie verloopt verplicht via HTTPS. Minimaal TLS 1.2, bij voorkeur TLS 1.3. Er zijn geen HTTP-endpoints, ook niet voor redirects. Een geldig servercertificaat is vereist. Hierin volgen we de aanbeving van de NSCT

Authenticatie & autorisatie

Authenticatie verloopt via OAuth 2.0 met de Client Credentials-flow (server-to-server):

Scopes bepalen de toegangsrechten volgens het principe van least privilege. Elke API kent één of meer scopes; een token bevat alleen de scopes die de client nodig heeft. De vereiste scope(s) per connector staan in de connector-specifieke sectie.

Waar OAuth 2.0 niet mogelijk is (bijvoorbeeld bij legacy-integraties), kan als terugvaloptie een Bearer-token (JWT) worden gebruikt.

Per endpoint

Elk endpoint heeft een expliciete security-definitie. Onjuiste of ontbrekende autorisatie leidt tot een 401 Unauthorized (niet geauthenticeerd) of 403 Forbidden (onvoldoende rechten); zie Foutafhandeling.

Conventies & ontwerpprincipes

De Connect API’s volgen gemeenschappelijke conventies, zodat integraties voorspelbaar en consistent zijn.

Formaat & naamgeving

Paginering

Lijst-endpoints zijn gepagineerd (offset-based):

Parameter Type Default Beschrijving
offset integer 0 Startpositie in de resultatenlijst
pageSize integer 100 Aantal items per pagina (standaard maximum 200)

De response bevat een meta-object met offset, pageSize en totalItems, plus een items-array. Een leeg resultaat geeft een lege items-array terug — geen 404.

{
  "meta": { "offset": 20, "pageSize": 10, "totalItems": 156 },
  "items": [ { "id": "..." } ]
}

Versionering

Versies volgen SemVer in de vorm MAJOR.MINOR. De major-versie staat in het pad (bv. /connect/eks/v1_0/...). Non-breaking wijzigingen (nieuw optioneel veld, nieuw endpoint, nieuwe enum-waarde) verschijnen als minor-versie binnen dezelfde major; breaking wijzigingen leiden tot een nieuwe major-versie die parallel draait. Bij uitfasering gelden een deprecation-notice en een sunset-datum (minimaal 6 maanden), gecommuniceerd via Deprecation- en Sunset-headers.

Wijzigingen ophalen

Voor incrementeel synchroniseren ondersteunen de zoek-endpoints de query-parameter changed-since (datum-tijd, ISO-8601): daarmee haal je alleen de stamdata op die sinds dat moment is gewijzigd, in plaats van steeds de volledige set. Stamdata wijzigt doorgaans weinig; cache waar passend.

In de toekomst signaleert de notificatiekoppeling EKN wijzigingen via cloudevents, zodat een afnemer direct de gewijzigde stand kan ophalen zonder te pollen. Deze notificaties zijn nog niet beschikbaar; tot die tijd gebruik je changed-since.

Do’s & don’ts

Praktische richtlijnen voor een robuuste integratie met Connect.

Do’s

Don’ts

Bron: API-CONVENTIONS.md (o.a. “Wanneer niet suppressen”) en de Connect REST-principes.

Foutafhandeling

Foutmeldingen zijn gestandaardiseerd op basis van RFC 7807 (Problem Details for HTTP APIs). Hierdoor zien fouten er over alle Connect API’s hetzelfde uit.

Voorbeeld (401)

{
  "type": "https://tools.ietf.org/html/rfc6750#section-3.1",
  "title": "Unauthorized",
  "status": "401",
  "detail": "The request requires user authentication."
}

Veelvoorkomende statuscodes

Status Betekenis Wanneer
200 / 201 OK / Created Verzoek geslaagd
400 Bad Request Ongeldig verzoek (validatie)
401 Unauthorized Niet (geldig) geauthenticeerd
403 Forbidden Geauthenticeerd, maar onvoldoende rechten
404 Not Found Resource bestaat niet
405 Method Not Allowed HTTP-methode niet toegestaan op deze resource
429 Too Many Requests Rate limit overschreden (zie Throttling)
500 Internal Server Error Onverwachte fout aan serverzijde

Let op: API’s uit de keten (OKxx) volgen de foutafhandeling van hun eigen standaard (bv. OOAPI) en kunnen hiervan afwijken.

Throttling & rate limiting

Alle endpoints kennen rate limiting om misbruik en overbelasting te voorkomen. Dit wordt op infrastructuurniveau afgedwongen via de Topicus API-gateway.

Bij overschrijding van de limiet antwoordt de API met 429 Too Many Requests. De response kan de volgende headers bevatten:

Header Betekenis
Retry-After Aantal seconden tot een volgende aanroep is toegestaan
X-RateLimit-Limit Maximum aantal aanroepen per tijdsperiode
X-RateLimit-Remaining Resterend aantal aanroepen in de huidige periode

Aanbevolen client-gedrag

Beschikbaarheid & SLA

Eduarte Connect wordt aangeboden als beheerde dienst. Beschikbaarheid, onderhoud en support zijn vastgelegd in de partnerovereenkomst en bijbehorende SLA.

Uitgangspunten

Let op: concrete SLA-cijfers (beschikbaarheidspercentage, reactietijden, onderhoudsvensters) worden vastgelegd in de partnerovereenkomst en zijn nog te bevestigen voor deze documentatie.

Endpoints op hoofdlijnen

EKS biedt per stamdata-soort een lijst-endpoint (GET /<resources>) en een detail-endpoint (GET /<resources>/{id}). Alle endpoints zijn alleen-lezen en gepagineerd (zie Conventies).

Resource Lijst Detail
Fases GET /fases GET /fases/{id}
Locaties GET /locaties GET /locaties/{id}
Aggregatieniveaus GET /aggregatieniveaus GET /aggregatieniveaus/{id}
Onderwijsperiodes GET /onderwijsperiodes GET /onderwijsperiodes/{id}
Roosterstructuren GET /roosterstructuren GET /roosterstructuren/{id}
Cohorten GET /cohorten GET /cohorten/{id}
Taxonomie GET /taxonomie GET /taxonomie/{id}
Organisatie-eenheden GET /organisatieeenheden GET /organisatieeenheden/{id}
Teams GET /teams GET /teams/{id}
Schalen GET /schalen GET /schalen/{id}

Voor de volledige parameter-, response- en schemadefinities: zie de meegeleverde EKS_v1.0.yml of de online API-referentie.

Versiebeheer & changelog

EKS volgt de Connect-versioneringsstrategie (SemVer, major-versie in het pad). De huidige versie is 1.0. Non-breaking wijzigingen verschijnen als minor-versie binnen dezelfde major; breaking wijzigingen leiden tot een nieuwe major-versie die parallel draait, met een deprecation-notice en sunset-datum.

Versie Datum Wijzigingen
1.0 2026 Eerste versie: read-only ontsluiting van de Eduarte-stamdata.