Skip to main content

Main non-admin routes

  • GET/POST /api/locker-room
  • GET/PUT/DELETE /api/locker-room/[id]
  • GET/POST /api/locker-room/[id]/comments
  • PUT/DELETE /api/locker-room/[id]/comments/[commentId]
  • GET/POST /api/locker-room/comments/[commentId]/react
  • POST /api/locker-room/[id]/react
  • POST /api/locker-room/[id]/like
  • POST /api/locker-room/[id]/poll/vote
  • GET/PUT/DELETE /api/locker-room/posts/draft
  • GET /api/locker-room/hot-takes
  • GET /api/locker-room/stream
  • POST /api/user/follow
  • GET /api/user/followers
  • GET /api/user/recommended
  • GET /api/user/search
  • GET/POST/DELETE /api/user/mutes
  • GET/POST/DELETE /api/user/blocks
  • GET /api/user/follow-requests
  • DELETE /api/user/follow-requests/[id]
  • POST /api/user/follow-requests/[id]/approve
  • POST /api/user/follow-requests/[id]/deny
  • GET /api/pins, GET /api/prompts, GET /api/news, GET /api/news/[id]
  • POST /api/v1/users/contacts/match

Runtime behavior highlights

  • Post creation updates feed-visible entities with author-linked identity.
  • teamId on create is the about-tag. authorTeamId / postAsTeamId is who the post is authored as.
  • Unauthorized authorTeamId returns 403. Unknown ids return 400. Following a team does not grant post-as-team.
  • Attachment-only posts are valid. lineup is stored on the post and returned on later reads.
  • POST /{id}/like is additive ({ liked, likeCount }) and does not replace /react.
  • Comment and reaction routes mutate child entities tied to post IDs.
  • Comment create may send mentionedUserIds. Edit must send mentionedUserIds: [] to clear mentions.
  • GET /api/user/search requires q. Default scope also matches location when q is at least 2 characters. scope=mention matches handle and name only and omits users without a handle. limit is 1–50 (default 20). Rows use profileUrl, not avatar.
  • Follow routes enforce self-consistency and update follower/following graph edges.
  • TeamFollow stays social-only. Leaderboard join uses /api/teams/{id}/join.
  • Recommendation and follower endpoints read from current social graph state.
  • Mute is one-way and silent (UserMute). Block is stronger (UserBlock) and removes the blocked user from the blocker’s social surfaces.
  • Mute/block target refs resolve by User.id or handle. Missing targets return 404. Self-target returns 400.

Side effects and integration points

  • Social actions can trigger quest progression checks in onboarding/gamification flows.
  • Team follow actions can influence team-scoped user experiences.

Known caveats

  • Stream endpoints are transport-sensitive and clients should support reconnection behavior.
  • Some recommendation heuristics are derived from current follow state and may evolve independently from route contracts.

Exclusions

  • Moderation enforcement and privileged content management workflows are documented under moderation, not this section.