# Affinidi Iota Framework

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

## Install Dependency

Package: AffinidiTdk.IotaClient

```bash
dotnet add package AffinidiTdk.IotaClient
```

Check the latest version on [nuget.org](https://www.nuget.org/packages/AffinidiTdk.IotaClient) or view the source on [GitHub](https://github.com/affinidi/affinidi-tdk-dotnet/tree/main/src/Clients/IotaClient).

## 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](https://github.com/affinidi/affinidi-tdk-dotnet/blob/main/src/Clients/IotaClient/docs/CreateIotaConfigurationInput.md)
    Required
  JSON object to provide the configuration details.

Example

```csharp
using AffinidiTdk.IotaClient.Api;
using AffinidiTdk.IotaClient.Client;
using AffinidiTdk.IotaClient.Model;

Configuration config = new Configuration();

config.AddApiKey("authorization", projectScopedToken);

ConfigurationsApi api = new ConfigurationsApi(config);

CreateIotaConfigurationInput input = new CreateIotaConfigurationInput();

IotaConfigurationDto result  = api.CreateIotaConfiguration(input);
```

#### DeleteIotaConfigurationById

Delete existing Affinidi Iota Framework configuration by ID.

Parameters

    configurationId
    String
    Required
  ID of the Affinidi Iota Configuration to delete.

Example

```csharp
using AffinidiTdk.IotaClient.Api;
using AffinidiTdk.IotaClient.Client;
using AffinidiTdk.IotaClient.Model;

Configuration config = new Configuration();

config.AddApiKey("authorization", projectScopedToken);

ConfigurationsApi api = new ConfigurationsApi(config);

var configurationId = "";

api.DeleteIotaConfigurationById(configurationId);
```

#### GetIotaConfigurationById

Retrieves existing Affinidi Iota Framework by ID.

Parameters

    configurationId
    String
    Required
  ID of the Affinidi Iota Configuration to retrieve.

Example

```csharp
using AffinidiTdk.IotaClient.Api;
using AffinidiTdk.IotaClient.Client;
using AffinidiTdk.IotaClient.Model;

Configuration config = new Configuration();

config.AddApiKey("authorization", projectScopedToken);

ConfigurationsApi api = new ConfigurationsApi(config);

var configurationId = "";

IotaConfigurationDto result  = api.GetIotaConfigurationById(configurationId);
```

#### GetIotaConfigurationMetaData

Retrieves the Metadata of the existing Affinidi Iota Framework.

Parameters

    projectId
    String
    Required
  Project ID where the Affinidi Iota Framework was created.

    configurationId
    String
    Required
  ID of the existing Affinidi Iota Framework Configuration.

Example

```csharp
using AffinidiTdk.IotaClient.Api;
using AffinidiTdk.IotaClient.Client;
using AffinidiTdk.IotaClient.Model;

Configuration config = new Configuration();

config.AddApiKey("authorization", projectScopedToken);

ConfigurationsApi api = new ConfigurationsApi(config);

var projectId = "

";
var configurationId = "";

GetIotaConfigurationMetaDataOK result  = api.GetIotaConfigurationMetaData(projectId, configurationId);
```

#### ListIotaConfigurations

List all the Affinidi Iota Framework configurations.

No parameters required.

Example

```csharp
using AffinidiTdk.IotaClient.Api;
using AffinidiTdk.IotaClient.Client;
using AffinidiTdk.IotaClient.Model;

Configuration config = new Configuration();

config.AddApiKey("authorization", projectScopedToken);

ConfigurationsApi api = new ConfigurationsApi(config);

ListConfigurationOK result  = api.ListIotaConfigurations();
```

#### UpdateIotaConfigurationById

Update an existing Affinidi Iota Framework by ID.

Parameters

    configurationId
    String
    Required
  ID of the existing Affinidi Iota Framework Configuration.

    UpdateConfigurationByIdInput
    [Object](https://github.com/affinidi/affinidi-tdk/blob/main/clients/java/iota.client/docs/UpdateConfigurationByIdInput.md)
    Required
  JSON object to provide the configuration details.

Example

```csharp
using AffinidiTdk.IotaClient.Api;
using AffinidiTdk.IotaClient.Client;
using AffinidiTdk.IotaClient.Model;

Configuration config = new Configuration();

config.AddApiKey("authorization", projectScopedToken);

ConfigurationsApi api = new ConfigurationsApi(config);

var configurationId = "";

UpdateConfigurationByIdInput input = new UpdateConfigurationByIdInput();

IotaConfigurationDto result  = api.UpdateIotaConfigurationById(configurationId, input);
```

### Iota API

Generate access token required to access the Affinidi Iota Framework.

#### AwsExchangeCredentials

Exchanges limited token into a Cognito token.

Parameters

    AwsExchangeCredentials
    [String](https://github.com/affinidi/affinidi-tdk-dotnet/blob/main/src/Clients/IotaClient/docs/AwsExchangeCredentials.md)
    Required
  JWT string.

Example

```csharp
using AffinidiTdk.IotaClient.Api;
using AffinidiTdk.IotaClient.Client;
using AffinidiTdk.IotaClient.Model;

Configuration config = new Configuration();

config.AddApiKey("authorization", projectScopedToken);

IotaApi api = new IotaApi(config);

AwsExchangeCredentials input = new AwsExchangeCredentials();

AwsExchangeCredentialsOK result  = api.AwsExchangeCredentials(input);
```

#### InitiateDataSharingRequest

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

Parameters

    InitiateDataSharingRequestInput
    [Object](https://github.com/affinidi/affinidi-tdk-dotnet/blob/main/src/Clients/IotaClient/docs/InitiateDataSharingRequestInput.md)
    Required
  JSON object to provide the required details to initiate data sharing request.

Example

```csharp
using AffinidiTdk.IotaClient.Api;
using AffinidiTdk.IotaClient.Client;
using AffinidiTdk.IotaClient.Model;

Configuration config = new Configuration();

config.AddApiKey("authorization", projectScopedToken);

IotaApi api = new IotaApi(config);

InitiateDataSharingRequestInput input = new InitiateDataSharingRequestInput();

InitiateDataSharingRequestOK result  = api.InitiateDataSharingRequest(input);
```

#### FetchIotaVpResponse

Fetch the callback response from Affinidi Vault.

Parameters

    FetchIOTAVPResponseInput
    [Object](https://github.com/affinidi/affinidi-tdk/blob/main/clients/java/iota.client/docs/FetchIOTAVPResponseInput.md)
    Required
  JSON object to provide the required details to the callback response.

Example

```csharp
using AffinidiTdk.IotaClient.Api;
using AffinidiTdk.IotaClient.Client;
using AffinidiTdk.IotaClient.Model;

Configuration config = new Configuration();

config.AddApiKey("authorization", projectScopedToken);

IotaApi api = new IotaApi(config);

FetchIOTAVPResponseInput input = new FetchIOTAVPResponseInput();

FetchIOTAVPResponseOK result  = api.FetchIotaVpResponse(input);
```

### Default API

Manage logged consent from Affinidi Iota Framework.

#### ListLoggedConsents

Returns the list of logged consents for the project.

Parameters

    configurationId
    String
    Required
  Returns logged consent for the particular configuration.

    userId
    String
    Required
  Returns logged consent for the particular user.

    limit
    Integer
    Required
  Maximum number of records to fetch in a list.

    exclusiveStartKey
    String
    Required
  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

```csharp
using AffinidiTdk.IotaClient.Api;
using AffinidiTdk.IotaClient.Client;
using AffinidiTdk.IotaClient.Model;

Configuration config = new Configuration();

config.AddApiKey("authorization", projectScopedToken);

DefaultApi api = new DefaultApi(config);

var configurationId = "";
var userId = "";
var limit = 56;
var exclusiveStartKey = "exclusiveStartKey_example";

ListLoggedConsentsOK result  = api.ListLoggedConsents(configurationId, userId, limit, exclusiveStartKey);
```

### 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](https://github.com/affinidi/affinidi-tdk-dotnet/blob/main/src/Clients/IotaClient/docs/CallbackInput.md)
    Required
  JSON object to provide the Callback data from the client.

Example

```csharp
using AffinidiTdk.IotaClient.Api;
using AffinidiTdk.IotaClient.Client;
using AffinidiTdk.IotaClient.Model;

Configuration config = new Configuration();
config.AddApiKey("authorization", projectScopedToken);

CallbackApi api = new CallbackApi(config);
CallbackInput input = new CallbackInput();

CallbackResponseOK result  = api.IotOIDC4VPCallback(input);
```

### PexQueryAPI

#### CreatePexQuery

Creates a Presentation Definition in the Iota Configuration.

Parameters

    configurationId
    String
    Required
  ID of the existing Affinidi Iota Framework Configuration.

    CreatePexQueryInput
    [Object](https://github.com/affinidi/affinidi-tdk-dotnet/blob/main/src/Clients/IotaClient/docs/CreatePexQueryInput.md)
    Required
  JSON object to provide the PEX query details.

Example

```csharp
using AffinidiTdk.IotaClient.Api;
using AffinidiTdk.IotaClient.Client;
using AffinidiTdk.IotaClient.Model;

Configuration config = new Configuration();

config.AddApiKey("authorization", projectScopedToken);

PexQueryApi api = new PexQueryApi(config);

var configurationId = "";
CreatePexQueryInput input = new CreatePexQueryInput();

PexQueryDto result  = api.CreatePexQuery(configurationId, input);
```

#### DeletePexQueryById

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

Parameters

    configurationId
    String
    Required
  ID of the existing Affinidi Iota Framework Configuration.

    queryId
    String
    Required
  ID of the existing Presentation Definition of the Affinidi Iota Configuration.

Example

```csharp
using AffinidiTdk.IotaClient.Api;
using AffinidiTdk.IotaClient.Client;
using AffinidiTdk.IotaClient.Model;

Configuration config = new Configuration();

config.AddApiKey("authorization", projectScopedToken);

PexQueryApi api = new PexQueryApi(config);

var configurationId = "";
var queryId = "";

api.DeletePexQueryById(configurationId, queryId);
```

#### GetPexQueryById

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

Parameters

    configurationId
    String
    Required
  ID of the existing Affinidi Iota Framework Configuration.

    queryId
    String
    Required
  ID of the existing Presentation Definition of the Affinidi Iota Configuration.

Example

```csharp
using AffinidiTdk.IotaClient.Api;
using AffinidiTdk.IotaClient.Client;
using AffinidiTdk.IotaClient.Model;

Configuration config = new Configuration();

config.AddApiKey("authorization", projectScopedToken);

PexQueryApi api = new PexQueryApi(config);

var configurationId = "";
var queryId = "";

PexQueryDto result = api.GetPexQueryById(configurationId, queryId);
```

#### ListPexQueries

Retrieves all Presentation Definition in the Iota Configuration.

Parameters

    configurationId
    String
    Required
  ID of the existing Affinidi Iota Framework Configuration.

Example

```csharp
using AffinidiTdk.IotaClient.Api;
using AffinidiTdk.IotaClient.Client;
using AffinidiTdk.IotaClient.Model;

Configuration config = new Configuration();

config.AddApiKey("authorization", projectScopedToken);

PexQueryApi api = new PexQueryApi(config);

var configurationId = "";

ListPexQueriesOK result = api.ListPexQueries(configurationId);
```

#### UpdatePexQueryById

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

Parameters

    configurationId
    String
    Required
  ID of the existing Affinidi Iota Framework Configuration.

    queryId
    String
    Required
  ID of the existing Presentation Definition of the Affinidi Iota Configuration.

    UpdatePexQueryInput
    [Object](https://github.com/affinidi/affinidi-tdk-dotnet/blob/main/src/Clients/IotaClient/docs/UpdatePexQueryInput.md)
    Required
  JSON object to provide the PEX query details.

Example

```csharp
using AffinidiTdk.IotaClient.Api;
using AffinidiTdk.IotaClient.Client;
using AffinidiTdk.IotaClient.Model;

Configuration config = new Configuration();

config.AddApiKey("authorization", projectScopedToken);

PexQueryApi api = new PexQueryApi(config);

var configurationId = "";
var queryId = "";
UpdatePexQueryInput input = new UpdatePexQueryInput();

PexQueryDto result = api.UpdatePexQueryById(configurationId, queryId, input);
```
