Docs·4ff474d·Updated Mar 14, 2026·43 ADRs

API Reference

119 endpoints across 9 services.

Auth Service:300114 endpoints
POST
/register

Register a new user account.

POST
/login

Authenticate user and receive JWT token.

GET
/verify

Verify JWT token and return user info.

GET
/users/:id

Get user profile by ID.

PUT
/users/:id

Update user profile.

GET
/preferences/request-types

Get user's request type subscriptions (v9.0).

POST
/preferences/request-types

Update a single request type subscription.

PUT
/preferences/request-types/bulk

Bulk update request type subscriptions.

GET
/preferences/interests

Get user's interest categories (service_category, item_category, event_type).

POST
/preferences/interests

Add a new interest.

DELETE
/preferences/interests/:id

Remove an interest.

GET
/preferences/feed (ADR-022)

Get user's feed visibility preferences for multi-tier feed.

PUT
/preferences/feed (ADR-022)

Update user's feed visibility preferences.

GET
/health

Service health check.

Community Service:300226 endpoints
GET
/communities

Get all communities with optional filters.

GET
/communities/my/communities

Get communities the user is a member of.

GET
/communities/:id

Get specific community with all members.

POST
/communities

Create new community.

PUT
/communities/:id

Update community details (admin only).

DELETE
/communities/:id

Archive community (admin only, soft delete).

GET
/communities/:communityId/members

Get all members of a community.

POST
/communities/:communityId/join

Join a community (public: immediate, private: pending approval).

POST
/communities/:communityId/members

Add member to community (invite).

PUT
/communities/:communityId/members/:userId

Update member role or status.

DELETE
/communities/:communityId/members/:userId

Remove member from community (self-leave or admin kick).

GET
/communities/:communityId/norms

Get all norms for a community.

GET
/communities/:communityId/norms/:normId

Get specific norm with all approvals.

POST
/communities/:communityId/norms

Propose a new community norm.

POST
/communities/:communityId/norms/:normId/approve

Approve a proposed norm (requires simple majority >50% of members).

DELETE
/communities/:communityId/norms/:normId

Archive a norm (admin or creator only).

GET
/communities/:id/config

Get community configuration.

PUT
/communities/:id/config

Update community configuration (founder only for Phase 1).

GET
/communities/config-templates

Browse available configuration templates.

POST
/communities/:id/config/copy-from/:source_community_id

Copy configuration from another community.

GET
/communities/configs/public

Browse configurations from thriving communities.

GET
/health

Service health check.

POST
/communities/:communityId/links

Propose a link from this community to another (admin-only). Creates a `pending` link awaiting approval by the other community's admin.

PUT
/communities/:communityId/links/:linkId

Approve a pending link (other community's admin), or update `trust_carry_factor`/`show_in_sister_feeds`. Use `action: "approve"` or `action: "deactivate"` in the body.

GET
/communities/:communityId/links

List all links involving this community. Optional `?status=pending|active|inactive` filter. Returns `partner_community_id` and `partner_community_name` for convenience.

DELETE
/communities/:communityId/links/:linkId

Remove a link (sets status to `inactive`). Either community's admin can do this.

Request Service:300338 endpoints
GET
/requests

Get all help requests with optional filters.

GET
/requests/matched/for-user

Get requests matching user's skills from their communities (skill-based matching algorithm).

GET
/requests/curated (v9.0 + ADR-031 Multi-Tier)

Get curated feed with match scores, trust distance, and multi-tier visibility.

GET
/requests/:id

Get specific request details.

POST
/requests (v9.0 Polymorphic + ADR-022 Visibility)

Create new polymorphic help request (supports 5 types) with visibility scope.

PUT
/requests/:id

Update help request (requester only).

DELETE
/requests/:id

Cancel help request (requester only).

PUT
/requests/:id/privacy

Update privacy settings for a request (Social Karma v2.0).

PATCH
/requests/:id/admin-triage

Override request urgency and/or add a community-scoped admin note (Sprint 25).

GET
/offers

Get all help offers with optional filters.

GET
/offers/:id

Get specific offer details.

POST
/offers

Create new help offer.

PUT
/offers/:id/privacy

Update privacy settings for an offer (Social Karma v2.0).

GET
/matches

Get all matches with optional filters.

GET
/matches/:id

Get specific match details.

POST
/matches

Create a match between request and responder.

PUT
/matches/:id/complete

Two-phase match completion. Each party calls this independently; the match

POST
/matches/:id/feedback

Submit interaction feedback for a completed match.

GET
/matches/:id/feedback

Get feedback for a match.

GET
/providers

List all provider profiles. Optional query param: service_type.

GET
/providers/my

Get the authenticated user's own provider profiles. Auth required.

GET
/providers/:id

Get a single provider profile by ID, including ride details if applicable.

POST
/providers

Create a provider profile for the authenticated user.

PUT
/providers/:id

Update a provider profile. Owner only.

DELETE
/providers/:id

Delete a provider profile. Owner only.

GET
/collectives

List all provider collectives. Optional query param: service_type.

GET
/collectives/my

Get collectives the authenticated user belongs to (via their provider profiles). Auth required.

GET
/collectives/:id

Get a collective with members and communities served.

POST
/collectives

Create a new provider collective.

PUT
/collectives/:id

Update a collective. Collective admin only.

DELETE
/collectives/:id

Delete a collective. Collective admin only.

POST
/collectives/:id/members

Join a collective as a member.

DELETE
/collectives/:id/members/:providerId

Remove a member from a collective. Collective admin only.

POST
/collectives/:id/communities

Link a collective to a community.

DELETE
/collectives/:id/communities/:communityId

Unlink a collective from a community. Auth: collective admin OR community admin (Sprint 26).

GET
/collectives/:id/stats

Returns aggregate performance stats for a collective: `total_requests_matched`, `fulfillment_rate`, `avg_completion_hours` (null if no completed matches), `communities_served_count`, `available_membe

PATCH
/providers/:providerId/availability

Toggle a provider's availability status. Body: `{ is_available: boolean }`. Auth: owner only (provider_profiles.user_id must match JWT userId). Returns `{ id, is_available }`. (Sprint 26)

GET
/health

Service health check.

Reputation Service:300413 endpoints
GET
/reputation/karma/:userId

Get user's total karma across all communities.

GET
/reputation/trust/:userId

Get user's overall trust score — weighted average across all communities, weighted by recent interaction count.

GET
/reputation/trust/:userId/:communityId

Get user's trust score in a specific community.

GET
/reputation/leaderboard/:communityId

Get top karma earners in a community.

GET
/reputation/history/:userId

Get karma transaction history for a user.

GET
/reputation/users/:userId/badges

Get all prestige badges earned by a user (public). Phase 1 badge types: `first_helper`, `milestone_10`, `milestone_50`, `milestone_100`, `connector`.

GET
/reputation/community-health/:communityId

Get community health metrics and trends.

GET
/reputation/milestones/:communityId

Get community milestone achievements.

GET
/reputation/trust/:userId/:communityId

Enhanced trust score with interaction quality (UPDATED).

GET
/reputation/network-metrics/:communityId

Get the network cohesion score for a community (ADR-045). Four graph topology metrics — reciprocity, density, clustering coefficient, and path score — over a rolling 90-day window.

GET
/reputation/community-trust/:communityId

Get the community trust score (ADR-040). Computed daily; recalculates on demand if no score exists yet.

POST
/reputation/feedback (Authenticated)

Submit a private quality rating after a completed interaction. Ratings are internal trust signals — never exposed to users (ADR-036).

GET
/health

Service health check.

Notification Service:30059 endpoints
GET
/notifications/stream/:userId

Server-Sent Events (SSE) endpoint for real-time notifications.

GET
/notifications/:userId

Get user's notifications (paginated).

GET
/notifications/:userId/unread-count

Get count of unread notifications.

PUT
/notifications/:notificationId/read

Mark specific notification as read.

PUT
/notifications/:userId/read-all

Mark all notifications as read for a user.

DELETE
/notifications/:notificationId

Delete a notification.

GET
/notifications/:userId/preferences

Get user's notification preferences.

PUT
/notifications/:userId/preferences

Update user's global notification preferences.

GET
/health

Service health check.

Messaging Service:30064 endpoints
GET
/messages/conversations/:userId

Get all conversations for a user.

GET
/messages/:conversationId

Get all messages in a conversation (paginated).

POST
/messages

Create new conversation (usually auto-created when match occurs).

POST
/messages/:conversationId/mark-read

Mark all messages in conversation as read.

Feed Service:30074 endpoints
GET
/feed

Get personalized feed for user.

POST
/feed/dismiss

Dismiss item from feed.

GET
/feed/preferences

Get user's feed preferences.

PUT
/feed/preferences

Update feed preferences.

Geocoding Service:30095 endpoints
GET
/health

Health check endpoint.

GET
/search?q={query}

Search for geocoded addresses. Returns cached results if available, otherwise calls Nominatim API and caches the result.

POST
/cache

Manually cache a geocoding result (used by frontend for fire-and-forget caching).

GET
/stats

Get cache statistics and analytics.

POST
/cleanup

Remove expired cache entries (older than 30 days).

Social Graph Service:30106 endpoints
POST
/invitations/generate

Generate a new invitation code for current user.

POST
/invitations/accept

Accept an invitation code during user signup.

GET
/invitations

Get invitation history for current user.

GET
/invitations/stats

Get inviter statistics for current user (gamification metrics).

GET
/paths/:targetUserId

Get shortest path between current user and target user.

POST
/paths/batch

Get paths for multiple target users (optimized for feed ranking).