Skip to content
OpenAppPhysical access, fully managed
Login

Policy catalog

Policies are administrative limits that layer on top of roles. A policy never grants access; it only narrows what someone could already do. The one exception is emergency free egress, which stops OpenApp from denying opens. For the three-tier model (org / integration / device) and how rows combine, see the policies architecture guide.

Use the catalog below to find a policy by name, category, when it is enforced, or tier. Categories start collapsed — expand one to see its policies. Machine policy_type keys are on each type page. Each card opens a page with every argument, allowed values, and an example config.

Every policy row has these fields next to config:

FieldValuesMeaning
policy_typea type from the catalogUnknown types are rejected with 400.
enforcementenforce, or require_approval on user_sharing onlyOmitted means enforce. Any other value, including audit_only, is rejected with 400.
enabledbooleanDisabled rows are ignored.
capabilityinvitations, users_admin, switchable, or unsetOptional scope. Unset applies everywhere. Emergency types reject it.
configobjectType-specific; see each page.

A type written at a tier its page does not list (for example an emergency type on an integration) is rejected with 400.

A type accepts only the fields its evaluator applies. Any other field in config, or a capability the type does not support, is rejected with 400, so a saved policy never claims a restriction that nothing enforces. Each type page lists its fields. Two selectors appear on many types:

FieldValuesMeaning
applies_tonon-empty array of the principal kinds the type listsPrincipal kinds the row binds. A caller is every kind it is at once (for example a member who is also a resident), and the row binds when any of them is listed. A bare string, kinds the type does not list, and [] are rejected. Omitted means the type’s default.
outputstring or integerDevice policies only. One output of the device (PalGate 1 or 2; a Shelly, Tasmota, or Waveshare channel index). The value must be one of the device’s outputs. Omitted means every output of the device. If an action’s output cannot be identified, an output-scoped policy denies the action.

Author org policies on Settings → Policies, integration policies on the integration Policies tab, and device-tier policies (PalGate steward) on the device Policies tab.

Category
Enforced at
Tier

47 policies

Invitations

Guest invites — duration, uses, who may create them, and which doors they can cover.

23 policies

Invitation curfew

Blocks invitation-based opens during a forbidden time window (for example nights). Admins and residents are never curfewed; existing invitations are evaluated live, not modified.

→
Access-timeOrgIntegrationDevice

Max invitation duration

Caps how long each invitation schedule slot may last. Longer create or update requests are rejected, not shortened.

→
Authoring-timeOrgIntegrationDevice

Max share duration

Caps how long a short-term share (TTL invitation) may last. Combined with max invitation duration as the stricter of the two. Longer create requests are rejected, not shortened.

→
Authoring-timeOrgIntegrationDevice

Default share uses

When the author omits a use count on a share, store this default. The system default is 1 when this policy is not configured.

→
Authoring-timeOrgIntegrationDevice

Max share uses

Ceiling on how many times a share may be used. Unlimited shares require allow_unlimited on every applicable row and no invitation_max_uses.

→
Authoring-timeOrgIntegrationDevice

Max invitation uses

Requires a finite use count and rejects unlimited invitations or counts above the cap.

→
Authoring-timeOrgIntegrationDevice

Max invitation devices

Caps the number of unique guest browsers or app installations that may register an invitation.

→
Authoring-timeOrgIntegrationDevice

Max active invitations per user

Caps how many enabled, unexpired invitations one person may have at once.

→
Authoring-timeOrgIntegrationDevice

Require invitation expiry

Forbids open-ended recurring invitations that never end.

→
Authoring-timeOrgIntegrationDevice

Allowed entry kinds

Limits which portal types (door, gate, boom-gate) an invitation may grant. Combination intersects allowed sets.

→
Authoring-timeOrgIntegrationDevice

Require invitation justification

Requires a non-empty creation justification when creating or updating an invitation.

→
Authoring-timeOrgIntegrationDevice

Max doors per invitation

Caps how many unique portals a single invitation may grant.

→
Authoring-timeOrgIntegrationDevice

Own-listing doors only

Invitations may only grant doors the author can open as a member of an allowed listing. Org/integration admins are exempt unless applies_to says otherwise. PalGate-only sites with no listings fail for members.

→
Authoring-timeOrgIntegrationDevice

Prohibit master-door invitations

Rejects an invitation if any granted portal’s door is a listed OpenApp device id (union of ids; never client-forged hardware ids).

→
Authoring-timeOrgIntegrationDevice

Who may invite

Literal allow-list of roles that may create invitations. Combination intersects lists; empty intersection means nobody. Not admin-exempt. Compose with user_sharing (both must pass).

→
Authoring-timeOrgIntegrationDevice

No invitation re-share

Listing residents cannot create or update invitations. Org and integration rows bind residents by default, not generic members or admins. Device-tier rows bind everyone.

→
Authoring-timeOrgIntegrationDevice

Require invitation identity

Requires a host PIN, a host-attached photo, and/or a verified invitee phone before an invitation can be created or used.

→
Authoring-timeOrgIntegrationDevice

Invitation allowed days

Limits invitation-based opens to listed weekdays, minus blackout dates and optional holiday-calendar dates. Existing invitations are evaluated live, not modified.

→
Access-timeOrgIntegrationDevice

Holiday calendar

Lists organization-local ISO dates that invitation allowed-days can treat as holidays. This type does not deny access by itself.

→
Access-timeOrgIntegrationDevice

Require named invitations

Forbids invitations that anyone with the link may use, so every invitation must name who it is for.

→
Authoring-timeOrgIntegrationDevice

Allowed invitation contact kinds

Restricts which kinds of contact an invitation may name: organization people, groups, email, or phone.

→
Authoring-timeOrgIntegrationDevice

Max contacts per invitation

Caps how many contacts one invitation may name.

→
Authoring-timeOrgIntegrationDevice

Max notifications per contact per day

Caps how many times one invitation contact may be notified in a UTC day.

→
Authoring-timeOrgIntegrationDevice

Holds

Door hold-open and hold-closed — who may set a hold and for how long.

5 policies

Sharing

Who may share access or manage linked users outside invitations.

6 policies

Lifecycle

Move-out and idle membership — revoke leftover invites without deleting the user.

2 policies

Agent safety

Time windows, throttles, and extra confirmation for agents, API keys, and guests.

4 policies

Operational

Site-wide lockdown and notifications when a policy denies access.

7 policies