Skip to content
Registry Stack Docs Latest

Reference

View as Markdown

Look up CLI subcommand flags, manifest key definitions, federation metadata, publish output paths, and the runtime-only key list.

Source: crates/registry-manifest-cli/src/main.rs

Parses and validates a manifest. Prints "metadata manifest valid: <path>" and the canonical source_manifest_digest on success. Exits non-zero and prints all errors on failure.

validate <metadata.yaml>

Compiles the manifest and writes one renderer’s output to stdout.

render <metadata.yaml> --format <format> [--profile <id>] [--dataset <id>] [--entity <name>] [--form <id>] [--offering <id>]

Compiles the manifest, runs all renderers, writes the full artifact tree to <dir>, and writes index.json.

publish <metadata.yaml> --out <dir>

Scans profiles-dir for profile.yaml descriptors, validates descriptor schema, and validates all referenced fixture manifests.

validate-profiles [profiles-dir]

The --format flag on render accepts: Terms used in the table include Data Catalog Vocabulary (DCAT), BRegDCAT-AP, Core Public Service Vocabulary Application Profile (CPSV-AP), Shapes Constraint Language (SHACL), and Open Digital Rights Language (ODRL).

Format valueRequired flagsOutput
catalogNoneCatalog JSON
evidence-offeringsNoneAll evidence offerings JSON
evidence-offering--offering <id>Single evidence offering JSON
policiesNoneODRL policy collection JSON-LD
policy--dataset <id>Per-dataset ODRL policy document JSON-LD
dcat--profile <id> optionalBase DCAT JSON-LD. With --profile bregdcat-ap, renders the BRegDCAT-AP 2.00 variant. --profile dcat and --profile dcat-ap also render base DCAT.
bregdcat-apNoneBRegDCAT-AP 2.00 JSON-LD (shorthand; equivalent to --format dcat --profile bregdcat-ap)
cpsv-apNoneCPSV-AP 3.2.0 service catalogue JSON-LD
shaclNoneSHACL node shapes JSON-LD
json-schema--dataset <id> and --entity <name>JSON Schema Draft 2020-12
form-json-schema--form <id>Form JSON Schema Draft 2020-12
ogc-recordsNoneOGC API Records item bodies JSON

Valid --profile values for --format dcat: dcat, dcat-ap (both render base DCAT), and bregdcat-ap (renders BRegDCAT-AP 2.00). Use --format cpsv-ap for the service catalogue rather than --format dcat --profile cpsv-ap.

Schema version enforced: registry-manifest/v1. Source: crates/registry-manifest-core/src/lib.rs (MetadataManifest struct).

KeyTypeRequiredDescription
schema_versionstringYesMust equal "registry-manifest/v1".
catalogCatalogManifestYesCatalog title, publisher, base URL, application profiles list, standards versions.
datasetslist of DatasetManifestYesOne entry per dataset.
vocabulariesmapNoPrefix expansions used by concept, requirement, form, and evidence references.
profileslist of ProfileClaimNoLocal profile claims included in catalog output.
requirementslist of RequirementManifestNoCCCEV-aligned requirement definitions.
evidence_typeslist of EvidenceTypeManifestNoEvidence type definitions.
authoritieslist of AuthorityManifestNoPublic authority records referenced by public services.
public_serviceslist of ServiceManifestNoCPSV-AP public services and channels.
data_serviceslist of DataServiceManifestNoDCAT data services referenced by services and evidence offerings.
formslist of FormManifestNoLocal form-profile records linked from public services and channels.
codelistslist of CodelistManifestNoEnumerated value schemes with concept URIs.
federationFederationManifestNoPublic Registry Notary federation metadata for delegated evaluation.
evaluation_profileslist of EvaluationProfileManifestNoPublic profile-to-ruleset bindings for Registry Notary delegated evaluation.
KeyTypeRequiredDescription
idstringYesCatalog identifier string.
titleLocalizedTextYesHuman-readable catalog title. Plain string or {en: "...", fr: "..."} locale map.
publisherPublisherManifestYesPublisher record with name (string, required), iri (optional), and authority_type (optional).
base_urlstringYesHTTP URL used as the base for all relative artifact references.
application_profileslist of ApplicationProfileNoProfile IDs and versions the catalog declares support for (for example, [{id: "bregdcat-ap", version: "3.0.0"}]).
standardsStandardsManifestNoDeclares DCAT, SHACL, and JSON Schema versions in use.

DatasetManifest keys (common keys; see source for the full type definition)

Section titled “DatasetManifest keys (common keys; see source for the full type definition)”
KeyDescription
idDataset identifier string (alphanumeric and dashes). Must be unique.
titleHuman-readable dataset title.
entitiesList of EntityManifest entries describing domain resources and their fields.
policiesList of DatasetPolicyManifest entries describing ODRL access policies.
evidence_offeringsList of EvidenceOfferingManifest entries.
public_servicesDataset-scoped public registry services, when a dataset is itself the produced registry resource.
codelistsList of codelist IDs referenced by this dataset’s fields.
KeyTypeRequiredDescription
idstringYesCodelist identifier. Must be unique within the manifest.
scheme_iristringYesConcept scheme IRI or CURIE.
versionstringNoVersion marker for this codelist scheme. Rendered on generated codelist nodes when present.
valid_fromstringNoStart date or instant for this codelist version’s validity window. Rendered on generated codelist nodes when present.
valid_tostringNoEnd date or instant for this codelist version’s validity window. Rendered on generated codelist nodes when present.
external_refstringNoOptional external codelist document IRI.
conceptslist of CodelistConceptNoCode values and optional concept IRIs or labels.
KeyDescription
public_services[].holds_requirementsRequirement IDs rendered as cv:holdsRequirement.
public_services[].channelsCPSV-AP channel records for online, office, phone, or other access paths.
public_services[].formsForm IDs linked through the local registry_manifest:hasForm predicate.
requirements[].evidence_type_listsGrouped CCCEV evidence options. All evidence types inside one list are required together; multiple lists are alternatives.
forms[].sections[].fields[].conceptInformation concept IRI collected by the form field.
forms[].sections[].fields[].supports_requirementRequirement ID supported by the field.
forms[].sections[].fields[].fulfillmentManual input, file upload, registry lookup, evidence exchange, self-declaration, or already-known mode metadata.

Registry Manifest federation metadata supports Registry Notary static-peer delegated evaluation. It is public discovery metadata, not an access grant.

Fields of FederationManifest.

KeyRequiredDescription
node_idYesPublishing Notary node id. MVP validation requires did:web.
issuerYesHTTPS issuer URL. Host must bind to the did:web node id.
jwks_uriYesHTTPS JWKS URL partners use to verify signed federation responses.
federation_apiYesHTTPS federation API base URL.
supported_protocol_versionsYesMust include registry-notary-federation/v0.1.

Fields of EvaluationProfileManifest.

KeyRequiredDescription
idYesPublic profile id. Must be unique.
rulesetYesPublic ruleset id. Must be unique and referenced by registry-notary offerings.
claim_idYesNotary claim id evaluated for the profile.
subject_id_typeYesSubject id type the profile accepts.
max_source_observed_age_secondsNoOptional public freshness hint. Runtime enforcement is in Registry Notary config.

For EvidenceOfferingAccessManifest with kind: registry-notary:

  • conforms_to must be registry-notary-federation/v0.1.
  • endpoint_url must be HTTPS.
  • discovery_url must be HTTPS.
  • ruleset must reference an existing evaluation_profiles[].ruleset.
  • A top-level federation block is required.

The following keys must not appear in a portable manifest. Their presence causes validate, publish, and validate-profiles to fail. They belong in Registry Relay or Registry Notary runtime configuration, not in a metadata manifest.

admin_bind, admin_listener, audit, auth, bind, bindings, capabilities, column, config_trust, file_path, listener, listeners, peer_allowlist, peers, private_jwk, private_jwk_env, query, replay, required_filters, rows_scope, scope, secret_provider, secret_providers, signing_keys, source, source_id, table, token_url, url, url_env, visibility

Source: crates/registry-manifest-core/src/lib.rs (RUNTIME_ONLY_KEYS).

The root version marker field is schema_version. Source manifests, profile descriptors, and generated manifest-owned formats use explicit format IDs:

Formatschema_version value
Metadata manifestregistry-manifest/v1
Profile descriptorregistry-manifest-profile/v1
Publish indexregistry-manifest-index/v1
Catalog JSONregistry-manifest-catalog/v1
Evidence offerings collection JSONregistry-manifest-evidence-offerings/v1
Single evidence offering JSONregistry-manifest-evidence-offering/v1
ODRL policy collection JSON-LDregistry-manifest-policy-collection/v1
Single ODRL policy JSON-LDregistry-manifest-policy/v1
SHACL JSON-LDregistry-manifest-shacl/v1
Generated codelist noderegistry-manifest-codelist/v1
Entity JSON Schemaregistry-manifest-entity-json-schema/v1
Form JSON Schemaregistry-manifest-form-json-schema/v1
OGC Records FeatureCollection JSONregistry-manifest-ogc-records/v1

Codelist source definitions use version for the codelist scheme version and valid_from / valid_to for the codelist validity window. Manifest-owned JSON-LD maps these bare keys to stable Registry Manifest RDF terms: schema_version -> registry_manifest:schemaVersion, version -> registry_manifest:version, valid_from -> registry_manifest:validFrom, and valid_to -> registry_manifest:validTo.

registry-manifest/v1 and the manifest-owned */v1 generated formats make a compatibility promise for additive evolution. A post-beta producer may add optional fields to existing mapping objects without requiring a new major schema version. Beta-era readers must ignore unrecognized fields while continuing to require and validate the fields they understand. Unknown fields do not relax existing validation: required fields, identifier syntax, URI syntax, reference integrity, collection limits, and runtime-only key rejection still apply.

Readers must treat unrecognized fields as advisory extension data. A reader may expose or preserve extension data when it has a typed extension model, but it must not fail only because an otherwise valid manifest includes an unknown optional key such as a future evidence offering supported_modes, required_subject_binding, result_format, disclosure_profile, or risk_tier.

Breaking changes require a new schema version. Breaking changes include removing or renaming required fields, changing the meaning of an existing field, changing an existing field to an incompatible type, or making previously valid V1 manifests invalid except for validation bugs, security fixes, or explicitly forbidden runtime-only keys.

Source: crates/registry-manifest-cli/src/main.rs (publish_command).

All paths are relative to the --out directory.

Artifact pathFormatSource rendererVersion marker
metadata.yamlYAMLCopy of input manifestRoot schema_version
catalog.jsonJSONrender_catalog()schema_version: registry-manifest-catalog/v1
dcat.jsonldJSON-LDrender_base_dcat()Standards profile output
cpsv-apJSON-LDrender_cpsv_ap() when the catalog declares the cpsv-ap profileStandards profile output
cpsv-ap.jsonldJSON-LDrender_cpsv_ap() when the catalog declares the cpsv-ap profileStandards profile output
dcat.<profile-id>.jsonldJSON-LDrender_dcat_profile() per application profileStandards profile output
shacl.jsonldJSON-LDrender_shacl()schema_version: registry-manifest-shacl/v1
evidence-offerings.jsonJSONrender_evidence_offerings()schema_version: registry-manifest-evidence-offerings/v1
evidence-offerings/<offering-id>.jsonJSONrender_evidence_offering() per offeringschema_version: registry-manifest-evidence-offering/v1
policies.jsonldJSON-LDrender_policy_collection()schema_version: registry-manifest-policy-collection/v1
policies/<dataset-id>.jsonldJSON-LDrender_dataset_policy_document() per datasetschema_version: registry-manifest-policy/v1
schema/<dataset-id>/<entity-name>/schema.jsonJSON Schema Draft 2020-12render_entity_schema_draft_2020_12() per entityschema_version: registry-manifest-entity-json-schema/v1
forms/<form-id>/schema.jsonJSON Schema Draft 2020-12render_form_schema_draft_2020_12() per formschema_version: registry-manifest-form-json-schema/v1
profiles/<profile-id>.jsonJSONCompiled profile structureProfile descriptor schema_version
index.jsonJSONBundle manifest indexschema_version: registry-manifest-index/v1

The index.json structure contains the schema version, digest metadata, top-level artifact URLs, and arrays for per-profile, per-schema, per-policy, and per-offering documents. Source: crates/registry-manifest-cli/src/main.rs

Digest fields use sha256:<hex> values:

  • source_manifest_digest: canonical digest of the typed metadata.yaml manifest after parsing. YAML comments, formatting, and mapping order do not affect this digest, but semantic manifest changes do.
  • package_digest: canonical digest of the published package inventory. It covers the source_manifest_digest plus the sorted artifacts entries.
  • artifacts[].sha256: content digest for each published metadata artifact listed in artifacts.

The artifacts inventory uses paths relative to --out, records each artifact’s media type, and excludes index.json because it contains the package digest. Discovery documents under .well-known/ are also excluded because they may be written under a separate --site-root while still pointing at the same /metadata/index.json entry point.

Publish bundles follow the same additive compatibility rule. A future producer may add new artifact files, new typed index links, and new artifacts[] entries without breaking beta-era readers. Readers must consume the artifact paths and index links they understand and ignore unknown top-level index members or artifact metadata members. The package_digest covers the complete sorted artifacts inventory, so adding an artifact intentionally changes the package digest. Artifacts that describe the bundle digest, such as a future provenance.jsonld, must avoid a circular digest dependency by either describing the source manifest digest, describing a separately defined pre-provenance inventory, or being excluded by an explicitly versioned future digest rule.

Minimal example shape:

{
"schema_version": "registry-manifest-index/v1",
"source_manifest_digest": "sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
"package_digest": "sha256:abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789",
"artifacts": [
{
"path": "metadata.yaml",
"media_type": "application/yaml",
"sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111"
},
{
"path": "catalog.json",
"media_type": "application/json",
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222"
}
],
"manifest": "/metadata/metadata.yaml",
"catalog": "/metadata/catalog.json",
"evidence_offerings": "/metadata/evidence-offerings.json",
"evidence_offering_documents": [],
"policies": "/metadata/policies.jsonld",
"policy_documents": [],
"dcat": "/metadata/dcat.jsonld",
"dcat_profiles": [],
"service_catalogues": [
{
"id": "cpsv-ap",
"version": "3.2.0",
"url": "/metadata/cpsv-ap.jsonld",
"aliases": ["/metadata/cpsv-ap"],
"media_type": "application/ld+json"
}
],
"shacl": "/metadata/shacl.jsonld",
"schemas": [],
"form_schemas": [
{
"form": "child-support-review-form",
"url": "/metadata/forms/child-support-review-form/schema.json"
}
],
"profiles": [],
"application_profiles": [
{
"id": "cpsv-ap",
"version": "3.2.0"
}
]
}

The test suite in crates/registry-manifest-core/tests/metadata_core.rs asserts exact output for the following renderer and profile combinations. These golden files live under crates/registry-manifest-core/tests/fixtures/golden/.

Golden fileRendererProfile
example-civil-registration.catalog.jsonrender_catalog()example-civil-registration
example-civil-registration.base-dcat.jsonrender_base_dcat()example-civil-registration
example-civil-registration.breg-dcat-ap.jsonrender_breg_dcat_ap()example-civil-registration
example-civil-registration.shacl.jsonrender_shacl()example-civil-registration
example-social-benefits.enrollment.schema.jsonrender_entity_schema_draft_2020_12()example-social-benefits
example-benefits-sync.ogc-records-items.jsonrender_ogc_records_items()example-benefits-sync