Credential Issuance
Install Dependency
Package: pkg:maven/com.affinidi.tdk/credential.issuance.client@1.4.0
<dependency>
<groupId>com.affinidi.tdk</groupId>
<artifactId>credential.issuance.client</artifactId>
<version>VERSION_NUMBER</version>
</dependency>Check the latest version on the Maven Central 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.
createIssuanceConfig
Creates an issuance configuration for the project.
Parameters
Example
import com.affinidi.tdk.authProvider.AuthProvider;
import com.affinidi.tdk.credential.issuance.client.ApiClient;
import com.affinidi.tdk.credential.issuance.client.Configuration;
import com.affinidi.tdk.credential.issuance.client.auth.ApiKeyAuth;
import com.affinidi.tdk.credential.issuance.client.models.CreateIssuanceConfigInput;
import com.affinidi.tdk.credential.issuance.client.models.CredentialSupportedObject;
import com.affinidi.tdk.credential.issuance.client.models.IssuanceConfigDto;
import com.affinidi.tdk.credential.issuance.client.apis.ConfigurationApi;
try {
ApiClient defaultClient = Configuration.getDefaultApiClient();
ApiKeyAuth ProjectTokenAuth = (ApiKeyAuth) defaultClient.getAuthentication("ProjectTokenAuth");
ProjectTokenAuth.setApiKey(authProvider.fetchProjectScopedToken());
ConfigurationApi apiInstance = new ConfigurationApi(defaultClient);
CreateIssuanceConfigInput requestInput = new CreateIssuanceConfigInput()
.name("Issuance Name")
.issuerWalletId("<WALLET_ID>")
.returnUris(null)
.credentialSupported(new ArrayList<>(List.of(
new CredentialSupportedObject()
.credentialTypeId("Membership")
.jsonSchemaUrl("https://schema.affinidi.io/TMembershipV1R0.json")
.jsonLdContextUrl("https://schema.affinidi.io/TMembershipV1R0.jsonld")
)));
IssuanceConfigDto response = apiInstance.createIssuanceConfig(requestInput);
System.out.println(response.toString());
} catch (Exception e) {
e.printStackTrace();
}deleteIssuanceConfigById
Deletes the issuance configuration by ID.
Parameters
configurationId
String
RequiredExample
import com.affinidi.tdk.credential.issuance.client.ApiClient;
import com.affinidi.tdk.credential.issuance.client.Configuration;
import com.affinidi.tdk.credential.issuance.client.auth.ApiKeyAuth;
import com.affinidi.tdk.credential.issuance.client.apis.ConfigurationApi;
try {
ApiClient defaultClient = Configuration.getDefaultApiClient();
ApiKeyAuth ProjectTokenAuth = (ApiKeyAuth) defaultClient.getAuthentication("ProjectTokenAuth");
ProjectTokenAuth.setApiKey(authProvider.fetchProjectScopedToken());
ConfigurationApi apiInstance = new ConfigurationApi(defaultClient);
apiInstance.deleteIssuanceConfigById("<CONFIG_ID>");
} catch (Exception e) {
e.printStackTrace();
}getIssuanceConfigById
Retrieves the issuance configuration details by ID.
Parameters
configurationId
String
RequiredExample
import com.affinidi.tdk.credential.issuance.client.ApiClient;
import com.affinidi.tdk.credential.issuance.client.Configuration;
import com.affinidi.tdk.credential.issuance.client.auth.ApiKeyAuth;
import com.affinidi.tdk.credential.issuance.client.models.IssuanceConfigDto;
import com.affinidi.tdk.credential.issuance.client.apis.ConfigurationApi;
try {
ApiClient defaultClient = Configuration.getDefaultApiClient();
ApiKeyAuth ProjectTokenAuth = (ApiKeyAuth) defaultClient.getAuthentication("ProjectTokenAuth");
ProjectTokenAuth.setApiKey(authProvider.fetchProjectScopedToken());
ConfigurationApi apiInstance = new ConfigurationApi(defaultClient);
IssuanceConfigDto response = apiInstance.getIssuanceConfigById("<CONFIG_ID>");
System.out.println(response.toString());
} catch (Exception e) {
e.printStackTrace();
}getIssuanceConfigList
Returns the list of issuance configurations for the current project.
No parameters required.
Example
import com.affinidi.tdk.credential.issuance.client.ApiClient;
import com.affinidi.tdk.credential.issuance.client.Configuration;
import com.affinidi.tdk.credential.issuance.client.auth.ApiKeyAuth;
import com.affinidi.tdk.credential.issuance.client.models.IssuanceConfigListResponse;
import com.affinidi.tdk.credential.issuance.client.apis.ConfigurationApi;
try {
ApiClient defaultClient = Configuration.getDefaultApiClient();
ApiKeyAuth ProjectTokenAuth = (ApiKeyAuth) defaultClient.getAuthentication("ProjectTokenAuth");
ProjectTokenAuth.setApiKey(authProvider.fetchProjectScopedToken());
ConfigurationApi apiInstance = new ConfigurationApi(defaultClient);
IssuanceConfigListResponse response = apiInstance.getIssuanceConfigList();
System.out.println(response.toString());
} catch (Exception e) {
e.printStackTrace();
}updateIssuanceConfigById
Updates an existing issuance configuration by ID.
Parameters
configurationId
String
RequiredExample
import com.affinidi.tdk.credential.issuance.client.ApiClient;
import com.affinidi.tdk.credential.issuance.client.Configuration;
import com.affinidi.tdk.credential.issuance.client.auth.ApiKeyAuth;
import com.affinidi.tdk.credential.issuance.client.models.CredentialSupportedObject;
import com.affinidi.tdk.credential.issuance.client.models.IssuanceConfigDto;
import com.affinidi.tdk.credential.issuance.client.models.UpdateIssuanceConfigInput;
import com.affinidi.tdk.credential.issuance.client.apis.ConfigurationApi;
try {
ApiClient defaultClient = Configuration.getDefaultApiClient();
ApiKeyAuth ProjectTokenAuth = (ApiKeyAuth) defaultClient.getAuthentication("ProjectTokenAuth");
ProjectTokenAuth.setApiKey(authProvider.fetchProjectScopedToken());
ConfigurationApi apiInstance = new ConfigurationApi(defaultClient);
UpdateIssuanceConfigInput requestInput = new UpdateIssuanceConfigInput()
.name("Issuance")
.issuerWalletId("<WALLET_ID>")
.returnUris(null)
.credentialSupported(new ArrayList<>(List.of(
new CredentialSupportedObject()
.credentialTypeId("Membership")
.jsonSchemaUrl("https://schema.affinidi.io/TMembershipV1R0.json")
.jsonLdContextUrl("https://schema.affinidi.io/TMembershipV1R0.jsonld")
)));
IssuanceConfigDto response = apiInstance.updateIssuanceConfigById("<CONFIG_ID>", requestInput);
System.out.println(response.toString());
} catch (Exception e) {
e.printStackTrace();
}Issuance API
Initiates issuance of credentials and checks their status.
issuanceState
Retrieves the status of an issuance.
Parameters
issuanceId
String
RequiredprojectId
String
RequiredExample
import com.affinidi.tdk.credential.issuance.client.ApiClient;
import com.affinidi.tdk.credential.issuance.client.Configuration;
import com.affinidi.tdk.credential.issuance.client.apis.IssuanceApi;
import com.affinidi.tdk.credential.issuance.client.auth.ApiKeyAuth;
import com.affinidi.tdk.credential.issuance.client.models.IssuanceStateResponse;
try {
ApiClient defaultClient = Configuration.getDefaultApiClient();
ApiKeyAuth ProjectTokenAuth = (ApiKeyAuth) defaultClient.getAuthentication("ProjectTokenAuth");
ProjectTokenAuth.setApiKey(authProvider.fetchProjectScopedToken());
IssuanceApi apiInstance = new IssuanceApi(defaultClient);
IssuanceStateResponse response = apiInstance.issuanceState("<ISSUANCE_ID>", "<PROJECT_ID>");
System.out.println(response.toString());
} catch (Exception e) {
e.printStackTrace();
}listIssuance
Returns the list of issuances initiated in the project.
Parameters
projectId
String
RequiredExample
import com.affinidi.tdk.credential.issuance.client.ApiClient;
import com.affinidi.tdk.credential.issuance.client.Configuration;
import com.affinidi.tdk.credential.issuance.client.apis.IssuanceApi;
import com.affinidi.tdk.credential.issuance.client.auth.ApiKeyAuth;
import com.affinidi.tdk.credential.issuance.client.models.ListIssuanceResponse;
try {
ApiClient defaultClient = Configuration.getDefaultApiClient();
ApiKeyAuth ProjectTokenAuth = (ApiKeyAuth) defaultClient.getAuthentication("ProjectTokenAuth");
ProjectTokenAuth.setApiKey(authProvider.fetchProjectScopedToken());
IssuanceApi apiInstance = new IssuanceApi(defaultClient);
ListIssuanceResponse response = apiInstance.listIssuance("<PROJECT_ID>");
System.out.println(response.toString());
} catch (Exception e) {
e.printStackTrace();
}startIssuance
Initiates the issuance of credentials.
Parameters
projectId
String
RequiredExample
import com.affinidi.tdk.credential.issuance.client.ApiClient;
import com.affinidi.tdk.credential.issuance.client.Configuration;
import com.affinidi.tdk.credential.issuance.client.apis.IssuanceApi;
import com.affinidi.tdk.credential.issuance.client.auth.ApiKeyAuth;
import com.affinidi.tdk.credential.issuance.client.models.StartIssuanceInput;
import com.affinidi.tdk.credential.issuance.client.models.StartIssuanceInput.ClaimModeEnum;
import com.affinidi.tdk.credential.issuance.client.models.StartIssuanceInputDataInner;
import com.affinidi.tdk.credential.issuance.client.models.StartIssuanceResponse;
try {
ApiClient defaultClient = Configuration.getDefaultApiClient();
ApiKeyAuth ProjectTokenAuth = (ApiKeyAuth) defaultClient.getAuthentication("ProjectTokenAuth");
ProjectTokenAuth.setApiKey(authProvider.fetchProjectScopedToken());
IssuanceApi apiInstance = new IssuanceApi(defaultClient);
Map<String, Object> credentialData = new HashMap<>();
credentialData.put("Firstname", "Firstname");
credentialData.put("Lastname", "Lastname");
credentialData.put("ExpiryDate", "1990-01-01");
StartIssuanceInput startIssuanceInput = new StartIssuanceInput()
.claimMode(ClaimModeEnum.TX_CODE)
.data(new ArrayList<>(List.of(
new StartIssuanceInputDataInner()
.credentialTypeId("SchemaOne")
.credentialData(credentialData)
)));
StartIssuanceResponse response = apiInstance.startIssuance("<PROJECT_ID>", startIssuanceInput);
System.out.println(response.toString());
} catch (Exception e) {
e.printStackTrace();
}Credentials API
Issues Verifiable Credentials to users.
batchCredential
Allows digital wallets to claim multiple credentials at once.
Parameters
projectId
String
RequiredExample
import com.affinidi.tdk.credential.issuance.client.ApiClient;
import com.affinidi.tdk.credential.issuance.client.Configuration;
import com.affinidi.tdk.credential.issuance.client.apis.CredentialsApi;
import com.affinidi.tdk.credential.issuance.client.auth.ApiKeyAuth;
import com.affinidi.tdk.credential.issuance.client.models.BatchCredentialInput;
import com.affinidi.tdk.credential.issuance.client.models.BatchCredentialInputCredentialRequestsInner;
import com.affinidi.tdk.credential.issuance.client.models.BatchCredentialResponse;
import com.affinidi.tdk.credential.issuance.client.models.CredentialProof;
try {
ApiClient defaultClient = Configuration.getDefaultApiClient();
ApiKeyAuth ProjectTokenAuth = (ApiKeyAuth) defaultClient.getAuthentication("ProjectTokenAuth");
ProjectTokenAuth.setApiKey(authProvider.fetchProjectScopedToken());
CredentialsApi apiInstance = new CredentialsApi(defaultClient);
CredentialProof proof = new CredentialProof()
.proofType(CredentialProof.ProofTypeEnum.JWT)
.jwt("<PROOF_JWT>");
List<BatchCredentialInputCredentialRequestsInner> credentialRequests = new ArrayList<>();
credentialRequests.add(new BatchCredentialInputCredentialRequestsInner()
.credentialIdentifier("credential_identifier_1")
.proof(proof));
BatchCredentialInput batchCredentialInput = new BatchCredentialInput()
.credentialRequests(credentialRequests);
BatchCredentialResponse result = apiInstance.batchCredential("<PROJECT_ID>", batchCredentialInput);
System.out.println(result.toString());
} catch (Exception e) {
e.printStackTrace();
}generateCredentials
Generates and issues a credential offer to the user.
Parameters
projectId
String
RequiredExample
import com.affinidi.tdk.credential.issuance.client.ApiClient;
import com.affinidi.tdk.credential.issuance.client.Configuration;
import com.affinidi.tdk.credential.issuance.client.apis.CredentialsApi;
import com.affinidi.tdk.credential.issuance.client.auth.ApiKeyAuth;
import com.affinidi.tdk.credential.issuance.client.models.CreateCredentialInput;
import com.affinidi.tdk.credential.issuance.client.models.CredentialProof;
import com.affinidi.tdk.credential.issuance.client.models.CredentialResponse;
import com.affinidi.tdk.credential.issuance.client.models.CredentialProof.ProofTypeEnum;
try {
ApiClient defaultClient = Configuration.getDefaultApiClient();
ApiKeyAuth ProjectTokenAuth = (ApiKeyAuth) defaultClient.getAuthentication("ProjectTokenAuth");
ProjectTokenAuth.setApiKey(authProvider.fetchProjectScopedToken());
CredentialsApi apiInstance = new CredentialsApi(defaultClient);
CreateCredentialInput createCredentialInput = new CreateCredentialInput()
.credentialIdentifier("SchemaOne")
.proof(new CredentialProof()
.proofType(ProofTypeEnum.JWT)
.jwt("<PROOF_JWT>"));
CredentialResponse response = apiInstance.generateCredentials("<PROJECT_ID>", createCredentialInput);
System.out.println(response.toString());
} catch (Exception e) {
e.printStackTrace();
}getClaimedCredentials
Retrieves claimed credentials in the specified date range.
Parameters
projectId
String
RequiredconfigurationId
String
RequiredrangeStartTime
String
RequiredrangeEndTime
String
RequiredexclusiveStartKey
String
Optionallimit
Integer
OptionalExample
import com.affinidi.tdk.credential.issuance.client.ApiClient;
import com.affinidi.tdk.credential.issuance.client.Configuration;
import com.affinidi.tdk.credential.issuance.client.apis.CredentialsApi;
import com.affinidi.tdk.credential.issuance.client.auth.ApiKeyAuth;
try {
ApiClient defaultClient = Configuration.getDefaultApiClient();
ApiKeyAuth ProjectTokenAuth = (ApiKeyAuth) defaultClient.getAuthentication("ProjectTokenAuth");
ProjectTokenAuth.setApiKey(authProvider.fetchProjectScopedToken());
CredentialsApi apiInstance = new CredentialsApi(defaultClient);
Object result = apiInstance.getClaimedCredentials(
"<PROJECT_ID>", "<CONFIG_ID>", "<START_DATE>", "<END_DATE>", null, 10
);
System.out.println(result.toString());
} catch (Exception e) {
e.printStackTrace();
}Default API
Revokes revocable Verifiable Credentials issued to users.
changeCredentialStatus
Updates the status of a credential (for example, REVOKED).
Parameters
projectId
String
RequiredconfigurationId
String
RequiredExample
import com.affinidi.tdk.credential.issuance.client.ApiClient;
import com.affinidi.tdk.credential.issuance.client.Configuration;
import com.affinidi.tdk.credential.issuance.client.apis.DefaultApi;
import com.affinidi.tdk.credential.issuance.client.auth.ApiKeyAuth;
import com.affinidi.tdk.credential.issuance.client.models.ChangeCredentialStatusInput;
import com.affinidi.tdk.credential.issuance.client.models.ChangeCredentialStatusInput.ChangeReasonEnum;
import com.affinidi.tdk.credential.issuance.client.models.FlowData;
try {
ApiClient defaultClient = Configuration.getDefaultApiClient();
ApiKeyAuth ProjectTokenAuth = (ApiKeyAuth) defaultClient.getAuthentication("ProjectTokenAuth");
ProjectTokenAuth.setApiKey(authProvider.fetchProjectScopedToken());
DefaultApi apiInstance = new DefaultApi(defaultClient);
ChangeCredentialStatusInput requestInput = new ChangeCredentialStatusInput()
.changeReason(ChangeReasonEnum.INVALID_CREDENTIAL)
.issuanceRecordId("<RECORD_ID>");
FlowData response = apiInstance.changeCredentialStatus("<PROJECT_ID>", "<CONFIG_ID>", requestInput);
System.out.println(response.toString());
} catch (Exception e) {
e.printStackTrace();
}listIssuanceDataRecords
Retrieves the list of records for revocable credentials.
Parameters
projectId
String
RequiredconfigurationId
String
Requiredlimit
Integer
OptionalExample
import com.affinidi.tdk.credential.issuance.client.ApiClient;
import com.affinidi.tdk.credential.issuance.client.Configuration;
import com.affinidi.tdk.credential.issuance.client.apis.DefaultApi;
import com.affinidi.tdk.credential.issuance.client.auth.ApiKeyAuth;
import com.affinidi.tdk.credential.issuance.client.models.ListIssuanceRecordResponse;
try {
ApiClient defaultClient = Configuration.getDefaultApiClient();
ApiKeyAuth ProjectTokenAuth = (ApiKeyAuth) defaultClient.getAuthentication("ProjectTokenAuth");
ProjectTokenAuth.setApiKey(authProvider.fetchProjectScopedToken());
DefaultApi apiInstance = new DefaultApi(defaultClient);
ListIssuanceRecordResponse response = apiInstance.listIssuanceDataRecords(
"<PROJECT_ID>", "<CONFIG_ID>", 10, null
);
System.out.println(response.toString());
} catch (Exception e) {
e.printStackTrace();
}Offer API
Retrieves credential offers initiated by the Issuance API.
getCredentialOffer
Retrieves the credential offer details.
Parameters
projectId
String
RequiredissuanceId
String
RequiredExample
import com.affinidi.tdk.credential.issuance.client.ApiClient;
import com.affinidi.tdk.credential.issuance.client.Configuration;
import com.affinidi.tdk.credential.issuance.client.apis.OfferApi;
import com.affinidi.tdk.credential.issuance.client.auth.ApiKeyAuth;
import com.affinidi.tdk.credential.issuance.client.models.CredentialOfferResponse;
try {
ApiClient defaultClient = Configuration.getDefaultApiClient();
ApiKeyAuth ProjectTokenAuth = (ApiKeyAuth) defaultClient.getAuthentication("ProjectTokenAuth");
ProjectTokenAuth.setApiKey(authProvider.fetchProjectScopedToken());
OfferApi apiInstance = new OfferApi(defaultClient);
CredentialOfferResponse response = apiInstance.getCredentialOffer("<PROJECT_ID>", "<ISSUANCE_ID>");
System.out.println(response.toString());
} catch (Exception e) {
e.printStackTrace();
}WellKnown API
Retrieves WellKnown OpenID Credential Issuer information.
getWellKnownOpenIdCredentialIssuer
Retrieves the credential issuer well-known configurations.
Parameters
projectId
String
RequiredExample
import com.affinidi.tdk.credential.issuance.client.ApiClient;
import com.affinidi.tdk.credential.issuance.client.Configuration;
import com.affinidi.tdk.credential.issuance.client.auth.ApiKeyAuth;
import com.affinidi.tdk.credential.issuance.client.models.WellKnownOpenIdCredentialIssuerResponse;
import com.affinidi.tdk.credential.issuance.client.apis.WellKnownApi;
try {
ApiClient defaultClient = Configuration.getDefaultApiClient();
ApiKeyAuth ProjectTokenAuth = (ApiKeyAuth) defaultClient.getAuthentication("ProjectTokenAuth");
ProjectTokenAuth.setApiKey(authProvider.fetchProjectScopedToken());
WellKnownApi apiInstance = new WellKnownApi(defaultClient);
WellKnownOpenIdCredentialIssuerResponse response = apiInstance.getWellKnownOpenIdCredentialIssuer("<PROJECT_ID>");
System.out.println(response.toString());
} catch (Exception e) {
e.printStackTrace();
}Glad to hear it! Please tell us how we can improve more.
Sorry to hear that. Please tell us how we can improve.
Thank you for sharing your feedback so we can improve your experience.