Ga naar hoofdinhoud
AcademytutorialEen Woo-register opzetten in OpenRegister

Een Woo-register opzetten in OpenRegister

Importeer het canonieke Woo-register in OpenRegister. Eén API-aanroep, tien TOOI-categorieën, klaar om publicaties op te slaan.

TutorialWooOpenRegisterPublicatiesTOOIOpen data
5 min read

De Wet open overheid (Woo) verplicht overheden om documenten openbaar te maken in elf informatiecategorieën. OpenRegister levert het opslagmodel daarvoor. In deze tutorial importeer je het canonieke Woo-register, met alle TOOI-categorieën, in een paar minuten.

De vervolgtutorial over bestanden uploaden bouwt hierop voort.

In de voorbeelden gebruiken we de lokale dev-omgeving op http://localhost:8080 met admin:admin. Vervang dat door je eigen host en credentials.

De canonieke bron

Het Woo-register bestaat al, gepubliceerd door Conduction op GitHub:

https://raw.githubusercontent.com/ConductionNL/woo-website/main/website/static/oas/woo_register.json

Het is een OpenAPI-bundel van 1.0.1, met één register (woo) en tien schemas. Elk schema bevat de TOOI-metadata van één Woo-informatiecategorie:

SlugCategorie
vergaderstukken_decentrale_overhedenVergaderstukken decentrale overheden
subsidieverplichtingen_anders_dan_met_beschikkingSubsidieverplichtingen zonder beschikking
overige_besluiten_van_algemene_strekkingOverige besluiten van algemene strekking
organisatie_en_werkwijzeOrganisatie en werkwijze
ontwerpen_van_wet_en_regelgeving_met_adviesaanvraagOntwerpen van wet- en regelgeving
onderzoeksrapportenOnderzoeksrapporten
klachtoordelenKlachtoordelen
wetten_en_algemeen_verbindende_voorschriftenWetten en algemeen verbindende voorschriften
woo_verzoeken_en_besluitenWoo-verzoeken en -besluiten
convenantenConvenanten
agendas_en_besluitenlijsten_bestuurscollegesAgenda's en besluitenlijsten bestuurscolleges
vergaderstukken_staten_generaalVergaderstukken Staten-Generaal
adviezenAdviezen

Stap 1: Importeer het register

OpenRegister heeft een import/url-endpoint dat een OpenAPI-bundel ophaalt en in één transactie omzet naar register, schemas en (optioneel) seed-objecten.

curl -u admin:admin \
  -X POST "http://localhost:8080/index.php/apps/openregister/api/configurations/import/url" \
  -H "OCS-APIRequest: true" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://raw.githubusercontent.com/ConductionNL/woo-website/main/website/static/oas/woo_register.json"
  }'

Als alles goed gaat, krijg je terug:

{
  "success": true,
  "message": "Configuration imported successfully from url",
  "configurationId": 271,
  "result": {
    "registersCount": 1,
    "schemasCount": 10,
    "objectsCount": 0
  }
}

registersCount: 1 en schemasCount: 10 bevestigen dat alles is aangemaakt. De configurationId heb je later nodig als je de bron wilt re-syncen.

Stap 2: Controleer wat is aangemaakt

Vraag de lijst van registers op en filter op slug woo:

curl -u admin:admin \
  "http://localhost:8080/index.php/apps/openregister/api/registers" \
  -H "OCS-APIRequest: true"

In de respons vind je een entry zoals:

{
  "id": 924,
  "uuid": "cd44ca36-e3de-4d6f-9af9-abbb49710c83",
  "slug": "woo",
  "title": "Woo",
  "version": "1.0.1",
  "description": "Woo-register met TOOI-informatiecategorieën",
  "schemas": [1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628]
}

De id is je interne register-id (924 in dit voorbeeld; bij jou kan het verschillen). De slug woo is stabiel en gebruik je verder in alle API-aanroepen.

In de UI vind je het register onder Apps → OpenRegister → Registers:

Het Woo-register in de OpenRegister UI, met de tien TOOI-schemas in de zijkant

Klik op View Details in het Actions-menu van de kaart voor een statistiekenpaneel:

Het detailpaneel met statistieken voor het Woo-register: aantal objecten, logs, files en schemas

Stap 3: Bekijk de schemas

De TOOI-schemas zijn metadata-schemas. Elk schema bevat zeven velden:

VeldTypeBeschrijving
tooiCategorieNaamstring (verplicht)Naam van de categorie
tooiCategorieIdstringTOOI-id, bijvoorbeeld c_fdaee95e
tooiCategorieUristringVolledige TOOI-URI
tooiThemaNaamstringOptioneel thema
tooiThemaIdstringOptioneel thema-id
tooiThemaUristringOptioneel thema-URI
valuesarrayVrij in te vullen sleutel-waarde-paren

De categorieId en categorieUri zijn const in het schema. Je hoeft ze niet zelf te vullen. OpenRegister vult ze automatisch zodra je tooiCategorieNaam zet.

De Schemas-pagina in OpenRegister

Stap 4: Maak een eerste publicatie

Test je register met één publicatie. We pakken de categorie onderzoeksrapporten:

curl -u admin:admin \
  -X POST "http://localhost:8080/index.php/apps/openregister/api/objects/woo/onderzoeksrapporten" \
  -H "OCS-APIRequest: true" \
  -H "Content-Type: application/json" \
  -d '{
    "tooiCategorieNaam": "onderzoeksrapporten"
  }'

De respons toont onder andere:

{
  "id": "3422e6cd-1ba5-478c-b842-8f206f9d7358",
  "tooiCategorieNaam": "onderzoeksrapporten",
  "tooiCategorieId": "c_fdaee95e",
  "tooiCategorieUri": "https://identifier.overheid.nl/tooi/def/thes/kern/c_fdaee95e",
  "@self": {
    "register": "924",
    "schema": "1624",
    "uri": "http://localhost:8080/apps/openregister/api/objects/924/1624/3422e6cd-...",
    "owner": "admin",
    "created": "2026-05-07T05:12:24+00:00"
  }
}

OpenRegister heeft de TOOI-id en URI zelf ingevuld. Het object heeft een UUID. Onthoud die UUID, want je hebt hem nodig om bestanden aan deze publicatie te koppelen.

Stap 5 (optioneel): Voeg eigen velden toe

De canonieke schemas dekken de TOOI-metadata, niet de inhoud van de publicatie zelf. Voor titel, omschrijving, datum en verantwoordelijke organisatie maak je een eigen aanvullend schema, of breid je een bestaand schema uit.

Een minimale uitbreiding voor onderzoeksrapporten ziet er bijvoorbeeld zo uit:

{
  "title": "Onderzoeksrapport publicatie",
  "properties": {
    "titel": { "type": "string", "maxLength": 255 },
    "omschrijving": { "type": "string", "maxLength": 2000 },
    "openbaarmakingsdatum": { "type": "string", "format": "date" },
    "verantwoordelijkeOrganisatie": { "type": "string" }
  },
  "required": ["titel", "openbaarmakingsdatum"]
}

Je kunt zo'n schema via POST /api/schemas aanmaken en daarna in de Woo-register-configuratie toevoegen. Houd het zoveel mogelijk dichtbij de DiWoo-metadata-standaard zodat je publicaties ook door PLOOI en woogle.nl opgepikt kunnen worden.

En nu

Je hebt:

  • Een werkend Woo-register met tien TOOI-schemas
  • Eén testpublicatie met UUID
  • Een patroon om eigen velden toe te voegen waar nodig

In de vervolgtutorial koppel je bestanden aan deze publicatie, van enkele PDF's tot grote videobestanden in chunks.

Opruimen

Als je het testregister wilt verwijderen:

curl -u admin:admin \
  -X DELETE "http://localhost:8080/index.php/apps/openregister/api/registers/924" \
  -H "OCS-APIRequest: true"

Dit verwijdert het register, alle schemas en alle objecten. De configuratie-import zelf blijft bestaan, zodat je hem opnieuw kunt afspelen.