HTTP API voor de tools op developer.overheid.nl.
Deze repository bevat de API-laag voor versie 1 van de Tools API: routing, OpenAPI-validatie,
response headers, foutafhandeling en de koppeling naar de daadwerkelijke businesslogica. Die
businesslogica staat in @developer-overheid-nl/don-tools en wordt los beheerd in
don-tools.
- NestJS met Fastify als HTTP runtime
- OpenAPI request- en responsevalidatie via
openapi-backend - Gegenereerde controller- en modelbestanden op basis van
api/openapi.yaml - Implementatie-adapter in
implementation/index.ts - Gestructureerde Pino-logging met veilige request-id's en één completion-log per request
- Docker image voor deployment op poort
1338
De gebundelde OpenAPI-specificatie staat in api/openapi.yaml.
Bij runtime wordt deze ook beschikbaar gemaakt op:
GET /openapi.json
Belangrijkste tools-endpoints:
POST /v1/oas/validatePOST /v1/oas/convertPOST /v1/oas/bundlePOST /v1/oas/generatePOST /v1/oas/postmanPOST /v1/arazzo/markdownPOST /v1/arazzo/mermaidPOST /v1/auth/clients
Vereisten:
- Node.js 22+
- npm
Installeren en starten:
npm install
npm run devDe API luistert standaard op http://localhost:1338.
Handige scripts:
npm run build # TypeScript build naar dist/
npm start # start de gebouwde app
npm test # Vitest tests
npm run lint # Biome lint
npm run typecheck # TypeScript typecheck zonder output
npm run generate # opnieuw genereren vanuit de live OASPORT: poort waarop de API luistert, standaard1338HOST: host waarop Fastify bindt, standaard0.0.0.0LOG_LEVEL: minimale loglevel (debug,info,warnoferror), standaardinfoOAS_FETCH_TIMEOUT_MS: timeout voor externe specificaties, standaard45000OPENAPI_MOCK: zet mock responses aan mettrue,1,yesofonOPENAPI_VALIDATE_RESPONSES: valideert succesvolle responses tegen de OAS wanneer deze optruestaat
Iedere logregel is één JSON-object op stdout met time, level, msg,
app, component en operation. app is altijd tools-api. HTTP-logs
gebruiken daarnaast request_id, method, route, path, status_code,
duration_ms en response_bytes. Querystrings worden niet in path
opgenomen; alleen een 5xx response wordt als ERROR gelogd.
Mock mode kan ook direct via:
npm run dev-mockDe publieke gateway controleert vóór deze app een X-Api-Key óf een OAuth2
client-credentials-token. De runtime zelf verwacht daarom alleen verkeer van die vertrouwde
gateway. Bij lokaal gebruik vindt geen inkomende authenticatie plaats. De AUTH_CLIENT_ID en
AUTH_CLIENT_SECRET uit .env zijn uitsluitend bestemd voor de uitgaande Keycloak-adminaanroep
van POST /v1/auth/clients.
npm run generate haalt de OAS op van
https://api.developer.overheid.nl/tools/v1/openapi.json. Het script:
- controleert en verwijdert vier identieke legacy-componentvelden op rootniveau;
- corrigeert de API-key en client-credentials-eis naar twee alternatieve security-requirements;
- bundelt de OAS met een vastgezette Redocly-versie;
- valideert de bundel met DON ADR 2.1;
- genereert NestJS/Fastify met een vastgezette templatecommit en OpenAPI Generator-versie;
- vervangt alleen de gegenereerde mappen en laat
implementation/ongemoeid.
De enige projectspecifieke code na generatie is de adapter in implementation/index.ts.
Die roept de acht functies uit @developer-overheid-nl/don-tools aan.
Voor generatie zijn Node.js 22+, npm, Git en een Java-runtime nodig.
don-tools-api is alleen de HTTP-adapter. De herbruikbare logica zit in de
apart gepubliceerde package:
npm install @developer-overheid-nl/[email protected]Build lokaal:
docker build -t don-tools-api .Run lokaal:
docker run --rm -p 1338:1338 don-tools-apiDraai minimaal:
npm run lint
npm run typecheck
npm run build
npm testBij wijzigingen aan de OAS of de template: draai ook npm run generate en controleer
dat alleen de verwachte gegenereerde bestanden veranderen.
api/ OpenAPI contract en gegenereerde API interfaces
app/ NestJS/Fastify bootstrap en OpenAPI middleware
controllers/ Gegenereerde NestJS controllers
decorators/ Gegenereerde request decorators
implementation/ Handgeschreven adapter naar don-tools
models/ Gegenereerde request/response modellen
scripts/ Reproduceerbare OAS-normalisatie en codegeneratie
test/ Vitest tests