# api\_entities\_Identity\_AssetPermissions.AssetPermissions

[@polymeshassociation/polymesh-sdk](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/classes) / [Modules](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/modules) / [api/entities/Identity/AssetPermissions](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/modules-1/api_entities_identity_assetpermissions) / AssetPermissions

## Class: AssetPermissions

[api/entities/Identity/AssetPermissions](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/modules-1/api_entities_identity_assetpermissions).AssetPermissions

Handles all Asset Permissions (External Agents) related functionality on the Identity side

### Hierarchy

* `Namespace`<[`Identity`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_identity.identity)>

  ↳ **`AssetPermissions`**

### Table of contents

#### Methods

* [checkPermissions](#checkpermissions)
* [enabledAt](#enabledat)
* [get](#get)
* [getGroup](#getgroup)
* [getOperationHistory](#getoperationhistory)
* [hasPermissions](#haspermissions)
* [setGroup](#setgroup)
* [waive](#waive)

### Methods

#### checkPermissions

▸ **checkPermissions**(`args`): `Promise`<[`CheckPermissionsResult`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/interfaces/types.checkpermissionsresult)<[`Identity`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/enums/types.signertype#identity)>>

Check whether this Identity has specific transaction Permissions over an Asset

**Parameters**

| Name                | Type                                                                                                                              |
| ------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
| `args`              | `Object`                                                                                                                          |
| `args.asset`        | `string` \| [`Asset`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_asset.asset) |
| `args.transactions` | `null` \| `TxTag`\[]                                                                                                              |

**Returns**

`Promise`<[`CheckPermissionsResult`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/interfaces/types.checkpermissionsresult)<[`Identity`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/enums/types.signertype#identity)>>

**Defined in**

[api/entities/Identity/AssetPermissions.ts:133](https://github.com/PolymathNetwork/polymesh-sdk/blob/31dfa0dc/src/api/entities/Identity/AssetPermissions.ts#L133)

***

#### enabledAt

▸ **enabledAt**(`__namedParameters`): `Promise`<`null` | [`EventIdentifier`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/interfaces/types.eventidentifier)>

Retrieve the identifier data (block number, date and event index) of the event that was emitted when this Identity was enabled/added as an Agent with permissions over a specific Asset

**`note`** uses the middleware

**`note`** there is a possibility that the data is not ready by the time it is requested. In that case, `null` is returned

**Parameters**

| Name                      | Type                                                                                                                              |
| ------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
| `__namedParameters`       | `Object`                                                                                                                          |
| `__namedParameters.asset` | `string` \| [`Asset`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_asset.asset) |

**Returns**

`Promise`<`null` | [`EventIdentifier`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/interfaces/types.eventidentifier)>

**Defined in**

[api/entities/Identity/AssetPermissions.ts:337](https://github.com/PolymathNetwork/polymesh-sdk/blob/31dfa0dc/src/api/entities/Identity/AssetPermissions.ts#L337)

***

#### get

▸ **get**(): `Promise`<[`AssetWithGroup`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/interfaces/types.assetwithgroup)\[]>

Retrieve all the Assets over which this Identity has permissions, with the corresponding Permission Group

**Returns**

`Promise`<[`AssetWithGroup`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/interfaces/types.assetwithgroup)\[]>

**Defined in**

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

***

#### getGroup

▸ **getGroup**(`__namedParameters`): `Promise`<[`CustomPermissionGroup`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_custompermissiongroup.custompermissiongroup) | [`KnownPermissionGroup`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_knownpermissiongroup.knownpermissiongroup)>

Retrieve this Identity's Permission Group for a specific Asset

**Parameters**

| Name                      | Type                                                                                                                              |
| ------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
| `__namedParameters`       | `Object`                                                                                                                          |
| `__namedParameters.asset` | `string` \| [`Asset`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_asset.asset) |

**Returns**

`Promise`<[`CustomPermissionGroup`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_custompermissiongroup.custompermissiongroup) | [`KnownPermissionGroup`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_knownpermissiongroup.knownpermissiongroup)>

**Defined in**

[api/entities/Identity/AssetPermissions.ts:297](https://github.com/PolymathNetwork/polymesh-sdk/blob/31dfa0dc/src/api/entities/Identity/AssetPermissions.ts#L297)

***

#### getOperationHistory

▸ **getOperationHistory**(`opts`): `Promise`<[`ResultSet`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/interfaces/types.resultset)<[`EventIdentifier`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/interfaces/types.eventidentifier)>>

Retrieve all Events triggered by Operations this Identity has performed on a specific Asset

**`note`** uses the middleware

**`note`** supports pagination

**Parameters**

| Name             | Type                                                                                                                              | Description               |
| ---------------- | --------------------------------------------------------------------------------------------------------------------------------- | ------------------------- |
| `opts`           | `Object`                                                                                                                          | -                         |
| `opts.asset`     | `string` \| [`Asset`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_asset.asset) | -                         |
| `opts.eventId?`  | `EventIdEnum`                                                                                                                     | filters results by event  |
| `opts.moduleId?` | `ModuleIdEnum`                                                                                                                    | filters results by module |
| `opts.size?`     | `BigNumber`                                                                                                                       | page size                 |
| `opts.start?`    | `BigNumber`                                                                                                                       | page offset               |

**Returns**

`Promise`<[`ResultSet`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/interfaces/types.resultset)<[`EventIdentifier`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/interfaces/types.eventidentifier)>>

**Defined in**

[api/entities/Identity/AssetPermissions.ts:386](https://github.com/PolymathNetwork/polymesh-sdk/blob/31dfa0dc/src/api/entities/Identity/AssetPermissions.ts#L386)

***

#### hasPermissions

▸ **hasPermissions**(`args`): `Promise`<`boolean`>

Check whether this Identity has specific transaction Permissions over an Asset

**`deprecated`** in favor of `checkPermissions`

**Parameters**

| Name                | Type                                                                                                                              |
| ------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
| `args`              | `Object`                                                                                                                          |
| `args.asset`        | `string` \| [`Asset`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_asset.asset) |
| `args.transactions` | `null` \| `TxTag`\[]                                                                                                              |

**Returns**

`Promise`<`boolean`>

**Defined in**

[api/entities/Identity/AssetPermissions.ts:285](https://github.com/PolymathNetwork/polymesh-sdk/blob/31dfa0dc/src/api/entities/Identity/AssetPermissions.ts#L285)

***

#### setGroup

▸ **setGroup**(`args`, `opts?`): `Promise`<`TransactionQueue`<[`CustomPermissionGroup`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_custompermissiongroup.custompermissiongroup) | [`KnownPermissionGroup`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_knownpermissiongroup.knownpermissiongroup), [`CustomPermissionGroup`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_custompermissiongroup.custompermissiongroup) | [`KnownPermissionGroup`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_knownpermissiongroup.knownpermissiongroup), `unknown`\[]\[]>>

Assign this Identity to a different Permission Group for a given Asset

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

**Parameters**

| Name    | Type                                                                                                                                                                          |
| ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `args`  | [`SetPermissionGroupParams`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/interfaces/api_procedures_setpermissiongroup.setpermissiongroupparams) |
| `opts?` | [`ProcedureOpts`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/interfaces/types.procedureopts)                                                   |

**Returns**

`Promise`<`TransactionQueue`<[`CustomPermissionGroup`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_custompermissiongroup.custompermissiongroup) | [`KnownPermissionGroup`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_knownpermissiongroup.knownpermissiongroup), [`CustomPermissionGroup`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_custompermissiongroup.custompermissiongroup) | [`KnownPermissionGroup`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_knownpermissiongroup.knownpermissiongroup), `unknown`\[]\[]>>

**Defined in**

[api/entities/Identity/AssetPermissions.ts:371](https://github.com/PolymathNetwork/polymesh-sdk/blob/31dfa0dc/src/api/entities/Identity/AssetPermissions.ts#L371)

***

#### waive

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

Abdicate from the current Permissions Group for a given Asset. This means that this Identity will no longer have any permissions over said Asset

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

**Parameters**

| Name    | Type                                                                                                                                                                    |
| ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `args`  | [`WaivePermissionsParams`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/interfaces/api_procedures_waivepermissions.waivepermissionsparams) |
| `opts?` | [`ProcedureOpts`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/interfaces/types.procedureopts)                                             |

**Returns**

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

**Defined in**

[api/entities/Identity/AssetPermissions.ts:361](https://github.com/PolymathNetwork/polymesh-sdk/blob/31dfa0dc/src/api/entities/Identity/AssetPermissions.ts#L361)
