Skip to content

[OpenSpec] zgw-catalogi-served #2542

Open

Description

@rubenvdlinde

⚠️ OpenSpec-managed issue — this content is automatically synced
from the openspec/ directory. Manual edits will be overwritten on next sync.

Artifacts

Summary

Serve the read half of the VNG Catalogi API (catalogussen and informatieobjecttypen) over the OpenRegister schema that holds the organisation's document types, so a Documenten API needs no second catalogue.

Build rules: openspec/woo-build-rules.md

Specs

Tasks

  • Implement
  • Test: PHPUnit CatalogiBindingTest::testNoBindingResolvesToNull, ::testTheDefaultFieldMap; a test that greps lib/Service/Catalogi/ for an app id (filinq, docudesk) and fails on a hit, as ZgwSetCatalogue demands
  • Implement. Read objecten-api-facade design D7 first; the handlers take their OpenRegister access as callables and the wiring class hands them the production side.
  • Test: PHPUnit InformatieobjecttypeEndpointHandlerTest::testATypeIsServedWithItsOwnUrl, ::testListsArePaged, ::testWritesAnswer405, ::testAnUnboundFacadeAnswersNotConfigured; CatalogusEndpointHandlerTest::testTheCatalogueResolves. Double OpenRegister's ObjectService with environmentAwareDouble after reading its real findAll() and find() signatures on openregister development.
  • Wiring: CatalogiWiringTest::testEveryHandlerIsBuiltWithItsSeams boots Application::register() and asserts no handler is autowired with a null seam. The objecten facade shipped exactly that defect once (every route 401 or 404); this test is why.
  • testATypeIsServedWithItsOwnUrl must be shown failing on development before the change. Paste the failing line in the PR body.
  • Implement
  • Test: PHPUnit CatalogiTokenServiceTest::testAMissingScopeIsRefusedBeforeAnyRead; InformatieobjecttypeEndpointHandlerTest::testConceptTypesAreHiddenByDefault, ::testAConceptReaderSeesConceptsWhenAsked
  • Implement. Read the TOOI scheme through OpenRegister's concept register service; read its real method signature on openregister development and name it in the PR body. Do not bundle a copy of the category list (decision D3).
  • Test: PHPUnit WooStarterSetTest::testOnlyMissingCategoriesAreCreated, ::testAMissingSchemeRefuses; CatalogiAdminControllerTest::testANonAdminIsRefused; the route-reachability gate
  • Implement
  • Test: Newman collection and Playwright spec above
  • Own clone, git checkout --no-track -b <branch> origin/development, TMPDIR a sibling outside the clone.
  • PHPUnit judged by the Tests: line, or with --no-coverage; a green suite exits 1 without a coverage driver.
  • run-hydra-gates.sh --base origin/development, counting the gates that ran.
  • Once before push: COMPOSER_PROCESS_TIMEOUT=0 composer check:strict, npm run lint, npm run format, npm run check:l10n, npm run check:l10n-js, npm run check:manifest, npm run check:schema-l10n, npm run check:register.
  • CI runs the gates on the full tree; the coverage guard needs a test for every added statement.
  • openspec validate zgw-catalogi-served --type change --strict passes.
  • One PR, --base development; merge development in, never rebase; no Co-Authored-By trailer.
  • Done means merged on development with CI green. Row 17.18 is production only once a store release carries it.

Synced from openspec/changes/zgw-catalogi-served by OpenSpec workflow
App: integriq

Activity

  1. changed the title [-]zgw-catalogi-served: serve informatieobjecttypen so no second catalogue is kept[/-] [+][OpenSpec] zgw-catalogi-served[/+] on Oct 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions