Route reference
Routes are declared explicitly in app/Config/Routes.php. The tables below describe version 4.0.1 at a documentation level and are not a replacement for php spark routes during deployment checks.
Public and authentication routes
Method | Path | Behavior | Condition |
|---|---|---|---|
GET |
| Home post index | Always available |
GET |
| Separate blog index | Redirects home when blog is disabled |
GET |
| Date archive and search | Registered only when archive is enabled |
GET, HEAD |
| RSS 2.0 feed | Registered only when RSS is enabled |
GET |
| One published visible post | Always declared |
GET |
| Published posts for one topic | Always declared |
GET |
| Published posts for one topic group | Always declared |
GET |
| Hierarchical published page | Catch-all, declared last |
GET, POST |
| Shield session login | Always available |
GET |
| Shield logout | Always available |
GET, POST |
| Shield registration | Added only when registration is enabled |
GET |
| Activation-code form | Pending authentication action |
POST |
| Resend existing activation code | Cooldown applies |
POST |
| Verify activation code | Pending authentication action |
GET |
| Activation completion page | Requires successful activation flow |
The custom 404 controller handles unresolved public content. Public content queries also require published status and audience visibility.
CLI route
Method | Path | Controller | Purpose |
|---|---|---|---|
CLI |
|
| Run scheduled maintenance |
Invoke it from the application root with php public/index.php cron.
Admin route boundary
Every route below /admin requires both:
an authenticated Shield session;
dashboard.access.
Additional permissions are shown below.
Dashboard pages
Method | Path | Permission |
|---|---|---|
GET |
| Base admin boundary |
GET |
| Base admin boundary |
GET |
|
|
GET |
| Any post create or edit permission |
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
Supported dashboard actions are cache clear, immediate cron execution, and error-log clear.
Posts and pages
Method | Path | Permission |
|---|---|---|
GET |
|
|
POST |
|
|
GET |
|
|
POST |
|
|
POST |
|
|
POST |
|
|
GET |
|
|
POST |
|
|
GET |
|
|
POST |
|
|
POST |
|
|
POST |
| Post create/edit or topic management |
Trash restore and permanent-delete routes are separate POST endpoints below /admin/dashboard/trash/<type>/<id>/... and require the matching post or page permission.
Media
Method | Path | Permission |
|---|---|---|
POST |
|
|
POST |
|
|
POST |
|
|
POST |
|
|
Each endpoint fixes the media collection on the server. The client does not choose an arbitrary collection.
Structured data management
Blocks, block groups, topics, topic groups, and users follow the same route pattern:
Entity | GET | POST save | POST delete | Permission |
|---|---|---|---|---|
Block |
|
|
|
|
Block group |
|
|
|
|
Topic |
|
|
|
|
Topic group |
|
|
|
|
User |
|
|
|
|
Create dialogs use an ID value understood by the corresponding controller and service. Save and delete operations remain POST-only and CSRF-protected.
Routing notes
The page route must remain last.
Route permissions should be updated together with
Config\AuthGroupsand service ownership checks.Feature-dependent routes are evaluated during route loading, so configuration cache and deployment restarts can affect when changes become visible.
Run
php spark routesafter any route, environment, or feature change.