Routes Reference
service.router() registers exactly these routes:
| Method |
Path |
Description |
POST |
/inbox |
Shared inbox — HTTP sig verification + dispatch, 1 MB limit |
POST |
/users/{id}/inbox |
Per-user inbox — same |
GET |
/users/{id}/outbox |
Cursor-based OrderedCollection |
GET |
/users/{id}/featured |
Pinned posts OrderedCollection |
GET |
/.well-known/webfinger |
JRD with aliases field |
GET |
/.well-known/nodeinfo |
Redirect to /nodeinfo/2.0 |
GET |
/nodeinfo/2.0 |
NodeInfo 2.0 document |
Routes NOT registered
GET /users/{id}, GET /users/{id}/followers, and GET /users/{id}/following are not registered by service.router().
These paths must serve both AP JSON (for federation) and your UI JSON (for your frontend) based on the Accept header. k-ap can't do the UI half, so your application owns the route and calls k-ap's helper methods for the AP half.
Content negotiation pattern
The same pattern for followers and following. page is Option<u32> — pass None for the collection root, Some(n) for a page:
Both return JSON strings with the correct @context and OrderedCollection structure.