> For the complete documentation index, see [llms.txt](https://developers.polymath.network/polymesh-sdk-api-reference/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_asset_permissions.permissions.md).

# api\_entities\_Asset\_Permissions.Permissions

[@polymeshassociation/polymesh-sdk](/polymesh-sdk-api-reference/docs-alpha/classes.md) / [Modules](/polymesh-sdk-api-reference/docs-alpha/modules.md) / [api/entities/Asset/Permissions](/polymesh-sdk-api-reference/docs-alpha/modules-1/api_entities_asset_permissions.md) / Permissions

## Class: Permissions

[api/entities/Asset/Permissions](/polymesh-sdk-api-reference/docs-alpha/modules-1/api_entities_asset_permissions.md).Permissions

Handles all Asset Permissions related functionality

### Hierarchy

* `Namespace`<[`Asset`](/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_asset.asset.md)>

  ↳ **`Permissions`**

### Table of contents

#### Methods

* [createGroup](#creategroup)
* [getAgents](#getagents)
* [getGroup](#getgroup)
* [getGroups](#getgroups)
* [inviteAgent](#inviteagent)
* [removeAgent](#removeagent)

### Methods

#### createGroup

▸ **createGroup**(`args`, `opts?`): `Promise`<`TransactionQueue`<[`CustomPermissionGroup`](/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_custompermissiongroup.custompermissiongroup.md), [`CustomPermissionGroup`](/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_custompermissiongroup.custompermissiongroup.md), `unknown`\[]\[]>>

Create a Permission Group for this Asset. Identities can be assigned to Permission Groups as agents. Agents assigned to a Permission Group have said group's permissions over the Asset

**`note`** this method is of type [ProcedureMethod](/polymesh-sdk-api-reference/docs-alpha/interfaces/types.proceduremethod.md), which means you can call [createGroup.checkAuthorization](/polymesh-sdk-api-reference/docs-alpha/interfaces/types.proceduremethod.md#checkauthorization) on it to see whether the signing Account and Identity have the required roles and permissions to run it

**Parameters**

| Name    | Type                                                                                                                     |
| ------- | ------------------------------------------------------------------------------------------------------------------------ |
| `args`  | [`CreateGroupParams`](/polymesh-sdk-api-reference/docs-alpha/interfaces/api_procedures_creategroup.creategroupparams.md) |
| `opts?` | [`ProcedureOpts`](/polymesh-sdk-api-reference/docs-alpha/interfaces/types.procedureopts.md)                              |

**Returns**

`Promise`<`TransactionQueue`<[`CustomPermissionGroup`](/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_custompermissiongroup.custompermissiongroup.md), [`CustomPermissionGroup`](/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_custompermissiongroup.custompermissiongroup.md), `unknown`\[]\[]>>

**Defined in**

[api/entities/Asset/Permissions.ts:70](https://github.com/PolymathNetwork/polymesh-sdk/blob/31dfa0dc/src/api/entities/Asset/Permissions.ts#L70)

***

#### getAgents

▸ **getAgents**(): `Promise`<[`AgentWithGroup`](/polymesh-sdk-api-reference/docs-alpha/interfaces/api_entities_asset_types.agentwithgroup.md)\[]>

Retrieve a list of agents (Identities which have permissions over the Asset) and their respective Permission Groups

**Returns**

`Promise`<[`AgentWithGroup`](/polymesh-sdk-api-reference/docs-alpha/interfaces/api_entities_asset_types.agentwithgroup.md)\[]>

**Defined in**

[api/entities/Asset/Permissions.ts:171](https://github.com/PolymathNetwork/polymesh-sdk/blob/31dfa0dc/src/api/entities/Asset/Permissions.ts#L171)

***

#### getGroup

▸ **getGroup**(`args`): `Promise`<[`CustomPermissionGroup`](/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_custompermissiongroup.custompermissiongroup.md)>

Retrieve a single Permission Group by its ID (or type). Passing an ID will fetch a Custom Permission Group, while passing a type will fetch a Known Permission Group

**`throws`** if there is no Permission Group with the passed ID

**Parameters**

| Name      | Type        |
| --------- | ----------- |
| `args`    | `Object`    |
| `args.id` | `BigNumber` |

**Returns**

`Promise`<[`CustomPermissionGroup`](/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_custompermissiongroup.custompermissiongroup.md)>

**Defined in**

[api/entities/Asset/Permissions.ts:104](https://github.com/PolymathNetwork/polymesh-sdk/blob/31dfa0dc/src/api/entities/Asset/Permissions.ts#L104)

▸ **getGroup**(`args`): `Promise`<[`KnownPermissionGroup`](/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_knownpermissiongroup.knownpermissiongroup.md)>

**Parameters**

| Name        | Type                                                                                               |
| ----------- | -------------------------------------------------------------------------------------------------- |
| `args`      | `Object`                                                                                           |
| `args.type` | [`PermissionGroupType`](/polymesh-sdk-api-reference/docs-alpha/enums/types.permissiongrouptype.md) |

**Returns**

`Promise`<[`KnownPermissionGroup`](/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_knownpermissiongroup.knownpermissiongroup.md)>

**Defined in**

[api/entities/Asset/Permissions.ts:105](https://github.com/PolymathNetwork/polymesh-sdk/blob/31dfa0dc/src/api/entities/Asset/Permissions.ts#L105)

***

#### getGroups

▸ **getGroups**(): `Promise`<[`PermissionGroups`](/polymesh-sdk-api-reference/docs-alpha/interfaces/types.permissiongroups.md)>

Retrieve all Permission Groups of this Asset

**Returns**

`Promise`<[`PermissionGroups`](/polymesh-sdk-api-reference/docs-alpha/interfaces/types.permissiongroups.md)>

**Defined in**

[api/entities/Asset/Permissions.ts:137](https://github.com/PolymathNetwork/polymesh-sdk/blob/31dfa0dc/src/api/entities/Asset/Permissions.ts#L137)

***

#### inviteAgent

▸ **inviteAgent**(`args`, `opts?`): `Promise`<`TransactionQueue`<[`AuthorizationRequest`](/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_authorizationrequest.authorizationrequest.md), [`AuthorizationRequest`](/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_authorizationrequest.authorizationrequest.md), `unknown`\[]\[]>>

Invite an Identity to be an agent with permissions over this Asset

**`note`** this will create an [Authorization Request](/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_authorizationrequest.authorizationrequest.md) which has to be accepted by the `target` Identity. An [Account](/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_account.account.md) or [Identity](/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_identity.identity.md) can fetch its pending Authorization Requests by calling [authorizations.getReceived](/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_common_namespaces_authorizations.authorizations.md#getreceived). Also, an Account or Identity can directly fetch the details of an Authorization Request by calling [authorizations.getOne](/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_common_namespaces_authorizations.authorizations.md#getone)

**`note`** this method is of type [ProcedureMethod](/polymesh-sdk-api-reference/docs-alpha/interfaces/types.proceduremethod.md), which means you can call [inviteAgent.checkAuthorization](/polymesh-sdk-api-reference/docs-alpha/interfaces/types.proceduremethod.md#checkauthorization) on it to see whether the signing Account and Identity have the required roles and permissions to run it

**Parameters**

| Name    | Type                                                                                                                                             |
| ------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
| `args`  | [`InviteExternalAgentParams`](/polymesh-sdk-api-reference/docs-alpha/interfaces/api_procedures_inviteexternalagent.inviteexternalagentparams.md) |
| `opts?` | [`ProcedureOpts`](/polymesh-sdk-api-reference/docs-alpha/interfaces/types.procedureopts.md)                                                      |

**Returns**

`Promise`<`TransactionQueue`<[`AuthorizationRequest`](/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_authorizationrequest.authorizationrequest.md), [`AuthorizationRequest`](/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_authorizationrequest.authorizationrequest.md), `unknown`\[]\[]>>

**Defined in**

[api/entities/Asset/Permissions.ts:84](https://github.com/PolymathNetwork/polymesh-sdk/blob/31dfa0dc/src/api/entities/Asset/Permissions.ts#L84)

***

#### removeAgent

▸ **removeAgent**(`args`, `opts?`): `Promise`<`TransactionQueue`<`void`, `void`, `unknown`\[]\[]>>

Revoke an agent's permissions over this Asset

**`note`** this method is of type [ProcedureMethod](/polymesh-sdk-api-reference/docs-alpha/interfaces/types.proceduremethod.md), which means you can call [removeAgent.checkAuthorization](/polymesh-sdk-api-reference/docs-alpha/interfaces/types.proceduremethod.md#checkauthorization) on it to see whether the signing Account and Identity have the required roles and permissions to run it

**Parameters**

| Name    | Type                                                                                                                                             |
| ------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
| `args`  | [`RemoveExternalAgentParams`](/polymesh-sdk-api-reference/docs-alpha/interfaces/api_procedures_removeexternalagent.removeexternalagentparams.md) |
| `opts?` | [`ProcedureOpts`](/polymesh-sdk-api-reference/docs-alpha/interfaces/types.procedureopts.md)                                                      |

**Returns**

`Promise`<`TransactionQueue`<`void`, `void`, `unknown`\[]\[]>>

**Defined in**

[api/entities/Asset/Permissions.ts:94](https://github.com/PolymathNetwork/polymesh-sdk/blob/31dfa0dc/src/api/entities/Asset/Permissions.ts#L94)
