# Login Configurations

> Manage Login Configurations and User Groups with Affinidi Login Service.

## Install Dependency

Package: affinidi_tdk_login_configuration_client

```bash
pip install affinidi_tdk_login_configuration_client
```

Check the latest version on the [PyPI repository](https://pypi.org/project/affinidi_tdk_login_configuration_client/) or view the source on [GitHub](https://github.com/affinidi/affinidi-tdk/tree/main/clients/python/login_configuration_client).

## Classes and Methods

### Configurations API

Manages Login Configurations to integrate Affinidi Login.

#### create_login_configurations

Creates a new Login Configuration.

Parameters

    create_login_configuration_input
    [CreateLoginConfigurationInput](https://github.com/affinidi/affinidi-tdk/blob/main/clients/python/login_configuration_client/docs/CreateLoginConfigurationInput.md)
    Required
  Application name, redirect URIs, and other configuration details.

Example

```python
import affinidi_tdk_login_configuration_client

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

with affinidi_tdk_login_configuration_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_login_configuration_client.ConfigurationApi(api_client)

    request_json = {
        'name': 'Sample App',
        'redirectUris': ['http://localhost:3000/auth/callback'],
    }

    create_login_configuration_input = affinidi_tdk_login_configuration_client.CreateLoginConfigurationInput.from_dict(request_json)
    api_response = api_instance.create_login_configurations(create_login_configuration_input=create_login_configuration_input)
```

#### delete_login_configurations_by_id

Deletes an existing Login Configuration by ID.

Parameters

    configurationId
    str
    Required
  ID of the Login Configuration to delete.

Example

```python
import affinidi_tdk_login_configuration_client

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

with affinidi_tdk_login_configuration_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_login_configuration_client.ConfigurationApi(api_client)
    api_instance.delete_login_configurations_by_id('')
```

#### get_client_metadata_by_client_id

Retrieves the client metadata of a Login Configuration by its OAuth 2.0 Client ID.

Parameters

    clientId
    str
    Required
  OAuth 2.0 Client ID generated by the Login Configuration.

Example

```python
import affinidi_tdk_login_configuration_client

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

with affinidi_tdk_login_configuration_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_login_configuration_client.ConfigurationApi(api_client)
    api_response = api_instance.get_client_metadata_by_client_id('')
```

#### get_login_configurations_by_id

Retrieves a Login Configuration by ID.

Parameters

    configurationId
    str
    Required
  ID of the Login Configuration to retrieve.

Example

```python
import affinidi_tdk_login_configuration_client

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

with affinidi_tdk_login_configuration_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_login_configuration_client.ConfigurationApi(api_client)
    api_response = api_instance.get_login_configurations_by_id('')
```

#### list_login_configurations

Returns the list of Login Configurations for the project.

Parameters

    limit
    int
    Optional
  Maximum number of records to return.

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

```python
import affinidi_tdk_login_configuration_client

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

with affinidi_tdk_login_configuration_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_login_configuration_client.ConfigurationApi(api_client)
    api_response = api_instance.list_login_configurations()
```

#### update_login_configurations_by_id

Updates an existing Login Configuration by ID.

Parameters

    configurationId
    str
    Required
  ID of the Login Configuration to update.

    update_login_configuration_input
    [UpdateLoginConfigurationInput](https://github.com/affinidi/affinidi-tdk/blob/main/clients/python/login_configuration_client/docs/UpdateLoginConfigurationInput.md)
    Required
  Updated configuration details.

Example

```python
import affinidi_tdk_login_configuration_client

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

with affinidi_tdk_login_configuration_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_login_configuration_client.ConfigurationApi(api_client)

    request_json = {
        'name': 'My Updated Login Config',
        'redirectUris': ['http://localhost:3001/api/auth/callback'],
    }

    update_login_configuration_input = affinidi_tdk_login_configuration_client.UpdateLoginConfigurationInput.from_dict(request_json)
    api_response = api_instance.update_login_configurations_by_id('', update_login_configuration_input)
```

### Group API

Manages user groups for the project.

#### add_user_to_group

Adds a user to a group.

Parameters

    groupName
    str
    Required
  Name of the group to add the user to.

    add_user_to_group_input
    [AddUserToGroupInput](https://github.com/affinidi/affinidi-tdk/blob/main/clients/python/login_configuration_client/docs/AddUserToGroupInput.md)
    Required
  DID of the user to add.

Example

```python
import affinidi_tdk_login_configuration_client

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

with affinidi_tdk_login_configuration_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_login_configuration_client.GroupApi(api_client)

    user_to_add_json = {
        'user_id': 'did:key:890890890890890',
    }

    add_user_to_group_input = affinidi_tdk_login_configuration_client.AddUserToGroupInput.from_dict(user_to_add_json)
    api_response = api_instance.add_user_to_group('', add_user_to_group_input)
```

#### create_group

Creates a user group.

Parameters

    create_group_input
    CreateGroupInput
    Required
  Name for the new user group.

Example

```python
import affinidi_tdk_login_configuration_client

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

with affinidi_tdk_login_configuration_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_login_configuration_client.GroupApi(api_client)

    group_name_input = {
        'group_name': '',
    }

    create_group_input = affinidi_tdk_login_configuration_client.CreateGroupInput.from_dict(group_name_input)
    api_response = api_instance.create_group(create_group_input)
```

#### delete_group

Deletes a group by name.

Parameters

    groupName
    str
    Required
  Name of the group to delete.

Example

```python
import affinidi_tdk_login_configuration_client

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

with affinidi_tdk_login_configuration_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_login_configuration_client.GroupApi(api_client)
    api_instance.delete_group('')
```

#### get_group_by_id

Retrieves a group by name.

Parameters

    groupName
    str
    Required
  Name of the group to retrieve.

Example

```python
import affinidi_tdk_login_configuration_client

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

with affinidi_tdk_login_configuration_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_login_configuration_client.GroupApi(api_client)
    api_response = api_instance.get_group_by_id('')
```

#### list_group_user_mappings

Returns the list of users in a group.

Parameters

    groupName
    str
    Required
  Name of the group.

    limit
    int
    Optional
  Maximum number of records to return.

    exclusiveStartKey
    str
    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.

    sortOrder
    str
    Optional
  Sort order for the response. Defaults to desc.

Example

```python
import affinidi_tdk_login_configuration_client

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

with affinidi_tdk_login_configuration_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_login_configuration_client.GroupApi(api_client)
    api_response = api_instance.list_group_user_mappings(
        '',
        limit=56,
        exclusive_start_key='',
        sort_order='desc',
    )
```

#### list_groups

Returns all groups in the project.

No parameters required.

Example

```python
import affinidi_tdk_login_configuration_client

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

with affinidi_tdk_login_configuration_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_login_configuration_client.GroupApi(api_client)
    api_response = api_instance.list_groups()
```

#### remove_user_from_group

Removes a user from a group.

Parameters

    groupName
    str
    Required
  Name of the group.

    remove_user_from_group_input
    [RemoveUserFromGroupInput](https://github.com/affinidi/affinidi-tdk/blob/main/clients/python/login_configuration_client/docs/RemoveUserFromGroupInput.md)
    Required
  DID of the user to remove.

Example

```python
import affinidi_tdk_login_configuration_client

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

with affinidi_tdk_login_configuration_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_login_configuration_client.GroupApi(api_client)

    user_to_remove_json = {
        'userId': 'did:key:890890890890890',
    }

    remove_user_from_group_input = affinidi_tdk_login_configuration_client.RemoveUserFromGroupInput.from_dict(user_to_remove_json)
    api_instance.remove_user_from_group('', remove_user_from_group_input)
```

### DenyList API

Used to block groups and users to deny access on services like Affinidi Login when users are authenticating.

#### block_groups

Blocks users by group.

Parameters

    group_names_input
    [GroupNamesInput](https://github.com/affinidi/affinidi-tdk/blob/main/clients/python/login_configuration_client/docs/GroupNamesInput.md)
    Required
  List of group names to block.

Example

```python
import affinidi_tdk_login_configuration_client

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

with affinidi_tdk_login_configuration_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_login_configuration_client.DenyListApi(api_client)
    api_response = api_instance.block_groups(group_names_input=['', ''])
```

#### block_users

Blocks users by user ID (DID).

Parameters

    blocked_users_input
    [BlockedUsersInput](https://github.com/affinidi/affinidi-tdk/blob/main/clients/python/login_configuration_client/docs/BlockedUsersInput.md)
    Required
  List of user DIDs to block.

Example

```python
import affinidi_tdk_login_configuration_client

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

with affinidi_tdk_login_configuration_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_login_configuration_client.DenyListApi(api_client)
    api_response = api_instance.block_users(blocked_users_input=['', ''])
```

#### list_blocked_groups

Get list of blocked groups.

##### Parameters

pageToken [String]

Used for pagination.

##### Example

```Python
import affinidi_tdk_login_configuration_client
```

```Python
configuration = affinidi_tdk_login_configuration_client.Configuration()
# Pass the projectScopedToken generated from AuthProvider package
configuration.api_key['ProjectTokenAuth'] = projectScopedToken

with affinidi_tdk_login_configuration_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_login_configuration_client.DenyListApi(api_client)

    api_response = api_instance.list_blocked_groups()
```

#### list_blocked_users

Get list of blocked users.

##### Parameters

pageToken [String]

Used for pagination.

##### Example

```Python
import affinidi_tdk_login_configuration_client
```

```Python
configuration = affinidi_tdk_login_configuration_client.Configuration()
# Pass the projectScopedToken generated from AuthProvider package
configuration.api_key['ProjectTokenAuth'] = projectScopedToken

with affinidi_tdk_login_configuration_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_login_configuration_client.DenyListApi(api_client)

    api_response = api_instance.list_blocked_users()
```

#### unblock_groups

Unblock users by group.

##### Parameters

GroupNamesInput [Object]

List of groups to block. See more [here](https://github.com/affinidi/affinidi-tdk/blob/main/clients/python/login_configuration_client/docs/GroupNamesInput.md).

##### Example

```Python
import affinidi_tdk_login_configuration_client
```

```Python
configuration = affinidi_tdk_login_configuration_client.Configuration()
# Pass the projectScopedToken generated from AuthProvider package
configuration.api_key['ProjectTokenAuth'] = projectScopedToken

with affinidi_tdk_login_configuration_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_login_configuration_client.DenyListApi(api_client)

    request_json = [
        "",
        ""
    ]

    api_response = api_instance.unblock_groups(group_names_input=request_json)
```

#### unblock_users

Unblock by User ID (DID).

##### Parameters

BlockedUsersInput [Object]

List of User IDs (DIDs) to block. See more [here](https://github.com/affinidi/affinidi-tdk/blob/main/clients/python/login_configuration_client/docs/BlockedUsersInput.md).

##### Example

```Python
import affinidi_tdk_login_configuration_client
```

```Python
configuration = affinidi_tdk_login_configuration_client.Configuration()
# Pass the projectScopedToken generated from AuthProvider package
configuration.api_key['ProjectTokenAuth'] = projectScopedToken

with affinidi_tdk_login_configuration_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_login_configuration_client.DenyListApi(api_client)

    request_json = [
        "",
        ""
    ]

    api_response = api_instance.unblock_users(blocked_users_input=request_json)
```

### AllowList API

Used to allow groups and users to grant access on services like Affinidi Login when users are authenticating.

#### allow_groups

Allows users by group.

##### Parameters

GroupNamesInput [Object]

List of groups to allow. See more [here](https://github.com/affinidi/affinidi-tdk/blob/main/clients/python/login_configuration_client/docs/GroupNamesInput.md).

##### Example

```Python
import affinidi_tdk_login_configuration_client
```

```Python
configuration = affinidi_tdk_login_configuration_client.Configuration()
# Pass the projectScopedToken generated from AuthProvider package
configuration.api_key['ProjectTokenAuth'] = projectScopedToken

with affinidi_tdk_login_configuration_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_login_configuration_client.AllowListApi(api_client)

    request_json = [
        "",
        ""
    ]

    api_response = api_instance.allow_groups(group_names_input=request_json)
```

#### disallow_groups

Disallow access to users by group.

##### Parameters

GroupNamesInput [Object]

List of groups to disallow. See more [here](https://github.com/affinidi/affinidi-tdk/blob/main/clients/python/login_configuration_client/docs/GroupNamesInput.md).

##### Example

```Python
import affinidi_tdk_login_configuration_client
```

```Python
configuration = affinidi_tdk_login_configuration_client.Configuration()
# Pass the projectScopedToken generated from AuthProvider package
configuration.api_key['ProjectTokenAuth'] = projectScopedToken

with affinidi_tdk_login_configuration_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_login_configuration_client.AllowListApi(api_client)

    request_json = [
        "",
        ""
    ]

    api_response = api_instance.disallow_groups(group_names_input=request_json)
```

#### list_allowed_groups

Get list of allowed groups.

##### Parameters

pageToken [String]

Used for pagination.

##### Example

```Python
import affinidi_tdk_login_configuration_client
```

```Python
configuration = affinidi_tdk_login_configuration_client.Configuration()
# Pass the projectScopedToken generated from AuthProvider package
configuration.api_key['ProjectTokenAuth'] = projectScopedToken

with affinidi_tdk_login_configuration_client.ApiClient(configuration) as api_client:
    api_instance = affinidi_tdk_login_configuration_client.AllowListApi(api_client)

    api_response = api_instance.list_allowed_groups()
```
