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, and forcibly detach channel, bot, or StreamElements 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
- Open Admin → Accounts and search by account name or owner display name.
- Click a row to open the account detail page.
- Change the plan via Plan Management (Free / Pro / Enterprise) and click Update Plan.
- Scroll to Account Limits to override plan defaults per field. Leave a field blank to fall back to the plan default.
- 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])
Four cards stack on the detail page:
- Account Information — read-only. Name, Account ID, Owner display name, Created/Updated timestamps.
- Plan Management — current plan badge, a
<select>withfree/pro/enterprise, and Update Plan button. The button is disabled until the selection differs from the current plan. - Members — table of all users in the account showing Name (linked to
/users/\{user_id\}), Email, Role, Owner flag, Joined date. - Account Limits — per-account overrides for numeric and boolean plan limits. Fields:
max_overlays,max_storage_bytes,max_upload_size_bytes,max_integrations,chat_retention_days,custom_bot_allowed,obs_remote_allowed,copyright_detection_allowed, plus an Admin Notes free-text field ("reason for override..."). Empty fields fall back to the plan default. Save Limits persists the whole form in one PUT.
Feature overrides tab (feature-overrides.tsx)
Shown under Feature Overrides on the detail page. Each row is a feature flag:
- Feature name.
- Override —
ON,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.
Connections tab (connections-tab.tsx)
Lists three groups of per-account connections with a red Delete action on each row:
- Channel connections — platform OAuth tokens used for streaming APIs.
- Bot connections — custom-bot identities configured by the account.
- StreamElements tokens — linked SE accounts.
Deleting is destructive and immediate. The backend row is removed and the encrypted token discarded.
Resolved limit overrides
There is a second PUT endpoint at /accounts/\{id\}/resolved-limits used by an alternate "Resolved Limit Overrides" form component — same fields, but writes via the resolved-limits path which merges admin notes with numeric overrides in one call.
Common scenarios
- Upgrade a customer to Enterprise manually — change the plan, then use limits to bump storage or overlay caps.
- Investigate a chargeback — open the account, review members and connections, then disconnect SE tokens if the account is being rotated.
- Temporarily disable a flaky integration for one customer — set a feature override to
OFFwithout touching the global kill-switch. - Recovery after an OAuth leak — delete the affected channel connection on the Connections tab; the user will be prompted to reconnect.
Permissions
| Action | Permission |
|---|---|
| View account list / detail | accounts:read |
| Change plan / limits / features | accounts:edit |
| View feature-flag detail rows | feature-flags:read |
| Toggle feature-flag detail overrides | feature-flags:edit |
| Delete channel connections | platforms:edit |
| Delete bot connections | bot-connections:delete |
| Delete SE tokens | 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.
API
| UI action | GraphQL | REST |
|---|---|---|
| List accounts | adminAccounts | GET /v1/admin/accounts |
| Get account detail | adminAccount | GET /v1/admin/accounts/\{id\} |
| Update plan | adminUpdateAccountPlan | PATCH /v1/admin/accounts/\{id\}/plan |
| Get limits | adminAccountLimits | GET /v1/admin/accounts/\{id\}/limits |
| Save limits | adminUpsertAccountLimits / adminSetAccountLimits | PUT /v1/admin/accounts/\{id\}/limits |
| Save resolved limits | adminSetAccountLimits | PUT /v1/admin/accounts/\{id\}/resolved-limits |
| Get feature overrides | adminAccountFeatures | GET /v1/admin/accounts/\{id\}/features |
| Set feature override | adminSetAccountFeature | PUT /v1/admin/accounts/\{id\}/features |
| Clear feature override | adminClearAccountFeature | DELETE /v1/admin/accounts/\{id\}/features/\{feature_id\} |
| List channel connections | — | GET /v1/admin/accounts/\{id\}/connections |
| Delete channel connection | adminDeleteAccountLoginConnection | DELETE /v1/admin/accounts/\{id\}/connections/\{platform\} |
| List bot connections | adminAccountBotConnections | GET /v1/admin/accounts/\{id\}/bot-connections |
| Delete bot connection | adminDeleteAccountBotConnection | DELETE /v1/admin/accounts/\{id\}/bot-connections/\{platform\} |
| List SE tokens | adminSeTokens | GET /v1/admin/accounts/\{id\}/se-tokens |
| Delete SE token | adminDeleteSeToken | DELETE /v1/admin/accounts/\{id\}/se-tokens/\{token_id\} |
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. - Admin 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.
Related
- 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