IAM
Install Dependency
Package: affinidi_tdk_iam_client
dart pub add affinidi_tdk_iamCheck the latest version on pub.dev or view the source on GitHub.
Classes and Methods
Projects API
Use the Projects API to manage your projects including providing access to other users on your projects.
addPrincipalToProject
Add a principal to the project to get access.
Parameters
Example
import 'package:affinidi_tdk_auth_provider/affinidi_tdk_auth_provider.dart';
import 'package:affinidi_tdk_iam_client/affinidi_tdk_iam_client.dart';
import 'package:dotenv/dotenv.dart';
import 'package:dio/dio.dart';
try {
late ProjectsApi projectsApi;
final dio = Dio(BaseOptions(
baseUrl: AffinidiTdkIamClient.basePath,
connectTimeout: const Duration(seconds: 5),
receiveTimeout: const Duration(seconds: 5),
));
final apiClient = AffinidiTdkIamClient(
dio: dio, authTokenHook: authProvider.fetchProjectScopedToken);
projectsApi = apiClient.getProjectsApi();
final addUserToProjectInput = AddUserToProjectInputBuilder()
..principalId = "<PAT_ID>"
..principalType = "token";
final response = (await projectsApi.addPrincipalToProject(
addUserToProjectInput: addUserToProjectInput.build()));
print(response);
} catch (e) {
print('Exception: $e');
}createProject
Create a project for your account.
Parameters
Example
import 'package:dio/dio.dart';
import 'package:affinidi_tdk_auth_provider/affinidi_tdk_auth_provider.dart';
import 'package:affinidi_tdk_iam_client/affinidi_tdk_iam_client.dart';
import 'package:dotenv/dotenv.dart';
try {
late ProjectsApi projectsApi;
final dio = Dio(
BaseOptions(
baseUrl: AffinidiTdkIamClient.basePath,
connectTimeout: const Duration(seconds: 5),
receiveTimeout: const Duration(seconds: 5),
),
);
final apiClient = AffinidiTdkIamClient(
dio: dio,
authTokenHook: authProvider.fetchProjectScopedToken,
);
projectsApi = apiClient.getProjectsApi();
final createProjectInput =
CreateProjectInputBuilder()
..name = "Project Name"
..description = "Project Description";
final response = (await projectsApi.createProject(
createProjectInput: createProjectInput.build()));
print(response);
} catch (e) {
print('Exception: $e');
}deletePrincipalFromProject
Delete a principal (user or PAT) from the project to remove access.
Parameters
principalId
String
RequiredprincipalType
String
Requireduser for user, token for Personal Access Token.Example
import 'package:dio/dio.dart';
import 'package:affinidi_tdk_auth_provider/affinidi_tdk_auth_provider.dart';
import 'package:affinidi_tdk_iam_client/affinidi_tdk_iam_client.dart';
import 'package:dotenv/dotenv.dart';
try {
late ProjectsApi projectsApi;
final dio = Dio(
BaseOptions(
baseUrl: AffinidiTdkIamClient.basePath,
connectTimeout: const Duration(seconds: 5),
receiveTimeout: const Duration(seconds: 5),
),
);
final apiClient = AffinidiTdkIamClient(
dio: dio,
authTokenHook: authProvider.fetchProjectScopedToken,
);
projectsApi = apiClient.getProjectsApi();
final principalId = "<PAT_ID>";
final principalType = "token";
final response = (await projectsApi.deletePrincipalFromProject(
principalId: principaId,
principalType: principalType,
));
print(response);
} catch (e) {
print('Exception: $e');
}listPrincipalsOfProject
Get the list of principals assigned to the project.
Parameters
limit
Integer
OptionalExample
import 'package:dio/dio.dart';
import 'package:affinidi_tdk_auth_provider/affinidi_tdk_auth_provider.dart';
import 'package:affinidi_tdk_iam_client/affinidi_tdk_iam_client.dart';
import 'package:dotenv/dotenv.dart';
try {
late ProjectsApi projectsApi;
final dio = Dio(
BaseOptions(
baseUrl: AffinidiTdkIamClient.basePath,
connectTimeout: const Duration(seconds: 5),
receiveTimeout: const Duration(seconds: 5),
),
);
final apiClient = AffinidiTdkIamClient(
dio: dio,
authTokenHook: authProvider.fetchProjectScopedToken,
);
projectsApi = apiClient.getProjectsApi();
final int limit = 100;
final response = (await projectsApi.listPrincipalsOfProject(
limit : limit
));
print(response);
} catch (e) {
print('Exception: $e');
}listProject
Get the list of projects.
Parameters
limit
Integer
OptionalExample
import 'package:dio/dio.dart';
import 'package:affinidi_tdk_auth_provider/affinidi_tdk_auth_provider.dart';
import 'package:affinidi_tdk_iam_client/affinidi_tdk_iam_client.dart';
import 'package:dotenv/dotenv.dart';
try {
late ProjectsApi projectsApi;
final dio = Dio(
BaseOptions(
baseUrl: AffinidiTdkIamClient.basePath,
connectTimeout: const Duration(seconds: 5),
receiveTimeout: const Duration(seconds: 5),
),
);
final apiClient = AffinidiTdkIamClient(
dio: dio,
authTokenHook: authProvider.fetchProjectScopedToken,
);
projectsApi = apiClient.getProjectsApi();
final int limit = 100;
final response = (await projectsApi.listProject(
limit : limit
));
print(response);
} catch (e) {
print('Exception: $e');
}updateProject
Update the project details.
Parameters
projectId
String
RequiredExample
import 'package:dio/dio.dart';
import 'package:affinidi_tdk_auth_provider/affinidi_tdk_auth_provider.dart';
import 'package:affinidi_tdk_iam_client/affinidi_tdk_iam_client.dart';
import 'package:dotenv/dotenv.dart';
try {
late ProjectsApi projectsApi;
final dio = Dio(
BaseOptions(
baseUrl: AffinidiTdkIamClient.basePath,
connectTimeout: const Duration(seconds: 5),
receiveTimeout: const Duration(seconds: 5),
),
);
final apiClient = AffinidiTdkIamClient(
dio: dio,
authTokenHook: authProvider.fetchProjectScopedToken,
);
projectsApi = apiClient.getProjectsApi();
final updateProjectInput = UpdateProjectInputBuilder()
..name = "project_name"
..description = "project_description";
final projectID = "<PROJECT_ID>";
final response = (await projectsApi.updateProject(projectId: projectID, updateProjectInput: updateProjectInput.build()));
print(response);
} catch (e) {
print('Exception: $e');
}Policies API
Use the Policies API to manage access to your projects and related resources for other users.
getPolicies
Retrieves the policy attached to a principal.
Parameters
principalId
String
RequiredprincipalType
String
Requireduser for user, token for Personal Access Token.Example
import 'package:dio/dio.dart';
import 'package:affinidi_tdk_auth_provider/affinidi_tdk_auth_provider.dart';
import 'package:affinidi_tdk_iam_client/affinidi_tdk_iam_client.dart';
import 'package:dotenv/dotenv.dart';
try {
late PoliciesApi policiesApi;
final dio = Dio(
BaseOptions(
baseUrl: AffinidiTdkIamClient.basePath,
connectTimeout: const Duration(seconds: 5),
receiveTimeout: const Duration(seconds: 5),
),
);
final apiClient = AffinidiTdkIamClient(
dio: dio,
authTokenHook: authProvider.fetchProjectScopedToken,
);
policiesApi = apiClient.getPoliciesApi();
final principalId = "<PAT_ID>";
final principalType = "token";
final response = (await policiesApi.getPolicies(
principalId: principalId,
principalType: principalType,
));
print(response);
} catch (e) {
print('Exception: $e');
}updatePolicies
Update the policy for the principal.
Parameters
principalId
String
RequiredprincipalType
String
Requireduser for user, token for Personal Access Token.Example
import 'package:dio/dio.dart';
import 'package:affinidi_tdk_auth_provider/affinidi_tdk_auth_provider.dart';
import 'package:affinidi_tdk_iam_client/affinidi_tdk_iam_client.dart';
import 'package:dotenv/dotenv.dart';
try {
late PoliciesApi policiesApi;
final dio = Dio(
BaseOptions(
baseUrl: AffinidiTdkIamClient.basePath,
connectTimeout: const Duration(seconds: 5),
receiveTimeout: const Duration(seconds: 5),
),
);
final apiClient = AffinidiTdkIamClient(
dio: dio,
authTokenHook: authProvider.fetchProjectScopedToken,
);
policiesApi = apiClient.getPoliciesApi();
final policyDto =
PolicyDtoBuilder()
..version = '2022-12-15'
..statement = ListBuilder<PolicyStatementDto>([
(PolicyStatementDtoBuilder()
..action = ListBuilder<String>([''])
..effect = 'Allow'
..principal = ListBuilder<String>(['principals'])
..resource = ListBuilder<String>(['resources']))
.build(),
]);
final principalId = "<PAT_ID>";
final principalType = "token";
final response =
(await policiesApi.updatePolicies(
principalId: principalId,
principalType: principalType,
policyDto: policyDto.build(),
)).data;
print(response);
} catch (e) {
print('Exception: $e');
}Secure Token Exchange (STS) API
Use the STS (Secure Token Exchange) API to create a Project Scoped Token and get the current session information.
createProjectScopedToken
Create a project scoped token to access resources in the project.
Parameters
Example
import 'package:dio/dio.dart';
import 'package:affinidi_tdk_auth_provider/affinidi_tdk_auth_provider.dart';
import 'package:affinidi_tdk_iam_client/affinidi_tdk_iam_client.dart';
import 'package:dotenv/dotenv.dart';
try {
late StsApi stsApi;
final dio = Dio(
BaseOptions(
baseUrl: AffinidiTdkIamClient.basePath,
connectTimeout: const Duration(seconds: 5),
receiveTimeout: const Duration(seconds: 5),
),
);
final apiClient = AffinidiTdkIamClient(
dio: dio,
authTokenHook: authProvider.fetchProjectScopedToken,
);
stsApi = apiClient.getStsApi();
final createProjectScopedTokenInput =
CreateProjectScopedTokenInputBuilder()..projectId = "<PROJECT_ID>";
final response =
(await stsApi.createProjectScopedToken(
createProjectScopedTokenInput: createProjectScopedTokenInput.build(),
)).data;
print(response);
} catch (e) {
print('Exception: $e');
}whoami
Retrieve the principal information of the current user.
No parameters required.
Example
import 'package:dio/dio.dart';
import 'package:affinidi_tdk_auth_provider/affinidi_tdk_auth_provider.dart';
import 'package:affinidi_tdk_iam_client/affinidi_tdk_iam_client.dart';
import 'package:dotenv/dotenv.dart';
try {
late StsApi stsApi;
final dio = Dio(
BaseOptions(
baseUrl: AffinidiTdkIamClient.basePath,
connectTimeout: const Duration(seconds: 5),
receiveTimeout: const Duration(seconds: 5),
),
);
final apiClient = AffinidiTdkIamClient(
dio: dio,
authTokenHook: authProvider.fetchProjectScopedToken,
);
stsApi = apiClient.getStsApi();
final response =
(await stsApi.whoami());
print(response);
} catch (e) {
print('Exception: $e');
}Tokens API
Use the Tokens API to create a Personal Access Token (PAT) to call Affinidi services on your behalf. Alternatively, use the Token command from Affinidi CLI.
createToken
Create a Personal Access Token.
Parameters
Example
import 'package:dio/dio.dart';
import 'package:affinidi_tdk_auth_provider/affinidi_tdk_auth_provider.dart';
import 'package:affinidi_tdk_iam_client/affinidi_tdk_iam_client.dart';
import 'package:dotenv/dotenv.dart';
try {
late TokensApi tokensApi;
final dio = Dio(
BaseOptions(
baseUrl: AffinidiTdkIamClient.basePath,
connectTimeout: const Duration(seconds: 5),
receiveTimeout: const Duration(seconds: 5),
),
);
final apiClient = AffinidiTdkIamClient(
dio: dio,
authTokenHook: authProvider.fetchProjectScopedToken,
);
tokensApi = apiClient.getTokensApi();
final createTokenInput = CreateTokenInputBuilder()
..name = "token_name";
final response = (await tokensApi.createToken(createTokenInput: createTokenInput.build())).data;
print(response);
} catch (e) {
print('Exception: $e');
}deleteToken
Delete a Personal Access Token.
Parameters
tokenId
String
RequiredExample
import 'package:dio/dio.dart';
import 'package:affinidi_tdk_auth_provider/affinidi_tdk_auth_provider.dart';
import 'package:affinidi_tdk_iam_client/affinidi_tdk_iam_client.dart';
import 'package:dotenv/dotenv.dart';
try {
late TokensApi tokensApi;
final dio = Dio(BaseOptions(
baseUrl: AffinidiTdkIamClient.basePath,
connectTimeout: const Duration(seconds: 5),
receiveTimeout: const Duration(seconds: 5),
));
final apiClient = AffinidiTdkIamClient(
dio: dio, authTokenHook: authProvider.fetchProjectScopedToken);
tokensApi = apiClient.getTokensApi();
final tokenId = "<TOKEN_ID>";
final response = (await tokensApi.deleteToken(tokenId: tokenId));
print(response);
} catch (e) {
print('Exception: $e');
}getToken
Retrieve the Personal Access Token details.
Parameters
tokenId
String
RequiredExample
import 'package:dio/dio.dart';
import 'package:affinidi_tdk_auth_provider/affinidi_tdk_auth_provider.dart';
import 'package:affinidi_tdk_iam_client/affinidi_tdk_iam_client.dart';
import 'package:dotenv/dotenv.dart';
try {
late TokensApi tokensApi;
final dio = Dio(BaseOptions(
baseUrl: AffinidiTdkIamClient.basePath,
connectTimeout: const Duration(seconds: 5),
receiveTimeout: const Duration(seconds: 5),
));
final apiClient = AffinidiTdkIamClient(
dio: dio, authTokenHook: authProvider.fetchProjectScopedToken);
tokensApi = apiClient.getTokensApi();
final tokenId = "<TOKEN_ID>";
final response = (await tokensApi.getToken(tokenId: tokenId));
print(response);
} catch (e) {
print('Exception: $e');
}listToken
Get the list of Personal Access Tokens.
Parameters
limit
Integer
OptionalExample
import 'package:dio/dio.dart';
import 'package:affinidi_tdk_auth_provider/affinidi_tdk_auth_provider.dart';
import 'package:affinidi_tdk_iam_client/affinidi_tdk_iam_client.dart';
import 'package:dotenv/dotenv.dart';
try {
late TokensApi tokensApi;
final dio = Dio(BaseOptions(
baseUrl: AffinidiTdkIamClient.basePath,
connectTimeout: const Duration(seconds: 5),
receiveTimeout: const Duration(seconds: 5),
));
final apiClient = AffinidiTdkIamClient(
dio: dio, authTokenHook: authProvider.fetchProjectScopedToken);
tokensApi = apiClient.getTokensApi();
final limit = 10;
final response = (await tokensApi.listToken(limit: limit));
print(response);
} catch (e) {
print('Exception: $e');
}updateToken
Update an existing Personal Access Token.
Parameters
tokenId
String
RequiredExample
import 'package:dio/dio.dart';
import 'package:affinidi_tdk_auth_provider/affinidi_tdk_auth_provider.dart';
import 'package:affinidi_tdk_iam_client/affinidi_tdk_iam_client.dart';
import 'package:dotenv/dotenv.dart';
try {
late TokensApi tokensApi;
final dio = Dio(BaseOptions(
baseUrl: AffinidiTdkIamClient.basePath,
connectTimeout: const Duration(seconds: 5),
receiveTimeout: const Duration(seconds: 5),
));
final apiClient = AffinidiTdkIamClient(
dio: dio, authTokenHook: authProvider.fetchProjectScopedToken);
tokensApi = apiClient.getTokensApi();
final tokenId = "<TOKEN_ID>";
final updateTokenInput = UpdateTokenInputBuilder()
..name = "token_name";
final response = (await tokensApi.updateToken(tokenId: tokenId , updateTokenInput: updateTokenInput.build()));
print(response);
} catch (e) {
print('Exception: $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.