Skip to main content

What is a Registry?

A Registry is the schema template that defines how Primary VDTs are structured, validated, and managed within your organization. Before you create any Primary VDT through the SDK, you must select a Registry — it determines which attributes are required, which can be searched, whether instances are transferable or burnable, and whether on-chain minting applies.

Registries are configured in the ChainIT admin panel and exposed to integrators through the List Registries and Get Registry APIs.

Registry as a Schema Contract

Think of a Registry as a contract between your organization and the ChainIT platform:

  • Attributes — the fields each Primary VDT must or may contain (name, slug, data type, section, required/searchable flags)
  • Schema version — the active version of that attribute set; VDTs are created against the current version
  • Lifecycle rules — whether VDTs minted from this registry can be transferred or burned
  • VDT type — Primary VDT registries produce organization-scoped ledger records (distinct from Data VDT registries)

When you call Create Primary VDT, you pass a registryId and an attributesData object keyed by attribute slugs. ChainIT validates every value against the registry schema before persisting the ledger.

Registry Response Fields

FieldDescription
idUnique registry identifier — required for all VDT create, list, and search calls
slugHuman-readable unique slug (e.g. employee-credential)
nameDisplay name configured in admin
typeVDT type produced by this registry (Primary)
statusRegistry availability (ACTIVE, etc.)
transferableWhether VDTs from this registry support org-to-org transfer (ERC-721 only)
burnableWhether minted VDTs can be permanently burned (ERC-721 custom registries only)
isDataVdtRegistry implementation type — see Registry types below
versionCurrent schema version with full attribute definitions

Registry Types: ERC-721 vs DataVDT

Every Primary VDT registry is one of two implementation types, determined by isDataVdt on Get Registry:

ERC-721 (isDataVdt: false)DataVDT (isDataVdt: true)
On-chain tokenERC-721 NFT per ledgerBatch-minted Data VDT evidence token
Createoptions.mint: true requiredoptions.mint optional — false saves a draft, true mints
UpdateAllowed with options.mint: true (re-mints)Allowed only while draft (not yet minted)
After mintCan update and re-mint; burn/transfer when registry allowsImmutable — no update, no re-mint
TransferWhen transferable: true on registry and instanceNot supported
BurnWhen burnable: true on custom ERC-721 registryNot supported

Check isDataVdt after Get Registry before wiring create, update, transfer, or burn in your UI — the available lifecycle actions depend entirely on this flag.

Registry Attributes

Each attribute in a schema version defines how data is collected, validated, and queried:

Attribute propertyPurpose
slugKey used in attributesData when creating or updating a VDT
nameDisplay label
dataType / fieldTypeValidation and input type (string, email, dropdown, etc.)
section4W grouping (Who, What, When, Where) for ledger context
isRequiredMust be supplied on create
isSearchableCan be used as a filter in the Search VDTs API
isPublic / isShareableVisibility and sharing rules for ledger reads

Only attributes marked isSearchable: true can be used in the Search Primary VDTs (filter) API.

Working with Registries in an Integration

Step 1 — Discover available registries

Call List Registries to retrieve paginated registries scoped to your organization. Use filters to narrow by name or status if needed.

Step 2 — Inspect schema details

Call Get Registry with the registry id to load the full schema version, attribute list, and lifecycle flags (transferable, burnable). Review required slugs before building your create payload.

Step 3 — Use registryId in VDT APIs

Pass the registryId from the registry response into:

  • Create Primary VDT — required in the request body
  • Update Primary VDT — required in the request body
  • List Primary VDTs — required as a path parameter (/vdt/list/{registryId})
  • Search Primary VDTs — requires the schema version ID (vdtSchemaId) from the registry version

Registry vs. Primary VDT Instance

ConceptRegistryPrimary VDT
RoleSchema templateA single tokenized record
Created byAdmin panelSDK API (POST /vdt)
CountFew per use caseMany instances per registry
MutabilityVersioned schema updatesUpdate API changes attribute values
IdentifierregistryId (UUID)entityId (business entity ID)

A Registry defines what can be recorded. A Primary VDT is one recorded instance of that schema.

When to Create a New Registry

Create a separate Registry when:

  • A new business object type needs its own attribute schema (e.g. employee vs. equipment)
  • Lifecycle rules differ (one credential type is transferable, another is not)
  • Compliance requires isolated audit domains with distinct attribute sets

Reuse an existing Registry when the same schema applies to multiple records of the same type.