On this page

8 endpoints.

MethodPathSummary
POST/api/members/{communityId}/join-requestRequest to join a public community
GET/api/members/{communityId}/member-requestsGet pending member requests (admin/moderator only)
DELETE/api/members/{communityId}/members/{memberId}Remove member from community (soft delete)
POST/api/members/{communityId}/members/{memberId}/banBan or unban a member
PUT/api/members/{communityId}/members/{memberId}/permissionsUpdate member permissions (admin only)
PUT/api/members/{communityId}/members/{memberId}/roleUpdate member role (admin only)
DELETE/api/members/{communityId}/members/bulkBulk remove members from community
GET/api/members/{communityId}/users/{userId}/permissionsGet user permissions in community

Auth: Bearer JWT required.

Parameters

NameInRequiredTypeDescription
communityIdpathyesstring (uuid)

Responses

StatusDescriptionBody
200Join request submitted

Auth: Bearer JWT required.

Parameters

NameInRequiredTypeDescription
communityIdpathyesstring (uuid)
pagequerynointeger
limitquerynointeger

Responses

StatusDescriptionBody
200Paginated list of member requests
403Permission denied

Soft-deletes a community member by setting their status to LEFT. Supports both self-removal (user leaving) and admin/moderator-initiated removal.

Behavior:

  • Cascade cleanup: removes group memberships, event attendance, and likes
  • Last admin protection: cannot remove the only COMMUNITY_ADMIN
  • Role hierarchy: moderators cannot remove admins or other moderators
  • Audit trail: stores removal metadata (who, when, reason) in member permissions
  • Real-time: emits member:removed socket event to invalidate active sessions
  • Email: sends removal notification email (admin-initiated removals only)

Authorization:

  • Self-removal: any authenticated member can remove themselves
  • Admin removal: requires users:manage or users:moderate permission

Auth: Bearer JWT required.

Parameters

NameInRequiredTypeDescription
communityIdpathyesstring (uuid)UUID of the community
memberIdpathyesstring (uuid)UUID of the community member to remove

Request bodyapplication/json

FieldTypeRequiredDescription
reasonstringnoOptional reason for removal (admin-initiated only, sanitized)

Responses

StatusDescriptionBody
200Member removed successfullyobject
400Bad request - invalid UUID, member already left, member is banned, or last adminobject
401Authentication required
403Permission denied - insufficient role or cannot remove higher-ranked memberobject
404Member not found
500Internal server error

Auth: Bearer JWT required.

Parameters

NameInRequiredTypeDescription
communityIdpathyesstring (uuid)
memberIdpathyesstring (uuid)

Responses

StatusDescriptionBody
200Ban status toggled successfully
403Permission denied

Auth: Bearer JWT required.

Parameters

NameInRequiredTypeDescription
communityIdpathyesstring (uuid)
memberIdpathyesstring (uuid)

Request body (required) — application/json

FieldTypeRequiredDescription
permissionsobjectno

Responses

StatusDescriptionBody
200Permissions updated successfully
403Permission denied

Auth: Bearer JWT required.

Parameters

NameInRequiredTypeDescription
communityIdpathyesstring (uuid)
memberIdpathyesstring (uuid)

Request body (required) — application/json

FieldTypeRequiredDescription
roleenum: ADMIN, MODERATOR, MEMBERyes

Responses

StatusDescriptionBody
200Role updated successfully
403Permission denied

Removes multiple community members in a single request (soft delete, status set to LEFT). Processes removals sequentially to prevent race conditions on memberCount. Returns partial success results — some members may fail while others succeed.

Constraints:

  • Maximum 50 members per request
  • Rate limited: 5 requests per 15 minutes per IP
  • Cannot include your own memberId (self-removal blocked)
  • Last admin protection: cannot remove the only COMMUNITY_ADMIN
  • Role hierarchy: moderators cannot remove admins or other moderators
  • Reason is required (min 3 chars, max 500 chars, sanitized)

Side effects per member:

  • Cascade cleanup: removes group memberships, event attendance, likes
  • Real-time: emits member:removed socket event
  • Email: sends removal notification

Auth: Bearer JWT required.

Parameters

NameInRequiredTypeDescription
communityIdpathyesstring (uuid)UUID of the community

Request body (required) — application/json

FieldTypeRequiredDescription
memberIdsstring (uuid)[]yesArray of community member UUIDs to remove
reasonstringyesReason for removal (required, sanitized, min 3 chars)

Responses

StatusDescriptionBody
200Bulk removal completed (may include partial failures)object
400Bad request - invalid input, self-removal attempt, or reason too shortobject
401Authentication required
403Permission denied - requires users:manage or users:moderate
429Rate limit exceeded (5 requests per 15 minutes)object
500Internal server error

Auth: Bearer JWT required.

Parameters

NameInRequiredTypeDescription
communityIdpathyesstring (uuid)
userIdpathyesstring (uuid)

Responses

StatusDescriptionBody
200User permissions
401Authentication required