# Login Configurations

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

## Install Dependency

Package: AffinidiTdk.LoginConfigurationClient

```bash
dotnet add package AffinidiTdk.LoginConfigurationClient
```

Check the latest version on [nuget.org](https://www.nuget.org/packages/AffinidiTdk.LoginConfigurationClient) or view the source on [GitHub](https://github.com/affinidi/affinidi-tdk-dotnet/tree/main/src/Clients/LoginConfigurationClient).

## Classes and Methods

### Configurations API

Use to manage Login Configuration to integrate Affinidi Login.

#### CreateLoginConfigurations

Create a new Login Configuration to integrate Affinidi Login.

Parameters

    CreateLoginConfigurationInput
    [Object](https://github.com/affinidi/affinidi-tdk-dotnet/blob/main/src/Clients/LoginConfigurationClient/docs/CreateLoginConfigurationInput.md)
    Required
  JSON object to provide the configuration details of the application.

Example

```cs
using AffinidiTdk.LoginConfigurationClient.Api;
using AffinidiTdk.LoginConfigurationClient.Client;
using AffinidiTdk.LoginConfigurationClient.Model;

Configuration config = new Configuration();

config.AddApiKey("authorization", projectScopedToken);

ConfigurationApi configApi = new ConfigurationApi(config);

var loginConfigInput = new CreateLoginConfigurationInput(name: "DotNet App", redirectUris: ["http://localhost:3000/auth/callback"]);

CreateLoginConfigurationOutput result = configApi.CreateLoginConfigurations(loginConfigInput);
```

#### DeleteLoginConfigurationsById

Delete an existing Login Configuration by ID.

Parameters

    configurationId
    String
    Required
  ID of the Login Configuration to delete.

Example

```cs
using AffinidiTdk.LoginConfigurationClient.Api;
using AffinidiTdk.LoginConfigurationClient.Client;

// Pass the projectScopedToken generated from AuthProvider package
Configuration config = new Configuration();
config.AddApiKey("authorization", projectScopedToken);

ConfigurationApi configApi = new ConfigurationApi(config);

var configurationID = "";

configApi.DeleteLoginConfigurationsById(configurationID);
```

#### GetClientMetadataByClientId

Retrieves the Client Metadata info of the Login Configuration by OAuth 2.0 Client ID.

Parameters

    clientId
    String
    Required
  OAuth 2.0 Client ID generated by Login Configuration.

Example

```cs
using AffinidiTdk.LoginConfigurationClient.Api;
using AffinidiTdk.LoginConfigurationClient.Client;
using AffinidiTdk.LoginConfigurationClient.Model;

Configuration config = new Configuration();

config.AddApiKey("authorization", projectScopedToken);

ConfigurationApi configApi = new ConfigurationApi(config);

var configurationID = "";

LoginConfigurationClientMetadataOutput result = configApi.GetClientMetadataByClientId(configurationId);
```

#### GetLoginConfigurationsById

Retrieves the Login Configuration details by ID.

Parameters

    configurationId
    String
    Required
  ID of the existing Login Configuration to retrieve.

Example

```cs
using AffinidiTdk.LoginConfigurationClient.Api;
using AffinidiTdk.LoginConfigurationClient.Client;
using AffinidiTdk.LoginConfigurationClient.Model;

Configuration config = new Configuration();

config.AddApiKey("authorization", projectScopedToken);

ConfigurationApi configApi = new ConfigurationApi(config);

var configurationID = "";

LoginConfigurationObject result = configApi.GetLoginConfigurationsById(configurationID);
```

#### ListLoginConfigurations

List all the Login Configurations in the Project.

Parameters

    limit
    Integer
    Required
  Maximum number of records to fetch from the list.

    exclusiveStartKey
    String
    Required
  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

```cs
using AffinidiTdk.LoginConfigurationClient.Api;
using AffinidiTdk.LoginConfigurationClient.Client;
using AffinidiTdk.LoginConfigurationClient.Model;

Configuration config = new Configuration();

config.AddApiKey("authorization", projectScopedToken);

ConfigurationApi configApi = new ConfigurationApi(config);

ListLoginConfigurationOutput result = configApi.ListLoginConfigurations();
```

#### UpdateLoginConfigurationsById

Update an existing Login Configuration by ID

Parameters

    configurationId
    String
    Required
  ID of the Login Configuration to update.

    UpdateLoginConfigurationInput
    [Object](https://github.com/affinidi/affinidi-tdk-dotnet/blob/main/src/Clients/LoginConfigurationClient/docs/UpdateLoginConfigurationInput.md)
    Required
  JSON object to provide to update the Login Configuration details.

Example

```cs
using AffinidiTdk.LoginConfigurationClient.Api;
using AffinidiTdk.LoginConfigurationClient.Client;
using AffinidiTdk.LoginConfigurationClient.Model;

Configuration config = new Configuration();

config.AddApiKey("authorization", projectScopedToken);

ConfigurationApi configApi = new ConfigurationApi(config);

string configId = "";
UpdateLoginConfigurationInput input = new UpdateLoginConfigurationInput(name: "Sample App");

LoginConfigurationObject result = configApi.UpdateLoginConfigurationsById(configId, input);
```

### Group API

Used to manage the User Groups for the Project.

#### AddUserToGroup

Add user to the user group.

Parameters

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

    AddUserToGroupInput
    [Object](https://github.com/affinidi/affinidi-tdk-dotnet/blob/main/src/Clients/LoginConfigurationClient/docs/AddUserToGroupInput.md)
    Required
  JSON object to provide with the ID of the user to add.

Example

```cs
using AffinidiTdk.LoginConfigurationClient.Api;
using AffinidiTdk.LoginConfigurationClient.Client;
using AffinidiTdk.LoginConfigurationClient.Model;

Configuration config = new Configuration();

config.AddApiKey("authorization", projectScopedToken);

GroupApi groupApi = new GroupApi(config);

string groupName = ""
AddUserToGroupInput input = new AddUserToGroupInput(userId: "");

GroupUserMappingDto result = groupApi.AddUserToGroup(groupName, input);
```

#### CreateGroup

Create a user group.

Parameters

    CreateGroupInput
    Object
    Required
  JSON object to provide the name of the user group.

Example

```cs
using AffinidiTdk.LoginConfigurationClient.Api;
using AffinidiTdk.LoginConfigurationClient.Client;
using AffinidiTdk.LoginConfigurationClient.Model;

Configuration config = new Configuration();

config.AddApiKey("authorization", projectScopedToken);

GroupApi groupApi = new GroupApi(config);

CreateGroupInput input = new CreateGroupInput(groupName: "");

GroupDto result = groupApi.CreateGroup(input);
```

#### DeleteGroup

Delete a group by name.

Parameters

    groupName
    String
    Required
  Name of the group to delete.

Example

```cs
using AffinidiTdk.LoginConfigurationClient.Api;
using AffinidiTdk.LoginConfigurationClient.Client;
using AffinidiTdk.LoginConfigurationClient.Model;

Configuration config = new Configuration();

config.AddApiKey("authorization", projectScopedToken);

GroupApi groupApi = new GroupApi(config);

groupApi.DeleteGroup("");
```

#### GetGroupById

Retrieve a group by the group name.

Parameters

    groupName
    String
    Required
  Name of the group to retrieve.

Example

```cs
using AffinidiTdk.LoginConfigurationClient.Api;
using AffinidiTdk.LoginConfigurationClient.Client;
using AffinidiTdk.LoginConfigurationClient.Model;

Configuration config = new Configuration();

config.AddApiKey("authorization", projectScopedToken);

GroupApi groupApi = new GroupApi(config);

GroupDto result = groupApi.GetGroupById("");
```

#### ListGroupUserMappings

List all the users from the group.

Parameters

    groupName
    String
    Required
  Name of the group to list.

    limit
    Integer
    Required
  Maximum number of records to fetch in a list.

    exclusiveStartKey
    String
    Required
  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.

    sortOrder
    String
    Required
  Sort response in specific order. By default it is in desc order.

Example

```cs
using AffinidiTdk.LoginConfigurationClient.Api;
using AffinidiTdk.LoginConfigurationClient.Client;
using AffinidiTdk.LoginConfigurationClient.Model;

Configuration config = new Configuration();

config.AddApiKey("authorization", projectScopedToken);

GroupApi groupApi = new GroupApi(config);

GroupUserMappingsList result = groupApi.ListGroupUserMappings("");
```

#### ListGroups

List all the groups in the Project.

No parameters required.

Example

```cs
using AffinidiTdk.LoginConfigurationClient.Api;
using AffinidiTdk.LoginConfigurationClient.Client;
using AffinidiTdk.LoginConfigurationClient.Model;

Configuration config = new Configuration();

config.AddApiKey("authorization", projectScopedToken);

GroupApi groupApi = new GroupApi(config);

GroupsList result = groupApi.ListGroups();
```

#### RemoveUserFromGroupInput

Remove user from the group.

Parameters

    groupName
    String
    Required
  Name of the group where the user will be removed.

    RemoveUserFromGroupInput
    [Object](https://github.com/affinidi/affinidi-tdk-dotnet/blob/main/src/Clients/LoginConfigurationClient/docs/RemoveUserFromGroupInput.md)
    Required
  JSON object to provide the ID of the user to remove.

Example

```cs
using AffinidiTdk.LoginConfigurationClient.Api;
using AffinidiTdk.LoginConfigurationClient.Client;
using AffinidiTdk.LoginConfigurationClient.Model;

Configuration config = new Configuration();

config.AddApiKey("authorization", projectScopedToken);

GroupApi groupApi = new GroupApi(config);

RemoveUserFromGroupInput input = new RemoveUserFromGroupInput("did:key:890890890890890");
```

### DenyList API

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

#### BlockGroups

Block users by group.

Parameters

    GroupNamesInput
    [Object](https://github.com/affinidi/affinidi-tdk-dotnet/blob/main/src/Clients/LoginConfigurationClient/docs/GroupNamesInput.md)
    Required
  List of groups to block.

Example

```cs
using AffinidiTdk.LoginConfigurationClient.Api;
using AffinidiTdk.LoginConfigurationClient.Client;
using AffinidiTdk.LoginConfigurationClient.Model;

Configuration config = new Configuration();

config.AddApiKey("authorization", projectScopedToken);

DenyListApi denyListApi = new DenyListApi(config);

List groupNames = [""];

GroupNamesInput input = new GroupNamesInput(groupNames);

denyListApi.BlockGroups(input);
```

#### BlockUsers

Block by User ID (DID).

Parameters

    BlockedUsersInput
    [Object](https://github.com/affinidi/affinidi-tdk/blob/main/clients/java/login.configuration.client/docs/BlockedUsersInput.md)
    Required
  List of User IDs (DIDs) to block.

Example

```cs
using AffinidiTdk.LoginConfigurationClient.Api;
using AffinidiTdk.LoginConfigurationClient.Client;
using AffinidiTdk.LoginConfigurationClient.Model;

Configuration config = new Configuration();

config.AddApiKey("authorization", projectScopedToken);

DenyListApi denyListApi = new DenyListApi(config);

List userDidList = ["did:key..."];

BlockedUsersInput input = new blockedUsersInput(userIds: userDidList);

denyListApi.BlockUsers(input);
```

#### ListBlockedGroups

Get list of blocked groups.

Parameters

    pageToken
    String
    Required
  Used for pagination.

Example

```cs
using AffinidiTdk.LoginConfigurationClient.Api;
using AffinidiTdk.LoginConfigurationClient.Client;
using AffinidiTdk.LoginConfigurationClient.Model;

Configuration config = new Configuration();

config.AddApiKey("authorization", projectScopedToken);

DenyListApi denyListApi = new DenyListApi(config);

GroupNames result = denyListApi.ListBlockedGroups();
```

#### ListBlockedUsers

Get list of blocked users.

Parameters

    pageToken
    String
    Required
  Used for pagination.

Example

```cs
using AffinidiTdk.LoginConfigurationClient.Api;
using AffinidiTdk.LoginConfigurationClient.Client;
using AffinidiTdk.LoginConfigurationClient.Model;

Configuration config = new Configuration();

config.AddApiKey("authorization", projectScopedToken);

DenyListApi denyListApi = new DenyListApi(config);

BlockedUsers result = denyListApi.ListBlockedUsers();
```

#### UnblockGroups

Unblock users by group.

Parameters

    GroupNamesInput
    [Object](https://github.com/affinidi/affinidi-tdk/blob/main/clients/java/login.configuration.client/docs/GroupNamesInput.md)
    Required
  List of groups to unblock.

Example

```cs
using AffinidiTdk.LoginConfigurationClient.Api;
using AffinidiTdk.LoginConfigurationClient.Client;
using AffinidiTdk.LoginConfigurationClient.Model;

Configuration config = new Configuration();

config.AddApiKey("authorization", projectScopedToken);

DenyListApi denyListApi = new DenyListApi(config);

List userGroupNames = [""];

GroupNamesInput input = new GroupNamesInput(userGroupNames);

denyListApi.UnblockGroups(input);
```

#### UnblockUsers

Unblock by User ID (DID).

Parameters

    BlockedUsersInput
    [Object](https://github.com/affinidi/affinidi-tdk-dotnet/blob/main/src/Clients/LoginConfigurationClient/docs/BlockedUsersInput.md)
    Required
  List of User IDs (DIDs) to unblock.

Example

```cs
using AffinidiTdk.LoginConfigurationClient.Api;
using AffinidiTdk.LoginConfigurationClient.Client;
using AffinidiTdk.LoginConfigurationClient.Model;

Configuration config = new Configuration();

config.AddApiKey("authorization", projectScopedToken);

DenyListApi denyListApi = new DenyListApi(config);

List userDidList = ["did:key..."];

BlockedUsersInput input = new BlockedUsersInput(userIds: userDidList);

denyListApi.UnblockUsers(input);
```

### AllowList API

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

#### AllowGroups

Allows users by group.

Parameters

    GroupNamesInput
    [Object](https://github.com/affinidi/affinidi-tdk-dotnet/blob/main/src/Clients/LoginConfigurationClient/docs/GroupNamesInput.md)
    Required
  List of groups to allow.

Example

```cs
using AffinidiTdk.LoginConfigurationClient.Api;
using AffinidiTdk.LoginConfigurationClient.Client;
using AffinidiTdk.LoginConfigurationClient.Model;

Configuration config = new Configuration();

config.AddApiKey("authorization", projectScopedToken);

AllowListApi allowListApi = new AllowListApi(config);

List groupNames = [""];

GroupNamesInput input = new GroupNamesInput(groupNames);

allowListApi.AllowGroups(input);
```

#### DisallowGroups

Disallow access to users by group.

Parameters

    GroupNamesInput
    [Object](https://github.com/affinidi/affinidi-tdk-dotnet/blob/main/src/Clients/LoginConfigurationClient/docs/GroupNamesInput.md)
    Required
  List of groups to disallow.

Example

```cs
using AffinidiTdk.LoginConfigurationClient.Api;
using AffinidiTdk.LoginConfigurationClient.Client;
using AffinidiTdk.LoginConfigurationClient.Model;

Configuration config = new Configuration();

config.AddApiKey("authorization", projectScopedToken);

AllowListApi allowListApi = new AllowListApi(config);

List groupNames = [""];

GroupNamesInput input = new groupNamesInput(groupNames);

allowListApi.DisallowGroups(input);
```

#### ListAllowedGroups

Get list of allowed groups.

Parameters

    pageToken
    String
    Required
  Used for pagination.

Example

```cs
using AffinidiTdk.LoginConfigurationClient.Api;
using AffinidiTdk.LoginConfigurationClient.Client;
using AffinidiTdk.LoginConfigurationClient.Model;

Configuration config = new Configuration();

config.AddApiKey("authorization", projectScopedToken);

AllowListApi allowListApi = new AllowListApi(config);

GroupNames result = allowListApi.ListAllowedGroups();
```
