Affinidi Iota Framework
Install Dependency
Package: affinidi_tdk_iota_client
dart pub add affinidi_tdk_iota_client
You can check the latest version of this module on the pub.dev 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 'package:dio/dio.dart';
import 'package:affinidi_tdk_auth_provider/affinidi_tdk_auth_provider.dart';
import 'package:affinidi_tdk_iota_client/affinidi_tdk_iota_client.dart';
import 'package:dotenv/dotenv.dart';
import 'package:built_collection/built_collection.dart';
try {
late ConfigurationsApi configurationsApi;
final dio = Dio(BaseOptions(
baseUrl: AffinidiTdkIotaClient.basePath,
connectTimeout: const Duration(seconds: 5),
receiveTimeout: const Duration(seconds: 5),
));
final apiClient = AffinidiTdkIotaClient(
dio: dio, authTokenHook: authProvider.fetchProjectScopedToken);
configurationsApi = apiClient.getConfigurationsApi();
final clientMetadata = IotaConfigurationDtoClientMetadataBuilder()
..name = 'TestName'
..logo = 'https://example.com/logo.png'
..origin = 'https://example.com'
..build();
final createIotaConfigurationInput = CreateIotaConfigurationInputBuilder()
..name ='Sample App'
..walletAri = "<WALLET_ARI>"
..redirectUris = ListBuilder<String>(["http://localhost"])
..enableVerification = false
..enableConsentAuditLog = false
..clientMetadata = clientMetadata
..description = 'Description'
..mode = CreateIotaConfigurationInputModeEnum.redirect
..enableIdvProviders = false;
final configuration = (await configurationsApi.createIotaConfiguration(createIotaConfigurationInput: createIotaConfigurationInput.build())).data;
print(configuration);
} catch (e) {
print('Error obtaining token: $e');
}
deleteIotaConfigurationById
Delete existing Affinidi Iota Framework configuration by ID.
Parameters
configurationId [String]
ID of the Affinidi Iota Configuration to delete.
Example
import 'package:dio/dio.dart';
import 'package:affinidi_tdk_auth_provider/affinidi_tdk_auth_provider.dart';
import 'package:affinidi_tdk_iota_client/affinidi_tdk_iota_client.dart';
import 'package:dotenv/dotenv.dart';
try {
late ConfigurationsApi configurationsApi;
final dio = Dio(BaseOptions(
baseUrl: AffinidiTdkIotaClient.basePath,
connectTimeout: const Duration(seconds: 5),
receiveTimeout: const Duration(seconds: 5),
));
final apiClient = AffinidiTdkIotaClient(
dio: dio, authTokenHook: authProvider.fetchProjectScopedToken);
configurationsApi = apiClient.getConfigurationsApi();
final configurationId = "<CONFIG_ID>";
final response = ( await configurationsApi.deleteIotaConfigurationById(configurationId: configurationId));
print(response);
} catch (e) {
print('Error obtaining token: $e');
}
getIotaConfigurationById
Retrieves existing Affinidi Iota Framework by ID.
Parameters
configurationId [String]
ID of the Affinidi Iota Configuration to delete.
Example
import 'package:dio/dio.dart';
import 'package:affinidi_tdk_auth_provider/affinidi_tdk_auth_provider.dart';
import 'package:affinidi_tdk_iota_client/affinidi_tdk_iota_client.dart';
import 'package:dotenv/dotenv.dart';
try {
late ConfigurationsApi configurationsApi;
final dio = Dio(BaseOptions(
baseUrl: AffinidiTdkIotaClient.basePath,
connectTimeout: const Duration(seconds: 5),
receiveTimeout: const Duration(seconds: 5),
));
final apiClient = AffinidiTdkIotaClient(
dio: dio, authTokenHook: authProvider.fetchProjectScopedToken);
configurationsApi = apiClient.getConfigurationsApi();
final configurationId = "<CONFIG_ID>";
final response = ( await configurationsApi.getIotaConfigurationById(configurationId: configurationId));
print(response);
} catch (e) {
print('Error obtaining token: $e');
}
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 'package:affinidi_tdk_iota_client/affinidi_tdk_iota_client.dart';
import 'package:dotenv/dotenv.dart';
try {
late ConfigurationsApi configurationsApi;
final dio = Dio(BaseOptions(
baseUrl: AffinidiTdkIotaClient.basePath,
connectTimeout: const Duration(seconds: 5),
receiveTimeout: const Duration(seconds: 5),
));
final apiClient = AffinidiTdkIotaClient(
dio: dio, authTokenHook: authProvider.fetchProjectScopedToken);
configurationsApi = apiClient.getConfigurationsApi();
final configurationId = "<CONFIG_ID>";
final projectId = "<PROJECT_ID>";
final response = ( await configurationsApi.getIotaConfigurationMetaData(configurationId: configurationId, projectId: projectId));
print(response);
} catch (e) {
print('Error obtaining token: $e');
}
listIotaConfigurations
List all the Affinidi Iota Framework configurations.
Parameters
No Parameters Required
Example
import 'package:dio/dio.dart';
import 'package:affinidi_tdk_auth_provider/affinidi_tdk_auth_provider.dart';
import 'package:affinidi_tdk_iota_client/affinidi_tdk_iota_client.dart';
import 'package:dotenv/dotenv.dart';
try {
late ConfigurationsApi configurationsApi;
final dio = Dio(BaseOptions(
baseUrl: AffinidiTdkIotaClient.basePath,
connectTimeout: const Duration(seconds: 5),
receiveTimeout: const Duration(seconds: 5),
));
final apiClient = AffinidiTdkIotaClient(
dio: dio, authTokenHook: authProvider.fetchProjectScopedToken);
configurationsApi = apiClient.getConfigurationsApi();
final response = ( await configurationsApi.listIotaConfigurations());
print(response);
} catch (e) {
print('Error obtaining token: $e');
}
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 'package:dio/dio.dart';
import 'package:affinidi_tdk_auth_provider/affinidi_tdk_auth_provider.dart';
import 'package:affinidi_tdk_iota_client/affinidi_tdk_iota_client.dart';
import 'package:dotenv/dotenv.dart';
try {
late ConfigurationsApi configurationsApi;
final dio = Dio(BaseOptions(
baseUrl: AffinidiTdkIotaClient.basePath,
connectTimeout: const Duration(seconds: 5),
receiveTimeout: const Duration(seconds: 5),
));
final apiClient = AffinidiTdkIotaClient(
dio: dio, authTokenHook: authProvider.fetchProjectScopedToken);
configurationsApi = apiClient.getConfigurationsApi();
final updateConfigurationByInput = UpdateConfigurationByIdInputBuilder()
..name ='Sample App';
final configurationId = "<CONFIG_ID>";
final response = ( await configurationsApi.updateIotaConfigurationById(configurationId: configurationId, updateConfigurationByIdInput: updateConfigurationByInput.build()));
print(response);
} catch (e) {
print('Error obtaining token: $e');
}
Iota API
Generate access token required to access the Affinidi Iota Framework.
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 'package:dio/dio.dart';
import 'package:affinidi_tdk_auth_provider/affinidi_tdk_auth_provider.dart';
import 'package:affinidi_tdk_iota_client/affinidi_tdk_iota_client.dart';
import 'package:dotenv/dotenv.dart';
try {
late IotaApi iotaApi;
final dio = Dio(BaseOptions(
baseUrl: AffinidiTdkIotaClient.basePath,
connectTimeout: const Duration(seconds: 5),
receiveTimeout: const Duration(seconds: 5),
));
final apiClient = AffinidiTdkIotaClient(
dio: dio, authTokenHook: authProvider.fetchProjectScopedToken);
iotaApi = apiClient.getIotaApi();
final initiateDataSharingRequestInput = InitiateDataSharingRequestInputBuilder()
..configurationId = "<IOTA_CONFIGURATION_ID>"
..mode = InitiateDataSharingRequestInputModeEnum.redirect
..queryId = "<IOTA_CONFIGURATION_QUERY_ID>"
..correlationId = "<uuid4_string>"
..nonce = "<NONCE_FROM_FRONTEND>"
..redirectUri = "<IOTA_CONFIGURATION_REDIRECT_URL>";
final response = ( await iotaApi.initiateDataSharingRequest(initiateDataSharingRequestInput: initiateDataSharingRequestInput.build()));
print(response);
} catch (e) {
print('Error obtaining token: $e');
}
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 'package:dio/dio.dart';
import 'package:affinidi_tdk_auth_provider/affinidi_tdk_auth_provider.dart';
import 'package:affinidi_tdk_iota_client/affinidi_tdk_iota_client.dart';
import 'package:dotenv/dotenv.dart';
try {
late IotaApi iotaApi;
final dio = Dio(BaseOptions(
baseUrl: AffinidiTdkIotaClient.basePath,
connectTimeout: const Duration(seconds: 5),
receiveTimeout: const Duration(seconds: 5),
));
final apiClient = AffinidiTdkIotaClient(
dio: dio, authTokenHook: authProvider.fetchProjectScopedToken);
iotaApi = apiClient.getIotaApi();
final fetchIOTAVPResponseInput = FetchIOTAVPResponseInputBuilder()
..configurationId = "<IOTA_CONFIGURATION_ID>"
..correlationId = "<CORRELATION_ID_FROM_LOCAL_STORAGE>"
..transactionId = "<TRANSACTION_ID_FROM_LOCAL_STORAGE>"
..responseCode = "<RESPONSE_CODE_FROM_REDIRECT>";
final response = ( await iotaApi.fetchIotaVpResponse(fetchIOTAVPResponseInput: fetchIOTAVPResponseInput.build()));
print(response);
} catch (e) {
print('Error obtaining token: $e');
}
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 'package:dio/dio.dart';
import 'package:affinidi_tdk_auth_provider/affinidi_tdk_auth_provider.dart';
import 'package:affinidi_tdk_iota_client/affinidi_tdk_iota_client.dart';
import 'package:dotenv/dotenv.dart';
try {
late DefaultApi defaultApi;
final dio = Dio(BaseOptions(
baseUrl: AffinidiTdkIotaClient.basePath,
connectTimeout: const Duration(seconds: 5),
receiveTimeout: const Duration(seconds: 5),
));
final apiClient = AffinidiTdkIotaClient(
dio: dio, authTokenHook: authProvider.fetchProjectScopedToken);
defaultApi = apiClient.getDefaultApi();
final configurationId = "<IOTA_CONFIGURATION_ID>",;
final limit = 56;
final response = ( await defaultApi.listLoggedConsents(configurationId: configurationId, limit: limit));
print(response);
} catch (e) {
print('Error obtaining token: $e');
}
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 'package:dio/dio.dart';
import 'package:affinidi_tdk_auth_provider/affinidi_tdk_auth_provider.dart';
import 'package:affinidi_tdk_iota_client/affinidi_tdk_iota_client.dart';
import 'package:dotenv/dotenv.dart';
try {
late CallbackApi callbackApi;
final dio = Dio(BaseOptions(
baseUrl: AffinidiTdkIotaClient.basePath,
connectTimeout: const Duration(seconds: 5),
receiveTimeout: const Duration(seconds: 5),
));
final apiClient = AffinidiTdkIotaClient(
dio: dio, authTokenHook: authProvider.fetchProjectScopedToken);
callbackApi = apiClient.getCallbackApi();
final callbackInput = CallbackInputBuilder()
..state = "<RANDOM_STRING>"
..vpToken = <VERIFIABLE_PRESENTATION_OBJECT>
..presentationSubmission = <PRESENTATION_SUBMISSION_OBJECT>;
final response = ( await callbackApi.iotOIDC4VPCallback(callbackInput: callbackInput.build()));
print(response);
} catch (e) {
print('Error obtaining token: $e');
}
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 'package:dio/dio.dart';
import 'dart:convert';
import 'package:affinidi_tdk_auth_provider/affinidi_tdk_auth_provider.dart';
import 'package:affinidi_tdk_iota_client/affinidi_tdk_iota_client.dart';
import 'package:dotenv/dotenv.dart';
try {
late PexQueryApi pexQueryApi;
final dio = Dio(BaseOptions(
baseUrl: AffinidiTdkIotaClient.basePath,
connectTimeout: const Duration(seconds: 5),
receiveTimeout: const Duration(seconds: 5),
));
final apiClient = AffinidiTdkIotaClient(
dio: dio, authTokenHook: authProvider.fetchProjectScopedToken);
pexQueryApi = apiClient.getPexQueryApi();
final createPexQueryInput = CreatePexQueryInputBuilder()
..name = "Request Data"
..vpDefinition = "{PRESENTATION_DEFINITION_JSON_STRING}";
final configurationId = "<CONFIG_ID>";
final response = ( await pexQueryApi.createPexQuery(configurationId: configurationId,createPexQueryInput: createPexQueryInput.build()));
print(response);
} catch (e) {
print('Error obtaining token: $e');
}
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 'package:dio/dio.dart';
import 'package:affinidi_tdk_auth_provider/affinidi_tdk_auth_provider.dart';
import 'package:affinidi_tdk_iota_client/affinidi_tdk_iota_client.dart';
import 'package:dotenv/dotenv.dart';
try {
late PexQueryApi pexQueryApi;
final dio = Dio(BaseOptions(
baseUrl: AffinidiTdkIotaClient.basePath,
connectTimeout: const Duration(seconds: 5),
receiveTimeout: const Duration(seconds: 5),
));
final apiClient = AffinidiTdkIotaClient(
dio: dio, authTokenHook: authProvider.fetchProjectScopedToken);
pexQueryApi = apiClient.getPexQueryApi();
final configurationId = "<CONFIG_ID>";
final queryId = "<QUERY_ID>"
final response = ( await pexQueryApi.deletePexQueryById(configurationId: configurationId, queryId: queryId));
print(response);
} catch (e) {
print('Error obtaining token: $e');
}
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 'package:dio/dio.dart';
import 'package:affinidi_tdk_auth_provider/affinidi_tdk_auth_provider.dart';
import 'package:affinidi_tdk_iota_client/affinidi_tdk_iota_client.dart';
import 'package:dotenv/dotenv.dart';
try {
late PexQueryApi pexQueryApi;
final dio = Dio(BaseOptions(
baseUrl: AffinidiTdkIotaClient.basePath,
connectTimeout: const Duration(seconds: 5),
receiveTimeout: const Duration(seconds: 5),
));
final apiClient = AffinidiTdkIotaClient(
dio: dio, authTokenHook: authProvider.fetchProjectScopedToken);
pexQueryApi = apiClient.getPexQueryApi();
final configurationId = "<CONFIG_ID>";
final queryId = "<QUERY_ID>";
final response = ( await pexQueryApi.getPexQueryById(configurationId: configurationId, queryId: queryId));
print(response);
} catch (e) {
print('Error obtaining token: $e');
}
listPexQueries
Retrieves all Presentation Definition in the Iota Configuration.
Parameters
configurationId [String]
ID of the existing Affinidi Iota Framework Configuration.
Example
import 'package:dio/dio.dart';
import 'package:affinidi_tdk_auth_provider/affinidi_tdk_auth_provider.dart';
import 'package:affinidi_tdk_iota_client/affinidi_tdk_iota_client.dart';
import 'package:dotenv/dotenv.dart';
try {
late PexQueryApi pexQueryApi;
final dio = Dio(BaseOptions(
baseUrl: AffinidiTdkIotaClient.basePath,
connectTimeout: const Duration(seconds: 5),
receiveTimeout: const Duration(seconds: 5),
));
final apiClient = AffinidiTdkIotaClient(
dio: dio, authTokenHook: authProvider.fetchProjectScopedToken);
pexQueryApi = apiClient.getPexQueryApi();
final configurationId = "<CONFIG_ID>";
final limit = 56;
final response = ( await pexQueryApi.listPexQueries(configurationId: configurationId, limit: limit ));
print(response);
} catch (e) {
print('Error obtaining token: $e');
}
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 'package:dio/dio.dart';
import 'package:affinidi_tdk_auth_provider/affinidi_tdk_auth_provider.dart';
import 'package:affinidi_tdk_iota_client/affinidi_tdk_iota_client.dart';
import 'package:dotenv/dotenv.dart';
try {
late PexQueryApi pexQueryApi;
final dio = Dio(BaseOptions(
baseUrl: AffinidiTdkIotaClient.basePath,
connectTimeout: const Duration(seconds: 5),
receiveTimeout: const Duration(seconds: 5),
));
final apiClient = AffinidiTdkIotaClient(
dio: dio, authTokenHook: authProvider.fetchProjectScopedToken);
pexQueryApi = apiClient.getPexQueryApi();
final updatePexQueryInput = UpdatePexQueryInputBuilder()
..vpDefinition = "{PRESENTATION_DEFINITION_JSON_STRING}"
..description = "Request Data";
final configurationId = "<CONFIG_ID>";
final queryId = "<QUERY_ID>";
final response = ( await pexQueryApi.updatePexQueryById(configurationId: configurationId, queryId: queryId, updatePexQueryInput: updatePexQueryInput.build()));
print(response);
} catch (e) {
print('Error obtaining token: $e');
}
Glad to hear it! Please tell us how we can improve more.
Sorry to hear that. Please tell us how we can improve.
Thank you for sharing your feedback so we can improve your experience.