Preview release. These docs are a work in progress. Pages are still being written, links may break, and structure may shift without notice. Treat everything here as a draft and report issues on GitHub.
Validate and render a manifest
Check a metadata.yaml file for errors, inspect individual rendered artifacts
(service catalogues, catalog metadata, validation shapes, JSON Schemas, form schemas, and policies),
or produce a complete static publication bundle for hosting.
The validator collects all errors across every validation pass before reporting, so a single run surfaces every problem in the file. You do not need to fix one error at a time and re-run.
For profile fixture validation, see the profile fixtures how-to instead.
Prerequisites
Section titled “Prerequisites”- Rust toolchain installed (the workspace uses stable Rust).
- The
registry-manifestrepository cloned locally.
Build the CLI before running commands:
cargo build -p registry-manifest-cliThe commands in this page use cargo run -p registry-manifest-cli -- as a prefix.
If you have installed the binary directly, replace that prefix with registry-manifest-cli.
The four example profile fixtures in the repository serve as ready-made manifest inputs.
The commands in this how-to use
profiles/example-civil-registration/fixtures/metadata.yaml
as the example path.
Substitute your own manifest path as needed.
1. Validate the manifest
Section titled “1. Validate the manifest”cargo run -p registry-manifest-cli -- validate \ profiles/example-civil-registration/fixtures/metadata.yamlOn success, the CLI prints:
metadata manifest valid: profiles/example-civil-registration/fixtures/metadata.yamlOn failure, all validation errors are printed together.
Validation checks include:
schema_versionequals"registry-manifest/v1".- Catalog
base_urlis a valid HTTP URL. - Entity names match the required identifier pattern.
- Cardinality strings are well-formed (
"0..1","1..n","1..1"). - Codelist references resolve to defined codelists.
- Grouped evidence type lists reference known evidence types that prove the owning requirement.
- Public service, authority, channel, form, and data-service references resolve.
- ODRL policy terms use recognized action and operator values.
- Evidence offering references are internally consistent.
2. Render a single artifact
Section titled “2. Render a single artifact”Use render to write one renderer’s output to stdout.
The --format flag selects the renderer.
Render the catalog JSON:
cargo run -p registry-manifest-cli -- render \ profiles/example-civil-registration/fixtures/metadata.yaml \ --format catalogRender base DCAT JSON-LD:
cargo run -p registry-manifest-cli -- render \ profiles/example-civil-registration/fixtures/metadata.yaml \ --format dcatRender a Core Public Service Vocabulary Application Profile (CPSV-AP) service catalogue:
cargo run -p registry-manifest-cli -- render \ fixtures/cpsv-ap/health-linked-child-support.metadata.yaml \ --format cpsv-apTo render the BRegDCAT-AP profile variant via --format dcat, pass --profile bregdcat-ap.
Alternatively, use the --format bregdcat-ap shorthand:
Render BRegDCAT-AP 2.00 JSON-LD:
cargo run -p registry-manifest-cli -- render \ profiles/example-civil-registration/fixtures/metadata.yaml \ --format bregdcat-apRender SHACL (Shapes Constraint Language) node shapes:
cargo run -p registry-manifest-cli -- render \ profiles/example-civil-registration/fixtures/metadata.yaml \ --format shaclRender a JSON Schema Draft 2020-12 for a specific dataset and entity.
The civil-registration fixture has dataset vital-events with entities person and
vital_event. Substitute accordingly for your manifest:
cargo run -p registry-manifest-cli -- render \ profiles/example-civil-registration/fixtures/metadata.yaml \ --format json-schema \ --dataset vital-events \ --entity personRender a form JSON Schema Draft 2020-12 document:
cargo run -p registry-manifest-cli -- render \ fixtures/cpsv-ap/health-linked-child-support.metadata.yaml \ --format form-json-schema \ --form child-support-review-formRender OGC API Records item bodies:
cargo run -p registry-manifest-cli -- render \ profiles/example-civil-registration/fixtures/metadata.yaml \ --format ogc-recordsRender the ODRL (Open Digital Rights Language) policy collection:
cargo run -p registry-manifest-cli -- render \ profiles/example-civil-registration/fixtures/metadata.yaml \ --format policiesRender a per-dataset ODRL policy document (substitute your dataset ID for vital-events):
cargo run -p registry-manifest-cli -- render \ profiles/example-civil-registration/fixtures/metadata.yaml \ --format policy \ --dataset vital-eventsRender evidence offerings:
cargo run -p registry-manifest-cli -- render \ profiles/example-civil-registration/fixtures/metadata.yaml \ --format evidence-offeringsRender a single evidence offering by ID (substitute the offering ID defined in your manifest’s
evidence_offerings list):
cargo run -p registry-manifest-cli -- render \ profiles/example-civil-registration/fixtures/metadata.yaml \ --format evidence-offering \ --offering <offering-id>All render output goes to stdout.
Redirect to a file when you want to inspect or diff it:
cargo run -p registry-manifest-cli -- render \ profiles/example-civil-registration/fixtures/metadata.yaml \ --format bregdcat-ap > /tmp/breg.jsonld3. Publish a static bundle
Section titled “3. Publish a static bundle”publish runs every renderer, writes all artifacts to a directory, and creates an
index.json that lists every artifact with its relative path.
cargo run -p registry-manifest-cli -- publish \ profiles/example-civil-registration/fixtures/metadata.yaml \ --out target/metadata/publicThe output directory will contain catalog.json, dcat.jsonld, cpsv-ap.jsonld when the
manifest declares the profile, shacl.jsonld, per-entity JSON Schema files, form JSON Schema
files, OGC Records output, evidence-offering files, and per-dataset policy documents.
See the reference page for the full artifact list.
The index.json at the root of the output directory carries schema version
registry-manifest-index/v1 and links to every artifact.
Verification
Section titled “Verification”After validate, confirm the exit code is zero:
cargo run -p registry-manifest-cli -- validate \ profiles/example-civil-registration/fixtures/metadata.yamlecho "exit code: $?"After publish, confirm the key artifacts are present:
ls target/metadata/public/catalog.json \ target/metadata/public/dcat.jsonld \ target/metadata/public/cpsv-ap.jsonld \ target/metadata/public/shacl.jsonld \ target/metadata/public/index.jsonTroubleshooting
Section titled “Troubleshooting””schema_version mismatch” or validation error on schema_version
Section titled “”schema_version mismatch” or validation error on schema_version”The manifest root must declare schema_version: registry-manifest/v1.
Check the first line of your YAML.
Validation prints errors about cardinality strings
Section titled “Validation prints errors about cardinality strings”Cardinality values must match the pattern "0..1", "1..1", or "1..n".
Check your cardinality_expectations blocks.
--format json-schema produces no output or errors
Section titled “--format json-schema produces no output or errors”The json-schema format requires both --dataset <id> and --entity <name>.
Confirm both flags are present and match IDs defined in your manifest.
--format policy errors on dataset not found
Section titled “--format policy errors on dataset not found”The policy format requires --dataset <id>.
The ID must match a DatasetManifest entry in your manifest.
publish writes an empty or partial directory
Section titled “publish writes an empty or partial directory”A validation failure inside publish aborts the run.
Run validate first to confirm the manifest is clean before running publish.