15 endpoints.
| Method | Path | Summary |
|---|---|---|
GET | /api/events | List events for the current tenant |
POST | /api/events | Create a new community event |
DELETE | /api/events/{id} | Delete an event |
GET | /api/events/{id} | Get event details by ID |
PUT | /api/events/{id} | Update an existing event |
DELETE | /api/events/{id}/attend | Cancel attendance for the authenticated user |
POST | /api/events/{id}/attend | Confirm attendance for the authenticated user |
PATCH | /api/events/{id}/attendance | Update attendance status for a user |
GET | /api/events/{id}/attendance/stats | Get attendance statistics for an event |
GET | /api/events/{id}/attendees | Get attendees for an event |
GET | /api/events/{id}/confirmed | Get users who confirmed attendance (Admin endpoint) |
POST | /api/events/{id}/interest | Toggle interest in an event (bookmark/follow action) |
GET | /api/events/{id}/interested | Get users who are interested in an event (Admin endpoint) |
GET | /api/events/user/{userId} | Get events for a specific user |
GET | /api/events/user/{userId}/attendance | Get attendance history for a user |
GET /api/eventsAuth: Bearer JWT required.
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
communityId | query | no | string | Filter by community |
status | query | no | string | Comma separated event statuses |
type | query | no | string | Comma separated event types |
search | query | no | string | — |
fromDate | query | no | string (date-time) | — |
toDate | query | no | string (date-time) | — |
page | query | no | integer | — |
pageSize | query | no | integer | — |
Responses
| Status | Description | Body |
|---|---|---|
200 | Paginated list of events | — |
401 | Authentication required | — |
POST /api/eventsAuth: Bearer JWT required.
Request body (required) — multipart/form-data
| Field | Type | Required | Description |
|---|---|---|---|
communityId | string (uuid) | yes | — |
title | string | yes | — |
titleArabic | string | yes | — |
description | string | no | — |
startDate | string (date-time) | yes | — |
endDate | string (date-time) | yes | — |
isOnline | boolean | no | — |
location | string | no | — |
meetingUrl | string | no | — |
capacity | integer | no | — |
fee | number | no | — |
hasCertificate | boolean | no | — |
allowGuests | boolean | no | — |
allowComments | boolean | no | — |
tags | string[] | no | — |
eventCover | string (binary) | no | — |
eventDocuments | string (binary)[] | no | — |
Responses
| Status | Description | Body |
|---|---|---|
201 | Event created successfully | — |
400 | Validation error | — |
401 | Authentication required | — |
DELETE /api/events/{id}Auth: Bearer JWT required.
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | — |
Responses
| Status | Description | Body |
|---|---|---|
200 | Event deleted | — |
404 | Event not found | — |
GET /api/events/{id}Auth: Bearer JWT required.
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | — |
Responses
| Status | Description | Body |
|---|---|---|
200 | Event details | — |
404 | Event not found | — |
PUT /api/events/{id}Auth: Bearer JWT required.
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | — |
Request body — multipart/form-data
| Field | Type | Required | Description |
|---|---|---|---|
title | string | no | — |
titleArabic | string | no | — |
startDate | string (date-time) | no | — |
endDate | string (date-time) | no | — |
eventCover | string (binary) | no | — |
eventDocuments | string (binary)[] | no | — |
Responses
| Status | Description | Body |
|---|---|---|
200 | Event updated | — |
404 | Event not found | — |
DELETE /api/events/{id}/attendAuth: Bearer JWT required.
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | — |
Responses
| Status | Description | Body |
|---|---|---|
200 | Attendance cancelled | — |
POST /api/events/{id}/attendAuth: Bearer JWT required.
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | — |
Request body — application/json
| Field | Type | Required | Description |
|---|---|---|---|
status | enum: GOING, MAYBE, NOT_GOING | no | — |
Responses
| Status | Description | Body |
|---|---|---|
201 | Attendance confirmed | — |
PATCH /api/events/{id}/attendanceAuth: Bearer JWT required.
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | — |
Request body (required) — application/json
| Field | Type | Required | Description |
|---|---|---|---|
userId | string | yes | — |
status | enum: GOING, MAYBE, NOT_GOING | yes | — |
Responses
| Status | Description | Body |
|---|---|---|
200 | Attendance status updated | — |
GET /api/events/{id}/attendance/statsAuth: Bearer JWT required.
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | — |
Responses
| Status | Description | Body |
|---|---|---|
200 | Attendance statistics | — |
GET /api/events/{id}/attendeesAuth: Bearer JWT required.
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | — |
status | query | no | string | — |
Responses
| Status | Description | Body |
|---|---|---|
200 | List of attendees | — |
GET /api/events/{id}/confirmedAuth: Bearer JWT required.
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | — |
Responses
| Status | Description | Body |
|---|---|---|
200 | List of confirmed attendees | — |
POST /api/events/{id}/interestIndependent of attendance - allows user to mark interest without confirming attendance Auth: Bearer JWT required.
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | — |
Responses
| Status | Description | Body |
|---|---|---|
200 | Interest toggled successfully | — |
GET /api/events/{id}/interestedAuth: Bearer JWT required.
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | — |
Responses
| Status | Description | Body |
|---|---|---|
200 | List of interested users | — |
GET /api/events/user/{userId}Auth: Bearer JWT required.
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
userId | path | yes | string | — |
status | query | no | string | Comma separated statuses |
page | query | no | integer | — |
pageSize | query | no | integer | — |
Responses
| Status | Description | Body |
|---|---|---|
200 | Paginated list of events | — |
GET /api/events/user/{userId}/attendanceAuth: Bearer JWT required.
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
userId | path | yes | string | — |
status | query | no | string | Comma separated statuses |
Responses
| Status | Description | Body |
|---|---|---|
200 | Attendance history | — |