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