iGrant.io Authenticator credential schema
When to use
Use this skill when you issue or ask for an iGrant.io Authenticator credential. The credential proves control of one email address, and nothing else. It is the smallest schema in the registry: one claim. iGrant.io uses it for passwordless sign-in, where the user presents the credential in place of a password.
The registry publishes this schema in all three formats:
| Format | Metadata flag | Identifier to send |
|---|---|---|
dc+sd-jwt |
isSdJwt: true |
vct |
jwt_vc_json |
isJwt: true |
type |
mso_mdoc |
isMsoMdoc: true |
doctype |
This page describes registry version 2025.7.1, the latest version of the template.
Claim path pointer document - dc+sd-jwt
| Fact | Value |
|---|---|
| Title | iGrant.io Authenticator |
| Credential type | io.igrant.authenticator |
| Namespace | io.igrant.authenticator |
| Format | dc+sd-jwt |
| Supported version | version_01 |
{
"claims": [
{
"path": [
"email_address"
],
"mandatory": true,
"limitDisclosure": true
}
]
}
Claim path pointer document - jwt_vc_json
| Fact | Value |
|---|---|
| Title | iGrant.io Authenticator |
| Credential type | io.igrant.authenticator |
| Namespace | io.igrant.authenticator |
| Format | jwt_vc_json |
| Supported version | version_01 |
{
"claims": [
{
"path": [
"credentialSubject",
"email_address"
],
"mandatory": true
}
]
}
Claim path pointer document - mso_mdoc
| Fact | Value |
|---|---|
| Title | iGrant.io Authenticator |
| Credential type | io.igrant.authenticator |
| Doctype | io.igrant.authenticator |
| Namespace | io.igrant.authenticator |
| Format | mso_mdoc |
| Supported version | version_01 |
{
"claims": [
{
"path": ["io.igrant.authenticator", "email_address"],
"mandatory": true,
"limitDisclosure": true
}
]
}
How to read the fields
Each item of the claims array is one claim path pointer.
pathis an array that selects one claim. Each element is a string for an object key, an integer for an array index, ornullfor every element of an array. The three formats point at the same claim with three different prefixes:dc+sd-jwtuses the bare claim name, so the path holds one element.jwt_vc_jsonstarts every path withcredentialSubject.mso_mdocstarts every path with the mDoc namespace. Here the namespace isio.igrant.authenticator, and it is the same as the doctype. Every path of the configuration must start with that same element.
mandatorysays if the claim must hold a value when you issue. The issuer reads a missingmandatoryastrue. The one claim of this schema is mandatory in all three formats.limitDisclosuresays if the holder can disclose the claim on its own. Thedc+sd-jwtandmso_mdocdocuments set it totrue. Thejwt_vc_jsondocument leaves it out, becausejwt_vc_jsonhas no selective disclosure.
Use with the iGrant.io API
Create a credential definition with:
POST /v2/config/digital-wallet/openid/sdjwt/credential-definition
Put one entry in credentialDefinitions[] for each format that you publish, and
copy the claims array of the matching schema document into that entry.
- Set
versiontoversion_01at the top level of the request. - For
dc+sd-jwt: setvcttoio.igrant.authenticator, put the array inclaims.claims, and setvalidationPathto$. - For
jwt_vc_json: settypeto an array that holdsio.igrant.authenticator, put the array incredentialDefinition.claims, and setvalidationPathto$.vc. - For
mso_mdoc: setdoctypetoio.igrant.authenticator, put the array inclaims.claims, and setvalidationPathto$.
{
"label": "Issue iGrant.io Authenticator",
"version": "version_01",
"credentialDefinitions": [
{
"credentialFormat": "dc+sd-jwt",
"vct": "io.igrant.authenticator",
"validationPath": "$",
"supportRevocation": true,
"revocationMethod": "status_list",
"claims": {
"claims": [
{
"path": ["email_address"],
"mandatory": true,
"limitDisclosure": true
}
]
}
},
{
"credentialFormat": "jwt_vc_json",
"type": ["VerifiableCredential", "io.igrant.authenticator"],
"validationPath": "$.vc",
"credentialDefinition": {
"claims": [
{
"path": ["credentialSubject", "email_address"],
"mandatory": true
}
]
}
}
]
}
A sign-in credential must be revocable, so set supportRevocation to true.
When you issue, the top key of claims for the mso_mdoc entry is the
namespace io.igrant.authenticator.
Read igrantio-api-issuer for the full operation reference: every request
field, the display options, revocation, and the issue operation that fills these
claims. Read igrantio-api-verifier for the DCQL query that asks for the email
address at sign-in.
Source is the registry
This skill mirrors the claim path pointer template in the iGrant.io verifiable data registry. If this skill and the registry file disagree, the registry wins. Fetch the source before you rely on a claim path:
- Template: https://github.com/decentralised-dataexchange/verifiable-data-registry/tree/main/credentialSchemas/claimPathPointer/authenticator
- Raw SD-JWT schema: https://raw.githubusercontent.com/decentralised-dataexchange/verifiable-data-registry/main/credentialSchemas/claimPathPointer/authenticator/2025.7.1/dc%2Bsd-jwt.schema.json
- Raw JWT schema: https://raw.githubusercontent.com/decentralised-dataexchange/verifiable-data-registry/main/credentialSchemas/claimPathPointer/authenticator/2025.7.1/jwt_vc_json.schema.json
- Raw mdoc schema: https://raw.githubusercontent.com/decentralised-dataexchange/verifiable-data-registry/main/credentialSchemas/claimPathPointer/authenticator/2025.7.1/mso_mdoc.schema.json
Each schema file has a .schema.metadata.json file beside it. A newer version
directory can appear in the registry. Check the directory listing for a version
above 2025.7.1 and use the newest one.