Skip to main content
This page is a deep reference for the XCS data model. It explains each entity, how they relate to one another, and the distinction between roles and access groups.

The Invite System

XCS has two separate invitation flows:
  1. Platform registration — XCS is invite-only. To create an account, you need an invite code generated by an organization owner or XCS provider. You enter this code during signup to register on the platform. Invite codes can have expiration dates; expired codes cannot be used.
  2. Organization invitations — Once you have an XCS account, an organization owner or admin can invite you to join their organization. You must already have an XCS account to accept an organization invitation. When you accept, you gain access to that organization’s locations and access points based on your assigned role.

Organizations

An organization is the top-level entity in XCS. It represents a group, studio, or company that owns and manages locations. Every member belongs to at least one organization. Organizations have roles that control what members can do:
RolePermissions
OwnerFull control. Can delete the organization, manage all settings, invite/remove members, create locations
AdminCan manage members, create locations, configure access points. Cannot delete the organization
MemberCan view locations and access points. Cannot modify settings or manage members

Locations

A location is a place where access control is enforced. In a Roblox context, this is an experience. A location can also represent a physical building or zone for hybrid use cases. Each location:
  • Belongs to exactly one organization
  • Has its own set of access points
  • Can optionally be configured with a Roblox Universe ID and Open Cloud API key for remote unlock support

Access Points

An access point is a door, gate, checkpoint, or any entry point that XCS controls. Each access point:
  • Belongs to exactly one location
  • Has a name and identifier
  • Is configured with access rules
  • Can be remotely unlocked via the dashboard or API

Access Rules

Rules determine who can pass through an access point. Each rule specifies one of the following identity types:
  • Roblox user — Allow a specific player by their Roblox user ID or username, or by their linked XCS platform account (resolved to their Roblox identity)
  • Roblox group — Allow any player who belongs to a specified Roblox group
  • Card — Allow access via a physical or virtual card number
  • PIN — Allow access via a personal identification number
Rules can be combined. An access point evaluates all its rules and grants access if any rule matches.

Access Groups vs Roles

These two concepts serve different purposes and are often confused: Roles control what members can do within an organization — permissions like managing locations, editing access points, or inviting members. The built-in roles are Owner, Admin, and Member, each with a different permission level. Custom roles can be created with specific permission sets. Access groups control who can enter through an access point. An access group bundles organization members together and is assigned to one or more access points. When a member belongs to an access group, their identities (linked Roblox account, card, PIN) are recognized at any access point assigned to that group. Key characteristics of access groups:
  • Members — Organization members are added to the group. Each member brings their linked identities (Roblox account, card, PIN) into the group.
  • Access points — The group is assigned to access points. Any member of the group can pass through those access points (subject to the group’s schedule).
  • Schedule — An optional time-based schedule can restrict when the group’s access is active (e.g., weekdays 9 AM–5 PM).
  • Priority — When multiple groups apply, priority determines evaluation order and the overlaying order of tap (scan) data. Higher-priority groups override lower-priority groups in the merged scan configuration.
  • Default groups — Auto-assigned to new members on join.
  • Roles integration — A role can be linked to access groups, so members assigned that role automatically gain membership in the linked groups.
In short: roles grant permission to manage, access groups grant permission to enter.

Providers

A provider is a contractor or company that administers XCS accounts from the platform’s service side. This is distinct from an organization — providers handle account-level management, while organizations handle location and access point management.
Most users will be assigned to Restrafes & Co.’s first-party provider. This section is relevant only if your account is managed by a third-party provider.

Remote Unlock

Remote unlock is the ability to trigger an access point to open from the XCS dashboard or API, bypassing the rule evaluation. This is useful for:
  • Authorized personnel granting temporary access
  • Emergency situations
  • Testing and maintenance
Remote unlock commands are sent to your game server through Roblox MessagingService. The unlock operates at one of two scopes:
  • Universe scope — Unlocks across all active servers for the location’s associated universe.
  • Player scope — Unlocks only in the active server where a specific player is present.

Remote Unlock Integration

XCS uses Roblox Open Cloud MessagingService to deliver remote unlock commands to your game servers. This is the only feature that requires Roblox-side integration — regular access rule evaluation (card, PIN, Roblox group membership, etc.) happens within the game server or access point itself. The remote unlock flow works as follows:
  1. An unlock is triggered from the dashboard or API
  2. XCS publishes a message to the xcs-unlock-{locationId} topic on Roblox MessagingService
  3. Your game server (which subscribes to this topic) receives the message
  4. The game server processes the unlock and optionally sends an acknowledgment back to XCS via a Redis-backed status key
  5. For player-scoped unlocks, XCS polls for the acknowledgment for up to 5 seconds and reports whether the game server confirmed receipt
Your Roblox experience must have Open Cloud MessagingService configured with a valid API key and universe ID for remote unlock to work. Configure these in the location settings on the XCS dashboard.
MessagingService is currently in beta. To use it, you must be enrolled in the Roblox beta program and enable the rblx-messaging_service-transport flag in the Experiments tab of your Roblox experience’s settings.