# 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)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_identity_assetpermissions.assetpermissions.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
