Skip to main content
Version: v0.25.0 (Latest)

Credential Designs: Credential designs

Catalog id: resource.credentialDesigns.credential-designs

A credential design is the tenant-owned definition of one credential type: the wire format it uses, the identifier wallets and issuers match on, the claims it carries, how those claims are labelled per locale, and which cards a wallet may render for it. Issuer metadata, issuance templates and wallet display all read from it, so it is the single place a credential type is described.

A design is not an issued credential. Creating one makes the type available; it does not put anything in a wallet.

Audience: tenant administrator.

Guide: Credential designs.

Identity is chosen at create, the rest is edited after​

Creating a design registers its identity and little else. The alias is the short handle operators and automation use inside the tenant, so keep it stable. The format decides which primary identifier applies: SD-JWT VC uses vct, W3C uses type, and mdoc uses docType. That identifier is what wallets and issuer metadata match on, which makes it the one value you cannot casually revise once credentials referencing it exist.

credentialConfigurationId is the id advertised in OID4VCI issuer metadata. It is optional at create but required before that configuration can issue anything, so a design without one is a definition that no wallet can request yet.

hostingMode says whether the tenant hosts the type document itself or caches an external one. With vctHostingMode set to HOSTED, the platform serves the VCT document at the tenant's own URI, which is what lets a wallet resolve the type without reaching a third party.

Everything else is finished in the workbench after create, and the console opens it for you: claims and their selective-disclosure policy, per-locale labels, attached render variants, the raw source document, and a resolved preview showing what a given locale actually gets after inheritance.

Working with designs​

1

See the tenant's designs

GET /api/credential-design/v1/designs/credentials200 OK

Resources > Credential Designs > Credential designs is the library. Each row is one type, with its alias, hosting mode and a summary of its primary binding. An empty list is normal on a clean tenant that was registered without sample data.

See the tenant's designs
2

Create a design

POST /api/credential-design/v1/designs/credentials201 Created

The create dialog asks only for identity, then hands you the workbench. This example registers an SD-JWT VC design: the binding carries vct, vctHostingMode, the credentialConfigurationId and the issuer it belongs to, while alias and hostingMode sit on the design itself.

Read the response rather than assuming: it returns the design id, its version and content hash, and those are what later calls and issuer configuration should use. A design being visible in the library does not mean it can issue; its binding, claims, signing selector and status profile all have to validate together first.

Create a design

Full schema: Credential design API.

The workbench tabs​

Overview holds the alias, format and the format-specific binding identifiers. Claims is the claim tree: paths, value kinds, widget hints and which claims may be selectively disclosed. Localization carries per-locale display strings and claim labels. Render attaches variants and sets per-locale preferences, though variant content itself is edited under Render variants. Source JSON exposes the raw document for import and export style edits, and Resolved preview shows the effective design for one locale after inheritance is applied, which is the tab to check when a label is not appearing where you expect.

Issuer Branding, Render variants, Assets, Status lists