Wallets

Manage Digital Wallet with Wallets Service.

Install Dependency

Package: pkg:maven/com.affinidi.tdk/wallets.client

<dependency>
    <groupId>com.affinidi.tdk</groupId>
    <artifactId>wallets.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

Wallet API

Used to manage digital wallets for issuing credentials.

createWallet

Creates a wallet by type.

Parameters

createWalletInput CreateWalletInput Required
Details for the wallet to create.

Example

import com.affinidi.tdk.wallets.client.Configuration;
import com.affinidi.tdk.wallets.client.ApiClient;
import com.affinidi.tdk.wallets.client.apis.WalletApi;
import com.affinidi.tdk.wallets.client.auth.ApiKeyAuth;
import com.affinidi.tdk.wallets.client.models.CreateWalletInput;
import com.affinidi.tdk.wallets.client.models.CreateWalletResponse;
import com.affinidi.tdk.wallets.client.models.CreateWalletInput.DidMethodEnum;

try {
    ApiClient defaultClient = Configuration.getDefaultApiClient();
    ApiKeyAuth ProjectTokenAuth = (ApiKeyAuth) defaultClient.getAuthentication("ProjectTokenAuth");
    ProjectTokenAuth.setApiKey(authProvider.fetchProjectScopedToken());

    WalletApi apiInstance = new WalletApi(defaultClient);

    CreateWalletInput requestInput = new CreateWalletInput()
        .name("Wallet Name")
        .description("Description")
        .didMethod(DidMethodEnum.KEY);

    CreateWalletResponse result = apiInstance.createWallet(requestInput);
    System.out.println(result.toString());
} catch (Exception e) {
    e.printStackTrace();
}

deleteWallet

Deletes a wallet by ID.

Parameters

walletId String Required
ID of the wallet to delete.

Example

import com.affinidi.tdk.wallets.client.Configuration;
import com.affinidi.tdk.wallets.client.ApiClient;
import com.affinidi.tdk.wallets.client.apis.WalletApi;
import com.affinidi.tdk.wallets.client.auth.ApiKeyAuth;

try {
    ApiClient defaultClient = Configuration.getDefaultApiClient();
    ApiKeyAuth ProjectTokenAuth = (ApiKeyAuth) defaultClient.getAuthentication("ProjectTokenAuth");
    ProjectTokenAuth.setApiKey(authProvider.fetchProjectScopedToken());

    WalletApi apiInstance = new WalletApi(defaultClient);
    apiInstance.deleteWallet("<WALLET_ID>");
} catch (Exception e) {
    e.printStackTrace();
}

getWallet

Retrieves the details of a wallet.

Parameters

walletId String Required
ID of the wallet to retrieve.

Example

import com.affinidi.tdk.wallets.client.Configuration;
import com.affinidi.tdk.wallets.client.ApiClient;
import com.affinidi.tdk.wallets.client.apis.WalletApi;
import com.affinidi.tdk.wallets.client.auth.ApiKeyAuth;
import com.affinidi.tdk.wallets.client.models.WalletDto;

try {
    ApiClient defaultClient = Configuration.getDefaultApiClient();
    ApiKeyAuth ProjectTokenAuth = (ApiKeyAuth) defaultClient.getAuthentication("ProjectTokenAuth");
    ProjectTokenAuth.setApiKey(authProvider.fetchProjectScopedToken());

    WalletApi apiInstance = new WalletApi(defaultClient);
    WalletDto result = apiInstance.getWallet("<WALLET_ID>");
    System.out.println(result.toString());
} catch (Exception e) {
    e.printStackTrace();
}

listWallets

Returns the list of wallets for the current project.

No parameters required.

Example

import com.affinidi.tdk.wallets.client.Configuration;
import com.affinidi.tdk.wallets.client.ApiClient;
import com.affinidi.tdk.wallets.client.apis.WalletApi;
import com.affinidi.tdk.wallets.client.auth.ApiKeyAuth;
import com.affinidi.tdk.wallets.client.models.WalletsListDto;

try {
    ApiClient defaultClient = Configuration.getDefaultApiClient();
    ApiKeyAuth ProjectTokenAuth = (ApiKeyAuth) defaultClient.getAuthentication("ProjectTokenAuth");
    ProjectTokenAuth.setApiKey(authProvider.fetchProjectScopedToken());

    WalletApi apiInstance = new WalletApi(defaultClient);
    WalletsListDto result = apiInstance.listWallets(null);
    System.out.println(result.toString());
} catch (Exception e) {
    e.printStackTrace();
}

signCredential

Signs a credential with the wallet’s DID document.

Parameters

walletId String Required
ID of the wallet used for signing.
signCredentialInputDto SignCredentialInputDto Required
Credential data to sign.

Example

import com.affinidi.tdk.wallets.client.Configuration;
import com.affinidi.tdk.wallets.client.ApiClient;
import com.affinidi.tdk.wallets.client.apis.WalletApi;
import com.affinidi.tdk.wallets.client.auth.ApiKeyAuth;
import com.affinidi.tdk.wallets.client.models.SignCredentialInputDto;
import com.affinidi.tdk.wallets.client.models.SignCredentialInputDto.CredentialFormatEnum;
import com.affinidi.tdk.wallets.client.models.SignCredentialInputDtoUnsignedCredentialParams;
import com.affinidi.tdk.wallets.client.models.SignCredentialResultDto;

try {
    ApiClient defaultClient = Configuration.getDefaultApiClient();
    ApiKeyAuth ProjectTokenAuth = (ApiKeyAuth) defaultClient.getAuthentication("ProjectTokenAuth");
    ProjectTokenAuth.setApiKey(authProvider.fetchProjectScopedToken());

    WalletApi apiInstance = new WalletApi(defaultClient);

    SignCredentialInputDto requestInput = new SignCredentialInputDto()
        .credentialFormat(CredentialFormatEnum.LDP_VC)
        .revocable(false)
        .unsignedCredential(new Object())
        .unsignedCredentialParams(new SignCredentialInputDtoUnsignedCredentialParams());

    SignCredentialResultDto response = apiInstance.signCredential("<WALLET_ID>", requestInput);
    System.out.println(response.toString());
} catch (Exception e) {
    e.printStackTrace();
}

signJwtToken

Signs a JSON Web Token with the wallet’s DID document.

Parameters

walletId String Required
ID of the wallet used for signing.
signJwtToken SignJwtToken Required
JWT header and payload to sign.

Example

import com.affinidi.tdk.wallets.client.Configuration;
import com.affinidi.tdk.wallets.client.ApiClient;
import com.affinidi.tdk.wallets.client.apis.WalletApi;
import com.affinidi.tdk.wallets.client.auth.ApiKeyAuth;
import com.affinidi.tdk.wallets.client.models.SignJwtToken;
import com.affinidi.tdk.wallets.client.models.SignJwtTokenOK;

try {
    ApiClient defaultClient = Configuration.getDefaultApiClient();
    ApiKeyAuth ProjectTokenAuth = (ApiKeyAuth) defaultClient.getAuthentication("ProjectTokenAuth");
    ProjectTokenAuth.setApiKey(authProvider.fetchProjectScopedToken());

    WalletApi apiInstance = new WalletApi(defaultClient);

    SignJwtToken requestInput = new SignJwtToken()
        .header(new Object())
        .payload(new Object());

    SignJwtTokenOK response = apiInstance.signJwtToken("<WALLET_ID>", requestInput);
    System.out.println(response.toString());
} catch (Exception e) {
    e.printStackTrace();
}

updateWallet

Updates an existing wallet by ID.

Parameters

walletId String Required
ID of the wallet to update.
updateWalletInput UpdateWalletInput Required
Updated name and description for the wallet.

Example

import com.affinidi.tdk.wallets.client.Configuration;
import com.affinidi.tdk.wallets.client.ApiClient;
import com.affinidi.tdk.wallets.client.apis.WalletApi;
import com.affinidi.tdk.wallets.client.auth.ApiKeyAuth;
import com.affinidi.tdk.wallets.client.models.UpdateWalletInput;
import com.affinidi.tdk.wallets.client.models.WalletDto;

try {
    ApiClient defaultClient = Configuration.getDefaultApiClient();
    ApiKeyAuth ProjectTokenAuth = (ApiKeyAuth) defaultClient.getAuthentication("ProjectTokenAuth");
    ProjectTokenAuth.setApiKey(authProvider.fetchProjectScopedToken());

    WalletApi apiInstance = new WalletApi(defaultClient);

    UpdateWalletInput requestInput = new UpdateWalletInput()
        .name("Name")
        .description("Description");

    WalletDto result = apiInstance.updateWallet("<WALLET_ID>", requestInput);
    System.out.println(result.toString());
} catch (Exception e) {
    e.printStackTrace();
}

createWalletKey

Adds a cryptographic key to an existing wallet.

Note: Multiple keys are only supported for did:web wallets.

Parameters

walletId String Required
ID of the wallet to add a key to.
createWalletKeyInput CreateWalletKeyInput Required
Key type and verification relationships.

Example

import com.affinidi.tdk.wallets.client.Configuration;
import com.affinidi.tdk.wallets.client.ApiClient;
import com.affinidi.tdk.wallets.client.apis.WalletApi;
import com.affinidi.tdk.wallets.client.auth.ApiKeyAuth;
import java.util.List;
import com.affinidi.tdk.wallets.client.models.CreateWalletKeyInput;
import com.affinidi.tdk.wallets.client.models.WalletKeyDto;
import com.affinidi.tdk.wallets.client.models.VerificationRelationship;
import com.affinidi.tdk.wallets.client.models.CreateWalletKeyInput.KeyTypeEnum;

try {
    ApiClient defaultClient = Configuration.getDefaultApiClient();
    ApiKeyAuth ProjectTokenAuth = (ApiKeyAuth) defaultClient.getAuthentication("ProjectTokenAuth");
    ProjectTokenAuth.setApiKey(authProvider.fetchProjectScopedToken());

    WalletApi apiInstance = new WalletApi(defaultClient);

    CreateWalletKeyInput requestInput = new CreateWalletKeyInput()
        .keyType(KeyTypeEnum.ED25519)
        .relationships(List.of(VerificationRelationship.AUTHENTICATION, VerificationRelationship.ASSERTION_METHOD));

    WalletKeyDto result = apiInstance.createWalletKey("<WALLET_ID>", requestInput);
    System.out.println(result.toString());
} catch (Exception e) {
    e.printStackTrace();
}

listWalletKeys

Retrieves all keys associated with a wallet.

Note: Multiple keys are only supported for did:web wallets.

Parameters

walletId String Required
ID of the wallet.

Example

import com.affinidi.tdk.wallets.client.Configuration;
import com.affinidi.tdk.wallets.client.ApiClient;
import com.affinidi.tdk.wallets.client.apis.WalletApi;
import com.affinidi.tdk.wallets.client.auth.ApiKeyAuth;
import com.affinidi.tdk.wallets.client.models.ListWalletKeysOK;

try {
    ApiClient defaultClient = Configuration.getDefaultApiClient();
    ApiKeyAuth ProjectTokenAuth = (ApiKeyAuth) defaultClient.getAuthentication("ProjectTokenAuth");
    ProjectTokenAuth.setApiKey(authProvider.fetchProjectScopedToken());

    WalletApi apiInstance = new WalletApi(defaultClient);
    ListWalletKeysOK result = apiInstance.listWalletKeys("<WALLET_ID>");
    System.out.println(result.toString());
} catch (Exception e) {
    e.printStackTrace();
}

removeWalletKey

Removes a key from a wallet.

Note: Multiple keys are only supported for did:web wallets.

Parameters

walletId String Required
ID of the wallet.
keyId String Required
Wallet-scoped key identifier (e.g. "key-1").

Example

import com.affinidi.tdk.wallets.client.Configuration;
import com.affinidi.tdk.wallets.client.ApiClient;
import com.affinidi.tdk.wallets.client.apis.WalletApi;
import com.affinidi.tdk.wallets.client.auth.ApiKeyAuth;

try {
    ApiClient defaultClient = Configuration.getDefaultApiClient();
    ApiKeyAuth ProjectTokenAuth = (ApiKeyAuth) defaultClient.getAuthentication("ProjectTokenAuth");
    ProjectTokenAuth.setApiKey(authProvider.fetchProjectScopedToken());

    WalletApi apiInstance = new WalletApi(defaultClient);
    apiInstance.removeWalletKey("<WALLET_ID>", "key-1");
} catch (Exception e) {
    e.printStackTrace();
}

updateWalletKey

Updates the verification relationships of an existing wallet key.

Note: Multiple keys are only supported for did:web wallets.

Parameters

walletId String Required
ID of the wallet.
keyId String Required
Wallet-scoped key identifier (e.g. "key-1").
updateWalletKeyInput UpdateWalletKeyInput Required
Updated verification relationships for the key.

Example

import com.affinidi.tdk.wallets.client.Configuration;
import com.affinidi.tdk.wallets.client.ApiClient;
import com.affinidi.tdk.wallets.client.apis.WalletApi;
import com.affinidi.tdk.wallets.client.auth.ApiKeyAuth;
import java.util.List;
import com.affinidi.tdk.wallets.client.models.UpdateWalletKeyInput;
import com.affinidi.tdk.wallets.client.models.WalletKeyDto;
import com.affinidi.tdk.wallets.client.models.VerificationRelationship;

try {
    ApiClient defaultClient = Configuration.getDefaultApiClient();
    ApiKeyAuth ProjectTokenAuth = (ApiKeyAuth) defaultClient.getAuthentication("ProjectTokenAuth");
    ProjectTokenAuth.setApiKey(authProvider.fetchProjectScopedToken());

    WalletApi apiInstance = new WalletApi(defaultClient);

    UpdateWalletKeyInput requestInput = new UpdateWalletKeyInput()
        .relationships(List.of(VerificationRelationship.AUTHENTICATION, VerificationRelationship.KEY_AGREEMENT));

    WalletKeyDto result = apiInstance.updateWalletKey("<WALLET_ID>", "key-1", requestInput);
    System.out.println(result.toString());
} catch (Exception e) {
    e.printStackTrace();
}

createServiceEndpoint

Adds a DID service endpoint to a wallet’s DID document.

Parameters

walletId String Required
ID of the wallet.
serviceEndpointInput ServiceEndpointInput Required
Service endpoint URL, name, and type.

Example

import com.affinidi.tdk.wallets.client.Configuration;
import com.affinidi.tdk.wallets.client.ApiClient;
import com.affinidi.tdk.wallets.client.apis.WalletApi;
import com.affinidi.tdk.wallets.client.auth.ApiKeyAuth;
import com.affinidi.tdk.wallets.client.models.ServiceEndpointInput;
import com.affinidi.tdk.wallets.client.models.ServiceEndpointDto;
import com.affinidi.tdk.wallets.client.models.ServiceEndpointInput.ServiceTypeEnum;

try {
    ApiClient defaultClient = Configuration.getDefaultApiClient();
    ApiKeyAuth ProjectTokenAuth = (ApiKeyAuth) defaultClient.getAuthentication("ProjectTokenAuth");
    ProjectTokenAuth.setApiKey(authProvider.fetchProjectScopedToken());

    WalletApi apiInstance = new WalletApi(defaultClient);

    ServiceEndpointInput requestInput = new ServiceEndpointInput()
        .url("https://example.com/messaging")
        .name("My Messaging Service")
        .serviceType(ServiceTypeEnum.DID_COMM_MESSAGING);

    ServiceEndpointDto result = apiInstance.createServiceEndpoint("<WALLET_ID>", requestInput);
    System.out.println(result.toString());
} catch (Exception e) {
    e.printStackTrace();
}

listServiceEndpoints

Retrieves all service endpoints associated with a wallet.

Parameters

walletId String Required
ID of the wallet.

Example

import com.affinidi.tdk.wallets.client.Configuration;
import com.affinidi.tdk.wallets.client.ApiClient;
import com.affinidi.tdk.wallets.client.apis.WalletApi;
import com.affinidi.tdk.wallets.client.auth.ApiKeyAuth;
import com.affinidi.tdk.wallets.client.models.ListServiceEndpointsOK;

try {
    ApiClient defaultClient = Configuration.getDefaultApiClient();
    ApiKeyAuth ProjectTokenAuth = (ApiKeyAuth) defaultClient.getAuthentication("ProjectTokenAuth");
    ProjectTokenAuth.setApiKey(authProvider.fetchProjectScopedToken());

    WalletApi apiInstance = new WalletApi(defaultClient);
    ListServiceEndpointsOK result = apiInstance.listServiceEndpoints("<WALLET_ID>");
    System.out.println(result.toString());
} catch (Exception e) {
    e.printStackTrace();
}

removeServiceEndpoint

Removes a service endpoint from a wallet’s DID document.

Parameters

walletId String Required
ID of the wallet.
serviceId String Required
ID of the service endpoint to remove.

Example

import com.affinidi.tdk.wallets.client.Configuration;
import com.affinidi.tdk.wallets.client.ApiClient;
import com.affinidi.tdk.wallets.client.apis.WalletApi;
import com.affinidi.tdk.wallets.client.auth.ApiKeyAuth;

try {
    ApiClient defaultClient = Configuration.getDefaultApiClient();
    ApiKeyAuth ProjectTokenAuth = (ApiKeyAuth) defaultClient.getAuthentication("ProjectTokenAuth");
    ProjectTokenAuth.setApiKey(authProvider.fetchProjectScopedToken());

    WalletApi apiInstance = new WalletApi(defaultClient);
    apiInstance.removeServiceEndpoint("<WALLET_ID>", "<SERVICE_ID>");
} catch (Exception e) {
    e.printStackTrace();
}

updateServiceEndpoint

Updates an existing service endpoint on a wallet.

Parameters

walletId String Required
ID of the wallet.
serviceId String Required
ID of the service endpoint to update.
updateServiceEndpointInput UpdateServiceEndpointInput Required
Updated name and URL for the service endpoint.

Example

import com.affinidi.tdk.wallets.client.Configuration;
import com.affinidi.tdk.wallets.client.ApiClient;
import com.affinidi.tdk.wallets.client.apis.WalletApi;
import com.affinidi.tdk.wallets.client.auth.ApiKeyAuth;
import com.affinidi.tdk.wallets.client.models.UpdateServiceEndpointInput;
import com.affinidi.tdk.wallets.client.models.ServiceEndpointDto;

try {
    ApiClient defaultClient = Configuration.getDefaultApiClient();
    ApiKeyAuth ProjectTokenAuth = (ApiKeyAuth) defaultClient.getAuthentication("ProjectTokenAuth");
    ProjectTokenAuth.setApiKey(authProvider.fetchProjectScopedToken());

    WalletApi apiInstance = new WalletApi(defaultClient);

    UpdateServiceEndpointInput requestInput = new UpdateServiceEndpointInput()
        .name("Updated Service Name")
        .url("https://new-endpoint.example.com");

    ServiceEndpointDto result = apiInstance.updateServiceEndpoint("<WALLET_ID>", "<SERVICE_ID>", requestInput);
    System.out.println(result.toString());
} catch (Exception e) {
    e.printStackTrace();
}