> ## 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: AccessModel

> The supported model surface.

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

The supported model surface. Resource handles are added by defineAccessModel.

## Hierarchy

* `AccessChecks`

* `AccessGrants`

* `AccessPolicies`

  ↳ **`AccessModel`**

## Methods

### require

▸ **require**(`ctx`, `permission`, `type`, `key`): `Promise`\<[`GoverningResult`](/api/modules/server#governingresult)>

#### Parameters

| Name | Type |
| :- | :- |
| `ctx` | [`AccessCtx`](/api/modules/server#accessctx) |
| `permission` | `string` |
| `type` | `string` |
| `key` | `string` |

#### Returns

`Promise`\<[`GoverningResult`](/api/modules/server#governingresult)>

#### Inherited from

AccessChecks.require

***

### check

▸ **check**(`ctx`, `permission`, `type`, `key`): `Promise`\<[`AccessDecision`](/api/modules/server#accessdecision)>

#### Parameters

| Name | Type |
| :- | :- |
| `ctx` | [`AccessCtx`](/api/modules/server#accessctx) |
| `permission` | `string` |
| `type` | `string` |
| `key` | `string` |

#### Returns

`Promise`\<[`AccessDecision`](/api/modules/server#accessdecision)>

#### Inherited from

AccessChecks.check

***

### checkMany

▸ **checkMany**(`ctx`, `checks`): `Promise`\<[`AccessDecision`](/api/modules/server#accessdecision)\[]>

#### Parameters

| Name | Type |
| :- | :- |
| `ctx` | [`AccessCtx`](/api/modules/server#accessctx) |
| `checks` | readonly [`AccessCheck`](/api/modules/server#accesscheck)\[] |

#### Returns

`Promise`\<[`AccessDecision`](/api/modules/server#accessdecision)\[]>

#### Inherited from

AccessChecks.checkMany

***

### explain

▸ **explain**(`ctx`, `permission`, `type`, `key`): `Promise`\<[`AccessExplanation`](/api/modules/server#accessexplanation)>

#### Parameters

| Name | Type |
| :- | :- |
| `ctx` | [`AccessCtx`](/api/modules/server#accessctx) |
| `permission` | `string` |
| `type` | `string` |
| `key` | `string` |

#### Returns

`Promise`\<[`AccessExplanation`](/api/modules/server#accessexplanation)>

#### Inherited from

AccessChecks.explain

***

### requireSubject

▸ **requireSubject**(`ctx`, `subject`, `permission`, `type`, `key`): `Promise`\<[`GoverningResult`](/api/modules/server#governingresult)>

#### Parameters

| Name | Type |
| :- | :- |
| `ctx` | [`AccessCtx`](/api/modules/server#accessctx) |
| `subject` | `string` |
| `permission` | `string` |
| `type` | `string` |
| `key` | `string` |

#### Returns

`Promise`\<[`GoverningResult`](/api/modules/server#governingresult)>

#### Inherited from

AccessChecks.requireSubject

***

### audited

▸ **audited**(`ctx`, `permission`, `type`, `key`): `Promise`\<[`GoverningResult`](/api/modules/server#governingresult)>

#### Parameters

| Name | Type |
| :- | :- |
| `ctx` | [`AccessCtx`](/api/modules/server#accessctx) |
| `permission` | `string` |
| `type` | `string` |
| `key` | `string` |

#### Returns

`Promise`\<[`GoverningResult`](/api/modules/server#governingresult)>

#### Inherited from

AccessChecks.audited

***

### permissionsOn

▸ **permissionsOn**(`ctx`, `type`, `key`): `Promise`\<`string`\[]>

#### Parameters

| Name | Type |
| :- | :- |
| `ctx` | [`AccessCtx`](/api/modules/server#accessctx) |
| `type` | `string` |
| `key` | `string` |

#### Returns

`Promise`\<`string`\[]>

#### Inherited from

AccessChecks.permissionsOn

***

### reachableKeys

▸ **reachableKeys**(`ctx`, `type`, `options?`): `Promise`\<`string`\[]>

Advanced candidate discovery, not authorized pagination. Direct-grant
keys may still fail restrictions; arrays are point-check only. Returns
sorted distinct keys or throws AccessLimitExceeded; never truncates.
Limit: integer 1..4096, default 100. Native policy errors stay redacted.

#### Parameters

| Name | Type |
| :- | :- |
| `ctx` | [`AccessCtx`](/api/modules/server#accessctx) |
| `type` | `string` |
| `options?` | `Object` |
| `options.permission?` | `string` |
| `options.limit?` | `number` |

#### Returns

`Promise`\<`string`\[]>

#### Inherited from

AccessChecks.reachableKeys

***

### holders

▸ **holders**(`ctx`, `type`, `key`): `Promise`\<\{ `on`: `string` ; `grants`: [`GrantDocument`](/api/modules/server#grantdocument)\[] ; `rowGrants`: \{ `field`: `string` ; `role`: `string` ; `keys`: `string`\[]  }\[] ; `directories`: \{ `table`: `string` ; `role`: `string`  }\[]  }\[]>

#### Parameters

| Name | Type |
| :- | :- |
| `ctx` | [`AccessCtx`](/api/modules/server#accessctx) |
| `type` | `string` |
| `key` | `string` |

#### Returns

`Promise`\<\{ `on`: `string` ; `grants`: [`GrantDocument`](/api/modules/server#grantdocument)\[] ; `rowGrants`: \{ `field`: `string` ; `role`: `string` ; `keys`: `string`\[]  }\[] ; `directories`: \{ `table`: `string` ; `role`: `string`  }\[]  }\[]>

#### Inherited from

AccessChecks.holders

***

### grant

▸ **grant**(`ctx`, `input`, `options?`): `Promise`\<[`GenericId`](/api/modules/values#genericid)\<`string`>>

#### Parameters

| Name | Type |
| :- | :- |
| `ctx` | [`AccessMutationCtx`](/api/modules/server#accessmutationctx) |
| `input` | [`GrantInput`](/api/modules/server#grantinput) |
| `options?` | [`GrantOptions`](/api/modules/server#grantoptions) |

#### Returns

`Promise`\<[`GenericId`](/api/modules/values#genericid)\<`string`>>

#### Inherited from

AccessGrants.grant

***

### recertify

▸ **recertify**(`ctx`, `id`, `renewal`, `options`): `Promise`\<[`GenericId`](/api/modules/values#genericid)\<`string`>>

#### Parameters

| Name | Type |
| :- | :- |
| `ctx` | [`AccessMutationCtx`](/api/modules/server#accessmutationctx) |
| `id` | [`GenericId`](/api/modules/values#genericid)\<`string`> |
| `renewal` | `Object` |
| `renewal.expiresAt` | `number` |
| `renewal.reason?` | `string` |
| `options` | [`GrantOptions`](/api/modules/server#grantoptions) & \{ `expire`: [`GrantMutation`](/api/modules/server#grantmutation)  } |

#### Returns

`Promise`\<[`GenericId`](/api/modules/values#genericid)\<`string`>>

#### Inherited from

AccessGrants.recertify

***

### reviewDue

▸ **reviewDue**(`ctx`, `args`): `Promise`\<`null` | [`GrantDocument`](/api/modules/server#grantdocument)>

#### Parameters

| Name | Type |
| :- | :- |
| `ctx` | `Object` |
| `ctx.db` | [`GenericDatabaseReader`](/api/interfaces/server.GenericDatabaseReader)\<`any`> |
| `ctx.audit?` | (`body`: [`AuditLogBody`](/api/modules/server#auditlogbody)) => `Promise`\<`void`> |
| `args` | `Object` |
| `args.id` | [`GenericId`](/api/modules/values#genericid)\<`string`> |

#### Returns

`Promise`\<`null` | [`GrantDocument`](/api/modules/server#grantdocument)>

#### Inherited from

AccessGrants.reviewDue

***

### expireGrant

▸ **expireGrant**(`ctx`, `args`): `Promise`\<`null`>

#### Parameters

| Name | Type |
| :- | :- |
| `ctx` | `Object` |
| `ctx.db` | [`GenericDatabaseWriter`](/api/interfaces/server.GenericDatabaseWriter)\<`any`> |
| `ctx.audit?` | (`body`: [`AuditLogBody`](/api/modules/server#auditlogbody)) => `Promise`\<`void`> |
| `args` | `Object` |
| `args.id` | [`GenericId`](/api/modules/values#genericid)\<`string`> |

#### Returns

`Promise`\<`null`>

#### Inherited from

AccessGrants.expireGrant

***

### revokeAll

▸ **revokeAll**(`ctx`, `type`, `key`): `Promise`\<`number`>

#### Parameters

| Name | Type |
| :- | :- |
| `ctx` | `Object` |
| `ctx.db` | [`GenericDatabaseWriter`](/api/interfaces/server.GenericDatabaseWriter)\<`any`> |
| `ctx.audit?` | (`body`: [`AuditLogBody`](/api/modules/server#auditlogbody)) => `Promise`\<`void`> |
| `type` | `string` |
| `key` | `string` |

#### Returns

`Promise`\<`number`>

#### Inherited from

AccessGrants.revokeAll

***

### inputs

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

#### Returns

`string`\[]

#### Inherited from

AccessPolicies.inputs

***

### policy

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

#### Parameters

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

#### Returns

[`AccessPolicy`](/api/modules/server#accesspolicy)

#### Inherited from

AccessPolicies.policy

***

### grantsPolicy

▸ **grantsPolicy**(`options?`): [`AccessPolicy`](/api/modules/server#accesspolicy)

#### Parameters

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

#### Returns

[`AccessPolicy`](/api/modules/server#accesspolicy)

#### Inherited from

AccessPolicies.grantsPolicy

***

### requestsPolicy

▸ **requestsPolicy**(): [`AccessPolicy`](/api/modules/server#accesspolicy)

#### Returns

[`AccessPolicy`](/api/modules/server#accesspolicy)

#### Inherited from

AccessPolicies.requestsPolicy

***

### roleDefinitionsPolicy

▸ **roleDefinitionsPolicy**(): [`AccessPolicy`](/api/modules/server#accesspolicy)

#### Returns

[`AccessPolicy`](/api/modules/server#accesspolicy)

#### Inherited from

AccessPolicies.roleDefinitionsPolicy

***

### protectGrants

▸ **protectGrants**(): [`TableDefinition`](/api/classes/server.TableDefinition)\<[`VObject`](/api/classes/values.VObject)\<\{ `reason`: `undefined` | `string` ; `expiresAt`: `undefined` | `number` ; `subjectPermission`: `undefined` | `string` ; `object`: `string` ; `type`: `string` ; `subject`: `string` ; `role`: `string` ; `subjectKind`: `"group"` | `"user"` ; `subjectType`: `string`  }, \{ `type`: [`VString`](/api/classes/values.VString)\<`string`, `"required"`> ; `object`: [`VString`](/api/classes/values.VString)\<`string`, `"required"`> ; `role`: [`VString`](/api/classes/values.VString)\<`string`, `"required"`> ; `subjectKind`: [`VUnion`](/api/classes/values.VUnion)\<`"group"` | `"user"`, \[[`VLiteral`](/api/classes/values.VLiteral)\<`"user"`, `"required"`>, [`VLiteral`](/api/classes/values.VLiteral)\<`"group"`, `"required"`>], `"required"`, `never`> ; `subjectType`: [`VString`](/api/classes/values.VString)\<`string`, `"required"`> ; `subject`: [`VString`](/api/classes/values.VString)\<`string`, `"required"`> ; `subjectPermission`: [`VString`](/api/classes/values.VString)\<`undefined` | `string`, `"optional"`> ; `expiresAt`: [`VFloat64`](/api/classes/values.VFloat64)\<`undefined` | `number`, `"optional"`> ; `reason`: [`VString`](/api/classes/values.VString)\<`undefined` | `string`, `"optional"`>  }, `"required"`, `"object"` | `"type"` | `"subject"` | `"role"` | `"reason"` | `"expiresAt"` | `"subjectKind"` | `"subjectType"` | `"subjectPermission"`>, \{ `by_subject`: \[`"subjectKind"`, `"subjectType"`, `"subject"`, `"subjectPermission"`, `"type"`, `"object"`, `"_creationTime"`] ; `by_object`: \[`"type"`, `"object"`, `"subjectKind"`, `"role"`, `"subject"`, `"_creationTime"`] ; `by_role`: \[`"role"`, `"type"`, `"object"`, `"_creationTime"`]  }, \{}, \{}, `false`>

#### Returns

[`TableDefinition`](/api/classes/server.TableDefinition)\<[`VObject`](/api/classes/values.VObject)\<\{ `reason`: `undefined` | `string` ; `expiresAt`: `undefined` | `number` ; `subjectPermission`: `undefined` | `string` ; `object`: `string` ; `type`: `string` ; `subject`: `string` ; `role`: `string` ; `subjectKind`: `"group"` | `"user"` ; `subjectType`: `string`  }, \{ `type`: [`VString`](/api/classes/values.VString)\<`string`, `"required"`> ; `object`: [`VString`](/api/classes/values.VString)\<`string`, `"required"`> ; `role`: [`VString`](/api/classes/values.VString)\<`string`, `"required"`> ; `subjectKind`: [`VUnion`](/api/classes/values.VUnion)\<`"group"` | `"user"`, \[[`VLiteral`](/api/classes/values.VLiteral)\<`"user"`, `"required"`>, [`VLiteral`](/api/classes/values.VLiteral)\<`"group"`, `"required"`>], `"required"`, `never`> ; `subjectType`: [`VString`](/api/classes/values.VString)\<`string`, `"required"`> ; `subject`: [`VString`](/api/classes/values.VString)\<`string`, `"required"`> ; `subjectPermission`: [`VString`](/api/classes/values.VString)\<`undefined` | `string`, `"optional"`> ; `expiresAt`: [`VFloat64`](/api/classes/values.VFloat64)\<`undefined` | `number`, `"optional"`> ; `reason`: [`VString`](/api/classes/values.VString)\<`undefined` | `string`, `"optional"`>  }, `"required"`, `"object"` | `"type"` | `"subject"` | `"role"` | `"reason"` | `"expiresAt"` | `"subjectKind"` | `"subjectType"` | `"subjectPermission"`>, \{ `by_subject`: \[`"subjectKind"`, `"subjectType"`, `"subject"`, `"subjectPermission"`, `"type"`, `"object"`, `"_creationTime"`] ; `by_object`: \[`"type"`, `"object"`, `"subjectKind"`, `"role"`, `"subject"`, `"_creationTime"`] ; `by_role`: \[`"role"`, `"type"`, `"object"`, `"_creationTime"`]  }, \{}, \{}, `false`>

#### Inherited from

AccessPolicies.protectGrants

***

### protectRequests

▸ **protectRequests**(`options`): [`TableDefinition`](/api/classes/server.TableDefinition)\<[`VObject`](/api/classes/values.VObject)\<\{ `expiresAt`: `undefined` | `number` ; `grant`: `undefined` | `string` ; `reviewer`: `undefined` | `string` ; `reviewerLabel`: `undefined` | `string` ; `comment`: `undefined` | `string` ; `object`: `string` ; `type`: `string` ; `updatedAt`: `number` ; `role`: `string` ; `reason`: `string` ; `status`: `"rejected"` | `"pending"` | `"withdrawn"` | `"approved"` ; `beneficiary`: `string` ; `requester`: `string` ; `requesterLabel`: `string` ; `acknowledged`: `boolean`  }, \{ `type`: [`VString`](/api/classes/values.VString)\<`string`, `"required"`> ; `object`: [`VString`](/api/classes/values.VString)\<`string`, `"required"`> ; `role`: [`VString`](/api/classes/values.VString)\<`string`, `"required"`> ; `beneficiary`: [`VString`](/api/classes/values.VString)\<`string`, `"required"`> ; `expiresAt`: [`VFloat64`](/api/classes/values.VFloat64)\<`undefined` | `number`, `"optional"`> ; `requester`: [`VString`](/api/classes/values.VString)\<`string`, `"required"`> ; `requesterLabel`: [`VString`](/api/classes/values.VString)\<`string`, `"required"`> ; `reason`: [`VString`](/api/classes/values.VString)\<`string`, `"required"`> ; `status`: [`VUnion`](/api/classes/values.VUnion)\<`"rejected"` | `"pending"` | `"withdrawn"` | `"approved"`, \[[`VLiteral`](/api/classes/values.VLiteral)\<`"pending"`, `"required"`>, [`VLiteral`](/api/classes/values.VLiteral)\<`"approved"`, `"required"`>, [`VLiteral`](/api/classes/values.VLiteral)\<`"rejected"`, `"required"`>, [`VLiteral`](/api/classes/values.VLiteral)\<`"withdrawn"`, `"required"`>], `"required"`, `never`> ; `acknowledged`: [`VBoolean`](/api/classes/values.VBoolean)\<`boolean`, `"required"`> ; `updatedAt`: [`VFloat64`](/api/classes/values.VFloat64)\<`number`, `"required"`> ; `reviewer`: [`VString`](/api/classes/values.VString)\<`undefined` | `string`, `"optional"`> ; `reviewerLabel`: [`VString`](/api/classes/values.VString)\<`undefined` | `string`, `"optional"`> ; `comment`: [`VString`](/api/classes/values.VString)\<`undefined` | `string`, `"optional"`> ; `grant`: [`VString`](/api/classes/values.VString)\<`undefined` | `string`, `"optional"`>  }, `"required"`, `"object"` | `"type"` | `"updatedAt"` | `"role"` | `"reason"` | `"expiresAt"` | `"status"` | `"beneficiary"` | `"grant"` | `"requester"` | `"requesterLabel"` | `"acknowledged"` | `"reviewer"` | `"reviewerLabel"` | `"comment"`>, \{ `by_status`: \[`"status"`, `"_creationTime"`] ; `by_requester`: \[`"requester"`, `"status"`, `"_creationTime"`] ; `by_beneficiary`: \[`"beneficiary"`, `"status"`, `"_creationTime"`] ; `by_resource`: \[`"type"`, `"object"`, `"role"`, `"status"`, `"_creationTime"`]  }, \{}, \{}, `false`>

#### Parameters

| Name | Type |
| :- | :- |
| `options` | `Object` |
| `options.expire` | [`GrantMutation`](/api/modules/server#grantmutation) |

#### Returns

[`TableDefinition`](/api/classes/server.TableDefinition)\<[`VObject`](/api/classes/values.VObject)\<\{ `expiresAt`: `undefined` | `number` ; `grant`: `undefined` | `string` ; `reviewer`: `undefined` | `string` ; `reviewerLabel`: `undefined` | `string` ; `comment`: `undefined` | `string` ; `object`: `string` ; `type`: `string` ; `updatedAt`: `number` ; `role`: `string` ; `reason`: `string` ; `status`: `"rejected"` | `"pending"` | `"withdrawn"` | `"approved"` ; `beneficiary`: `string` ; `requester`: `string` ; `requesterLabel`: `string` ; `acknowledged`: `boolean`  }, \{ `type`: [`VString`](/api/classes/values.VString)\<`string`, `"required"`> ; `object`: [`VString`](/api/classes/values.VString)\<`string`, `"required"`> ; `role`: [`VString`](/api/classes/values.VString)\<`string`, `"required"`> ; `beneficiary`: [`VString`](/api/classes/values.VString)\<`string`, `"required"`> ; `expiresAt`: [`VFloat64`](/api/classes/values.VFloat64)\<`undefined` | `number`, `"optional"`> ; `requester`: [`VString`](/api/classes/values.VString)\<`string`, `"required"`> ; `requesterLabel`: [`VString`](/api/classes/values.VString)\<`string`, `"required"`> ; `reason`: [`VString`](/api/classes/values.VString)\<`string`, `"required"`> ; `status`: [`VUnion`](/api/classes/values.VUnion)\<`"rejected"` | `"pending"` | `"withdrawn"` | `"approved"`, \[[`VLiteral`](/api/classes/values.VLiteral)\<`"pending"`, `"required"`>, [`VLiteral`](/api/classes/values.VLiteral)\<`"approved"`, `"required"`>, [`VLiteral`](/api/classes/values.VLiteral)\<`"rejected"`, `"required"`>, [`VLiteral`](/api/classes/values.VLiteral)\<`"withdrawn"`, `"required"`>], `"required"`, `never`> ; `acknowledged`: [`VBoolean`](/api/classes/values.VBoolean)\<`boolean`, `"required"`> ; `updatedAt`: [`VFloat64`](/api/classes/values.VFloat64)\<`number`, `"required"`> ; `reviewer`: [`VString`](/api/classes/values.VString)\<`undefined` | `string`, `"optional"`> ; `reviewerLabel`: [`VString`](/api/classes/values.VString)\<`undefined` | `string`, `"optional"`> ; `comment`: [`VString`](/api/classes/values.VString)\<`undefined` | `string`, `"optional"`> ; `grant`: [`VString`](/api/classes/values.VString)\<`undefined` | `string`, `"optional"`>  }, `"required"`, `"object"` | `"type"` | `"updatedAt"` | `"role"` | `"reason"` | `"expiresAt"` | `"status"` | `"beneficiary"` | `"grant"` | `"requester"` | `"requesterLabel"` | `"acknowledged"` | `"reviewer"` | `"reviewerLabel"` | `"comment"`>, \{ `by_status`: \[`"status"`, `"_creationTime"`] ; `by_requester`: \[`"requester"`, `"status"`, `"_creationTime"`] ; `by_beneficiary`: \[`"beneficiary"`, `"status"`, `"_creationTime"`] ; `by_resource`: \[`"type"`, `"object"`, `"role"`, `"status"`, `"_creationTime"`]  }, \{}, \{}, `false`>

#### Inherited from

AccessPolicies.protectRequests

***

### protectRoleDefinitions

▸ **protectRoleDefinitions**(): [`TableDefinition`](/api/classes/server.TableDefinition)\<[`VObject`](/api/classes/values.VObject)\<\{ `maxDuration`: `undefined` | `number` ; `type`: `string` ; `name`: `string` ; `scope`: `string` ; `permissions`: `string`\[]  }, \{ `scope`: [`VString`](/api/classes/values.VString)\<`string`, `"required"`> ; `type`: [`VString`](/api/classes/values.VString)\<`string`, `"required"`> ; `name`: [`VString`](/api/classes/values.VString)\<`string`, `"required"`> ; `permissions`: [`VArray`](/api/classes/values.VArray)\<`string`\[], [`VString`](/api/classes/values.VString)\<`string`, `"required"`>, `"required"`> ; `maxDuration`: [`VFloat64`](/api/classes/values.VFloat64)\<`undefined` | `number`, `"optional"`>  }, `"required"`, `"type"` | `"name"` | `"scope"` | `"permissions"` | `"maxDuration"`>, \{ `by_scope`: \[`"scope"`, `"type"`, `"name"`, `"_creationTime"`]  }, \{}, \{}, `false`>

#### Returns

[`TableDefinition`](/api/classes/server.TableDefinition)\<[`VObject`](/api/classes/values.VObject)\<\{ `maxDuration`: `undefined` | `number` ; `type`: `string` ; `name`: `string` ; `scope`: `string` ; `permissions`: `string`\[]  }, \{ `scope`: [`VString`](/api/classes/values.VString)\<`string`, `"required"`> ; `type`: [`VString`](/api/classes/values.VString)\<`string`, `"required"`> ; `name`: [`VString`](/api/classes/values.VString)\<`string`, `"required"`> ; `permissions`: [`VArray`](/api/classes/values.VArray)\<`string`\[], [`VString`](/api/classes/values.VString)\<`string`, `"required"`>, `"required"`> ; `maxDuration`: [`VFloat64`](/api/classes/values.VFloat64)\<`undefined` | `number`, `"optional"`>  }, `"required"`, `"type"` | `"name"` | `"scope"` | `"permissions"` | `"maxDuration"`>, \{ `by_scope`: \[`"scope"`, `"type"`, `"name"`, `"_creationTime"`]  }, \{}, \{}, `false`>

#### Inherited from

AccessPolicies.protectRoleDefinitions

***

### describe

▸ **describe**(): `AccessDescription`

#### Returns

`AccessDescription`

***

### cedar

▸ **cedar**(): [`AccessCedarPolicies`](/api/modules/server#accesscedarpolicies)

#### Returns

[`AccessCedarPolicies`](/api/modules/server#accesscedarpolicies)

***

### cedarEntities

▸ **cedarEntities**(`tables`, `now`, `coverage?`): [`AccessCedarEntities`](/api/modules/server#accesscedarentities)

#### Parameters

| Name | Type |
| :- | :- |
| `tables` | `Record`\<`string`, readonly `Record`\<`string`, `unknown`>\[]> |
| `now` | `number` |
| `coverage?` | (`sourceId`: `string`, `table`: `string`, `record`: `string`) => `null` \| [`AccessDirectoryCoverage`](/api/modules/server#accessdirectorycoverage) |

#### Returns

[`AccessCedarEntities`](/api/modules/server#accesscedarentities)

***

### cedarContext

▸ **cedarContext**(`identity`): `Record`\<`string`, `unknown`>

#### Parameters

| Name | Type |
| :- | :- |
| `identity` | `null` \| [`UserIdentity`](/api/interfaces/server.UserIdentity) |

#### Returns

`Record`\<`string`, `unknown`>


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