Skip to content
OpenAppPhysical access, fully managed
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. Row fields outsideconfig are enforcement (this type acceptsenforce; any other value is rejected with 400), enabled (disabled rows never apply), and capability.

NameTypeRequiredValuesDescription
allowed_rolesstring[]Yes
adminintegrations:updateresidenttechnician
Non-empty allow-list of role strings. Presets are listed; custom role keys are also accepted.
applies_tostring[]No
adminmemberresidentall
Principal kinds this row binds, as a non-empty array of admin, member, resident, all. Other kinds, a bare string, and empty arrays are rejected. `all` matches every kind this policy can bind. A caller is every kind it is at once, and a row binds when any of them is listed. When omitted, the default applies. Default: Every author, including admins.
outputstring or integerNo—Device policies only. One output of the device, as the device reports it (PalGate `1` or `2`, a Shelly, Tasmota, or Waveshare channel index). When set, the policy binds only actions on that output; when omitted, every output of the device. An output that is not one of the device’s outputs, or `output` on an organization or integration policy, is rejected. If an action’s output cannot be identified, an output-scoped policy denies it.

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.