Credential Issuance

Issue a Verifiable Credentials using Credential Issuance Service.

Install Dependency

Package: @affinidi-tdk/credential-issuance-client

npm install @affinidi-tdk/credential-issuance-client --save

Check the latest version on the npm registry or view the source on GitHub.

Classes and Methods

Configuration API

Manages the issuance configuration for the project. Each project supports one issuance configuration.

createIssuanceConfig

Creates an issuance configuration for the project.

Parameters

request CreateIssuanceConfigInput Required
Issuance configuration details, including supported credential types and issuer wallet.

Example

import {
  ConfigurationApi,
  Configuration,
  CreateIssuanceConfigInput,
} from '@affinidi-tdk/credential-issuance-client'

const api = new ConfigurationApi(
  new Configuration({ apiKey: authProvider.fetchProjectScopedToken.bind(authProvider) })
)

const request: CreateIssuanceConfigInput = {
  credentialSupported: [
    {
      credentialTypeId: 'SchemaOne',
      jsonSchemaUrl: 'https://schema.affinidi.io/SchemaOneV1R1.json',
      jsonLdContextUrl: 'https://schema.affinidi.io/SchemaOneV1R1.jsonld',
    },
  ],
  issuerWalletId: '<WALLET_ID>',
  credentialOfferDuration: 3600,
  format: 'ldp_vc',
}

const { data } = await api.createIssuanceConfig(request)

deleteIssuanceConfigById

Deletes an issuance configuration by ID.

Parameters

configurationId string Required
ID of the issuance configuration to delete.

Example

import { ConfigurationApi, Configuration } from '@affinidi-tdk/credential-issuance-client'

const api = new ConfigurationApi(
  new Configuration({ apiKey: authProvider.fetchProjectScopedToken.bind(authProvider) })
)

const configurationId = '<CONFIG_ID>'

const result = await api.deleteIssuanceConfigById(configurationId)

getIssuanceConfigById

Retrieves an issuance configuration by ID.

Parameters

configurationId string Required
ID of the issuance configuration to retrieve.

Example

import { ConfigurationApi, Configuration } from '@affinidi-tdk/credential-issuance-client'

const api = new ConfigurationApi(
  new Configuration({ apiKey: authProvider.fetchProjectScopedToken.bind(authProvider) })
)

const configurationId = '<CONFIG_ID>'

const result = await api.getIssuanceConfigById(configurationId)

getIssuanceConfigList

Returns the list of issuance configurations for the current project.

Parameters

No parameters required.

Example

import { ConfigurationApi, Configuration } from '@affinidi-tdk/credential-issuance-client'

const api = new ConfigurationApi(
  new Configuration({ apiKey: authProvider.fetchProjectScopedToken.bind(authProvider) })
)

const { data } = await api.getIssuanceConfigList()

updateIssuanceConfigById

Updates an existing issuance configuration by ID.

Parameters

configurationId string Required
ID of the issuance configuration to update.
request UpdateIssuanceConfigInput Required
Updated configuration details.

Example

import {
  ConfigurationApi,
  Configuration,
  UpdateIssuanceConfigInput,
} from '@affinidi-tdk/credential-issuance-client'

const api = new ConfigurationApi(
  new Configuration({ apiKey: authProvider.fetchProjectScopedToken.bind(authProvider) })
)

const configurationId = '<CONFIG_ID>'
const request: UpdateIssuanceConfigInput = {
  credentialSupported: [
    {
      credentialTypeId: 'SchemaOne',
      jsonSchemaUrl: 'https://schema.affinidi.io/SchemaOneV1R1.json',
      jsonLdContextUrl: 'https://schema.affinidi.io/SchemaOneV1R1.jsonld',
    },
  ],
  issuerWalletId: '<WALLET_ID>',
  credentialOfferDuration: 3600,
  format: 'ldp_vc',
}

const { data } = await api.updateIssuanceConfigById(configurationId, request)

Issuance API

Initiates credential issuance and checks issuance status.

issuanceState

Retrieves the status of an issuance.

Parameters

issuanceId string Required
ID of the initiated issuance.
projectId string Required
ID of the project where the issuance was initiated.

Example

import { IssuanceApi, Configuration } from '@affinidi-tdk/credential-issuance-client'

const api = new IssuanceApi(
  new Configuration({ apiKey: authProvider.fetchProjectScopedToken.bind(authProvider) })
)

const issuanceId = '<ISSUANCE_ID>'
const projectId = '<PROJECT_ID>'

const { data } = await api.issuanceState(issuanceId, projectId)

listIssuance

Returns the list of issuances initiated in the project.

Parameters

projectId string Required
ID of the project to list issuances for.

Example

import { IssuanceApi, Configuration } from '@affinidi-tdk/credential-issuance-client'

const api = new IssuanceApi(
  new Configuration({ apiKey: authProvider.fetchProjectScopedToken.bind(authProvider) })
)

const projectId = '<PROJECT_ID>'

const { data } = await api.listIssuance(projectId)

startIssuance

Initiates the issuance of a credential.

Parameters

projectId string Required
ID of the project to initiate issuance from.
request StartIssuanceInput Required
Details of the credentials to issue.

Example

import {
  IssuanceApi,
  Configuration,
  StartIssuanceInput,
} from '@affinidi-tdk/credential-issuance-client'

const api = new IssuanceApi(
  new Configuration({ apiKey: authProvider.fetchProjectScopedToken.bind(authProvider) })
)

const projectId = '<PROJECT_ID>'
const request: StartIssuanceInput = {
  data: [
    {
      credentialTypeId: 'SchemaOne',
      credentialData: {
        first_name: 'FirstName',
        last_name: 'LastName',
        dob: '1970-01-01',
      },
    },
  ],
  holderDid: 'did:key:holder-did-value',
  claimMode: 'FIXED_HOLDER',
}

const { data } = await api.startIssuance(projectId, request)

Credentials API

Issues Verifiable Credentials to users.

batchCredential

Allows digital wallets to claim multiple credentials at once.

Parameters

projectId string Required
ID of the project to issue credentials from.
request BatchCredentialInput Required
Batch of credential requests.

Example

import {
  CredentialsApi,
  Configuration,
  BatchCredentialInput,
  BatchCredentialInputCredentialRequestsInner,
} from '@affinidi-tdk/credential-issuance-client'

const api = new CredentialsApi(
  new Configuration({ apiKey: authProvider.fetchProjectScopedToken.bind(authProvider) })
)

const projectId = '<PROJECT_ID>'
const credentialRequests: Array<BatchCredentialInputCredentialRequestsInner> = [
  {
    credential_identifier: 'credentialIdentifier1',
    proof: {
      proof_type: 'proof',
      jwt: '<PROOF_JWT>',
    },
  },
]
const request: BatchCredentialInput = { credential_requests: credentialRequests }

const { data } = await api.batchCredential(projectId, request)

generateCredentials

Generates and issues a credential to the user.

Parameters

projectId string Required
ID of the project to issue the credential from.
request CreateCredentialInput Required
Credential request details, including proof.

Example

import {
  CredentialsApi,
  Configuration,
  CreateCredentialInput,
} from '@affinidi-tdk/credential-issuance-client'

const api = new CredentialsApi(
  new Configuration({ apiKey: authProvider.fetchProjectScopedToken.bind(authProvider) })
)

const projectId = '<PROJECT_ID>'
const request: CreateCredentialInput = {
  credential_identifier: 'UniversityDegree-2024',
  proof: {
    proof_type: 'jwt',
    jwt: '<PROOF_JWT>',
  },
}

const { data } = await api.generateCredentials(projectId, request)

getClaimedCredentials

Returns claimed credentials within a specified time range.

Parameters

project_id string Required
ID of the project.
configuration_id string Required
ID of the issuance configuration.
range_start_time string Optional
Start of the time range (ISO 8601).
range_end_time string Optional
End of the time range (ISO 8601).
exclusive_start_key string Optional
Pagination cursor — the last key returned from the previous call.
limit number Optional
Maximum number of records to return. Defaults to 20.

Example

import { CredentialsApi, Configuration } from '@affinidi-tdk/credential-issuance-client'

const api = new CredentialsApi(
  new Configuration({ apiKey: authProvider.fetchProjectScopedToken.bind(authProvider) })
)

const project_id = '<PROJECT_ID>'
const configuration_id = '<CONFIG_ID>'
const range_start_time = '<START_DATE>'
const range_end_time = '<END_DATE>'
const exclusive_start_key = '<EXCLUSIVE_START_KEY>'
const limit = 20

const { data } = await api.getClaimedCredentials(
  project_id,
  configuration_id,
  range_start_time,
  range_end_time,
  exclusive_start_key,
  limit,
)

Default API

Revokes Verifiable Credentials issued to users.

changeCredentialStatus

Updates the status of a credential, for example to revoke it.

Parameters

projectId string Required
ID of the project where the credential was issued.
configurationId string Required
ID of the issuance configuration used.
Details of the credential to revoke.

Example

import {
  DefaultApi,
  Configuration,
  ChangeCredentialStatusInput,
} from '@affinidi-tdk/credential-issuance-client'

const api = new DefaultApi(
  new Configuration({ apiKey: authProvider.fetchProjectScopedToken.bind(authProvider) })
)

const projectId = '<PROJECT_ID>'
const configId = '<CONFIG_ID>'
const request: ChangeCredentialStatusInput = {
  changeReason: 'INVALID_CREDENTIAL',
  issuanceRecordId: '<RECORD_ID>',
}

const { data } = await api.changeCredentialStatus(projectId, configId, request)

listIssuanceDataRecords

Returns the list of revocable credential records, including status and record ID.

Parameters

projectId string Required
ID of the project where the credentials were issued.
configurationId string Required
ID of the issuance configuration used.
limit number Optional
Maximum number of records to return.
exclusiveStartKey string Optional
Pagination cursor — the base64url-encoded key returned from the previous call.

Example

import { DefaultApi, Configuration } from '@affinidi-tdk/credential-issuance-client'

const api = new DefaultApi(
  new Configuration({ apiKey: authProvider.fetchProjectScopedToken.bind(authProvider) })
)

const projectId = '<PROJECT_ID>'
const configId = '<CONFIG_ID>'

const { data } = await api.listIssuanceDataRecords(projectId, configId)

Offer API

Retrieves the credential offer created by the Issuance API.

getCredentialOffer

Retrieves the credential offer details.

Parameters

projectId string Required
ID of the project that initiated the issuance.
issuanceId string Required
ID of the initiated issuance.

Example

import { OfferApi, Configuration } from '@affinidi-tdk/credential-issuance-client'

const api = new OfferApi(
  new Configuration({ apiKey: authProvider.fetchProjectScopedToken.bind(authProvider) })
)

const projectId = '<PROJECT_ID>'
const issuanceId = '<ISSUANCE_ID>'

const result = await api.getCredentialOffer(projectId, issuanceId)

WellKnown API

Retrieves OpenID Connect credential issuer configuration.

getWellKnownOpenIdCredentialIssuer

Retrieves the well-known credential issuer configuration for OpenID Connect.

Parameters

projectId string Required
ID of the project.

Example

import { WellKnownApi, Configuration } from '@affinidi-tdk/credential-issuance-client'

const api = new WellKnownApi(
  new Configuration({ apiKey: authProvider.fetchProjectScopedToken.bind(authProvider) })
)

const projectId = '<PROJECT_ID>'

const result = await api.getWellKnownOpenIdCredentialIssuer(projectId)