IAM

Manage Projects and Access Policies with IAM Service.

Install Dependency

Package: affinidi_tdk_iam_client

pip install affinidi_tdk_iam_client

Check the latest version on the PyPI repository 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.

add_principal_to_project

Adds a principal to the project.

Parameters

add_user_to_project_input AddUserToProjectInput Required
Principal ID and principal type (user or token).

Example

import affinidi_tdk_iam_client

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

with affinidi_tdk_iam_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_iam_client.ProjectsApi(api_client)

    request_json = {
        'principalId': '<PAT_ID>',
        'principalType': 'token',
    }

    add_user_to_project_input = affinidi_tdk_iam_client.AddUserToProjectInput.from_dict(request_json)
    api_response = api_instance.add_principal_to_project(add_user_to_project_input=add_user_to_project_input)

create_project

Creates a project for your account.

Parameters

create_project_input CreateProjectInput Required
Project name and description. Requires a user token (UserTokenAuth).

Example

import affinidi_tdk_iam_client

configuration = affinidi_tdk_iam_client.Configuration()
configuration.api_key['UserTokenAuth'] = userToken

with affinidi_tdk_iam_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_iam_client.ProjectsApi(api_client)

    request_json = {
        'name': 'project_name',
        'description': 'project_description',
    }

    create_project_input = affinidi_tdk_iam_client.CreateProjectInput.from_dict(request_json)
    api_response = api_instance.create_project(create_project_input=create_project_input)

delete_principal_from_project

Removes a principal from the project.

Parameters

principalId str Required
ID of the user or Personal Access Token (PAT).
principalType str Required
Type of the principal: user for a user or token for a PAT.

Example

import affinidi_tdk_iam_client

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

with affinidi_tdk_iam_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_iam_client.ProjectsApi(api_client)
    api_response = api_instance.delete_principal_from_project('<PAT_ID>', 'token')

list_principals_of_project

Returns the list of principals assigned to the project.

No parameters required.

Example

import affinidi_tdk_iam_client

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

with affinidi_tdk_iam_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_iam_client.ProjectsApi(api_client)
    api_response = api_instance.list_principals_of_project()

list_project

Returns the list of projects for the current account.

No parameters required.

Example

import affinidi_tdk_iam_client

configuration = affinidi_tdk_iam_client.Configuration()
configuration.api_key['UserTokenAuth'] = userToken

with affinidi_tdk_iam_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_iam_client.ProjectsApi(api_client)
    api_response = api_instance.list_project()

update_project

Updates the project details.

Parameters

projectId str Required
ID of the project to update.
update_project_input UpdateProjectInput Required
Updated project name and description. Requires a user token (UserTokenAuth).

Example

import affinidi_tdk_iam_client

configuration = affinidi_tdk_iam_client.Configuration()
configuration.api_key['UserTokenAuth'] = userToken

with affinidi_tdk_iam_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_iam_client.ProjectsApi(api_client)

    request_json = {
        'name': 'project_name',
        'description': 'project_description',
    }

    update_project_input = affinidi_tdk_iam_client.UpdateProjectInput.from_dict(request_json)
    api_response = api_instance.update_project('<PROJECT_ID>', update_project_input=update_project_input)

Policies API

Use the Policies API to manage access to your projects and related resources for other users.

get_policies

Retrieves the policy attached to a principal.

Parameters

principalId str Required
ID of the user or Personal Access Token (PAT).
principalType str Required
Type of the principal: user for a user or token for a PAT.

Example

import affinidi_tdk_iam_client

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

with affinidi_tdk_iam_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_iam_client.PoliciesApi(api_client)
    api_response = api_instance.get_policies('<PAT_ID>', 'token')

update_policies

Updates the policy for a principal.

Parameters

principalId str Required
ID of the user or Personal Access Token (PAT).
principalType str Required
Type of the principal: user for a user or token for a PAT.
policy_dto PolicyDto Required
Policy document with version, statements, principals, actions, resources, and effect.

Example

import affinidi_tdk_iam_client

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

with affinidi_tdk_iam_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_iam_client.PoliciesApi(api_client)

    policy_info = {
        'version': '2022-12-15',
        'statement': [
            {
                'principal': ['<PRINCIPAL_ID>'],
                'action': [''],
                'resource': [''],
                'effect': 'Allow',
            }
        ],
    }

    api_response = api_instance.update_policies('<PAT_ID>', 'token', policy_info)

Secure Token Exchange (STS) API

Use the STS (Secure Token Exchange) API to create a Project Scoped Token and get the current session information.

create_project_scoped_token

Creates a project-scoped token to access resources in the project.

Parameters

create_project_scoped_token_input CreateProjectScopedTokenInput Required
Project ID to generate the token for. Requires a user token (UserTokenAuth).

Example

import affinidi_tdk_iam_client

configuration = affinidi_tdk_iam_client.Configuration()
configuration.api_key['UserTokenAuth'] = userToken

with affinidi_tdk_iam_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_iam_client.StsApi(api_client)

    request_json = {
        'projectId': '<PROJECT_ID>',
    }

    create_project_scoped_token_input = affinidi_tdk_iam_client.CreateProjectScopedTokenInput.from_dict(request_json)
    api_response = api_instance.create_project_scoped_token(project_scoped_token_input=create_project_scoped_token_input)

whoami

Retrieves the principal information of the current session.

No parameters required.

Example

import affinidi_tdk_iam_client

configuration = affinidi_tdk_iam_client.Configuration()
configuration.api_key['UserTokenAuth'] = userToken

with affinidi_tdk_iam_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_iam_client.StsApi(api_client)
    api_response = api_instance.whoami()

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.

create_token

Creates a Personal Access Token.

Parameters

create_token_input CreateTokenInput Required
Token name, signing algorithm, and public key JWKs. Requires a user token (UserTokenAuth).

Example

import affinidi_tdk_iam_client

configuration = affinidi_tdk_iam_client.Configuration()
configuration.api_key['UserTokenAuth'] = userToken

with affinidi_tdk_iam_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_iam_client.TokensApi(api_client)

    request_json = {
        'name': 'token_name',
        'authenticationMethod': {
            'type': 'PRIVATE_KEY',
            'signingAlgorithm': 'RS256',
            'publicKeyInfo': {
                'jwks': {
                    'keys': [
                        {
                            'kid': 'key-id',
                            'alg': 'RS256',
                            'use': 'sig',
                            'kty': 'RSA',
                            'n': '<modulus>',
                            'e': 'AQAB',
                        }
                    ]
                }
            },
        },
    }

    create_token_input = affinidi_tdk_iam_client.CreateTokenInput.from_dict(request_json)
    api_response = api_instance.create_token(create_token_input=create_token_input)

delete_token

Deletes a Personal Access Token.

Parameters

tokenId str Required
ID of the Personal Access Token to delete.

Example

import affinidi_tdk_iam_client

configuration = affinidi_tdk_iam_client.Configuration()
configuration.api_key['UserTokenAuth'] = userToken

with affinidi_tdk_iam_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_iam_client.TokensApi(api_client)
    api_response = api_instance.delete_token('<TOKEN_ID>')

get_token

Retrieves the Personal Access Token details.

Parameters

tokenId str Required
ID of the Personal Access Token to retrieve.

Example

import affinidi_tdk_iam_client

configuration = affinidi_tdk_iam_client.Configuration()
configuration.api_key['UserTokenAuth'] = userToken

with affinidi_tdk_iam_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_iam_client.TokensApi(api_client)
    api_response = api_instance.get_token('<TOKEN_ID>')

list_token

Returns the list of Personal Access Tokens.

No parameters required.

Example

import affinidi_tdk_iam_client

configuration = affinidi_tdk_iam_client.Configuration()
configuration.api_key['UserTokenAuth'] = userToken

with affinidi_tdk_iam_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_iam_client.TokensApi(api_client)
    api_response = api_instance.list_token()

update_token

Updates an existing Personal Access Token.

Parameters

tokenId str Required
ID of the Personal Access Token to update.
update_token_input UpdateTokenInput Required
Updated token name and public key JWKs. Requires a user token (UserTokenAuth).

Example

import affinidi_tdk_iam_client

configuration = affinidi_tdk_iam_client.Configuration()
configuration.api_key['UserTokenAuth'] = userToken

with affinidi_tdk_iam_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_iam_client.TokensApi(api_client)

    request_json = {
        'name': 'token_name',
        'authenticationMethod': {
            'type': 'PRIVATE_KEY',
            'signingAlgorithm': 'RS256',
            'publicKeyInfo': {
                'jwks': {
                    'keys': [
                        {
                            'kid': 'key-id',
                            'alg': 'RS256',
                            'use': 'sig',
                            'kty': 'RSA',
                            'n': '<modulus>',
                            'e': 'AQAB',
                        }
                    ]
                }
            },
        },
    }

    update_token_input = affinidi_tdk_iam_client.UpdateTokenInput.from_dict(request_json)
    api_response = api_instance.update_token('<TOKEN_ID>', update_token_input=update_token_input)