Affinidi Iota Framework

Manage Affinidi Iota Framework configuration to request data from Affinidi Vault.

Install Dependency

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

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

Configurations API

Manage Affinidi Iota Framework configurations to integrate your application to request data from Affinidi Vault.

createIotaConfiguration

Creates an Affinidi Iota Framework configuration.

Parameters

createIotaConfigurationInput CreateIotaConfigurationInput Required
Configuration details including name, wallet ARI, and webhook URL.

Example

import com.affinidi.tdk.iota.client.Configuration;
import com.affinidi.tdk.iota.client.apis.ConfigurationsApi;
import com.affinidi.tdk.iota.client.auth.ApiKeyAuth;
import com.affinidi.tdk.iota.client.models.IotaConfigurationDto;
import com.affinidi.tdk.iota.client.models.CreateIotaConfigurationInput;
import com.affinidi.tdk.iota.client.ApiClient;

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

    ConfigurationsApi apiInstance = new ConfigurationsApi(defaultClient);

    CreateIotaConfigurationInput requestInput = new CreateIotaConfigurationInput()
        .name("Sample App")
        .walletAri("<WALLET_ARI>")
        .iotaResponseWebhookURL("http://localhost");

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

deleteIotaConfigurationById

Deletes an existing Affinidi Iota Framework configuration by ID.

Parameters

configurationId String Required
ID of the Iota configuration to delete.

Example

import com.affinidi.tdk.iota.client.Configuration;
import com.affinidi.tdk.iota.client.apis.ConfigurationsApi;
import com.affinidi.tdk.iota.client.auth.ApiKeyAuth;
import com.affinidi.tdk.iota.client.ApiClient;

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

    ConfigurationsApi apiInstance = new ConfigurationsApi(defaultClient);
    apiInstance.deleteIotaConfigurationById("<CONFIG_ID>");
} catch (Exception e) {
    e.printStackTrace();
}

getIotaConfigurationById

Retrieves an existing Affinidi Iota Framework configuration by ID.

Parameters

configurationId String Required
ID of the Iota configuration to retrieve.

Example

import com.affinidi.tdk.iota.client.Configuration;
import com.affinidi.tdk.iota.client.apis.ConfigurationsApi;
import com.affinidi.tdk.iota.client.auth.ApiKeyAuth;
import com.affinidi.tdk.iota.client.models.IotaConfigurationDto;
import com.affinidi.tdk.iota.client.ApiClient;

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

    ConfigurationsApi apiInstance = new ConfigurationsApi(defaultClient);
    IotaConfigurationDto result = apiInstance.getIotaConfigurationById("<CONFIG_ID>");
    System.out.println(result.toString());
} catch (Exception e) {
    e.printStackTrace();
}

getIotaConfigurationMetaData

Retrieves the metadata of an existing Affinidi Iota Framework configuration.

Parameters

projectId String Required
ID of the project where the configuration was created.
configurationId String Required
ID of the Iota configuration.

Example

import com.affinidi.tdk.iota.client.Configuration;
import com.affinidi.tdk.iota.client.apis.ConfigurationsApi;
import com.affinidi.tdk.iota.client.auth.ApiKeyAuth;
import com.affinidi.tdk.iota.client.models.GetIotaConfigurationMetaDataOK;
import com.affinidi.tdk.iota.client.ApiClient;

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

    ConfigurationsApi apiInstance = new ConfigurationsApi(defaultClient);
    GetIotaConfigurationMetaDataOK result = apiInstance.getIotaConfigurationMetaData("<PROJECT_ID>", "<CONFIG_ID>");
    System.out.println(result.toString());
} catch (Exception e) {
    e.printStackTrace();
}

listIotaConfigurations

Lists all Affinidi Iota Framework configurations.

No parameters required.

Example

import com.affinidi.tdk.iota.client.Configuration;
import com.affinidi.tdk.iota.client.apis.ConfigurationsApi;
import com.affinidi.tdk.iota.client.auth.ApiKeyAuth;
import com.affinidi.tdk.iota.client.models.ListConfigurationOK;
import com.affinidi.tdk.iota.client.ApiClient;

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

    ConfigurationsApi apiInstance = new ConfigurationsApi(defaultClient);
    ListConfigurationOK result = apiInstance.listIotaConfigurations();
    System.out.println(result.toString());
} catch (Exception e) {
    e.printStackTrace();
}

updateIotaConfigurationById

Updates an existing Affinidi Iota Framework configuration by ID.

Parameters

configurationId String Required
ID of the Iota configuration to update.
updateConfigurationByIdInput UpdateConfigurationByIdInput Required
Updated configuration details.

Example

import com.affinidi.tdk.iota.client.Configuration;
import com.affinidi.tdk.iota.client.apis.ConfigurationsApi;
import com.affinidi.tdk.iota.client.auth.ApiKeyAuth;
import com.affinidi.tdk.iota.client.models.IotaConfigurationDto;
import com.affinidi.tdk.iota.client.models.UpdateConfigurationByIdInput;
import com.affinidi.tdk.iota.client.ApiClient;

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

    ConfigurationsApi apiInstance = new ConfigurationsApi(defaultClient);

    UpdateConfigurationByIdInput requestInput = new UpdateConfigurationByIdInput()
        .name("Sample App")
        .walletAri("<WALLET_ARI>")
        .iotaResponseWebhookURL("http://localhost");

    IotaConfigurationDto result = apiInstance.updateIotaConfigurationById("<CONFIG_ID>", requestInput);
    System.out.println(result.toString());
} catch (Exception e) {
    e.printStackTrace();
}

Iota API

Generate access token required to access the Affinidi Iota Framework.

awsExchangeCredentials

Exchanges a limited token into a Cognito token.

Parameters

awsExchangeCredentials AwsExchangeCredentials Required
JWT assertion string.

Example

import com.affinidi.tdk.iota.client.Configuration;
import com.affinidi.tdk.iota.client.apis.IotaApi;
import com.affinidi.tdk.iota.client.auth.ApiKeyAuth;
import com.affinidi.tdk.iota.client.models.AwsExchangeCredentials;
import com.affinidi.tdk.iota.client.models.AwsExchangeCredentialsOK;
import com.affinidi.tdk.iota.client.ApiClient;

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

    IotaApi apiInstance = new IotaApi(defaultClient);

    AwsExchangeCredentials requestInput = new AwsExchangeCredentials()
        .assertion("<JWT_STRING>");

    AwsExchangeCredentialsOK result = apiInstance.awsExchangeCredentials(requestInput);
    System.out.println(result);
} catch (Exception e) {
    e.printStackTrace();
}

initiateDataSharingRequest

Initiates a data-sharing request for Affinidi Iota Framework and returns the signed request token.

Parameters

initiateDataSharingRequestInput InitiateDataSharingRequestInput Required
Configuration ID, mode, query ID, correlation ID, nonce, and redirect URI.

Example

import com.affinidi.tdk.iota.client.Configuration;
import com.affinidi.tdk.iota.client.apis.IotaApi;
import com.affinidi.tdk.iota.client.auth.ApiKeyAuth;
import com.affinidi.tdk.iota.client.models.InitiateDataSharingRequestInput;
import com.affinidi.tdk.iota.client.models.InitiateDataSharingRequestOK;
import com.affinidi.tdk.iota.client.ApiClient;

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

    IotaApi apiInstance = new IotaApi(defaultClient);

    InitiateDataSharingRequestInput requestInput = new InitiateDataSharingRequestInput()
        .configurationId("<IOTA_CONFIGURATION_ID>")
        .mode(InitiateDataSharingRequestInput.ModeEnum.REDIRECT)
        .queryId("<IOTA_CONFIGURATION_QUERY_ID>")
        .correlationId("<uuid4_string>")
        .nonce("<NONCE_FROM_FRONTEND>")
        .redirectUri("<IOTA_CONFIGURATION_REDIRECT_URL>");

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

fetchIotaVpResponse

Fetches the callback response from Affinidi Vault.

Parameters

fetchIOTAVPResponseInput FetchIOTAVPResponseInput Required
Configuration ID, correlation ID, transaction ID, and response code.

Example

import com.affinidi.tdk.iota.client.Configuration;
import com.affinidi.tdk.iota.client.apis.IotaApi;
import com.affinidi.tdk.iota.client.auth.ApiKeyAuth;
import com.affinidi.tdk.iota.client.models.FetchIOTAVPResponseInput;
import com.affinidi.tdk.iota.client.models.FetchIOTAVPResponseOK;
import com.affinidi.tdk.iota.client.ApiClient;

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

    IotaApi apiInstance = new IotaApi(defaultClient);

    FetchIOTAVPResponseInput requestInput = new FetchIOTAVPResponseInput()
        .configurationId("<IOTA_CONFIGURATION_ID>")
        .correlationId("<CORRELATION_ID_FROM_LOCAL_STORAGE>")
        .transactionId("<TRANSACTION_ID_FROM_LOCAL_STORAGE>")
        .responseCode("<RESPONSE_CODE_FROM_REDIRECT>");

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

Default API

Manage logged consent from Affinidi Iota Framework.

listLoggedConsents

Returns the list of logged consents for the project.

Parameters

configurationId String Optional
Filter by Iota configuration ID.
userId String Optional
Filter by user ID.
limit Integer Optional
Maximum number of records to return.
exclusiveStartKey String Optional
Base64url-encoded key of the first item for the next page of results.

Example

import com.affinidi.tdk.iota.client.Configuration;
import com.affinidi.tdk.iota.client.apis.DefaultApi;
import com.affinidi.tdk.iota.client.auth.ApiKeyAuth;
import com.affinidi.tdk.iota.client.models.ListLoggedConsentsOK;
import com.affinidi.tdk.iota.client.ApiClient;

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

    DefaultApi apiInstance = new DefaultApi(defaultClient);
    ListLoggedConsentsOK result = apiInstance.listLoggedConsents("<CONFIG_ID>", "<USER_ID>", 56, null);
    System.out.println(result.toString());
} catch (Exception e) {
    e.printStackTrace();
}

Callback API

Manage logged consent from Affinidi Iota Framework.

iotOIDC4VPCallback

Handles callback from clients with data from OID4VP transactions, including states, presentation submission, and verification tokens.

Parameters

callbackInput CallbackInput Required
Callback data from the client including state, presentation submission, VP token, and error details.

Example

import com.affinidi.tdk.iota.client.Configuration;
import com.affinidi.tdk.iota.client.apis.CallbackApi;
import com.affinidi.tdk.iota.client.auth.ApiKeyAuth;
import com.affinidi.tdk.iota.client.models.CallbackInput;
import com.affinidi.tdk.iota.client.models.CallbackResponseOK;
import com.affinidi.tdk.iota.client.ApiClient;

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

    CallbackApi apiInstance = new CallbackApi(defaultClient);

    CallbackInput requestInput = new CallbackInput()
        .state("<RANDOM_STRING>")
        .presentationSubmission("<PRESENTATION_SUBMISSION_OBJECT>")
        .vpToken("<VERIFIABLE_PRESENTATION_OBJECT>")
        .onboarded(true);

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

PexQuery API

Manage Presentation Exchange (PEX) query definitions within Affinidi Iota Framework configurations.

createPexQuery

Creates a Presentation Definition in an Iota configuration.

Parameters

configurationId String Required
ID of the Iota configuration.
createPexQueryInput CreatePexQueryInput Required
Query name and VP definition JSON string.

Example

import com.affinidi.tdk.iota.client.Configuration;
import com.affinidi.tdk.iota.client.apis.PexQueryApi;
import com.affinidi.tdk.iota.client.auth.ApiKeyAuth;
import com.affinidi.tdk.iota.client.models.CreatePexQueryInput;
import com.affinidi.tdk.iota.client.models.PexQueryDto;
import com.affinidi.tdk.iota.client.ApiClient;

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

    PexQueryApi apiInstance = new PexQueryApi(defaultClient);

    CreatePexQueryInput requestInput = new CreatePexQueryInput()
        .name("Request Data")
        .vpDefinition("{PRESENTATION_DEFINITION_JSON_STRING}");

    PexQueryDto result = apiInstance.createPexQuery("<CONFIG_ID>", requestInput);
    System.out.println(result.toString());
} catch (Exception e) {
    e.printStackTrace();
}

deletePexQueryById

Deletes a Presentation Definition by query ID from an Iota configuration.

Parameters

configurationId String Required
ID of the Iota configuration.
queryId String Required
ID of the Presentation Definition to delete.

Example

import com.affinidi.tdk.iota.client.Configuration;
import com.affinidi.tdk.iota.client.apis.PexQueryApi;
import com.affinidi.tdk.iota.client.auth.ApiKeyAuth;
import com.affinidi.tdk.iota.client.ApiClient;

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

    PexQueryApi apiInstance = new PexQueryApi(defaultClient);
    apiInstance.deletePexQueryById("<CONFIG_ID>", "<QUERY_ID>");
} catch (Exception e) {
    e.printStackTrace();
}

getPexQueryById

Retrieves a Presentation Definition by query ID from an Iota configuration.

Parameters

configurationId String Required
ID of the Iota configuration.
queryId String Required
ID of the Presentation Definition to retrieve.

Example

import com.affinidi.tdk.iota.client.Configuration;
import com.affinidi.tdk.iota.client.apis.PexQueryApi;
import com.affinidi.tdk.iota.client.auth.ApiKeyAuth;
import com.affinidi.tdk.iota.client.models.PexQueryDto;
import com.affinidi.tdk.iota.client.ApiClient;

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

    PexQueryApi apiInstance = new PexQueryApi(defaultClient);
    PexQueryDto result = apiInstance.getPexQueryById("<CONFIG_ID>", "<QUERY_ID>");
    System.out.println(result.toString());
} catch (Exception e) {
    e.printStackTrace();
}

listPexQueries

Retrieves all Presentation Definitions in an Iota configuration.

Parameters

configurationId String Required
ID of the Iota configuration.

Example

import com.affinidi.tdk.iota.client.Configuration;
import com.affinidi.tdk.iota.client.apis.PexQueryApi;
import com.affinidi.tdk.iota.client.auth.ApiKeyAuth;
import com.affinidi.tdk.iota.client.models.ListPexQueriesOK;
import com.affinidi.tdk.iota.client.ApiClient;

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

    PexQueryApi apiInstance = new PexQueryApi(defaultClient);
    ListPexQueriesOK result = apiInstance.listPexQueries("<CONFIG_ID>", 56, null);
    System.out.println(result.toString());
} catch (Exception e) {
    e.printStackTrace();
}

updatePexQueryById

Updates a Presentation Definition by query ID in an Iota configuration.

Parameters

configurationId String Required
ID of the Iota configuration.
queryId String Required
ID of the Presentation Definition to update.
updatePexQueryInput UpdatePexQueryInput Required
Updated VP definition JSON string.

Example

import com.affinidi.tdk.iota.client.Configuration;
import com.affinidi.tdk.iota.client.apis.PexQueryApi;
import com.affinidi.tdk.iota.client.auth.ApiKeyAuth;
import com.affinidi.tdk.iota.client.models.PexQueryDto;
import com.affinidi.tdk.iota.client.models.UpdatePexQueryInput;
import com.affinidi.tdk.iota.client.ApiClient;

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

    PexQueryApi apiInstance = new PexQueryApi(defaultClient);

    UpdatePexQueryInput requestInput = new UpdatePexQueryInput()
        .vpDefinition("{PRESENTATION_DEFINITION_JSON_STRING}");

    PexQueryDto result = apiInstance.updatePexQueryById("<CONFIG_ID>", "<QUERY_ID>", requestInput);
    System.out.println(result.toString());
} catch (Exception e) {
    e.printStackTrace();
}