On this page

18 endpoints.

MethodPathSummary
GET/api/communities/{communityId}/groupsList all groups in a community
POST/api/communities/{communityId}/groupsCreate a new group (Moderator+ only)
DELETE/api/communities/{communityId}/groups/{groupId}Delete a group (Moderator+ only)
GET/api/communities/{communityId}/groups/{groupId}Get a single group by ID
PUT/api/communities/{communityId}/groups/{groupId}Update a group (Moderator+ only)
PATCH/api/communities/{communityId}/groups/{groupId}/hideHide a group (Moderator+ only)
POST/api/communities/{communityId}/groups/{groupId}/joinJoin a group
GET/api/communities/{communityId}/groups/{groupId}/join-requestsGet all join requests for a group (Admin/Moderator only)
POST/api/communities/{communityId}/groups/{groupId}/join-requestsRequest to join a private group
DELETE/api/communities/{communityId}/groups/{groupId}/join-requests/{requestId}Cancel a join request (by the requester)
PATCH/api/communities/{communityId}/groups/{groupId}/join-requests/{requestId}/approveApprove a join request (Admin/Moderator only)
PATCH/api/communities/{communityId}/groups/{groupId}/join-requests/{requestId}/rejectReject a join request (Admin/Moderator only)
GET/api/communities/{communityId}/groups/{groupId}/join-requests/my-statusGet current user's join request status for a group
POST/api/communities/{communityId}/groups/{groupId}/leaveLeave a group
GET/api/communities/{communityId}/groups/{groupId}/membersGet all members of a group
GET/api/communities/{communityId}/groups/{groupId}/membership-statusCheck membership status for current user in a group
PATCH/api/communities/{communityId}/groups/{groupId}/unhideUnhide a group (Moderator+ only)
GET/api/communities/{communityId}/groups/join-requestsCommunity-wide aggregate of group join requests (Moderator+ only)

Auth: Bearer JWT required.

Parameters

NameInRequiredTypeDescription
communityIdpathyesstring (uuid)Community ID
pagequerynointegerPage number
limitquerynointegerItems per page
typequerynoenum: PRIVATE, PUBLICFilter by group type
searchquerynostringSearch in group names
hasSpacequerynobooleanFilter groups with available space

Responses

StatusDescriptionBody
200List of groups with paginationobject
400Invalid request parameters—
401Authentication required—
404Community not found—

Auth: Bearer JWT required.

Parameters

NameInRequiredTypeDescription
communityIdpathyesstring (uuid)—

Request body (required) — multipart/form-data

FieldTypeRequiredDescription
nameArabicstringyesGroup name in Arabic
namestringyesGroup name in English
descriptionArabicstringyesGroup description in Arabic
descriptionstringyesGroup description in English
typeenum: PRIVATE, PUBLICyesGroup privacy type
memberCountintegeryesMember limit (-1 for unlimited, positive number for limit)
canChatbooleanyesEnable chat functionality
emailstring (email)noOptional group email
websitestring (uri)noOptional group website
iconstring (binary)yesGroup icon (required, max 2MB, image types only)
coverImagestring (binary)noGroup cover image (optional, max 5MB, image types only)

Responses

StatusDescriptionBody
201Group created successfullyobject
400Invalid request or validation error—
401Authentication required—
403Insufficient permissions (Moderator+ required)—
404Community not found—

Auth: Bearer JWT required.

Parameters

NameInRequiredTypeDescription
communityIdpathyesstring (uuid)—
groupIdpathyesstring (uuid)—

Responses

StatusDescriptionBody
200Group deleted successfully—
401Authentication required—
403Insufficient permissions (Moderator+ required)—
404Group not found—

Auth: Bearer JWT required.

Parameters

NameInRequiredTypeDescription
communityIdpathyesstring (uuid)—
groupIdpathyesstring (uuid)—

Responses

StatusDescriptionBody
200Group detailsobject
401Authentication required—
404Group not found—

Auth: Bearer JWT required.

Parameters

NameInRequiredTypeDescription
communityIdpathyesstring (uuid)—
groupIdpathyesstring (uuid)—

Request body (required) — multipart/form-data

FieldTypeRequiredDescription
nameArabicstringno—
namestringno—
descriptionArabicstringno—
descriptionstringno—
typeenum: PRIVATE, PUBLICno—
memberCountintegerno—
canChatbooleanno—
emailstring (email)no—
websitestring (uri)no—
iconstring (binary)noNew group icon (optional, max 2MB)
coverImagestring (binary)noNew group cover image (optional, max 5MB)

Responses

StatusDescriptionBody
200Group updated successfully—
400Invalid request or validation error—
401Authentication required—
403Insufficient permissions—
404Group not found—

Auth: Bearer JWT required.

Parameters

NameInRequiredTypeDescription
communityIdpathyesstring (uuid)—
groupIdpathyesstring (uuid)—

Responses

StatusDescriptionBody
200Group hidden successfullyobject
400Group is already hidden—
401Authentication required—
403Insufficient permissions (Moderator+ required)—
404Group not found—

Auth: Bearer JWT required.

Parameters

NameInRequiredTypeDescription
communityIdpathyesstring (uuid)—
groupIdpathyesstring (uuid)—

Responses

StatusDescriptionBody
200Successfully joined group—
403User is restricted from joining groups—

Auth: Bearer JWT required.

Parameters

NameInRequiredTypeDescription
communityIdpathyesstring (uuid)—
groupIdpathyesstring (uuid)—
pagequerynointeger—
limitquerynointeger—
statusquerynoenum: PENDING, APPROVED, REJECTED, CANCELLED—

Responses

StatusDescriptionBody
200Paginated list of join requests—
403Permission denied—

Auth: Bearer JWT required.

Parameters

NameInRequiredTypeDescription
communityIdpathyesstring (uuid)—
groupIdpathyesstring (uuid)—

Request body — application/json

FieldTypeRequiredDescription
messagestringnoOptional message to group admins

Responses

StatusDescriptionBody
201Join request submitted successfully—
403User is restricted from joining groups—

Auth: Bearer JWT required.

Parameters

NameInRequiredTypeDescription
communityIdpathyesstring (uuid)—
groupIdpathyesstring (uuid)—
requestIdpathyesstring (uuid)—

Responses

StatusDescriptionBody
200Join request cancelled successfully—
403Not authorized to cancel this request—
404Join request not found—

Auth: Bearer JWT required.

Parameters

NameInRequiredTypeDescription
communityIdpathyesstring (uuid)—
groupIdpathyesstring (uuid)—
requestIdpathyesstring (uuid)—

Responses

StatusDescriptionBody
200Join request approved and user added to group—
403Permission denied—
404Join request not found—

Auth: Bearer JWT required.

Parameters

NameInRequiredTypeDescription
communityIdpathyesstring (uuid)—
groupIdpathyesstring (uuid)—
requestIdpathyesstring (uuid)—

Request body — application/json

FieldTypeRequiredDescription
reasonstringnoOptional rejection reason

Responses

StatusDescriptionBody
200Join request rejected—
403Permission denied—
404Join request not found—

Auth: Bearer JWT required.

Parameters

NameInRequiredTypeDescription
communityIdpathyesstring (uuid)—
groupIdpathyesstring (uuid)—

Responses

StatusDescriptionBody
200User's join request status—
404No join request found—

Auth: Bearer JWT required.

Parameters

NameInRequiredTypeDescription
communityIdpathyesstring (uuid)—
groupIdpathyesstring (uuid)—

Responses

StatusDescriptionBody
200Successfully left group—
400Cannot leave (e.g., sole admin)—
403User is restricted from leaving groups—

Auth: Bearer JWT required.

Parameters

NameInRequiredTypeDescription
communityIdpathyesstring (uuid)—
groupIdpathyesstring (uuid)—
pagequerynointeger—
limitquerynointeger—

Responses

StatusDescriptionBody
200Paginated list of group members—
403Not authorized to view members (private group)—

Auth: Bearer JWT required.

Parameters

NameInRequiredTypeDescription
communityIdpathyesstring (uuid)—
groupIdpathyesstring (uuid)—

Responses

StatusDescriptionBody
200Membership statusobject

Auth: Bearer JWT required.

Parameters

NameInRequiredTypeDescription
communityIdpathyesstring (uuid)—
groupIdpathyesstring (uuid)—

Responses

StatusDescriptionBody
200Group unhidden successfullyobject
400Group is already visible—
401Authentication required—
403Insufficient permissions (Moderator+ required)—
404Group not found—

Returns join requests across ALL groups in the community in a single paginated response — replaces the per-group fan-out the badge / modal used to do. Call with ?status=PENDING&limit=1 to read just the pending count from pagination.total.

Auth: Bearer JWT required.

Parameters

NameInRequiredTypeDescription
communityIdpathyesstring (uuid)—
statusquerynoenum: PENDING, APPROVED, REJECTED, CANCELLED—
pagequerynointeger—
limitquerynointeger—

Responses

StatusDescriptionBody
200Aggregated list of join requests with embedded group + user info—
403Insufficient permissions (Moderator+ required)—