Credential Issuance

Issue a Verifiable Credentials using Credential Issuance Service.

Install Dependency

Package: affinidi_tdk_credential_issuance_client

pip install affinidi_tdk_credential_issuance_client

Check the latest version on the PyPI repository or view the source on GitHub.

Classes and Methods

Configuration API

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

create_issuance_config

Creates an issuance configuration for the project.

Parameters

create_issuance_config_input CreateIssuanceConfigInput Required
Details of the issuance configuration to create.

Example

import affinidi_tdk_credential_issuance_client

configuration = affinidi_tdk_credential_issuance_client.Configuration()
configuration.api_key['ProjectTokenAuth'] = projectScopedToken

with affinidi_tdk_credential_issuance_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_credential_issuance_client.ConfigurationApi(api_client)

    request_json = {
        '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',
    }

    create_issuance_config_input = affinidi_tdk_credential_issuance_client.CreateIssuanceConfigInput.from_dict(request_json)
    api_response = api_instance.create_issuance_config(create_issuance_config_input=create_issuance_config_input)

delete_issuance_config_by_id

Deletes the issuance configuration by ID.

Parameters

configurationId str Required
ID of the issuance configuration to delete.

Example

import affinidi_tdk_credential_issuance_client

configuration = affinidi_tdk_credential_issuance_client.Configuration()
configuration.api_key['ProjectTokenAuth'] = projectScopedToken

with affinidi_tdk_credential_issuance_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_credential_issuance_client.ConfigurationApi(api_client)
    api_response = api_instance.delete_issuance_config_by_id('<CONFIG_ID>')

get_issuance_config_by_id

Retrieves the issuance configuration details by ID.

Parameters

configurationId str Required
ID of the issuance configuration to retrieve.

Example

import affinidi_tdk_credential_issuance_client

configuration = affinidi_tdk_credential_issuance_client.Configuration()
configuration.api_key['ProjectTokenAuth'] = projectScopedToken

with affinidi_tdk_credential_issuance_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_credential_issuance_client.ConfigurationApi(api_client)
    api_response = api_instance.get_issuance_config_by_id('<CONFIG_ID>')

get_issuance_config_list

Returns the list of issuance configurations for the current project.

No parameters required.

Example

import affinidi_tdk_credential_issuance_client

configuration = affinidi_tdk_credential_issuance_client.Configuration()
configuration.api_key['ProjectTokenAuth'] = projectScopedToken

with affinidi_tdk_credential_issuance_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_credential_issuance_client.ConfigurationApi(api_client)
    api_response = api_instance.get_issuance_config_list()

update_issuance_config_by_id

Updates an existing issuance configuration by ID.

Parameters

configurationId str Required
ID of the issuance configuration to update.
update_issuance_config_input UpdateIssuanceConfigInput Required
Updated configuration details.

Example

import affinidi_tdk_credential_issuance_client

configuration = affinidi_tdk_credential_issuance_client.Configuration()
configuration.api_key['ProjectTokenAuth'] = projectScopedToken

with affinidi_tdk_credential_issuance_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_credential_issuance_client.ConfigurationApi(api_client)

    request_json = {
        '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',
    }

    update_issuance_config_input = affinidi_tdk_credential_issuance_client.UpdateIssuanceConfigInput.from_dict(request_json)
    api_response = api_instance.update_issuance_config_by_id('<CONFIG_ID>', update_issuance_config_input=update_issuance_config_input)

Issuance API

Initiates issuance of credentials and checks their status.

issuance_state

Retrieves the status of an issuance.

Parameters

issuanceId str Required
ID of the initiated issuance.
projectId str Required
ID of the project from which the issuance was initiated.

Example

import affinidi_tdk_credential_issuance_client

configuration = affinidi_tdk_credential_issuance_client.Configuration()
configuration.api_key['ProjectTokenAuth'] = projectScopedToken

with affinidi_tdk_credential_issuance_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_credential_issuance_client.IssuanceApi(api_client)
    api_response = api_instance.issuance_state('<ISSUANCE_ID>', '<PROJECT_ID>')

list_issuance

Returns the list of issuances initiated in the project.

Parameters

projectId str Required
ID of the project.

Example

import affinidi_tdk_credential_issuance_client

configuration = affinidi_tdk_credential_issuance_client.Configuration()
configuration.api_key['ProjectTokenAuth'] = projectScopedToken

with affinidi_tdk_credential_issuance_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_credential_issuance_client.IssuanceApi(api_client)
    api_response = api_instance.list_issuance('<PROJECT_ID>')

start_issuance

Initiates the issuance of credentials.

Parameters

projectId str Required
ID of the project from which to initiate the issuance.
start_issuance_input StartIssuanceInput Required
Details of the credentials to issue.

Example

import affinidi_tdk_credential_issuance_client

configuration = affinidi_tdk_credential_issuance_client.Configuration()
configuration.api_key['ProjectTokenAuth'] = projectScopedToken

with affinidi_tdk_credential_issuance_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_credential_issuance_client.IssuanceApi(api_client)

    request_json = {
        'data': [{
            'credentialTypeId': 'SchemaOne',
            'credentialData': {
                'first_name': 'FirstName',
                'last_name': 'LastName',
                'dob': '1970-01-01',
            },
        }],
        'holderDid': 'did:key:holder-did-value',
        'claimMode': 'FIXED_HOLDER',
    }

    start_issuance_input = affinidi_tdk_credential_issuance_client.StartIssuanceInput.from_dict(request_json)
    api_response = api_instance.start_issuance('<PROJECT_ID>', start_issuance_input=start_issuance_input)

Credentials API

Issues Verifiable Credentials to users.

batchCredential

Allows digital wallets to claim multiple credentials at once.

Parameters

projectId str Required
ID of the project from which to issue the credentials.
batch_credential_input BatchCredentialInput Required
List of credential requests, each with a credential identifier and a proof JWT.

Example

import affinidi_tdk_credential_issuance_client

configuration = affinidi_tdk_credential_issuance_client.Configuration()
configuration.api_key['ProjectTokenAuth'] = projectScopedToken

with affinidi_tdk_credential_issuance_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_credential_issuance_client.CredentialsApi(api_client)

    credential_requests = [
        {
            'credential_identifier': 'credentialIdentifier',
            'proof': {
                'proof_type': 'jwt',
                'jwt': '<PROOF_JWT>',
            },
        }
    ]

    batch_credential_input = affinidi_tdk_credential_issuance_client.BatchCredentialInput(
        credential_requests=credential_requests
    )
    api_response = api_instance.generate_credentials('<PROJECT_ID>', batch_credential_input=batch_credential_input)

generate_credentials

Generates and issues a credential offer to the user.

Parameters

projectId str Required
ID of the project from which to issue the credential.
create_credential_input CreateCredentialInput Required
Credential identifier and proof JWT.

Example

import affinidi_tdk_credential_issuance_client

configuration = affinidi_tdk_credential_issuance_client.Configuration()
configuration.api_key['ProjectTokenAuth'] = projectScopedToken

with affinidi_tdk_credential_issuance_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_credential_issuance_client.CredentialsApi(api_client)

    request_json = {
        'credential_identifier': 'SchemaOne',
        'proof': {
            'proof_type': 'jwt',
            'jwt': '<PROOF_JWT>',
        },
    }

    create_credential_input = affinidi_tdk_credential_issuance_client.CreateCredentialInput.from_dict(request_json)
    api_response = api_instance.generate_credentials('<PROJECT_ID>', create_credential_input=create_credential_input)

getClaimedCredentials

Retrieves claimed credentials in the specified date range.

Parameters

project_id str Required
ID of the project.
configuration_id str Required
ID of the issuance configuration.
range_start_time str Required
Start date of the range (ISO 8601 format).
range_end_time str Required
End date of the range (ISO 8601 format).
exclusive_start_key str Optional
Base64url-encoded key of the first item that this operation will evaluate (it is not returned). Use the value returned in the previous operation to paginate.
limit int Optional
Maximum number of records to return. Defaults to 20.

Example

import affinidi_tdk_credential_issuance_client

configuration = affinidi_tdk_credential_issuance_client.Configuration()
configuration.api_key['ProjectTokenAuth'] = projectScopedToken

with affinidi_tdk_credential_issuance_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_credential_issuance_client.CredentialsApi(api_client)
    api_response = api_instance.batch_credential(
        '<PROJECT_ID>',
        '<CONFIG_ID>',
        '<START_DATE>',
        '<END_DATE>',
    )

Default API

Revokes revocable Verifiable Credentials issued to users.

change_credential_status

Updates the status of a credential (for example, REVOKED).

Parameters

projectId str Required
ID of the project from which the credential was issued.
configurationId str Required
ID of the issuance configuration.
change_credential_status_input ChangeCredentialStatusInput Required
Revocation reason and issuance record ID.

Example

import affinidi_tdk_credential_issuance_client

configuration = affinidi_tdk_credential_issuance_client.Configuration()
configuration.api_key['ProjectTokenAuth'] = projectScopedToken

with affinidi_tdk_credential_issuance_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_credential_issuance_client.DefaultApi(api_client)

    request_json = {
        'changeReason': 'INVALID_CREDENTIAL',
        'issuanceRecordId': '<RECORD_ID>',
    }

    change_credential_status_input = affinidi_tdk_credential_issuance_client.ChangeCredentialStatusInput.from_dict(request_json)
    api_response = api_instance.change_credential_status('<PROJECT_ID>', '<CONFIG_ID>', change_credential_status_input=change_credential_status_input)

list_issuance_data_records

Retrieves the list of records for revocable credentials.

Parameters

projectId str Required
ID of the project from which the credentials were issued.
configurationId str Required
ID of the issuance configuration.
limit int Optional
Maximum number of records to return.
exclusiveStartKey str Optional
Base64url-encoded key of the first item that this operation will evaluate (it is not returned). Use the value returned in the previous operation to paginate.

Example

import affinidi_tdk_credential_issuance_client

configuration = affinidi_tdk_credential_issuance_client.Configuration()
configuration.api_key['ProjectTokenAuth'] = projectScopedToken

with affinidi_tdk_credential_issuance_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_credential_issuance_client.DefaultApi(api_client)
    api_response = api_instance.list_issuance_data_records('<PROJECT_ID>', '<CONFIG_ID>')

Offer API

Retrieves credential offers initiated by the Issuance API.

get_credential_offer

Retrieves the credential offer details.

Parameters

projectId str Required
ID of the project.
issuanceId str Required
ID of the initiated issuance.

Example

import affinidi_tdk_credential_issuance_client

configuration = affinidi_tdk_credential_issuance_client.Configuration()
configuration.api_key['ProjectTokenAuth'] = projectScopedToken

with affinidi_tdk_credential_issuance_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_credential_issuance_client.OfferApi(api_client)
    api_response = api_instance.get_credential_offer('<PROJECT_ID>', '<ISSUANCE_ID>')

WellKnown API

Retrieves WellKnown OpenID Credential Issuer information.

get_well_known_open_id_credential_issuer

Retrieves the credential issuer well-known configurations.

Parameters

projectId str Required
ID of the project.

Example

import affinidi_tdk_credential_issuance_client

configuration = affinidi_tdk_credential_issuance_client.Configuration()
configuration.api_key['ProjectTokenAuth'] = projectScopedToken

with affinidi_tdk_credential_issuance_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_credential_issuance_client.WellKnownApi(api_client)
    api_response = api_instance.get_well_known_open_id_credential_issuer('<PROJECT_ID>')