> ## Documentation Index
> Fetch the complete documentation index at: https://docs.bijection.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Interface: GenericAccessDefinition

> Immutable schema authoring and value constructors.

[server](/api/modules/server).GenericAccessDefinition

Immutable schema authoring and value constructors.

## Hierarchy

* `AccessPolicies`

  ↳ **`GenericAccessDefinition`**

## Properties

### role

• **role**: (`key`: `string`) => `Extract`\<[`RoleRef`](/api/modules/server#roleref), \{ `kind`: `"declared"`  }>

#### Type declaration

▸ (`key`): `Extract`\<[`RoleRef`](/api/modules/server#roleref), \{ `kind`: `"declared"`  }>

A declared role, by its stable key.

##### Parameters

| Name | Type |
| :- | :- |
| `key` | `string` |

##### Returns

`Extract`\<[`RoleRef`](/api/modules/server#roleref), \{ `kind`: `"declared"`  }>

***

### person

• **person**: (`key`: `string`) => `Extract`\<[`Holder`](/api/modules/server#holder), \{ `kind`: `"person"`  }>

#### Type declaration

▸ (`key`): `Extract`\<[`Holder`](/api/modules/server#holder), \{ `kind`: `"person"`  }>

##### Parameters

| Name | Type |
| :- | :- |
| `key` | `string` |

##### Returns

`Extract`\<[`Holder`](/api/modules/server#holder), \{ `kind`: `"person"`  }>

***

### service

• **service**: (`name`: `string`) => `Extract`\<[`Holder`](/api/modules/server#holder), \{ `kind`: `"service"`  }>

#### Type declaration

▸ (`name`): `Extract`\<[`Holder`](/api/modules/server#holder), \{ `kind`: `"service"`  }>

##### Parameters

| Name | Type |
| :- | :- |
| `name` | `string` |

##### Returns

`Extract`\<[`Holder`](/api/modules/server#holder), \{ `kind`: `"service"`  }>

***

### group

• **group**: (`resource`: [`AccessResourceRef`](/api/modules/server#accessresourceref), `memberPermission`: `string`) => `Extract`\<[`Holder`](/api/modules/server#holder), \{ `kind`: `"group"`  }>

#### Type declaration

▸ (`resource`, `memberPermission`): `Extract`\<[`Holder`](/api/modules/server#holder), \{ `kind`: `"group"`  }>

The holders of `memberPermission` on a group resource.

##### Parameters

| Name | Type |
| :- | :- |
| `resource` | [`AccessResourceRef`](/api/modules/server#accessresourceref) |
| `memberPermission` | `string` |

##### Returns

`Extract`\<[`Holder`](/api/modules/server#holder), \{ `kind`: `"group"`  }>

***

### delegate

• **delegate**: (`client`: [`DelegationClient`](/api/interfaces/server.DelegationClient), `input`: [`DelegationInput`](/api/modules/server#delegationinput)) => `Promise`\<[`DelegationGrant`](/api/modules/server#delegationgrant)>

#### Type declaration

▸ (`client`, `input`): `Promise`\<[`DelegationGrant`](/api/modules/server#delegationgrant)>

##### Parameters

| Name | Type |
| :- | :- |
| `client` | [`DelegationClient`](/api/interfaces/server.DelegationClient) |
| `input` | [`DelegationInput`](/api/modules/server#delegationinput) |

##### Returns

`Promise`\<[`DelegationGrant`](/api/modules/server#delegationgrant)>

***

### roles

• `Readonly` **roles**: `Pick`\<\{ `tenant`: (`id`: [`GenericId`](/api/modules/values#genericid)\<`string`>) => `Extract`\<[`RoleRef`](/api/modules/server#roleref), \{ `kind`: `"tenant"`  }> ; `create`: (`ctx`: [`AccessMutationCtx`](/api/modules/server#accessmutationctx), `input`: \{ `scope`: \{ `type`: `string` ; `key`: `string`  } ; `resourceType`: `string` ; `name`: `string` ; `permissions`: `string`\[] ; `assignment?`: \{ `maxDuration?`: `number` ; `reasonRequired?`: `boolean` ; `guests?`: `boolean`  }  }) => `Promise`\<`Extract`\<[`RoleRef`](/api/modules/server#roleref), \{ `kind`: `"tenant"`  }>> ; `update`: (`ctx`: [`AccessMutationCtx`](/api/modules/server#accessmutationctx), `role`: `Extract`\<[`RoleRef`](/api/modules/server#roleref), \{ `kind`: `"tenant"`  }>, `changes`: `Partial`\<`Pick`\<[`RoleDefinitionDocument`](/api/modules/server#roledefinitiondocument), `"name"` | `"permissions"` | `"maxDuration"` | `"reasonRequired"` | `"guests"`>>) => `Promise`\<`void`> ; `remove`: (`ctx`: [`AccessMutationCtx`](/api/modules/server#accessmutationctx), `role`: `Extract`\<[`RoleRef`](/api/modules/server#roleref), \{ `kind`: `"tenant"`  }>) => `Promise`\<`void`>  }, `"tenant"`>

## Methods

### inputs

▸ **inputs**(): `string`\[]

#### Returns

`string`\[]

#### Inherited from

AccessPolicies.inputs

***

### policy

▸ **policy**(`type`, `options?`): [`SchemaAccessPolicy`](/api/modules/server#schemaaccesspolicy)

#### Parameters

| Name | Type |
| :- | :- |
| `type` | `string` |
| `options?` | `Object` |
| `options.alsoTo?` | readonly `string`\[] |

#### Returns

[`SchemaAccessPolicy`](/api/modules/server#schemaaccesspolicy)

#### Inherited from

AccessPolicies.policy

***

### assignmentsPolicy

▸ **assignmentsPolicy**(`options?`): [`SchemaAccessPolicy`](/api/modules/server#schemaaccesspolicy)

#### Parameters

| Name | Type |
| :- | :- |
| `options?` | `Object` |
| `options.alsoTo?` | readonly `string`\[] |

#### Returns

[`SchemaAccessPolicy`](/api/modules/server#schemaaccesspolicy)

#### Inherited from

AccessPolicies.assignmentsPolicy

***

### requestsPolicy

▸ **requestsPolicy**(): [`SchemaAccessPolicy`](/api/modules/server#schemaaccesspolicy)

#### Returns

[`SchemaAccessPolicy`](/api/modules/server#schemaaccesspolicy)

#### Inherited from

AccessPolicies.requestsPolicy

***

### roleDefinitionsPolicy

▸ **roleDefinitionsPolicy**(): [`SchemaAccessPolicy`](/api/modules/server#schemaaccesspolicy)

#### Returns

[`SchemaAccessPolicy`](/api/modules/server#schemaaccesspolicy)

#### Inherited from

AccessPolicies.roleDefinitionsPolicy

***

### assignments

▸ **assignments**(`policy?`): `ReturnType`\<typeof [`assignmentsTable`](/api/modules/server#assignmentstable)>

#### Parameters

| Name | Type |
| :- | :- |
| `policy?` | [`SchemaAccessPolicy`](/api/modules/server#schemaaccesspolicy) |

#### Returns

`ReturnType`\<typeof [`assignmentsTable`](/api/modules/server#assignmentstable)>

#### Inherited from

AccessPolicies.assignments

***

### requests

▸ **requests**(): `ReturnType`\<typeof [`requestsTable`](/api/modules/server#requeststable)>

#### Returns

`ReturnType`\<typeof [`requestsTable`](/api/modules/server#requeststable)>

#### Inherited from

AccessPolicies.requests

***

### roleDefinitions

▸ **roleDefinitions**(): `ReturnType`\<typeof [`roleDefinitionsTable`](/api/modules/server#roledefinitionstable)>

#### Returns

`ReturnType`\<typeof [`roleDefinitionsTable`](/api/modules/server#roledefinitionstable)>

#### Inherited from

AccessPolicies.roleDefinitions

***

### resource

▸ **resource**(`type`, `key`): [`AccessResourceRef`](/api/modules/server#accessresourceref)

#### Parameters

| Name | Type |
| :- | :- |
| `type` | `string` |
| `key` | `string` |

#### Returns

[`AccessResourceRef`](/api/modules/server#accessresourceref)

***

### describe

▸ **describe**(): [`AccessDescription`](/api/interfaces/server.AccessDescription)

#### Returns

[`AccessDescription`](/api/interfaces/server.AccessDescription)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.