# Affinidi Iota Framework

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

## Install Dependency

Package: affinidi_tdk_iota_client

```bash
pip install affinidi_tdk_iota_client
```

Check the latest version on the [PyPI repository](https://pypi.org/project/affinidi_tdk_iota_client/) or view the source on [GitHub](https://github.com/affinidi/affinidi-tdk/tree/main/clients/python/iota_client).

## Classes and Methods

### Configurations API

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

#### create_iota_configuration

Creates an Affinidi Iota Framework configuration.

Parameters

    create_iota_configuration_input
    [CreateIotaConfigurationInput](https://github.com/affinidi/affinidi-tdk/blob/main/clients/python/iota_client/docs/CreateIotaConfigurationInput.md)
    Required
  Configuration details, including name, wallet ARI, and optional webhook URL.

Example

```python
import affinidi_tdk_iota_client

configuration = affinidi_tdk_iota_client.Configuration()
configuration.api_key['ProjectTokenAuth'] = projectScopedToken

with affinidi_tdk_iota_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_iota_client.ConfigurationsApi(api_client)

    request_json = {
        'name': 'Sample App',
        'walletAri': '',
        'iotaResponseWebhookURL': 'http://localhost',
    }

    create_iota_configuration_input = affinidi_tdk_iota_client.CreateIotaConfigurationInput.from_dict(request_json)
    api_response = api_instance.create_iota_configuration(create_iota_configuration_input=create_iota_configuration_input)
```

#### delete_iota_configuration_by_id

Deletes an Affinidi Iota Framework configuration by ID.

Parameters

    configurationId
    str
    Required
  ID of the Iota configuration to delete.

Example

```python
import affinidi_tdk_iota_client

configuration = affinidi_tdk_iota_client.Configuration()
configuration.api_key['ProjectTokenAuth'] = projectScopedToken

with affinidi_tdk_iota_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_iota_client.ConfigurationsApi(api_client)
    api_instance.delete_iota_configuration_by_id('')
```

#### get_iota_configuration_by_id

Retrieves an Affinidi Iota Framework configuration by ID.

Parameters

    configurationId
    str
    Required
  ID of the Iota configuration to retrieve.

Example

```python
import affinidi_tdk_iota_client

configuration = affinidi_tdk_iota_client.Configuration()
configuration.api_key['ProjectTokenAuth'] = projectScopedToken

with affinidi_tdk_iota_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_iota_client.ConfigurationsApi(api_client)
    api_response = api_instance.get_iota_configuration_by_id('')
```

#### get_iota_configuration_metadata

Retrieves the metadata of an Affinidi Iota Framework configuration.

Parameters

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

    configurationId
    str
    Required
  ID of the Iota configuration.

Example

```python
import affinidi_tdk_iota_client

configuration = affinidi_tdk_iota_client.Configuration()
configuration.api_key['ProjectTokenAuth'] = projectScopedToken

with affinidi_tdk_iota_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_iota_client.ConfigurationsApi(api_client)
    api_response = api_instance.get_iota_configuration_metadata('

', '')
```

#### list_iota_configurations

Returns all Affinidi Iota Framework configurations for the project.

No parameters required.

Example

```python
import affinidi_tdk_iota_client

configuration = affinidi_tdk_iota_client.Configuration()
configuration.api_key['ProjectTokenAuth'] = projectScopedToken

with affinidi_tdk_iota_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_iota_client.ConfigurationsApi(api_client)
    api_response = api_instance.list_iota_configurations()
```

#### update_iota_configuration_by_id

Updates an Affinidi Iota Framework configuration by ID.

Parameters

    configurationId
    str
    Required
  ID of the Iota configuration to update.

    update_iota_configuration_by_id_input
    [UpdateConfigurationByIdInput](https://github.com/affinidi/affinidi-tdk/blob/main/clients/python/iota_client/docs/UpdateConfigurationByIdInput.md)
    Required
  Updated configuration details.

Example

```python
import affinidi_tdk_iota_client

configuration = affinidi_tdk_iota_client.Configuration()
configuration.api_key['ProjectTokenAuth'] = projectScopedToken

with affinidi_tdk_iota_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_iota_client.ConfigurationsApi(api_client)

    request_json = {
        'name': 'Sample App',
        'walletAri': '',
        'iotaResponseWebhookURL': 'http://localhost',
    }

    update_iota_configuration_by_id_input = affinidi_tdk_iota_client.UpdateConfigurationByIdInput.from_dict(request_json)
    api_response = api_instance.update_iota_configuration_by_id('', update_iota_configuration_by_id_input=update_iota_configuration_by_id_input)
```

### Iota API

Generate access token required to access the Affinidi Iota Framework.

#### aws_exchange_credentials

Exchanges a limited token into a Cognito token.

Parameters

    aws_exchange_credentials
    [AwsExchangeCredentials](https://github.com/affinidi/affinidi-tdk/blob/main/clients/python/iota_client/docs/AwsExchangeCredentials.md)
    Required
  JWT assertion string.

Example

```python
import affinidi_tdk_iota_client

configuration = affinidi_tdk_iota_client.Configuration()
configuration.api_key['ProjectTokenAuth'] = projectScopedToken

with affinidi_tdk_iota_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_iota_client.IotaApi(api_client)

    request_json = {
        'assertion': '',
    }

    aws_exchange_credentials = affinidi_tdk_iota_client.AwsExchangeCredentials.from_dict(request_json)
    api_response = api_instance.aws_exchange_credentials(aws_exchange_credentials=aws_exchange_credentials)
```

#### initiate_data_sharing_request

Initiates a data-sharing request and returns the signed request token.

Parameters

    initiate_data_sharing_request_input
    [InitiateDataSharingRequestInput](https://github.com/affinidi/affinidi-tdk/blob/main/clients/python/iota_client/docs/InitiateDataSharingRequestInput.md)
    Required
  Configuration ID, mode, query ID, correlation ID, nonce, and redirect URI.

Example

```python
import affinidi_tdk_iota_client

configuration = affinidi_tdk_iota_client.Configuration()
configuration.api_key['ProjectTokenAuth'] = projectScopedToken

with affinidi_tdk_iota_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_iota_client.IotaApi(api_client)

    request_json = {
        'configurationId': '',
        'mode': 'redirect',
        'queryId': '',
        'correlationId': '',
        'nonce': '',
        'redirectUri': '',
    }

    initiate_data_sharing_request_input = affinidi_tdk_iota_client.InitiateDataSharingRequestInput.from_dict(request_json)
    api_response = api_instance.initiate_data_sharing_request(initiate_data_sharing_request_input)
```

#### fetch_iota_vp_response

Fetches the callback response from Affinidi Vault.

Parameters

    fetch_iota_vp_response_input
    [FetchIOTAVPResponseInput](https://github.com/affinidi/affinidi-tdk/blob/main/clients/python/iota_client/docs/FetchIOTAVPResponseInput.md)
    Required
  Configuration ID, correlation ID, transaction ID, and response code.

Example

```python
import affinidi_tdk_iota_client

configuration = affinidi_tdk_iota_client.Configuration()
configuration.api_key['ProjectTokenAuth'] = projectScopedToken

with affinidi_tdk_iota_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_iota_client.IotaApi(api_client)

    request_json = {
        'configurationId': '',
        'correlationId': '',
        'transactionId': '
',
        'responseCode': '',
    }

    fetch_iota_vp_response_input = affinidi_tdk_iota_client.FetchIOTAVPResponseInput.from_dict(request_json)
    api_response = api_instance.fetch_iota_vp_response(fetch_iota_vp_response_input)
```

### Default API

Manage logged consent from Affinidi Iota Framework.

#### list_logged_consents

Returns the list of logged consents for the project.

Parameters

    configurationId
    str
    Optional
  Filter consents by configuration ID.

    userId
    str
    Optional
  Filter consents by user ID.

    limit
    int
    Optional
  Maximum number of records to return.

    exclusiveStartKey
    str
    Optional
  Base64url-encoded key of the first item that this operation will evaluate (it is not returned). Use the value returned in the previous operation to paginate.

Example

```python
import affinidi_tdk_iota_client

configuration = affinidi_tdk_iota_client.Configuration()
configuration.api_key['ProjectTokenAuth'] = projectScopedToken

with affinidi_tdk_iota_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_iota_client.DefaultApi(api_client)
    api_response = api_instance.list_logged_consents()
```

### Callback API

Manage logged consent from Affinidi Iota Framework.

#### iot_oidc4vp_callback

Handles the callback from clients with OID4VP transaction data.

Parameters

    callback_input
    [CallbackInput](https://github.com/affinidi/affinidi-tdk/blob/main/clients/python/iota_client/docs/CallbackInput.md)
    Required
  Callback data including state, presentation submission, and VP token.

Example

```python
import affinidi_tdk_iota_client

with affinidi_tdk_iota_client.ApiClient() as api_client:
    api_instance = affinidi_tdk_iota_client.CallbackApi(api_client)

    request_json = {
        'state': '',
        'presentation_submission': {},
        'vp_token': {},
    }

    callback_input = affinidi_tdk_iota_client.CallbackInput.from_dict(request_json)
    api_response = api_instance.iot_oidc4vp_callback(callback_input=callback_input)
```

### PexQuery API

Manages Presentation Exchange (PEX) queries for Iota configurations.

#### create_pex_query

Creates a Presentation Definition in an Iota configuration.

Parameters

    configurationId
    str
    Required
  ID of the Iota configuration.

    create_pex_query_input
    [CreatePexQueryInput](https://github.com/affinidi/affinidi-tdk/blob/main/clients/python/iota_client/docs/CreatePexQueryInput.md)
    Required
  PEX query name and Presentation Definition JSON string.

Example

```python
import affinidi_tdk_iota_client

configuration = affinidi_tdk_iota_client.Configuration()
configuration.api_key['ProjectTokenAuth'] = projectScopedToken

with affinidi_tdk_iota_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_iota_client.PexQueryApi(api_client)

    request_json = {
        'name': 'Request Data',
        'vpDefinition': '{PRESENTATION_DEFINITION_JSON_STRING}',
    }

    create_pex_query_input = affinidi_tdk_iota_client.CreatePexQueryInput.from_dict(request_json)
    api_response = api_instance.create_pex_query('', create_pex_query_input=create_pex_query_input)
```

#### delete_pex_query_by_id

Deletes a Presentation Definition from an Iota configuration.

Parameters

    configurationId
    str
    Required
  ID of the Iota configuration.

    queryId
    str
    Required
  ID of the Presentation Definition to delete.

Example

```python
import affinidi_tdk_iota_client

configuration = affinidi_tdk_iota_client.Configuration()
configuration.api_key['ProjectTokenAuth'] = projectScopedToken

with affinidi_tdk_iota_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_iota_client.PexQueryApi(api_client)
    api_response = api_instance.delete_pex_query_by_id('', '')
```

#### get_pex_query_by_id

Retrieves a Presentation Definition from an Iota configuration by ID.

Parameters

    configurationId
    str
    Required
  ID of the Iota configuration.

    queryId
    str
    Required
  ID of the Presentation Definition to retrieve.

Example

```python
import affinidi_tdk_iota_client

configuration = affinidi_tdk_iota_client.Configuration()
configuration.api_key['ProjectTokenAuth'] = projectScopedToken

with affinidi_tdk_iota_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_iota_client.PexQueryApi(api_client)
    api_response = api_instance.get_pex_query_by_id('', '')
```

#### list_pex_queries

Retrieves all Presentation Definitions in an Iota configuration.

Parameters

    configurationId
    str
    Required
  ID of the Iota configuration.

Example

```python
import affinidi_tdk_iota_client

configuration = affinidi_tdk_iota_client.Configuration()
configuration.api_key['ProjectTokenAuth'] = projectScopedToken

with affinidi_tdk_iota_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_iota_client.PexQueryApi(api_client)
    api_response = api_instance.list_pex_queries('')
```

#### update_pex_query_by_id

Updates a Presentation Definition in an Iota configuration.

Parameters

    configurationId
    str
    Required
  ID of the Iota configuration.

    queryId
    str
    Required
  ID of the Presentation Definition to update.

    update_pex_query_input
    [UpdatePexQueryInput](https://github.com/affinidi/affinidi-tdk/blob/main/clients/python/iota_client/docs/UpdatePexQueryInput.md)
    Required
  Updated Presentation Definition JSON string.

Example

```python
import affinidi_tdk_iota_client

configuration = affinidi_tdk_iota_client.Configuration()
configuration.api_key['ProjectTokenAuth'] = projectScopedToken

with affinidi_tdk_iota_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_iota_client.PexQueryApi(api_client)

    request_json = {
        'vpDefinition': '{PRESENTATION_DEFINITION_JSON_STRING}',
    }

    update_pex_query_input = affinidi_tdk_iota_client.UpdatePexQueryInput.from_dict(request_json)
    api_response = api_instance.update_pex_query_by_id('', '', update_pex_query_input=update_pex_query_input)
```
