For each operation, OpenApp asks whether the caller holds the required role string in the resource’s organization or in any of its ancestors:
admin on that org or an ancestor satisfies every role in the list below.
platform_admin on that org or an ancestor also satisfies every role below. A few system operations need platform_admin on the root org specifically (see System roles).
Otherwise the caller needs the exact role string.
Roles are stored on the org where you assign them. A user with admin on a parent org only has that access in every sub-org without copying the role onto each child.
A scoped API key, voice key, or agent credential can only exercise roles named in its scope. The owner’s admin or platform_admin does not widen it: a key scoped to entities:set_state can use only that role, even when its owner is an admin.
Change plan and payment settings. On the entity-action API, a caller holding it is treated as an organization admin for policy exemptions (for example lockdown and maintenance window).
Submit OpenApp Scripting executions (POST /api/v1/scripting/executions, openapp scripting, SDK client.scripting). It grants nothing inside the script: every operation a script performs needs its own role.
These are not implied by any users:* role. The two system:* roles take effect only on the root org: an admin of any other org does not hold them, and GET /orgs/{id}/permissions reports them only for the root org.
Role
Grants
system:list_kratos_identities
List sign-in identities across the deployment.
system:delete_kratos_identities
Delete a sign-in identity that is still pending registration.
platform_admin
Everything admin grants. On the root org it also allows creating an org with an explicit id, creating users without assigning roles, managing any user, merging accounts, and other deployment-wide operations.
OpenApp writes these roles when you add someone to a site (POST /integrations/{id}/people, or a site grant on an org invitation, which accepts admin, resident, or technician) or to a listing (which accepts admin or member). Assign them through those routes, not by hand. A site role alone grants no permission role above; what it lets someone open comes from listing membership and site access rules.