Get consent logs from your application
Retrieve consent logs stored in your project using Affinidi Iota Framework.
When consent logging is enabled in your Iota configuration, Affinidi TDK provides a client to fetch and parse these logs from your application.
We will use the DefaultApi from the Affinidi Iota Framework client. Follow the steps below:
- Install Required Libraries (in our example, we will use Affinidi Iota Framework Service):
npm install -S @affinidi-tdk/auth-provider @affinidi-tdk/iota-clientpip install affinidi_tdk_auth_provider affinidi_tdk_iota_clientcomposer require affinidi-tdk/affinidi-tdk-php<dependency>
<groupId>com.affinidi.tdk</groupId>
<artifactId>auth.provider</artifactId>
<version><version_number></version>
</dependency>
<dependency>
<groupId>com.affinidi.tdk</groupId>
<artifactId>iota.client</artifactId>
<version><version_number></version>
</dependency>dotnet add package AffinidiTdk.AuthProvider
dotnet add package AffinidiTdk.IotaClientdart pub add affinidi_tdk_auth_provider affinidi_tdk_iota_client dio- Import Libraries
- Import Iota Client (to get the list of consents)
- Import Auth Provider (to generate the Project Scoped Token for the Authorisation header)
import { DefaultApi, Configuration as AuthConfiguration } from '@affinidi-tdk/iota-client'
import { AuthProvider } from '@affinidi-tdk/auth-provider'import affinidi_tdk_auth_provider
import affinidi_tdk_iota_clientrequire_once 'vendor/autoload.php';
use AffinidiTdk\AuthProvider\AuthProvider;
use AffinidiTdk\Clients\IotaClient;import com.affinidi.tdk.authProvider.AuthProvider;
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;using AffinidiTdk.AuthProvider;
using AffinidiTdk.IotaClient.Api;
using AffinidiTdk.IotaClient.Client;
using AffinidiTdk.IotaClient.Model;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';- Generate Authorisation Token
Use the Personal Access Token (PAT) for your project.
Run the Affinidi CLI Token command to generate the Personal Access Token (PAT) required by the
auth-providermodule.
If you created the PAT with
--key-id, set keyId in the AuthProvider class.
// NOTE: set your variables for PAT
const privateKey = '<PAT_PRIVATE_KEY_STRING>'
const passphrase = '<PAT_KEY_PAIR_PASSPHRASE>'
const tokenId = '<PAT_ID>'
const projectId = '<PROJECT_ID>'
const authProvider = new AuthProvider({
privateKey,
passphrase,
tokenId,
projectId
})
const authConfiguration = new AuthConfiguration({
apiKey: authProvider.fetchProjectScopedToken.bind(authProvider)
})stats = {
'privateKey': '<PAT_PRIVATE_KEY_STRING>',
'passphrase': '<PAT_KEY_PAIR_PASSPHRASE>',
'tokenId': '<PAT_ID>',
'projectId': '<PROJECT_ID>'
}
authProvider = affinidi_tdk_auth_provider.AuthProvider(stats)
projectScopedToken = authProvider.fetch_project_scoped_token()
configuration = affinidi_tdk_credential_verification_client.Configuration()
# Configure API key authorization: ProjectTokenAuth
configuration.api_key['ProjectTokenAuth'] = projectScopedToken$params = [
'privateKey' => "<PAT_PRIVATE_KEY_STRING>",
'passphrase' => '<PAT_KEY_PAIR_PASSPHRASE>',
'tokenId' => '<PAT_ID>',
'projectId' => '<PROJECT_ID>'
];
$authProvider = new AuthProvider($params);
$tokenCallback = [$authProvider, 'fetchProjectScopedToken'];AuthProvider authProvider = new AuthProvider.Configurations()
.projectId(dotenv.get("<PROJECT_ID>"))
.privateKey(dotenv.get("<PRIVATE_KEY_STRING>"))
.passphrase(dotenv.get("<KEY_PAIR_PASSPHRASE>"))
.tokenId(dotenv.get("<PAT_ID>"))
.build();
ApiClient defaultClient = Configuration.getDefaultApiClient();
ApiKeyAuth ProjectTokenAuth = (ApiKeyAuth) defaultClient.getAuthentication("ProjectTokenAuth");
ProjectTokenAuth.setApiKey(authProvider.fetchProjectScopedToken());var authProvider = new AuthProvider(new AuthProviderParams
{
TokenId = "YOUR_TOKEN_ID",
PrivateKey = "YOUR_PRIVATE_KEY",
ProjectId = "YOUR_PROJECT_ID"
Passphrase = "YOUR_PASSPHRASE",
});
string projectScopedToken = await authProvider.FetchProjectScopedTokenAsync();final authProvider = AuthProvider(
privateKey: '<PAT_PRIVATE_KEY_STRING>',
passphrase: '<PAT_KEY_PAIR_PASSPHRASE>',
tokenId: '<PAT_ID>',
projectId: '<PROJECT_ID>',
);- Initialise Iota Client: Pass the authorisation header and call the client method to retrieve consent logs.
const api = new DefaultApi(authConfiguration)
const { data } = await api.listLoggedConsents()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()// Configure API key authorization: ProjectTokenAuth
$config = IotaClient\Configuration::getDefaultConfiguration()->setApiKey('authorization', '', $tokenCallback);
$apiInstance = new IotaClient\Api\DefaultApi(
new GuzzleHttp\Client(),
$config
);
try {
$result = $apiInstance->listLoggedConsents();
print_r($result);
} catch (Exception $e) {
echo 'Exception when calling method: ', $e->getMessage(), PHP_EOL;
}DefaultApi apiInstance = new DefaultApi(defaultClient);
String configurationId = "<Config_ID>";
String userId = "<User_ID>";
Integer limit = 56;
String exclusiveStartKey = null;
ListLoggedConsentsOK result = apiInstance.listLoggedConsents(configurationId, userId, limit, exclusiveStartKey);Configuration config = new Configuration();
config.AddApiKey("authorization", projectScopedToken);
DefaultApi api = new DefaultApi(config);
var configurationId = "<CONFIG_ID>";
var userId = "<USER_ID>";
var limit = 56;
var exclusiveStartKey = "exclusiveStartKey_example";
ListLoggedConsentsOK result = api.ListLoggedConsents(configurationId, userId, limit, exclusiveStartKey);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,
);
final defaultApi = apiClient.getDefaultApi();
final configurationId = '<IOTA_CONFIGURATION_ID>';
final limit = 56;
final response = await defaultApi.listLoggedConsents(
configurationId: configurationId,
limit: limit,
);
print(response);The Iota client returns a JSON response containing the list of consents:
{
"consents": [
{
"projectId": "af338c39-2201-49a6-90d2-106c6cbbbcb7",
"id": "4e0cb4cb-e7fc-4a06-bc1e-8724dffff4db",
"userId": "did:key:zQ3shnYYaYpKHEEsE8HirxBM3MFFR6Ubpjixdm5EET4ihug6l",
"vcType": "Membership",
"status": "GIVEN",
"modifiedAt": "2024-07-02T05:12:22.000Z",
"modifiedBy": "",
"createdAt": "2024-07-02T05:12:22.000Z",
"createdBy": ""
}
],
"lastEvaluatedKey": ""
}Was this page helpful?
Glad to hear it. Thanks for letting us know.
Sorry to hear that. Thanks for letting us know.