Overview
Credential Profiles are the foundation of the Issuer2 API's profile-based architecture. A profile defines all the default values needed to issue a specific type of credential, making it easy to create consistent credential offers without repeating configuration.
What is a Credential Profile?
A credential profile is a reusable configuration that contains:
- Credential Configuration ID – The type of credential this profile issues (must match a supported credential type in your issuer metadata)
- Issuer Identity – The DID, key, and/or X.509 certificate chain used to sign credentials
- Credential Data – Default data template for the credential
- Data Mapping – Dynamic data functions for populating credential fields
- ID Token Claims Mapping – Mapping from external IdP claims to credential data (for authorization code flow)
- mDoc Data Mapping – Type conversions for mDoc/mDL credentials
- Selective Disclosure – SD-JWT selective disclosure configuration
- Notifications – Webhook settings for issuance events
Profile Configuration
Profiles are defined in the issuer2-profiles.conf configuration file. Each profile has a unique ID and contains all the settings needed to issue a specific credential type.
Example Profile Configuration
profiles {
university-degree {
name = "University Degree"
credentialConfigurationId = "UniversityDegree_jwt_vc_json"
issuerKey = {
type = "jwk"
jwk = "{\"kty\":\"EC\",\"d\":\"...\",\"crv\":\"P-256\",\"x\":\"...\",\"y\":\"...\"}"
}
issuerDid = "did:key:z6Mk..."
credentialData = {
"@context" = [
"https://www.w3.org/2018/credentials/v1",
"https://www.w3.org/2018/credentials/examples/v1"
]
type = ["VerifiableCredential", "UniversityDegree"]
credentialSubject = {
degree = {
type = "BachelorDegree"
name = "Bachelor of Science"
}
}
}
mapping = {
id = "<uuid>"
"issuer.id" = "<issuerDid>"
"credentialSubject.id" = "<subjectDid>"
issuanceDate = "<timestamp>"
}
}
}
Supported Credential Formats
Profiles can be created for any credential format supported by your issuer service:
| Format | Description |
|---|---|
dc+sd-jwt | IETF SD-JWT Verifiable Credentials |
jwt_vc_json | W3C Verifiable Credentials (JWT) |
mso_mdoc | ISO 18013-5 Mobile Documents (mDL) |
Profile Properties
Required Properties
| Property | Type | Description |
|---|---|---|
name | String | Human-readable name for the profile |
credentialConfigurationId | String | Must match a credential type in your issuer metadata |
issuerKey | Object | Key configuration for signing credentials |
credentialData | Object | Default credential data template |
Optional Properties
| Property | Type | Description |
|---|---|---|
issuerDid | String | DID of the issuer (required for W3C VCs) |
mapping | Object | Data functions for dynamic field population |
selectiveDisclosure | Object | SD-JWT selective disclosure configuration |
idTokenClaimsMapping | Object | Map IdP claims to credential fields |
mDocNameSpacesDataMappingConfig | Object | Type conversions for mDoc credentials |
x5Chain | Array | X.509 certificate chain for mDoc signing |
notifications | Object | Webhook notification settings |
credentialStatus | Object | Credential status configuration |
Using Profiles
Once configured, profiles are available via the API:
List All Profiles
curl -X GET 'http://localhost:7002/issuer2/profiles'
Get a Specific Profile
curl -X GET 'http://localhost:7002/issuer2/profiles/{profileId}'
Create an Offer from a Profile
curl -X POST 'http://localhost:7002/issuer2/credential-offers' \
-H 'Content-Type: application/json' \
-d '{
"profileId": "university-degree",
"authMethod": "PRE_AUTHORIZED"
}'
Next Steps
- Create a Profile – Step-by-step guide to creating credential profiles
- Credential Offers – Create offers from your profiles
- Data Functions – Populate credentials with dynamic data
Last updated on June 16, 2026
