Ga naar hoofdinhoud

Active publication, inspection and the national indexes

Woo actieve openbaarmaking is a standing rule, not a person picking rows. For this record type, these parts are public, to a reader with no account, under these conditions. Records follow the rule and nobody picks, because a picked list goes stale the moment a new record arrives, and going stale here means failing to publish something the law says must be published.

The publication rule​

A rule names the record type, the properties an anonymous reader may read, and the conditions under which a record of that type becomes public.

The anonymous permission set is enforced where the read happens. A property outside it is absent from the response, not blanked and not nulled: a property present with an empty value still tells the reader the record carries it. A field absent from the page and present in the API is the shape of every accidental disclosure, so the projection is made once, in PublicationRuleService, and every public handler goes through it.

Previewing before saving​

POST /api/publication-rules/preview answers both halves: which records the rule would publish, and which properties it would expose. The preview runs the draft rule as it would be saved, so a rule that is switched off still shows what it would do. A preview that answered "nothing" for a draft would be a check that cannot see the thing it judges.

A rule with an operator this app does not know is refused. Read as "matches" it publishes what nobody approved; read as "does not match" it silently withholds what the law requires.

The decision type​

POST /api/publication-rules/validate-decision validates a decision against its besluittype. Publicatieplicht is a property of the type, so the rules live there and the validation happens here, where publication happens.

The statutory response date is computed from the type's term and the decision's publication date. It is never taken from the decision: a typed response date is a date somebody chose, and the statutory one is a date the law chose.

A missing publication date and an unreadable one are refused with different reasons, because the two send the caller to different places.

Terinzagelegging​

POST /api/inspections opens a window on a record, for the term the record type declares, over the documents chosen for it. Which documents form part of a decision for inspection is a judgement made per case, not a rule per type, so the set is chosen at publication.

GET /api/inspections/{id}?token=… is the link. It stops working because the window closed, checked at the read, so a scheduler that has not fired yet cannot leave documents readable past their statutory period. A closed window answers 410 with its end date, so a reader who followed a link from a letter learns the period is over rather than that something is broken.

A window whose dates cannot be read refuses. Read as open it publishes past the term; read as closed it withholds what is owed.

Taking a publication back​

POST /api/publications/depublish is one action. It records who and why, and sends a withdrawal to every channel the publication reached.

A withdrawal a channel has not acknowledged is shown as outstanding. An undo that leaves the document in a harvester's copy is not one, so a channel that could not be reached is recorded as not reached and never as acknowledged.

The national channels​

POST /api/publications/announce composes the official notice for the national publication platform and for the local channel and hands both to integriq's gateway. No national endpoint is called from this app.

When a channel cannot be reached, the response is 502 and names it, and the composed notices are returned anyway so an operator can see what would have been sent. A 200 with nothing delivered would let a partial announcement read as a complete one.

An administrator announces a decision from the publication page, in the Official notice block. They choose the publication type and the effective date, and the block lists each channel with its result.

Channel sources​

Each national channel is sent through an integriq source. You choose it in the admin settings, Woo section, under National delivery channels: enter the slug of the source as integriq shows it, for the Woo index, the national publication platform and PLOOI. A channel without a source fails at once, with a message that names the channel and the channel_sources setting.

The official notice for the national publication platform goes through integriq's publicatie gateway as a reference to the document plus a publication instruction, never as the document itself.

PLOOI​

Turn on Deliver to PLOOI on a catalogue, and every publication in it is sent to PLOOI, the delivery API of open.overheid.nl, when it becomes public. The delivery runs in a background job, so publishing never waits for PLOOI. The publication page shows the result in the PLOOI delivery block: the status, the time, the identifier PLOOI gave, and the reason when it failed. A failed delivery does not undo the publishing.

Woo information categories​

You file a publication under one of the 18 information categories of the Woo (Wet open overheid). Pick it in the Woo information category field of the Publication block on the publication page. The field stores a code from infocat001 to infocat018. Seventeen are the categories of article 3.3; infocat018 is the inspanningsverplichting of article 3.1. A publication with any other code appears in no category sitemap.

Each category has its own sitemap, which the national Woo index reads. That sitemap lists the catalogue's publications filed under the category. An instance that still runs a register titled woo keeps its old lookup too: the schema named after the category adds its publications to the same sitemap.

GET /api/woo/categories returns every category with its Dutch and English name, the official URI it publishes under, and whether it came from the national value list or from this instance. A Woo request batch you publish is filed under infocat014, Woo requests and decisions.

A category of your own​

The 18 categories come from the national value list and are always there. You can add one of your own without a release: store an Information category with a code, a name, and the value-list category it publishes under. It then gets its own sitemap at sitemapindex-diwoo-{code}.xml and its own line in robots.txt.

The value-list category is not optional. The national index takes no other value, so a category that names none publishes nothing: it gets no sitemap, and its publications are offered to no index. Refusing to publish is the safer of the two failures, and the log says which category was refused and why.

You can also name the schemas a category's sitemap lists. Name none and the whole catalogue is listed, which is what the 18 bundled categories do.

What happened to the document​

The national index records what happened to a document on the date it became public: it was received, adopted, or signed. Pick it in the Document handling field. Left empty, received is used, which is what every publication claimed before the field existed.

Which collections publish​

GET and POST /api/published-collections hold the configured set. A collection added on a running instance publishes its records from that moment, without a release. A configuration that cannot be read refuses: read as "publish nothing" it silently stops a statutory publication, and read as "publish everything" it publishes what nobody approved.

Which parts of the published standards this implements​

  • Woo actieve openbaarmaking as a rule engine and an obligation overview. The DIWOO and TPOD payload profiles themselves belong to the sitemap and DCAT surfaces, not here.
  • Terinzagelegging as a window with a per-case document set and a link checked at the read. The statutory terms themselves are declared per record type by the organisation; this app computes from them and asserts none.
  • The national publication platform and the national Woo index are reached through integriq's gateway. This app composes the notice and the registration, records the answer, and holds no transport.

Publish, withdraw and publish again​

The publication page has a Publication status section. It says whether the publication is a draft, scheduled, public, withdrawn or archived. It shows only the buttons that apply.

  • Publish now makes a draft or scheduled publication public at once.
  • Withdraw asks for a reason and takes the publication off the public site at once. Every national channel it reached gets a withdrawal: the Woo-index always, PLOOI when it was delivered there. The message names any channel that has not confirmed.
  • Publish again makes a withdrawn publication public. Earlier depublications stay in its history.

To take down one document, choose it in the Withdraw dialog. That document leaves the public site and the sitemap. The rest of the publication stays public.

Archive stays the final retention step. It is not a way to withdraw.

You need the right to change the publication. Without it the server refuses, and nothing is sent or changed.

callwhat it does
GET /api/publications/{id}/visibilityanswers {state}
POST /api/publications/{id}/publishpublish now or again; 409 when it is already public
POST /api/publications/{id}/withdrawbody {reason}; 409 when it is not public or scheduled
POST /api/publications/{id}/files/{fileId}/withdrawbody {reason}; withdraws one document