Skip to content
Preview (Alpha), release 0.1. No independent cryptographic review of the protocol or its reference verifiers has been done.

Trust registry schema

The field contract of the trust registry object, read from trust_registry.schema.json. The schema file is the normative artifact; this page is a reading of it. Raw schema file at the release tag.

Property of the schema Value
Schema identity ($id) https://schemas.loquitur.dev/v1/trust_registry.schema.json
JSON Schema dialect https://json-schema.org/draft/2020-12/schema
Root type object
Additional properties at the root refused
Required at the root object_type, schema_version, trust_registry_id, registry_operator_id, registry_version, issued_at, effective_at, expires_at, entries, signature

Fields

Field paths are dotted; [] marks the members of an array item. “Required” is stated against the object that holds the field.

Field Type Required Constraints Description
effective_at string yes pattern ^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)Z$
entries array of object yes uniqueItems; items: no additional properties
entries[].allowed_asset_types array of string yes uniqueItems; items: pattern ^[a-z0-9][a-z0-9_]{0,63}$
entries[].allowed_workflows array of string yes uniqueItems; items: pattern ^[a-z0-9][a-z0-9_]{0,63}$
entries[].effective_from string yes pattern ^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)Z$
entries[].expires_at string yes pattern ^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)Z$
entries[].issuer_display_name string yes minLength 1
entries[].issuer_id string yes pattern ^issuer_[A-Za-z0-9_-]{3,128}$
entries[].issuer_key_id string yes minLength 1
entries[].key_type string yes pattern ^[a-z0-9][a-z0-9_]{0,63}$ Key type identifier. Any well-formed identifier is admitted; the verifier’s allowlist decides at the signature step whether the pair of algorithm and key type is supported.
entries[].notes string or null no minLength 1
entries[].public_key_hex string yes pattern ^([a-f0-9]{2}){1,512}$ Public key as lowercase hexadecimal, 1 to 512 bytes. Its form for the key type is judged at the signature step: for secp256k1, an uncompressed SEC1 point 04 || X || Y with X and Y below p, on the curve.
entries[].revocation_reason string or null no minLength 1
entries[].revoked_at string or null no pattern ^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)Z$
entries[].status string yes enum: active, suspended, revoked
expires_at string yes pattern ^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)Z$
issued_at string yes pattern ^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)Z$
object_type string yes const "trust_registry"
registry_operator_id string yes pattern ^operator_[A-Za-z0-9_-]{3,128}$
registry_version string yes pattern ^[0-9]+\.[0-9]+\.[0-9]+(-[A-Za-z0-9_.-]+)?$
schema_version string yes enum: v1
signature object yes no additional properties
signature.algorithm string yes pattern ^[a-z0-9][a-z0-9_]{0,63}$ Root signature algorithm identifier. Any well-formed identifier is admitted; root authentication decides whether it is supported.
signature.key_id string yes minLength 1
signature.signature string yes minLength 1
trust_registry_id string yes pattern ^tr_[A-Za-z0-9_-]{8,128}$

Example

The schema carries one example instance under its root keyword example, an annotation that decides nothing about any instance. Read it in the raw schema file.

Project site: loquitur.dev

Source: loquitur-protocol/docs/specification/schemas/trust_registry.schema.json at 3ff7899c0c76. Licence of this page's text: MIT OR Apache-2.0.