Domain

Organize ledger records into separate namespaces.

A domain defines a namespace for isolating records within a ledger. Each domain has its own scope for access rules, and records in child domains inherit access rules from their ancestors.

Domain enforcement activates after the first domain is created. Before that, all records exist in the root domain and handles are not constrained. Once active, new records must belong to an existing domain.

A record's domain can be assigned in two ways: implicitly from the record handle (e.g., account:1001@bank.com resolves to domain bank.com) or explicitly through the custom.domain field in a proof. When both are present, the proof value takes precedence. Domains cannot be changed after a record is created.

Domains support hierarchy — a child domain references a parent via its domain field, and access rules cascade from parent to child. Records created before domain enforcement remain in the root domain and are not automatically migrated.

Endpoints

MethodPathDescription
POST/domainsRegister a new namespace for data separation in the ledger.
GET/domainsQuery domains with filtering, sorting, and pagination.
GET/domains/{id}Retrieve a domain by its handle or LUID.
PUT/domains/{id}Submit a new version of a domain.
POST/domains/{id}/proofsSubmit a signed proof to a domain record.

Access & History

MethodPathDescription
POST/domains/{id}/access/!checkEvaluate what actions a signer can perform on this domain.
GET/domains/{id}/changesRetrieve the change history of a domain by its handle or LUID.
GET/domains/{id}/changes/{change}Retrieve a change record for a domain by handle or LUID and change number.

On this page