Documentation

Customer community

Customer-facing pages, posts, feed, messaging, groups, and follows on /client/community/*.

The customer community API at /client/community/* is the social layer your customers see — their profile, the feed, posts they create, direct messages, group chats, follows, and connections. It's a separate URL tree from the staff-side community management; customers can't moderate other people's content from this surface.

Pages and feed

GET/client/community/pagesJWT
GET/client/community/pages/:pageIdJWT
POST/client/community/pagesJWT
PUT/client/community/pages/:pageIdJWT
GET/client/community/pages/mineJWT
POST/client/community/pages/:pageId/joinJWT
POST/client/community/pages/:pageId/leaveJWT
POST/client/community/pages/:pageId/inviteJWT
GET/client/community/pages/:pageId/membersJWT
GET/client/community/feedJWT

Pages are community spaces (think Facebook groups). Customers create them, join them, invite others, and post in them. The feed endpoint returns the customer's personalised feed across all pages they're members of.

Posts

POST/client/community/postsJWT
GET/client/community/posts/:postIdJWT
PUT/client/community/posts/:postIdJWT
DELETE/client/community/posts/:postIdJWT
POST/client/community/posts/:postId/shareJWT
POST/client/community/posts/:postId/voteJWT

Standard CRUD. Customers can edit and delete only their own posts. share re-posts to another page or the customer's own profile. vote is upvote/downvote — used in Reddit-style discussions.

Comments and reactions

GET/client/community/posts/:postId/commentsJWT
POST/client/community/posts/:postId/commentsJWT
DELETE/client/community/comments/:commentIdJWT
POST/client/community/reactJWT
GET/client/community/reactionsJWT
GET/client/community/hashtags/trendingJWT

Comments are nested one level. Reactions are emoji-style (like, love, laugh, sad, angry). Trending hashtags refresh every few minutes via the Sync module.

Stories

GET/client/community/storiesJWT
POST/client/community/storiesJWT
POST/client/community/stories/:storyId/viewJWT
DELETE/client/community/stories/:storyIdJWT

Ephemeral 24-hour posts. The view endpoint records who saw each story (visible to the story's author). Stories auto-expire via a scheduled purge job.

Follows and connections

POST/client/community/followJWT
DELETE/client/community/follow/:followingIdJWT
GET/client/community/followersJWT
GET/client/community/followingJWT
POST/client/community/connections/requestJWT
PUT/client/community/connections/:id/respondJWT
GET/client/community/connectionsJWT
GET/client/community/connections/pendingJWT
POST/client/community/connections/accept-allJWT
DELETE/client/community/connections/:idJWT

Follows are one-way (Twitter-style). Connections are mutual (LinkedIn-style) — one side requests, the other accepts. The two graphs are independent; follow X doesn't make X your connection.

Direct messaging

POST/client/community/messagesJWT
GET/client/community/messages/threadsJWT
GET/client/community/messages/thread/:userIdJWT
POST/client/community/messages/readJWT
POST/client/community/messages/thread/:userId/readJWT
DELETE/client/community/messages/:idJWT
GET/client/community/messages/unread-countJWT

DMs between customers. Real-time delivery uses the CommunityChatGateway WebSocket — REST endpoints are for history fetch and read-state.

Group chat

POST/client/community/groupsJWT
GET/client/community/groupsJWT
GET/client/community/groups/:groupIdJWT
POST/client/community/groups/:groupId/messagesJWT
GET/client/community/groups/:groupId/messagesJWT
POST/client/community/groups/:groupId/membersJWT
DELETE/client/community/groups/:groupId/members/:emailJWT

Group chats are multi-party DMs with named rooms. Same WebSocket gateway handles real-time delivery.

Meetings

POST/client/community/meetingsJWT
GET/client/community/meetingsJWT
GET/client/community/meetings/upcomingJWT
PUT/client/community/meetings/:id/respondJWT
DELETE/client/community/meetings/:idJWT

Customer-to-customer scheduled meetings. The platform provisions a video room and emails calendar invites. Distinct from the reservations system, which is for booking against staff/services.

Notifications

GET/client/community/notificationsJWT
POST/client/community/notifications/readJWT
POST/client/community/notifications/read-allJWT
GET/client/community/notifications/unread-countJWT

Activity-driven notifications — someone followed you, replied to your post, sent you a message.

Discovery

GET/client/community/peopleJWT
GET/client/community/people/:emailJWT
GET/client/community/people/suggestionsJWT
GET/client/community/badgesJWT
GET/client/community/badges/mineJWT

Search and suggested people. Badges are awarded for milestones (first post, X followers, anniversary).

Moderation

POST/client/community/blocksJWT
DELETE/client/community/blocks/:userIdJWT
GET/client/community/blocksJWT
POST/client/community/reportsJWT

Block another customer (mutual hide), or report content/users for staff review. Reports go to the staff moderation queue.

Media

POST/client/community/media/uploadJWT
GET/client/community/media/mineJWT
PUT/client/community/media/renameJWT
DELETE/client/community/media/:pathJWT

Customer-uploaded media (images, videos) for posts and profiles.