Skip to content
Registry StackDocsDocumentation preview

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> [--site-root <dir>]

--site-root is optional. When set, the two .well-known/* discovery documents are written under --site-root instead of --out; every other artifact still writes under --out. See Publish output artifacts.

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), Open Digital Rights Language (ODRL), OGC API Records, and SKOS-shaped codelist metadata.

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 variant. --profile dcat and --profile dcat-ap also render base DCAT.
bregdcat-apNoneBRegDCAT-AP 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 FeatureCollection JSON

Valid --profile values for --format dcat: dcat, dcat-ap (both render base DCAT), and bregdcat-ap (renders BRegDCAT-AP JSON-LD). 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 DatasetManifestNoOne 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.
ecosystem_bindingslist of EcosystemBindingManifestNoEcosystem-specific integration bindings, such as governed-evidence gateway metadata. See Ecosystem binding keys.
KeyTypeRequiredDescription
idstringYesCatalog identifier string.
titleLocalizedTextYesHuman-readable catalog title. Plain string or {en: "...", fr: "..."} locale map.
descriptionLocalizedTextNoHuman-readable catalog description. Same shape as title.
publisherPublisherManifestYesPublisher record with name (string, required), iri (optional), and authority_type (optional).
base_urlstringYesHTTP URL used as the base for all relative artifact references.
participant_idstringNoFederation participant identifier. Defaults to base_url when omitted. Rendered in catalog JSON.
conforms_tolist of stringNoConformance URIs, expanded through vocabularies. Rendered as dcterms:conformsTo in DCAT output and as conforms_to in catalog JSON.
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. Host must bind to the issuer host.
federation_apiYesHTTPS federation API base URL. Host must bind to the issuer host.
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.
evidence_packNoOptional EvidencePackMetadata object. Shares its shape with ecosystem_bindings[].evidence_pack. See Ecosystem binding keys.

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.

Ecosystem bindings declare ecosystem-specific integration metadata. The only binding type currently valid is governed-evidence, which carries evidence-pack and ODRL enforcement metadata for a governed evidence gateway. A complete worked example is the baseline-dpi/v1 binding in ecosystem_binding_parses_validates_compiles_and_renders_catalog.

Fields of EcosystemBindingManifest.

KeyRequiredDescription
idYesBinding identifier. The id/version pair must be unique among ecosystem bindings.
versionYesBinding version string.
profileYesProfile identifier the binding applies to.
typeYesBinding type. Only governed-evidence is currently valid.
titleNoLocalizedText. Must be non-empty when present.
descriptionNoLocalizedText. Must be non-empty when present.
vocabularyNoOpaque object. Not structurally validated.
request_envelopeNoOpaque object. Not structurally validated.
response_envelopeNoOpaque object. Not structurally validated.
transportNoOpaque object. Not structurally validated.
trust_frameworkNoOpaque object. Not structurally validated.
credential_formatNoOpaque object. Not structurally validated.
assurance_modelNoOpaque object. Not structurally validated.
conformanceNoOpaque object. Not structurally validated.
evidence_packConditionalEvidencePackMetadata object. Required, with the fields marked Yes in the EvidencePackMetadata table, when type is governed-evidence. Optional otherwise, though any fields present are still validated.
profilesNoList of ProfileClaim (id, version). Each id must be unique within the binding.

Fields of EvidencePackMetadata. This type is shared by ecosystem_bindings[].evidence_pack and evaluation_profiles[].evidence_pack. Whenever an evidence_pack is present, every field in this table is validated for shape (object fields must be objects, string lists must use only supported values and be unique, policy_hash must match the sha256:<64 lowercase hex> pattern, odrl_policy_url must be HTTPS). The “Required” column applies only when the evidence_pack belongs to a governed-evidence ecosystem binding; outside that case, every field is optional.

KeyRequired (governed-evidence)Description
pack_idYesEvidence pack identifier.
pack_versionYesEvidence pack version string.
source_basisYesObject describing the evidence pack’s source basis.
semantic_profileYesObject describing the evidence pack’s semantic profile.
evidence_envelopeYesObject describing the evidence pack’s evidence envelope shape.
required_gatesYesMust include all of: purpose, jurisdiction, legal_basis, consent, authority_basis, requester_identity, subject_identity, subject_relationship, assurance, source_binding, source_freshness, requested_disclosure, credential_format, route_scope.
allowed_outputsYesMust include minimized_json, currently the only supported output value.
policy_idYesPolicy identifier.
policy_versionNoPolicy version string.
policy_hashYesDigest of the canonical inline policy, formatted sha256:<64 lowercase hex>. Must match the digest of policy when policy is present.
source_mappingNoOpaque object. Not structurally validated.
policyNoCanonical inline policy object. When present, its digest must match policy_hash.
fixturesNoOpaque list. Not structurally validated.
synthetic_dataNoOpaque list. Not structurally validated.
odrl_policy_urlNoMust be an HTTPS URL when present.
odrl_enforcementYesOdrlEnforcementProfile object; see the OdrlEnforcementProfile table that follows.

Fields of OdrlEnforcementProfile.

KeyRequiredDescription
profileYesMust equal registry-evidence-gateway-pdp/v1.
constraint_termsYesAt least one term. Each must be odrl:purpose or odrl:spatial. Terms must be unique.

Source: crates/registry-manifest-core/src/lib.rs (EcosystemBindingManifest, EvidencePackMetadata, OdrlEnforcementProfile).

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_connections, 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 reject an unknown key at parse time (issue #249). MetadataManifestFields and its nested manifest structs carry deny_unknown_fields, and the manifest’s hand-written Deserialize impl reports the offending key by its full dotted path, for example catalog.publisher.x_post_beta_publisher_hint: unknown field. A manifest that carries a misspelled or ad-hoc key fails validate, render, and publish instead of parsing with the key silently dropped.

The runtime-only and secret-bearing key checks run first, over the raw parsed value, before the strict key check runs. Readers must reject unrecognized or extension keys that look credential-bearing, including keys such as client_secret, password, credential, credentials, api_key, private_key, token, or secret, plus compound variants such as secret_key, credential_env, password_env, and client_secret_env.

Extensions belong in the manifest’s modeled extension points, not in ad-hoc keys. EvidencePackMetadata (source_basis, semantic_profile, evidence_envelope, source_mapping, policy, fixtures, synthetic_data) and EcosystemBindingManifest (vocabulary, request_envelope, response_envelope, transport, trust_framework, credential_format, assurance_model, conformance) hold arbitrary JSON under a named, already-modeled field, and the top-level vocabularies map holds an open set of prefix expansions. A field that is not one of these must be added to the struct in registry-manifest-core before a producer can send it; the schema no longer tolerates a key it does not model.

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 the unknown-key rejection this section describes.

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

All paths are relative to the --out directory, except the two .well-known/* discovery documents, which are relative to --site-root when that flag is set.

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
ogc-records/items.jsonGeoJSON FeatureCollectionrender_ogc_records_items()schema_version: registry-manifest-ogc-records/v1
profiles/<profile-id>.jsonJSONCompiled profile structureProfile descriptor schema_version
index.jsonJSONBundle manifest indexschema_version: registry-manifest-index/v1
.well-known/api-catalogJSONwrite_api_catalog(), always writtenn/a; a linkset object with no schema_version field
.well-known/registry-manifest.jsonJSONwrite_legacy_registry_manifest_discovery(), always writtenschema_version: registry-manifest-discovery/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