Skip to main content

Accounts

The Accounts view is the per-account command centre for Lumio operators. It lets you browse every account in the system, drill into a single account to inspect its members and plan, override numeric/boolean limits, toggle feature-flag overrides, set user-scope permission overrides, and forcibly detach channel or bot connections when something goes wrong.

Where to find it

Admin sidebar → Accounts. The list lives at /accounts; detail pages live at /accounts/\{id\}.

Quick start

  1. Open Admin → Accounts and search by account name or owner display name.
  2. Click a row to open the account detail page.
  3. Change the plan via Plan Management — the dropdown lists every plan defined on the Plans page — and click Update Plan.
  4. Scroll to Account Limits to override plan defaults per field. Leave a field blank to fall back to the plan default.
  5. Optionally open Feature Overrides to flip individual features ON/OFF for this account only.

Detailed walkthrough

Accounts list (/accounts)

  • Search — debounced search against name and owner display name.
  • Columns — Name, Owner, Plan (coloured badge), Members count, Created date.
  • Pagination — 25 accounts per page, "Page X of Y (N accounts)" footer.
  • Row click — navigates to /accounts/\{id\}.

Account detail (/accounts/[id])

The detail page stacks these cards:

  1. Account Information — name (editable inline, requires accounts:edit), Account ID, Owner display name, Created/Updated timestamps. A Delete Account button (requires accounts:delete) opens a confirmation dialog before permanently deleting the account and all its data.
  2. Plan Management — current plan badge, a <select> populated from the live plan list, and an Update Plan button that stays disabled until the selection differs from the current plan. Plans also define a max_accounts field that limits how many accounts the plan owner can create. (The enterprise tier was dropped in migration 20260415000009_drop_enterprise_plan; existing accounts were moved to Pro.)
  3. Members — table of all users in the account showing Name (linked to /users/\{user_id\}), Email, Role, Owner flag, Joined date, Actions. An Add Member button (requires accounts:edit) adds a user by user ID. Each non-owner member row has a Remove button with a confirmation dialog.
  4. Account Limits — per-account overrides for numeric and boolean plan limits. Fields: max_overlays, max_widgets, max_storage_bytes, max_upload_size_bytes, max_integrations, chat_retention_days, custom_bot_allowed, obs_remote_allowed, copyright_detection_allowed, plus a free-text Notes field. The three boolean fields are tri-state dropdowns (plan default / Yes / No); empty numeric fields fall back to the plan default. Save Limits persists the whole form in one PUT, and the card shows the last-updated timestamp next to the button.
  5. Channel Connections — table showing Platform, Channel Name, Connected Since, Actions. Actions per row (all gated on accounts:edit): Disconnect (with confirmation dialog) and a reconnect-flag toggle. When the reconnect flag is set, an amber warning icon appears next to the platform badge. See Reconnect Flags for what the flag does.
  6. Bot Connections — same layout, showing Platform, Bot Type, Bot Username, Connected Since, Actions. Same actions: Disconnect and reconnect-flag toggle.
  7. Feature Overrides — see below.
  8. Permission Overrides — per-account overrides for user-scope permissions. See User Roles.

Extension dev mode is a user-scoped flag and has no account-scoped surface; set it from the Users detail page, which is the surface wired to the API.

Disconnecting a connection is destructive and immediate: the backend row is removed and the encrypted token discarded. The reconnect flag is non-destructive and can be toggled on and off; it forces the user to re-authorize without deleting the connection data.

Feature Overrides card (feature-overrides.tsx)

Rendered below the account detail card stack. Each row is a feature flag with:

  • Feature name.
  • OverrideON, OFF, Global OFF, or unset.
  • Resolved — the effective state after the plan and global kill-switch are applied.
  • Actions — ON / OFF buttons to set an override, plus a clear action (DELETE on /accounts/\{id\}/features/\{feature_id\}) to remove the override and fall back to plan defaults.

StreamElements tokens

The API exposes per-account StreamElements tokens (GET / DELETE under /v1/admin/accounts/\{id\}/se-tokens, GraphQL adminSeTokens / adminDeleteSeToken), but the shipped account detail page renders no SE-tokens card. Use the API directly, or the account owner's own StreamElements settings.

Resolved limit overrides

A second PUT endpoint exists at /v1/admin/accounts/\{id\}/resolved-limits (GraphQL adminSetAccountLimits). It takes the same fields as the limits form but writes through the resolved-limits path. The shipped detail page saves through PUT /v1/admin/accounts/\{id\}/limits; the resolved-limits path is API-only.

Common scenarios

  • Comp a customer with higher limits — keep them on Pro and use the per-account Limits card to bump storage, overlay caps, or chat retention above the plan defaults.
  • Investigate a chargeback — open the account, review members and connections, then disconnect the channel connections if the account is being rotated.
  • Temporarily disable a flaky integration for one customer — set a feature override to OFF without touching the global kill-switch.
  • Recovery after an OAuth leak — disconnect the affected channel connection; the user will be prompted to reconnect.

Permissions

ActionPermission
View account list / detail, limits, features, connectionsaccounts:read
Edit account name, manage members, set reconnect flagsaccounts:edit
Change plan / limits / per-account feature overridesaccounts:edit
Disconnect channel connectionsaccounts:edit
Disconnect bot connectionsaccounts:edit
Delete accountaccounts:delete
Read per-account permission overridesaccounts:overrides-read
Set / clear per-account permission overridesaccounts:overrides-edit
List / delete SE tokens (API only)se-tokens:read / se-tokens:delete

All of these additionally require admin:access to enter the dashboard. System admins (system_admin.is_system = true) implicitly have every permission.

platforms:read / platforms:edit exist in the admin permission registry but no admin account endpoint enforces them today — connection deletion is gated on accounts:edit.

API

UI actionGraphQLREST
List accountsadminAccountsGET /v1/admin/accounts
Get account detailadminAccountGET /v1/admin/accounts/\{id\}
Update account nameadminUpdateAccountNamePATCH /v1/admin/accounts/\{id\}
List login connectionsadminAccountLoginConnections
Delete accountadminDeleteAccountDELETE /v1/admin/accounts/\{id\}
Update planadminUpdateAccountPlanPATCH /v1/admin/accounts/\{id\}/plan
Add memberadminAddAccountMemberPOST /v1/admin/accounts/\{id\}/members
Remove memberadminRemoveAccountMemberDELETE /v1/admin/accounts/\{id\}/members/\{user_id\}
Get limitsadminAccountLimitsGET /v1/admin/accounts/\{id\}/limits
Save limitsadminUpsertAccountLimits / adminSetAccountLimitsPUT /v1/admin/accounts/\{id\}/limits
Save resolved limitsadminSetAccountLimitsPUT /v1/admin/accounts/\{id\}/resolved-limits
Get feature overridesadminAccountFeaturesGET /v1/admin/accounts/\{id\}/features
Set feature overrideadminSetAccountFeaturePUT /v1/admin/accounts/\{id\}/features
Clear feature overrideadminClearAccountFeatureDELETE /v1/admin/accounts/\{id\}/features/\{feature_id\}
List channel connectionsadminAccountChannelConnectionsGET /v1/admin/accounts/\{id\}/connections
Delete channel connectionadminDeleteAccountChannelConnectionDELETE /v1/admin/accounts/\{id\}/connections/\{platform\}
Delete account login connectionadminDeleteAccountLoginConnection
Set channel reconnect flagadminSetChannelReconnectFlagPUT /v1/admin/channel-connections/\{id\}/reconnect-flag
List bot connectionsadminAccountBotConnectionsGET /v1/admin/accounts/\{id\}/bot-connections
Delete bot connectionadminDeleteAccountBotConnectionDELETE /v1/admin/accounts/\{id\}/bot-connections/\{platform\}
Set bot reconnect flagadminSetBotReconnectFlagPUT /v1/admin/bot-connections/\{id\}/reconnect-flag
Set primary login connectionadminSetPrimaryLoginConnection--
List SE tokensadminSeTokensGET /v1/admin/accounts/\{id\}/se-tokens
Delete SE tokenadminDeleteSeTokenDELETE /v1/admin/accounts/\{id\}/se-tokens/\{token_id\}
List permission overridesadminAccountPermissionOverridesGET /v1/admin/accounts/\{id\}/permission-overrides
Set permission overrideadminSetAccountPermissionOverridePUT /v1/admin/accounts/\{id\}/permission-overrides
Remove permission overrideadminRemoveAccountPermissionOverrideDELETE /v1/admin/accounts/\{id\}/permission-overrides/\{permission\}

Tips & gotchas

  • Empty fields in the limits form are semantically different from 0. An empty field inherits the plan default; a zero disables the feature for that account.
  • Notes on the limits form is the audit trail. Fill it in with a ticket ID or Slack link when you override anything non-trivial.
  • Plan changes are immediate — there is no Stripe sync here; billing adjustments still go through the Stripe dashboard.
  • Deleting a channel connection does not revoke the token at the platform. Use it for recovery, not revocation.
  • Users — user records that own or belong to accounts
  • Plans — plan definitions and default feature grid
  • Feature Flags — global kill-switches that override everything here
  • Providers — per-platform kill-switches