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:

FormatDescription
dc+sd-jwtIETF SD-JWT Verifiable Credentials
jwt_vc_jsonW3C Verifiable Credentials (JWT)
mso_mdocISO 18013-5 Mobile Documents (mDL)

Profile Properties

Required Properties

PropertyTypeDescription
nameStringHuman-readable name for the profile
credentialConfigurationIdStringMust match a credential type in your issuer metadata
issuerKeyObjectKey configuration for signing credentials
credentialDataObjectDefault credential data template

Optional Properties

PropertyTypeDescription
issuerDidStringDID of the issuer (required for W3C VCs)
mappingObjectData functions for dynamic field population
selectiveDisclosureObjectSD-JWT selective disclosure configuration
idTokenClaimsMappingObjectMap IdP claims to credential fields
mDocNameSpacesDataMappingConfigObjectType conversions for mDoc credentials
x5ChainArrayX.509 certificate chain for mDoc signing
notificationsObjectWebhook notification settings
credentialStatusObjectCredential 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

Last updated on June 16, 2026