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>

You can check the latest version of this module on the Maven repository or view the source code at the GitHub repository.

Classes and Methods

Configurations API

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

createIotaConfiguration

Create an Affinidi Iota Framework configuration.

Parameters

CreateIotaConfigurationInput [Object]

JSON object to provide the configuration details. See more here.

Example

import com.affinidi.tdk.authProvider.AuthProvider;
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

Delete existing Affinidi Iota Framework configuration by ID.

Parameters

configurationId [String]

ID of the Affinidi Iota Configuration to delete.

Example

import com.affinidi.tdk.authProvider.AuthProvider;
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);

    String configurationId = "<Config_ID>";
    
    apiInstance.deleteIotaConfigurationById(configurationId);

} catch (Exception e) {
    e.printStackTrace();
}

getIotaConfigurationById

Retrieves existing Affinidi Iota Framework by ID.

Parameters

configurationId [String]

ID of the Affinidi Iota Configuration to delete.

Example

import com.affinidi.tdk.authProvider.AuthProvider;
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);

    String configurationId = "<Config_ID>";

    IotaConfigurationDto result = apiInstance.getIotaConfigurationById(configurationId);

    System.out.println(result.toString());

} catch (Exception e) {
    e.printStackTrace();
}

getIotaConfigurationMetaData

Retrieves the Metadata of the existing Affinidi Iota Framework.

Parameters

projectId [String]

Project ID where the Affinidi Iota Framework was created.

configurationId [String]

ID of the existing Affinidi Iota Framework Configuration.

Example

import com.affinidi.tdk.authProvider.AuthProvider;
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);

    String projectId = "<Project_ID>";
    String configurationId = "<Config_ID>";

    GetIotaConfigurationMetaDataOK result = apiInstance.getIotaConfigurationMetaData(projectId, configurationId);


    System.out.println(result.toString());

} catch (Exception e) {
    e.printStackTrace();
}

listIotaConfigurations

List all the Affinidi Iota Framework configurations.

Parameters

No Parameters Required

Example

import com.affinidi.tdk.authProvider.AuthProvider;
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

Update an existing Affinidi Iota Framework by ID.

Parameters

configurationId [String]

ID of the existing Affinidi Iota Framework Configuration.

UpdateConfigurationByIdInput [Object]

JSON object to provide the configuration details. See more here.

Example

import com.affinidi.tdk.authProvider.AuthProvider;
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);

    String configurationId = "<Config_ID>";

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

    IotaConfigurationDto result = apiInstance.updateIotaConfigurationById(configurationId, resultInput);

    System.out.println(result.toString());

} catch (Exception e) {
    e.printStackTrace();
}

Iota API

Generate access token required to access the Affinidi Iota Framework.

awsExchangeCredentials

Exchanges limited token into a Cognito token.

Parameters

AwsExchangeCredentials [String]

JWT string. See more here.

Example

import com.affinidi.tdk.authProvider.AuthProvider;
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 requesInput = new AwsExchangeCredentials()
                .assertion("JWT_STRING");
    AwsExchangeCredentialsOK result = apiInstance.awsExchangeCredentials(requesInput);

    System.out.println(result);

} catch (Exception e) {
    e.printStackTrace();
}

initiateDataSharingRequest

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

Parameters

InitiateDataSharingRequestInput [Object]

JSON object to provide the required details to initiate data sharing request. See more here.

Example

import com.affinidi.tdk.authProvider.AuthProvider;
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

Fetch the callback response from Affinidi Vault.

Parameters

FetchIOTAVPResponseInput [Object]

JSON object to provide the required details to the callback response. See more here.

Example

import com.affinidi.tdk.authProvider.AuthProvider;
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]

Returns logged consent for the particular configuration.

userId [String]

Returns logged consent for the particular user.

limit [Integer]

Maximum number of records to fetch in a list.

exclusiveStartKey [String]

The base64url encoded key of the first item that this operation will evaluate (it is not returned). Use the value that was returned in the previous operation.

Example

import com.affinidi.tdk.authProvider.AuthProvider;
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);

    String configurationId = "<Config_ID>";
    String userId = "<User_ID>";
    Integer limit = 56; 
    String exclusiveStartKey = null;

    ListLoggedConsentsOK result = apiInstance.listLoggedConsents(configurationId, userId, limit, exclusiveStartKey);
                

    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 the OID4VP transactions, including states, presentation submission, and verification tokens.

Parameters

CallbackInput [Object]

JSON object to provide the Callback data from the client. See more here.

Example

import com.affinidi.tdk.authProvider.AuthProvider;
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 requesInput = new CallbackInput()
        .state("<RANDOM_STRING>")
        .presentationSubmission("<PRESENTATIN_SUBMISSION_OBJECT>")
        .vpToken("<VERIFIABLE_PRESENTATION_OBJECT>")
        .error("<ERROR>")
        .errorDescription("<ERROR_DESCRIPTION>")
        .onboarded(true);

    CallbackResponseOK result = apiInstance.iotOIDC4VPCallback(requesInput);

    System.out.println(result.toString());

} catch (Exception e) {
    e.printStackTrace();
}

PexQueryAPI

createPexQuery

Creates a Presentation Definition in the Iota Configuration.

Parameters

configurationId [String]

ID of the existing Affinidi Iota Framework Configuration.

CreatePexQueryInput [Object]

JSON object to provide the PEX query details. See more here.

Example

import com.affinidi.tdk.authProvider.AuthProvider;
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);

    String configurationId = "Config_ID";

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

    PexQueryDto result = apiInstance.createPexQuery(configurationId, requestInput);

    System.out.println(result.toString());

} catch (Exception e) {
    e.printStackTrace();
}

deletePexQueryById

Deletes a Presentation Definition based on the queryId from the Iota Configuration.

Parameters

configurationId [String]

ID of the existing Affinidi Iota Framework Configuration.

queryId [String]

ID of the existing Presentation Definition of the Affinidi Iota Configuration.

Example

import com.affinidi.tdk.authProvider.AuthProvider;
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);

    String configurationId = "<Config_ID>";
    String queryId = "<Query_ID>";

   apiInstance.deletePexQueryById(configurationId, queryId);

} catch (Exception e) {
    e.printStackTrace();
}

getPexQueryById

Retrieves a Presentation Definition based on the queryId from the Iota Configuration.

Parameters

configurationId [String]

ID of the existing Affinidi Iota Framework Configuration.

queryId [String]

ID of the existing Presentation Definition of the Affinidi Iota Configuration.

Example

import com.affinidi.tdk.authProvider.AuthProvider;
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);

    String configurationId = "<Config_ID>";
    String queryId = "<Query_ID>";
           
    PexQueryDto result = apiInstance.getPexQueryById(configurationId, queryId);
                
    System.out.println(result.toString());

} catch (Exception e) {
    e.printStackTrace();
}

listPexQueries

Retrieves all Presentation Definition in the Iota Configuration.

Parameters

configurationId [String]

ID of the existing Affinidi Iota Framework Configuration.

Example

import com.affinidi.tdk.authProvider.AuthProvider;
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);

    String configurationId = "<Config_ID>";
    Integer limit = 56;
    String exclusiveStartKey = null;
            
           
    ListPexQueriesOK result = apiInstance.listPexQueries(configurationId, limit, exclusiveStartKey);
                

    System.out.println(result.toString());

} catch (Exception e) {
        e.printStackTrace();
}

updatePexQueryById

Updates a Presentation Definition based on the queryId from the Iota Configuration.

Parameters

configurationId [String]

ID of the existing Affinidi Iota Framework Configuration.

queryId [String]

ID of the existing Presentation Definition of the Affinidi Iota Configuration.

UpdatePexQueryInput [Object]

JSON object to provide the PEX query details. See more here.

Example

import com.affinidi.tdk.authProvider.AuthProvider;
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);

    String configurationId = "<Config_ID>";       
    String queryId = "<Query_ID>";
           
    UpdatePexQueryInput requestInput = new UpdatePexQueryInput()
        .vpDefinition("{PRESENTATION_DEFINITION_JSON_STRING}");

    PexQueryDto result = apiInstance.updatePexQueryById(configurationId, queryId, requestInput);
                
    System.out.println(result.toString());

} catch (Exception e) {
    e.printStackTrace();
}