Ga naar hoofdinhoud

OpenCatalogi Publications API (0.7.x)

Download OpenAPI specification:Download

ℹ️ Dit is de primaire publicaties-API

De OpenCatalogi Publications API is de bovenste laag van het OpenWoo-koppelvlak — de API die de woo-website-template-apiv2 en andere consumenten aanroepen. Hij ontsluit publicaties via een catalogus (slug publications voor WOO) en delegeert intern naar OpenRegister.

Onder deze laag ligt de OpenRegister-objects-API — de ruwere /objects/{register}/{schema}-laag waar deze publicaties feitelijk in zitten opgeslagen. Gebruik die alleen wanneer je register/schema-specifiek en buiten een catalogus om wilt bevragen. Zie API-koppelvlak voor de architectuur-context.

Belangrijk — handmatig onderhouden. OpenCatalogi exporteert (nog) geen eigen OAS-endpoint. Deze spec is handmatig opgesteld op basis van lib/Controller/*.php in Conduction/opencatalogi en de calls die woo-website-template-apiv2 daadwerkelijk maakt. Wijzigt de upstream-API? Open een PR op openwoo-app-website tegen static/oas/opencatalogi-publications.json.

Anonieme zichtbaarheid — twee filter-lagen

Alle GET-endpoints hieronder zijn anoniem aanroepbaar (geen auth-header). De backend past server-side twee filters toe op anonieme callers, beide moeten "groen" zijn voordat een object wordt teruggegeven:

  1. OpenRegister RBAC-laag — de authorization.read-regels op het schema (datum-driven via publicatiedatum/depublicatiedatum voor WOO).
  2. OpenCatalogi-controller-laagPublicationsController::show() checkt aanvullend dat @self.published gevuld is en niet in de toekomst ligt.

Zie de API-koppelvlak-doc voor de volledige uitleg + JSON-voorbeelden van de authorization.read-regels.

Catalogi

Catalogus-lijst en metadata. Een catalogus is een gegroepeerde set van OpenRegister-registers + schema's, met een uniek slug-pad. Voor WOO heet de catalogus publications.

Lijst van catalogi

Geeft alle catalogi terug in de OpenCatalogi-instantie. Voor WOO is dit typisch één catalogus met slug publications. Gebruik de slug van een catalogus als pad-segment bij de /publications-endpoints.

Responses

Response samples

Content type
application/json
{
  • "total": 0,
  • "page": 0,
  • "pages": 0,
  • "limit": 0,
  • "offset": 0,
  • "results": [
    ]
}

Catalogus-detail

Geeft één catalogus terug op id of slug.

path Parameters
id
required
string

Catalog-id (UUID) of -slug

Responses

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "slug": "string",
  • "title": "string",
  • "summary": "string",
  • "description": "string",
  • "listed": true,
  • "status": "draft",
  • "registers": [
    ],
  • "schemas": [
    ],
  • "@self": {
    }
}

Publications

Publicatie-endpoints binnen een catalogus. Het pad-segment {catalogSlug} is de catalogus-slug — voor WOO publications. Deze endpoints leveren de gefilterde publicatie-resultaten + facetten + catalogus-context (@catalog).

Lijst van publicaties (WOO-catalogus)

Levert de publicaties uit de WOO-catalogus (slug publications).

/publications is hier géén vast endpoint maar de catalogus-slug publications. Wijs je een andere catalogus aan, dan verandert dat pad-segment — het werkelijke route-patroon is /api/{catalogSlug}.

Alle parameters hieronder zijn los te combineren. Anonieme callers krijgen uitsluitend gepubliceerde objecten (zie het RBAC-blok in de info-banner bovenaan).

query Parameters
_search
string

Full-text zoekopdracht — implementatie is een case-insensitive ILIKE '%term%' substring-match over alle type: string schema-properties plus de metadata-velden _name, _description, _summary. Geen Lucene-syntax: boolean operatoren (OR/AND), phrase-quotes ("..."), wildcards (*), fuzzy-tilde (~) en boost (^N) worden als letterlijke tekens behandeld, niet geparsed. Voor typo-tolerantie zie _fuzzy hieronder. Zie de Full-text search-doc voor de volledige semantiek + gotchas.

_fuzzy
boolean

Schakelt typo-tolerante fuzzy matching in op het metadata-veld _name via PostgreSQL's pg_trgm-extensie. Voegt een similarity(_name, '<query>') > 0.1 OR-clausule toe aan de ILIKE-condities, EN voegt @self.relevance (integer 0–100) toe aan elke result-rij. Werkt ALLEEN op PostgreSQL-deployments met pg_trgm geïnstalleerd; op MySQL of PostgreSQL zonder extensie valt de query stil terug op de standaard ILIKE-mode (geen @self.relevance-veld). De fuzzy scope is uitsluitend _name — andere velden worden niet fuzzy doorzocht.

_limit
integer [ 1 .. 500 ]
Default: 20

Aantal resultaten per pagina (default 20).

_page
integer >= 1
Default: 1

Paginanummer (1-geïndexeerd).

_order[publicatiedatum]
string
Enum: "asc" "desc"

Sorteer op publicatiedatum. De woo-website-template-apiv2 gebruikt zelf _order[@self.published]=desc; beide werken. Wisselen kan ook naar elk ander veld (titel, thema, …).

_order[@self.relevance]
string
Enum: "asc" "desc"

Sorteer resultaten op @self.relevance (trigram-similariteit van _name met de zoekterm). Alleen zinvol gecombineerd met _fuzzy=true — zonder die parameter wordt @self.relevance niet berekend en is sortering hierop een no-op.

_extend
string

Komma-gescheiden lijst van velden om bij te laden (bv. themes,attachments).

_unset
string

Komma-gescheiden lijst van velden om weg te laten uit de response.

_facetable
boolean

Activeer facet-engine. Combineer met _facets[<veld>][type]=terms of date_histogram.

@self[schema]
integer

Filter op één schema (informatiecategorie). De beschikbare schema-id's haal je uit _facets[@self][schema][type]=terms op je eigen omgeving — id's zijn omgevings-specifiek.

publicatiedatum[gte]
string <date>

Bracket-operator: publicatiedatum >= <ISO-datum>. Combineer met [lte] voor bereiken.

publicatiedatum[lte]
string <date>

Bracket-operator: publicatiedatum <= <ISO-datum>.

Responses

Response samples

Content type
application/json
{
  • "total": 0,
  • "page": 0,
  • "pages": 0,
  • "limit": 0,
  • "offset": 0,
  • "results": [
    ],
  • "facets": { },
  • "@self": { },
  • "@catalog": {
    }
}

Publicatie-detail

Geeft één publicatie terug. Anoniem: 404 wanneer concept of gedepubliceerd (datum-driven RBAC + @self.published-check). Geautoriseerd: 200 ongeacht status.

path Parameters
id
required
string <uuid>

Publication-id (UUID)

query Parameters
extend[]
Array of strings

Veld om bij te laden, herhaalbaar (?extend[]=themes&extend[]=@self.schema).

Responses

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "titel": "string",
  • "samenvatting": "string",
  • "beschrijving": "string",
  • "thema": "string",
  • "categorie": "string",
  • "publicatiedatum": "2019-08-24",
  • "depublicatiedatum": "2019-08-24",
  • "kenmerk": "string",
  • "besluitdatum": "2019-08-24",
  • "@self": {
    }
}

Bijlagen van een publicatie

Geeft de bijlagen van de publicatie. Filter optioneel op aanwezigheid van labels (_hasLabels=true of _noLabels=true). De woo-website-template-apiv2 gebruikt beide varianten — _hasLabels voor categorie-getagde bijlagen, _noLabels voor de ongetagde restset met paginatie.

path Parameters
id
required
string <uuid>

Publication-id (UUID)

query Parameters
_hasLabels
boolean

Alleen bijlagen mét labels.

_noLabels
boolean

Alleen bijlagen zonder labels.

_limit
integer [ 1 .. 500 ]
Default: 20

Aantal resultaten per pagina (default 20).

_page
integer >= 1
Default: 1

Paginanummer (1-geïndexeerd).

Responses

Response samples

Content type
application/json
{
  • "total": 0,
  • "page": 0,
  • "pages": 0,
  • "limit": 0,
  • "offset": 0,
  • "results": [
    ]
}

Publicaties waarnaar deze publicatie verwijst (uses)

path Parameters
id
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "total": 0,
  • "page": 0,
  • "pages": 0,
  • "limit": 0,
  • "offset": 0,
  • "results": [
    ],
  • "facets": { },
  • "@self": { },
  • "@catalog": {
    }
}

Publicaties die naar deze publicatie verwijzen (used by)

path Parameters
id
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "total": 0,
  • "page": 0,
  • "pages": 0,
  • "limit": 0,
  • "offset": 0,
  • "results": [
    ],
  • "facets": { },
  • "@self": { },
  • "@catalog": {
    }
}

Publicatie + bijlagen downloaden als bundel

path Parameters
id
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "error": "string",
  • "message": "string",
  • "id": "string"
}

Pages

Content-pagina's (statische CMS-pagina's binnen de catalogus-website).

Lijst van content-pagina's

query Parameters
_limit
integer [ 1 .. 500 ]
Default: 20

Aantal resultaten per pagina (default 20).

_page
integer >= 1
Default: 1

Paginanummer (1-geïndexeerd).

Responses

Response samples

Content type
application/json
{
  • "total": 0,
  • "page": 0,
  • "pages": 0,
  • "limit": 0,
  • "offset": 0,
  • "results": [
    ]
}

Content-pagina op slug

path Parameters
slug
required
string

Slug van de pagina (mag slashes bevatten).

Responses

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "slug": "string",
  • "title": "string",
  • "content": "string",
  • "@self": {
    }
}

Menus

Navigatie-menu's voor de catalogus-website.

Lijst van navigatie-menu's

query Parameters
_limit
integer [ 1 .. 500 ]
Default: 20

Aantal resultaten per pagina (default 20).

_page
integer >= 1
Default: 1

Paginanummer (1-geïndexeerd).

Responses

Response samples

Content type
application/json
{
  • "total": 0,
  • "page": 0,
  • "pages": 0,
  • "limit": 0,
  • "offset": 0,
  • "results": [
    ]
}

Menu-detail

path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "title": "string",
  • "items": [
    ],
  • "@self": {
    }
}

Themes

Thema-taxonomie waaraan publicaties gekoppeld kunnen worden.

Lijst van thema's

Responses

Response samples

Content type
application/json
{
  • "total": 0,
  • "page": 0,
  • "pages": 0,
  • "limit": 0,
  • "offset": 0,
  • "results": [
    ]
}

Thema-detail

path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "title": "string",
  • "description": "string",
  • "@self": {
    }
}

Glossary

Glossarium met begrippen + definities voor de catalogus-website.

Lijst van glossarium-begrippen

Responses

Response samples

Content type
application/json
{
  • "total": 0,
  • "page": 0,
  • "pages": 0,
  • "limit": 0,
  • "offset": 0,
  • "results": [
    ]
}

Glossarium-item-detail

path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "term": "string",
  • "definition": "string",
  • "@self": {
    }
}