# Affinidi Iota Framework

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

## Install Dependency

Package: @affinidi-tdk/iota-client

```bash
npm install @affinidi-tdk/iota-client --save
```

Check the latest version on the [npm registry](https://www.npmjs.com/package/@affinidi-tdk/iota-client) or view the source on [GitHub](https://github.com/affinidi/affinidi-tdk/tree/main/clients/typescript/iota-client).

## Classes and Methods

### Configurations API

Manages Affinidi Iota Framework configurations to integrate your application with Affinidi Vault data requests.

#### createIotaConfiguration

Creates an Affinidi Iota Framework configuration.

Parameters

    request
    [CreateIotaConfigurationInput](https://github.com/affinidi/affinidi-tdk/blob/main/clients/typescript/iota-client/docs/CreateIotaConfigurationInput.md)
    Required
  Configuration details including name, wallet ARI, and webhook URL.

Example

```typescript
import { ConfigurationsApi, Configuration, CreateIotaConfigurationInput } from '@affinidi-tdk/iota-client'

const api = new ConfigurationsApi(
  new Configuration({ apiKey: authProvider.fetchProjectScopedToken.bind(authProvider) })
)

const request: CreateIotaConfigurationInput = {
  name: 'Sample App',
  walletAri: '',
  iotaResponseWebhookURL: 'http://localhost',
}

const { data } = await api.createIotaConfiguration(request)
```

#### deleteIotaConfigurationById

Deletes an existing Affinidi Iota Framework configuration by ID.

Parameters

    configurationId
    string
    Required
  ID of the Affinidi Iota configuration to delete.

Example

```typescript
import { ConfigurationsApi, Configuration } from '@affinidi-tdk/iota-client'

const api = new ConfigurationsApi(
  new Configuration({ apiKey: authProvider.fetchProjectScopedToken.bind(authProvider) })
)

await api.deleteIotaConfigurationById('')
```

#### getIotaConfigurationById

Retrieves an existing Affinidi Iota Framework configuration by ID.

Parameters

    configurationId
    string
    Required
  ID of the Affinidi Iota configuration to retrieve.

Example

```typescript
import { ConfigurationsApi, Configuration } from '@affinidi-tdk/iota-client'

const api = new ConfigurationsApi(
  new Configuration({ apiKey: authProvider.fetchProjectScopedToken.bind(authProvider) })
)

const { data } = await api.getIotaConfigurationById('')
```

#### getIotaConfigurationMetaData

Retrieves the metadata of an existing Affinidi Iota Framework configuration.

Parameters

    projectId
    string
    Required
  ID of the project where the Affinidi Iota Framework was created.

    configurationId
    string
    Required
  ID of the Affinidi Iota configuration.

Example

```typescript
import { ConfigurationsApi, Configuration } from '@affinidi-tdk/iota-client'

const api = new ConfigurationsApi(
  new Configuration({ apiKey: authProvider.fetchProjectScopedToken.bind(authProvider) })
)

const { data } = await api.getIotaConfigurationMetaData('

', '')
```

#### listIotaConfigurations

Lists all Affinidi Iota Framework configurations.

No parameters required.

Example

```typescript
import { ConfigurationsApi, Configuration } from '@affinidi-tdk/iota-client'

const api = new ConfigurationsApi(
  new Configuration({ apiKey: authProvider.fetchProjectScopedToken.bind(authProvider) })
)

const { data } = await api.listIotaConfigurations()
```

#### updateIotaConfigurationById

Updates an existing Affinidi Iota Framework configuration by ID.

Parameters

    configurationId
    string
    Required
  ID of the Affinidi Iota configuration to update.

    request
    [UpdateConfigurationByIdInput](https://github.com/affinidi/affinidi-tdk/blob/main/clients/typescript/iota-client/docs/UpdateConfigurationByIdInput.md)
    Required
  Updated configuration details.

Example

```typescript
import { ConfigurationsApi, Configuration, UpdateConfigurationByIdInput } from '@affinidi-tdk/iota-client'

const api = new ConfigurationsApi(
  new Configuration({ apiKey: authProvider.fetchProjectScopedToken.bind(authProvider) })
)

const request: UpdateConfigurationByIdInput = {
  name: 'Sample App',
  walletAri: '',
  iotaResponseWebhookURL: 'http://localhost',
}

const { data } = await api.updateIotaConfigurationById('', request)
```

### Iota API

Generates access tokens required to access the Affinidi Iota Framework.

#### awsExchangeCredentials

Exchanges a limited token for a Cognito token.

Parameters

    request
    [AwsExchangeCredentials](https://github.com/affinidi/affinidi-tdk/blob/main/clients/typescript/iota-client/docs/AwsExchangeCredentials.md)
    Required
  JWT assertion to exchange.

Example

```typescript
import { IotaApi, Configuration, AwsExchangeCredentials } from '@affinidi-tdk/iota-client'

const api = new IotaApi(
  new Configuration({ apiKey: authProvider.fetchProjectScopedToken.bind(authProvider) })
)

const request: AwsExchangeCredentials = {
  assertion: '

',
}

const { data } = await api.AwsExchangeCredentials(request)
```

#### initiateDataSharingRequest

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

Parameters

    request
    [InitiateDataSharingRequestInput](https://github.com/affinidi/affinidi-tdk/blob/main/clients/typescript/iota-client/docs/InitiateDataSharingRequestInput.md)
    Required
  Details required to initiate the data-sharing request, including configuration ID, mode, query ID, correlation ID, nonce, and redirect URI.

Example

```typescript
import { IotaApi, Configuration, InitiateDataSharingRequestInput, IotaConfigurationDtoModeEnum } from '@affinidi-tdk/iota-client'

const api = new IotaApi(
  new Configuration({ apiKey: authProvider.fetchProjectScopedToken.bind(authProvider) })
)

const request: InitiateDataSharingRequestInput = {
  configurationId: '',
  mode: 'redirect',
  queryId: '',
  correlationId: '',
  nonce: '',
  redirectUri: '',
}

const { data: dataSharingRequestResponse } = await api.initiateDataSharingRequest(request)
```

#### fetchIotaVpResponse

Fetches the callback response from Affinidi Vault.

Parameters

    request
    [FetchIOTAVPResponseInput](https://github.com/affinidi/affinidi-tdk/blob/main/clients/typescript/iota-client/docs/FetchIOTAVPResponseInput.md)
    Required
  Details required to retrieve the callback response, including configuration ID, correlation ID, transaction ID, and response code.

Example

```typescript
import { IotaApi, Configuration, FetchIOTAVPResponseInput, FetchIOTAVPResponseOK } from '@affinidi-tdk/iota-client'

const api = new IotaApi(
  new Configuration({ apiKey: authProvider.fetchProjectScopedToken.bind(authProvider) })
)

const request: FetchIOTAVPResponseInput = {
  configurationId: '',
  correlationId: '',
  transactionId: '
',
  responseCode: '',
}

const iotaVpResponse: FetchIOTAVPResponseOK = await api.fetchIotaVpResponse(request)
```

### Default API

Manages logged consents from Affinidi Iota Framework.

#### listLoggedConsents

Returns the list of logged consents for the project.

Parameters

    configurationId
    string
    Optional
  Returns logged consents for the specified configuration.

    userId
    string
    Optional
  Returns logged consents for the specified user.

    limit
    number
    Optional
  Maximum number of records to return.

    exclusiveStartKey
    string
    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

```typescript
import { DefaultApi, Configuration } from '@affinidi-tdk/iota-client'

const api = new DefaultApi(
  new Configuration({ apiKey: authProvider.fetchProjectScopedToken.bind(authProvider) })
)

const { data } = await api.listLoggedConsents()
```

### Callback API

Handles OID4VP callbacks from Affinidi Iota Framework.

#### iotOIDC4VPCallback

Handles a callback from a client with OID4VP transaction data including states, presentation submission, and verification tokens.

Parameters

    request
    [CallbackInput](https://github.com/affinidi/affinidi-tdk/blob/main/clients/typescript/iota-client/docs/CallbackInput.md)
    Required
  Callback data from the client including state, presentation submission, and VP token.

Example

```typescript
import { CallbackApi, CallbackInput } from '@affinidi-tdk/iota-client'

const api = new CallbackApi()

const request: CallbackInput = {
  state: '',
  presentation_submission: {},
  vp_token: {},
}

const { data } = await api.iotOIDC4VPCallback(request)
```

### PexQueryAPI

Manages Presentation Exchange (PEX) query definitions in Iota configurations.

#### createPexQuery

Creates a Presentation Definition in an Iota configuration.

Parameters

    configurationId
    string
    Required
  ID of the Affinidi Iota configuration.

    request
    [CreatePexQueryInput](https://github.com/affinidi/affinidi-tdk/blob/main/clients/typescript/iota-client/docs/CreatePexQueryInput.md)
    Required
  PEX query details including name and presentation definition.

Example

```typescript
import { PexQueryApi, Configuration, CreatePexQueryInput } from '@affinidi-tdk/iota-client'

const api = new PexQueryApi(
  new Configuration({ apiKey: authProvider.fetchProjectScopedToken.bind(authProvider) })
)

const request: CreatePexQueryInput = {
  name: 'Request Data',
  vpDefinition: '

',
}

const { data } = await api.createPexQuery('', request)
```

#### deletePexQueryById

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

Parameters

    configurationId
    string
    Required
  ID of the Affinidi Iota configuration.

    queryId
    string
    Required
  ID of the Presentation Definition to delete.

Example

```typescript
import { PexQueryApi, Configuration } from '@affinidi-tdk/iota-client'

const api = new PexQueryApi(
  new Configuration({ apiKey: authProvider.fetchProjectScopedToken.bind(authProvider) })
)

await api.deletePexQueryById('', '')
```

#### getPexQueryById

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

Parameters

    configurationId
    string
    Required
  ID of the Affinidi Iota configuration.

    queryId
    string
    Required
  ID of the Presentation Definition to retrieve.

Example

```typescript
import { PexQueryApi, Configuration } from '@affinidi-tdk/iota-client'

const api = new PexQueryApi(
  new Configuration({ apiKey: authProvider.fetchProjectScopedToken.bind(authProvider) })
)

const { data } = await api.getPexQueryById('', '')
```

#### listPexQueries

Retrieves all Presentation Definitions in an Iota configuration.

Parameters

    configurationId
    string
    Required
  ID of the Affinidi Iota configuration.

Example

```typescript
import { PexQueryApi, Configuration } from '@affinidi-tdk/iota-client'

const api = new PexQueryApi(
  new Configuration({ apiKey: authProvider.fetchProjectScopedToken.bind(authProvider) })
)

const { data } = await api.listPexQueries('')
```

#### updatePexQueryById

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

Parameters

    configurationId
    string
    Required
  ID of the Affinidi Iota configuration.

    queryId
    string
    Required
  ID of the Presentation Definition to update.

    request
    [UpdatePexQueryInput](https://github.com/affinidi/affinidi-tdk/blob/main/clients/typescript/iota-client/docs/UpdatePexQueryInput.md)
    Required
  Updated PEX query details.

Example

```typescript
import { PexQueryApi, Configuration, UpdatePexQueryInput } from '@affinidi-tdk/iota-client'

const api = new PexQueryApi(
  new Configuration({ apiKey: authProvider.fetchProjectScopedToken.bind(authProvider) })
)

const request: UpdatePexQueryInput = {
  vpDefinition: '

',
}

const { data } = await api.updatePexQueryById('', '', request)
```
