API van het Schema register (schemas.developer.overheid.nl)
- API version: 1.0.0
- Runtime: Go
- Database: PostgreSQL
Deze API registreert en ontsluit metadata over JSON Schemas van overheidsorganisaties. Nieuwe schemas worden opgehaald of uit de request body gelezen, gevalideerd, van metadata voorzien en opgeslagen in PostgreSQL.
-
Start de afhankelijkheden:
docker compose up -d
-
Maak een
.envbestand aan met minimaal:DB_HOSTNAME=localhost DB_USERNAME=don DB_PASSWORD=don DB_DBNAME=don_schema_v1 DB_SCHEMA=public
-
Start de server:
go run cmd/main.go
De API luistert standaard op poort 1337.
Nieuwe schemas worden na een succesvolle POST of PUT ook naar Typesense gestuurd, zodat ze vindbaar zijn in de zoekfunctie. Stel hiervoor de volgende omgevingsvariabelen in:
TYPESENSE_ENDPOINT: basis-URL van de Typesense cluster, bijvoorbeeldhttps://search.don.apps.digilab.network.TYPESENSE_API_KEY: API key met schrijfrechten.TYPESENSE_COLLECTION: naam van de collectie, standaardschema-register.TYPESENSE_DETAIL_BASE_URL: basis-URL voor detailpagina's in de frontend, standaardhttps://schemas.developer.overheid.nl/schemas.TYPESENSE_LANGUAGE: taalcode voor indexdocumenten, standaardnl.TYPESENSE_ITEM_PRIORITY: prioriteit in de zoekindex, standaard1.TYPESENSE_DEFAULT_TAGS: komma-gescheiden tags, standaardschema-register,schema.ENABLE_TYPESENSE: zet opfalseom Typesense indexing volledig uit te schakelen, standaardtrue.
Bij het opstarten van de server wordt automatisch een aparte service gestart
die direct een refresh-run uitvoert. Daarna draait de job iedere ochtend om
07:00 en haalt alle geregistreerde schemas met een schemaUrl opnieuw op.
Zodra de inhoud is gewijzigd, volgen dezelfde stappen als bij een POST:
validatie, metadata bijwerken, opslaan en opnieuw indexeren in Typesense.
SourceMeta schemas worden ook tijdens deze job geharvest. Relevante omgevingsvariabelen:
SOURCEMETA_ONE_API_BASE: interne SourceMeta One API base, standaardhttp://source-meta-svc:8000/schemas/.SOURCEMETA_PUBLIC_SCHEMA_BASE_URL: publieke base-URL voor daadwerkelijke schemas, standaardhttps://static.developer.overheid.nl/schemas/.
De applicatie gebruikt PostgreSQL. De docker-compose start lokaal een Postgres container met:
- Host:
localhost - Port:
5432 - Username:
don - Password:
don - Database:
don_schema_v1
De applicatie voert bij het opstarten de Gorm migraties uit voor organisaties en schemas.
Voor user-facing wijzigingen (fix/feature/breaking) verwachten we per PR een
Changie-fragment in .changes/unreleased.
Eenmalig installeren:
go install github.com/miniscruff/changie@latestFragment aanmaken:
changie newNormaal is een fragment niet nodig voor interne refactors zonder zichtbaar effect, docs-only wijzigingen en CI-only tweaks.
Bij een release kun je de fragments bundelen in CHANGELOG.md:
changie batch <version>Dit gebeurt ook automatisch bij elke merge naar main via GitHub Actions:
changie batch auto en daarna changie merge, waarna automatisch een PR met de
changelog-updates wordt aangemaakt.
De deployment van deze API verloopt via GitHub Actions en een aparte infra repository.
- Organization variable
INFRA_REPO, bijvoorbeelddeveloper-overheid-nl/don-infra. - Repository variable
KUSTOMIZE_PATH, met als basispad bijvoorbeeldapps/api/overlays/. - Secrets
RELEASE_PROCES_APP_IDenRELEASE_PROCES_APP_PRIVATE_KEYvoor het aanpassen van de infra repository.
De testdeploy draait via .github/workflows/deploy-test.yml.
- De workflow draait op pushes naar branches behalve
main. - Alleen commits met
[deploy-test]in de commit message worden echt gedeployed. - Er wordt een image gebouwd en gepusht naar
ghcr.io/<owner>/<repo>met tagstesten de commit SHA. - Daarna wordt in
INFRA_REPOhet bestand${KUSTOMIZE_PATH}test/kustomization.yamlbijgewerkt naar de nieuwe image tag en direct gecommit.
Voorbeeld commit message:
feat: pas schema registratie aan [deploy-test]
De productiedeploy draait via .github/workflows/deploy-prod.yml.
- De workflow draait bij een push naar
main. - Er wordt een image gebouwd en gepusht naar
ghcr.io/<owner>/<repo>met tagslatesten de commit SHA. - Er wordt in
INFRA_REPOeen release branch aangemaakt of bijgewerkt. - In
${KUSTOMIZE_PATH}prod/kustomization.yamlwordt de image tag bijgewerkt naar de commit SHA van deze repository. - Daarna wordt automatisch een pull request in de infra repository geopend of bijgewerkt.
- De productie-uitrol gebeurt door die pull request te mergen.
Een contribution of pull request leidt niet automatisch tot een deployment.
- Een pull request triggert wel CI, waaronder tests, linting en een Docker build als controle.
- De CI-build pusht geen image naar GHCR en past de infra repository niet aan voor pull requests.
- Er is geen automatische preview-omgeving per pull request.
- Een testdeploy gebeurt pas na een push naar een branch in deze repository met
[deploy-test]in de commit message.
Copyright (c) Geonovum. Licensed under the EUPL-1.2.
Zie ook publiccode.yml voor projectmetadata.