# Affinidi Iota Framework

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

## Install Dependency

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

```xml

    com.affinidi.tdk
    iota.client

```

Check the latest version on the [Maven Central repository](https://central.sonatype.com/artifact/com.affinidi.tdk/iota.client) or view the source on [GitHub](https://github.com/affinidi/affinidi-tdk/tree/main/clients/java/iota.client).

## 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](https://github.com/affinidi/affinidi-tdk/blob/main/clients/java/iota.client/docs/CreateIotaConfigurationInput.md)
    Required
  Configuration details including name, wallet ARI, and webhook URL.

Example

```java
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("")
        .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

```java
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("");
} 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

```java
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("");
    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

```java
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("

", "");
    System.out.println(result.toString());
} catch (Exception e) {
    e.printStackTrace();
}
```

#### listIotaConfigurations

Lists all Affinidi Iota Framework configurations.

No parameters required.

Example

```java
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](https://github.com/affinidi/affinidi-tdk/blob/main/clients/java/iota.client/docs/UpdateConfigurationByIdInput.md)
    Required
  Updated configuration details.

Example

```java
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("")
        .iotaResponseWebhookURL("http://localhost");

    IotaConfigurationDto result = apiInstance.updateIotaConfigurationById("", 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](https://github.com/affinidi/affinidi-tdk/blob/main/clients/java/iota.client/docs/AwsExchangeCredentials.md)
    Required
  JWT assertion string.

Example

```java
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("");

    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](https://github.com/affinidi/affinidi-tdk/blob/main/clients/java/iota.client/docs/InitiateDataSharingRequestInput.md)
    Required
  Configuration ID, mode, query ID, correlation ID, nonce, and redirect URI.

Example

```java
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("")
        .mode(InitiateDataSharingRequestInput.ModeEnum.REDIRECT)
        .queryId("")
        .correlationId("")
        .nonce("")
        .redirectUri("");

    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](https://github.com/affinidi/affinidi-tdk/blob/main/clients/java/iota.client/docs/FetchIOTAVPResponseInput.md)
    Required
  Configuration ID, correlation ID, transaction ID, and response code.

Example

```java
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("")
        .correlationId("")
        .transactionId("
")
        .responseCode("");

    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

```java
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("", "", 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](https://github.com/affinidi/affinidi-tdk/blob/main/clients/java/iota.client/docs/CallbackInput.md)
    Required
  Callback data from the client including state, presentation submission, VP token, and error details.

Example

```java
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("")
        .presentationSubmission("

")
        .vpToken("")
        .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](https://github.com/affinidi/affinidi-tdk/blob/main/clients/java/iota.client/docs/CreatePexQueryInput.md)
    Required
  Query name and VP definition JSON string.

Example

```java
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("", 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

```java
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("", "");
} 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

```java
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("", "");
    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

```java
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("", 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](https://github.com/affinidi/affinidi-tdk/blob/main/clients/java/iota.client/docs/UpdatePexQueryInput.md)
    Required
  Updated VP definition JSON string.

Example

```java
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("", "", requestInput);
    System.out.println(result.toString());
} catch (Exception e) {
    e.printStackTrace();
}
```
