Skip to main content

FunctionPermissionEffectInput

A declarative grid-permission effect the function applies TRANSACTIONALLY with its property mutations: grant or revoke runtime grid permissions (the same ACL Buddy enforces on movement/voxel writes) driven by game logic. Expressions are compiled server-side and evaluated in the invocation context (params plus the injected $caller_user_id / $self_owner_id / $session_id / $current_turn_user_id). If an effect fails, the whole invocation rolls back. Applied effects are recorded on the invocation event.

input FunctionPermissionEffectInput {
action: String!
permissionKeys: [String!]!
userExpression: String!
gridIdExpression: String!
ttlSecondsExpression: String
}

Fields

FunctionPermissionEffectInput.action ● String! non-null scalar

'grant' (upsert direct grants, optionally expiring) or 'revoke' (delete direct grants for the listed keys).

FunctionPermissionEffectInput.permissionKeys ● [String!]! non-null scalar

Runtime permission keys to grant/revoke (validated against the runtime_permissions catalog, e.g. 'access', 'teleport', 'update_voxel_data', 'use_voice_chat').

FunctionPermissionEffectInput.userExpression ● String! non-null scalar

Expression resolving the target user id (int), e.g. "$caller_user_id" or "self.owner_user_id".

FunctionPermissionEffectInput.gridIdExpression ● String! non-null scalar

Expression resolving the grid id (int) the permissions apply to, e.g. "self.grid_id". The grid must belong to the app.

FunctionPermissionEffectInput.ttlSecondsExpression ● String scalar

Grant only: optional expression resolving a TTL in seconds (int > 0) after which the grant expires (rentals/leases), e.g. '86400'. Omit for a non-expiring grant.

Member Of

SeedFunctionInput input ● UpsertFunctionInput input