Admin screen index
Every core admin screen with its URL, the permission that opens it, and what it is for — plus the screens reachable only by deep link, the ones that appear conditionally, and the endpoints with no screen at all.
Ninety page files make up the core admin: 81 under the dashboard shell and 9 under the blog shell. The extensions add another 208 on top, each with its own sub-navigation, which is why this index stops at core.
This is a lookup table. If you know what you want to do, find it here and go. If you want the guided tour — what each area is for and the daily routine that keeps it clear — read The admin panel instead.
How to read the permission column
The permission named is the one that opens the URL, taken from
frontend/middlewares/permissions.json. That manifest fails closed: an admin
path with no entry requires the base access.admin key, and those rows are
marked fallback.
Opening a URL is not the same as seeing data on it. Almost every screen is a
data table that also asks for a view.* key before it fetches a row, and each
button asks for its own create., edit. or delete. key. Granting access.X
without view.X produces a page with a permanently empty table and no error.
The whole model is in Roles and permissions.
Ctrl+K — Cmd+K on a Mac — opens a search over every item in the admin menu,
from any admin screen. It is admin-only, and it is the fastest way to reach a
page you cannot find in the nav. Escape closes it.
Dashboard and area landings
The five area URLs are not dead ends: each renders that area's own submenu, so landing on one is a menu rather than a blank page.
| URL | Permission | What it is |
|---|---|---|
/admin |
access.admin |
Five KPIs, four charts, platform health, and the alert band that fires on a stalled queue, a stopped scheduler or critical health |
/admin/crm |
access.admin |
Users area landing |
/admin/finance |
access.admin |
Finance area landing |
/admin/content |
access.admin |
Content area landing |
/admin/system |
access.admin |
System area landing |
/admin/extensions |
fallback | The five-group extension grid — trading platforms, automation, investment products, marketplace, business tools |
Users
| URL | Permission | What it is |
|---|---|---|
/admin/crm/user |
access.user |
The customer list. Create and edit; no delete button |
/admin/crm/user/{id} |
fallback | One customer: block, unblock, reset 2FA, and every tab of their history |
/admin/crm/role |
access.role |
Roles and the permission set each holds. Super Admin only, whatever keys you hold |
/admin/crm/permission |
access.permission |
Read-only catalogue of the seeded permission keys and which roles hold them |
/admin/crm/kyc/application |
access.kyc.application |
The verification queue, opening on PENDING, oldest first |
/admin/crm/kyc/application/{id} |
fallback | One application, with the decision controls |
/admin/crm/kyc/level |
access.kyc.level |
Verification levels and the feature switches on each |
/admin/crm/kyc/level/create |
create.kyc.level |
New level |
/admin/crm/kyc/level/{id} |
fallback | Edit a level |
/admin/crm/support |
access.support.ticket |
The support desk console — queue, conversation and case in one viewport. Renders full-bleed with no admin header |
/admin/crm/support/{id} |
view.support.ticket |
One ticket, also full-bleed |
/admin/crm/support/tickets |
access.support.ticket |
The full ticket archive with analytics, per-column filters and bulk actions. Reached from the console's top bar, not the menu |
/admin/api/key |
access.api.key |
Every API key on the platform. See API keys |
Finance
| URL | Permission | What it is |
|---|---|---|
/admin/finance/profit |
access.admin.profit |
The platform's own fee revenue, kept per currency and never summed across them |
/admin/finance/currency/spot |
access.spot.currency |
Cryptocurrencies — enable, disable, price, and import what the provider offers |
/admin/finance/currency/fiat |
access.fiat.currency |
Fiat currencies |
/admin/finance/deposit/gateway |
access.deposit.gateway |
The gateway readiness console: which bundled fiat gateway can take a payment right now, and what is missing if not |
/admin/finance/deposit/gateway/{id} |
edit.deposit.gateway |
One gateway's credentials, fees and currency list. Deep link from the console |
/admin/finance/deposit/method |
access.deposit.method |
Manual deposit methods you define yourself |
/admin/finance/deposit/method/{id} |
fallback | One method, with its activity timeline |
/admin/finance/deposit/log |
access.deposit |
The deposit queue |
/admin/finance/deposit/log/{id} |
edit.deposit |
One deposit, with its audit tab |
/admin/finance/withdraw/method |
access.withdraw.method |
Withdrawal methods |
/admin/finance/withdraw/log |
access.withdraw |
The withdrawal queue — decidable at PENDING and PROCESSING |
/admin/finance/withdraw/log/{id} |
access.withdraw |
One withdrawal |
/admin/finance/wallet |
access.wallet |
Every user wallet. Adjust a balance, freeze one; no create, no delete |
/admin/finance/wallet/{id} |
access.wallet |
One wallet: balances, owner, transactions, and the balance-ledger audit tab. Adjust and freeze live here too, both on edit.wallet |
/admin/finance/transaction |
access.transaction |
The full ledger — read and delete only |
/admin/finance/transfer |
access.transfer |
Internal transfers queue |
/admin/finance/transfer/{id} |
access.transfer |
One transfer, with its settlement view |
/admin/finance/exchange |
access.exchange |
The provider hub — Overview, Regions, Settings — and the launch point for the four screens below |
/admin/finance/exchange/market |
fallback | The provider's markets. The API behind it needs view.exchange.market |
/admin/finance/exchange/balance |
fallback | The exchange account's balances, read live over ccxt. API needs view.exchange.balance |
/admin/finance/exchange/fee |
fallback | Order fees calculated and grouped by fee currency. API needs view.exchange.fee |
/admin/finance/exchange/chart |
view.exchange.chart |
Candle-cache statistics per market, with build, clean and fix actions |
/admin/trading/settings |
fallback | The trading interface: general, features, trading form, display. Saves through the ordinary settings endpoint |
/admin/finance/binary/market |
access.binary.market |
Binary markets |
/admin/finance/binary/market/create |
fallback | Add a binary market |
/admin/finance/binary/market/{id}/edit |
fallback | Edit one |
/admin/finance/binary/settings |
access.binary.settings |
Binary options console — order types, barriers, durations, limits |
/admin/finance/order/exchange |
access.exchange.order |
Spot order book |
/admin/finance/order/ecosystem |
access.ecosystem.order |
Ecosystem order book |
/admin/finance/order/futures |
access.futures.order |
Futures orders |
/admin/finance/order/binary |
access.binary.order |
Binary orders |
/admin/finance/investment/plan |
access.investment.plan |
Investment plans |
/admin/finance/investment/duration |
access.investment.duration |
Investment durations |
/admin/finance/investment/history |
access.investment |
Every investment position |
Content and appearance
| URL | Permission | What it is |
|---|---|---|
/admin/content/media |
access.content.media |
The media library — a live view of frontend/public/uploads, images only |
/admin/content/slider |
access.content.slider |
Homepage sliders |
/admin/design |
access.design |
Site Design: palette, radius, typeface, elevation, motion, navbar and footer layout. Full-bleed |
/admin/design/specimen |
access.design |
The component specimen the studio previews against. Invented data; deliberately not in the menu |
/admin/appearance |
access.design |
A redirect into /admin/design, kept so old bookmarks land |
/admin/menus |
access.design |
Edit any menu on the site. Full-bleed |
/admin/footer |
access.design |
Footer content. Full-bleed |
/admin/builder |
fallback | The visual page builder. Only in the menu when landingPageType is CUSTOM |
/admin/builder/{id} |
fallback | The builder canvas for one page. Full-bleed |
/admin/default-editor |
fallback | The five built-in pages — home, about, contact, privacy, terms. Only when landingPageType is DEFAULT. Full-bleed |
/admin/default-editor/{pageId}/edit |
fallback | Editing one of them. Full-bleed |
Everything in this group is covered in Design, menus, footer and branding and Blog, media, announcements and market news.
System
| URL | Permission | What it is |
|---|---|---|
/admin/system/settings |
access.settings |
Platform Settings — seven tabs: General, Features, Security, Integrations, Wallet, Social & Links, Branding |
/admin/system/notification |
fallback | The notification console — seven tabs including PWA, which is the only PWA manifest editor there is |
/admin/system/notification/template |
access.notification.template |
Notification templates. Edit and enable only; the set is fixed. Full-bleed |
/admin/system/notification/sms |
access.notification.settings |
SMS provider choice and credential validation |
/admin/system/announcement |
access.system.announcement |
Site-wide announcements. Nothing expires one |
/admin/system/news |
access.market.news |
Market news for the trading terminal — a different system from announcements |
/admin/system/geo-restriction |
access.geo.restriction |
Country restrictions, with effective dates, a legal basis and a rule tester |
/admin/system/geo-restriction/settings |
access.geo.restriction |
Geo Policy — detection sources, VPN handling, wind-down carve-outs, the visitor notice |
/admin/system/geo-restriction/log |
access.geo.restriction.log |
Every geographic access decision, with CSV export |
/admin/system/audit |
access.admin.audit |
The administrative audit trail. Append-only — no create, edit or delete route exists |
/admin/system/cron |
access.cron |
The scheduler: heartbeat, job registry with sticky refusals, live log. Firing a job by hand needs manage.cron |
/admin/system/icon |
view.currency.icon |
Missing currency icons and the fetcher. Fetching needs edit.currency.icon |
/admin/system/logo |
access.system |
One-image logo regeneration. Not in the menu |
/admin/system/extension |
access.extension |
Enable and disable installed extensions |
/admin/system/extension/{id} |
access.extension |
One extension's detail and licence state |
/admin/system/update |
access.system.update |
Version check, changelog, download and extract |
/admin/system/license |
fallback | Activate a licence by code or .lic file. Deep link from the exchange hub, extension detail and the updates screen |
/admin/system/database/backup |
access.database |
mysqldump into backup/, the backup list, and restore. No inbound link anywhere in the product |
Blog
The blog admin is its own route group. It renders inside the public site's
header and footer with a four-item bar of its own — Dashboard, Content, Community,
Settings — and the dashboard nav links only to /admin/blog.
| URL | Permission | What it is |
|---|---|---|
/admin/blog |
access.blog |
Counts, recent posts and the pending-author queue |
/admin/blog/post |
access.blog.post |
The post list |
/admin/blog/post/create |
create.blog.post |
The post editor. Full-bleed |
/admin/blog/post/{id}/edit |
edit.blog.post |
The post editor. Full-bleed |
/admin/blog/category |
access.blog.category |
Categories — one per post |
/admin/blog/tag |
access.blog.tag |
Tags — many per post |
/admin/blog/author |
access.blog.author |
The author approval queue. A separate record from the user |
/admin/blog/comment |
access.blog.comment |
Comment moderation |
/admin/blog/settings |
access.blog.settings |
Fourteen blog settings across five tabs |
Screens with no menu entry
Eleven core screens are reachable only by typing the URL or by following a link from inside another page. Losing track of one of these is how a feature gets reported as missing.
| Screen | How you get there |
|---|---|
/admin/system/database/backup |
Nothing links to it. Type the URL |
/admin/system/license |
The exchange hub, an extension's detail page, the updates screen, the ecosystem blockchain page |
/admin/finance/exchange/market |
The Exchange hub |
/admin/finance/exchange/chart |
The Exchange hub |
/admin/finance/exchange/balance |
The Exchange hub |
/admin/finance/exchange/fee |
The Exchange hub |
/admin/finance/deposit/gateway/{id} |
The gateway readiness console |
/admin/crm/support/tickets |
The support console's top bar |
/admin/system/logo |
Type the URL — superseded by the Branding tab in Platform Settings |
/admin/design/specimen |
The Site Design preview iframe. Deliberately excluded from the menu |
/admin/appearance |
An old bookmark; it redirects into /admin/design |
The blog's own screens are not in the dashboard nav either. They are in the blog
admin's bar, which only appears once you are inside /admin/blog.
It has no link anywhere, and it covers MySQL only. Redis, ScyllaDB, .env,
the licence files and frontend/public/uploads/ are not in that dump. See
Backup and restore.
Screens that appear conditionally
| Screen | Appears when |
|---|---|
/admin/builder — Page Builder |
setting landingPageType is CUSTOM |
/admin/default-editor — Default Pages |
setting landingPageType is DEFAULT |
They are mutually exclusive by design, and when the setting has never been saved
the menu treats it as DEFAULT. Both URLs resolve regardless of the
setting — it decides only which one is listed.
Every extension screen is conditional in a different way: the admin menu shows extensions you have not enabled, marked as disabled, so you can see what is available. The public user menu hides them.
The seventeen screens on the access.admin fallback
These core pages have no entry in the URL permission map, so the base
access.admin key alone opens them:
/admin/builder /admin/finance/binary/market/create
/admin/builder/{id} /admin/finance/deposit/method/{id}
/admin/crm/kyc/application/{id} /admin/finance/exchange/balance
/admin/crm/kyc/level/{id} /admin/finance/exchange/fee
/admin/crm/user/{id} /admin/finance/exchange/market
/admin/default-editor /admin/system/license
/admin/default-editor/{pageId}/edit /admin/system/notification
/admin/extensions /admin/trading/settings
/admin/finance/binary/market/{id}/editThe data on them is still fetched through the API and still refused without the
right view.* key, so an under-privileged operator sees an empty shell rather
than records. But the URL opens, and for /admin/trading/settings and
/admin/system/notification that is a real screen with real controls on it.
Treat it as "may walk the whole admin area", not as "may see the dashboard". Anyone holding it reaches every page in the block above — including individual customer profiles, the page builder and the notification service.
One more fragility worth knowing: /admin/system/logo currently gates on
access.system in the manifest, but its source file declares the permission
using the plural array form (export const permissions = [...]), which the
manifest generator cannot parse. If anyone regenerates
permissions.json, that entry disappears and the page drops onto the
access.admin fallback.
Endpoints with no screen
Some admin capability exists only as an API. These are the ones worth knowing, because looking for a screen wastes the afternoon:
There is no standalone screen for this. It is rendered as the ledger panel
on the Audit Trail tab of a customer's page, a deposit, a withdrawal or a
transfer, scoped to that record. Filter it directly with
?filter={"walletId":"…"} or ?filter={"userId":"…"} to get a whole trail. See
The wallet audit log.
Nothing in the shipped frontend calls it. It is the only way to tell a reserved slug apart from one held by a soft-deleted page.
Also unused. /admin/trading/settings writes through
/api/admin/system/settings instead, which is why the access.trading.settings
key can be granted and appear to do nothing.
Two maintenance endpoints with no UI. The second is the one to reach for when uploads or logos are landing in the wrong directory on a production box.
The Hummingbot extension adds a whole key-management API at
/api/admin/hb/keys/* — list, stats, per-key audit, disable, enable, rate-limit
override — with no admin screen anywhere under /admin/hb that opens it.
The permission keys (view.hb.key and friends) are seeded and grantable
regardless.
Where the extensions live
The 208 extension admin pages are not listed here. Each extension owns a
sub-navigation that appears once you enter it from Extensions, and its
screens are gated by the URL map and by the API routes behind them. Extension
admin sub-menus declare no permissions of their own, so an extension page
nobody mapped is reachable by anyone holding access.admin — the same
fallback as the block above, at ten times the scale.
For which extensions are installed, enabled and licensed, see Extensions and versions.