Skip to content
OpenAppPhysical access, simplified
Login

Who may invite

Type
invite_creator_roles
Category
Invitations
Enforced at
Authoring-time
Tiers
OrgIntegrationDevice
Enforcement
Enforce
Default
Not configured — anyone who can otherwise create invitations may do so.

The actor must match any remaining role after intersecting allow-lists. This type is not admin-exempt: omit admin and admins cannot invite. Compose with user_sharing — both must pass; user_sharing mode none still wins. Dashboard presets include admin, integrations:update, resident, and technician; other role strings are allowed.

When it is enforced

Evaluated when someone creates or updates an invitation, hold, or share. Requests that would exceed the limit are rejected — they are not silently rewritten.

Where to set it

Settings → Policies (org), the integration Policies tab, or — on PalGate — the device steward Policies tab.

Policies never grant access. See thepolicies architecture guidefor how org, integration, and device tiers combine.

Arguments

The config object on create/update. Shared row fieldsenforcement (enforce, require_approval,audit_only) and enabled apply to every type;audit_only and disabled rows never block.

NameTypeRequiredValuesDescription
allowed_rolesstring[]Yes
adminintegrations:updateresidenttechnician
Non-empty allow-list of role strings. Presets are listed; custom role keys are also accepted.
outputstring or integerNoOptional channel or output id. When set, the policy binds only that output. When omitted, it binds every output of the tier target. A scoped row does not apply when the acting output is unknown.

How overlapping rows combine

Intersection of allowed_roles. Empty intersection means nobody. Not admin-exempt.

Example

A technician cannot create an invitation. A resident still can, unless user_sharing also blocks them.

config
{
"allowed_roles": [
"admin",
"resident"
]
}

Integrations

This type is documented on these connectors:

The OpenAPI contract names this object InviteCreatorRolesPolicyConfig:

{
"allowed_roles": ["admin", "resident"],
"output": "main"
}

allowed_roles is a non-empty role allow-list. Applicable rows intersect their lists; an empty intersection allows nobody.