Navigation (apps & modules)
Organise entities into a structured sidebar navigation with Applications and Modules. This is the primary way users navigate between entities.
Applications
Applications are top-level sidebar groups:
- Slug — unique identifier
- Name — display label (with locale support)
- Icon — Dashicon class
- Sort order — position in the sidebar
- Active — on/off toggle
- Roles who can see it — see Who sees what below
The "Administration" application is auto-seeded on activation and contains system modules (Schema Manager, Event Log, Roles, etc.). It is hidden from non-admin users.
Modules
Modules are items within an application:
- Slug — unique within the application
- Module type —
link(SPA hash route) orurl(external link) - Target — the SPA route hash (e.g.,
#/entity/ticket) or full URL - Filter (optional) — EQL filter for list modules
- Icon — Dashicon class
- Sort order — position within the application
- Roles who can see it — see Who sees what below
Who sees what
Applications and modules carry their roles the same way entities, fields and actions do: a list of role slugs on the row itself (can_view_roles), matched against the roles a person holds through their groups.
- Empty list — no restriction. A list or form module is still shown only to people who can read its entity, and an application with no module left to show is hidden.
- One or more roles — shown only to people who hold one of them.
publicshows it to anyone,authenticatedto anyone logged in. - Administrators see every application and module.
The roles decide what the navigation shows; what a person may open is still decided by the permissions of the entity behind it. Deleting a role takes it out of every application and module that named it.
Reordering
Both applications and modules support drag-and-drop reordering:
POST /pfm/v1/meta/applications/reorder— reorder applicationsPOST /pfm/v1/meta/applications/{slug}/modules/reorder— reorder modules within an app
Navigation tree
GET /pfm/v1/meta/navigation returns the tree the current person may see, filtered as described in Who sees what. The SPA builds the sidebar from it, and the MCP list_apps tool answers from it too.