Events API
Event endpoints handle event management, user roles, and event-specific operations. Events are the core organizational unit within organizations. Routes are available at both /api/events and /events.
🎪 Event Information
Get Event by ID
- GET
/api/events/:eventId - Role: Admin or SystemAdmin for the event
- Response:
{ event }
Get Event by Slug (Public)
- GET
/api/events/slug/:slugor/events/slug/:slug - Description: Get event details by slug (public endpoint)
- Response:
{ event }
Update Event
- PATCH
/api/events/slug/:slugor/events/slug/:slug - Role: Admin or SystemAdmin for the event
- Body:
{ name?, newSlug?, description?, logo?, startDate?, endDate?, website?, codeOfConduct?, contactEmail? }(at least one required) - Response:
{ event }
Get User Roles for Event
- GET
/api/events/slug/:slug/my-rolesor/events/slug/:slug/my-roles - Description: Get the authenticated user's roles for a specific event.
- Authentication: Required
- Response:
{ roles: [...] }
👥 Event User Management
List Users for Event (by ID)
- GET
/api/events/:eventId/users - Role: Admin or SystemAdmin for the event
- Response:
{ users }
List Users for Event (by Slug)
- GET
/api/events/slug/:slug/usersor/events/slug/:slug/users - Role: Reporter, Responder, Admin, or SystemAdmin for the event
- Query Parameters:
search(string, optional): Filter users by name or emailsort(string, optional): Sort byname,email, orrole(default:name)order(string, optional): Sort order,ascordesc(default:asc)page(integer, optional): Page number for pagination (default: 1)limit(integer, optional): Number of users per page (default: 20)role(string, optional): Filter users by event role
- Response:
{ users: [...], total: <number> }
Update Event User
- PATCH
/api/events/slug/:slug/users/:userIdor/events/slug/:slug/users/:userId - Role: Admin or SystemAdmin for the event
- Body:
{ name, email, role } - Response:
{ message }
Remove User from Event
- DELETE
/api/events/slug/:slug/users/:userIdor/events/slug/:slug/users/:userId - Role: Admin or SystemAdmin for the event
- Response:
{ message }
Get Individual User Profile
- GET
/api/events/slug/:slug/users/:userIdor/events/slug/:slug/users/:userId - Role: Responder, Admin, or SystemAdmin for the event
- Description: Get detailed profile information for a specific user in the event
- Response:
{ user: { id, name, email, avatarUrl }, roles: [...], joinDate: string, lastActivity: string|null }
Get User Activity Timeline
- GET
/api/events/slug/:slug/users/:userId/activityor/events/slug/:slug/users/:userId/activity - Role: Responder, Admin, or SystemAdmin for the event
- Description: Get chronological activity timeline for a specific user in the event
- Query Parameters:
page(integer, optional): Page number for pagination (default: 1)limit(integer, optional): Number of activities per page (default: 20)
- Response:
{ activities: [...], total: number } - Activity Types:
report: Report submissions and updatescomment: Comment additions to incidentsaudit: System actions and role changes
Get User Incidents
- GET
/api/events/slug/:slug/users/:userId/incidentsor/events/slug/:slug/users/:userId/incidents - Role: Responder, Admin, or SystemAdmin for the event
- Description: Get all incidents submitted by or assigned to a specific user in the event
- Query Parameters:
type(string, optional): Filter by incident type (submitted,assigned,all) (default:all)page(integer, optional): Page number for pagination (default: 1)limit(integer, optional): Number of incidents per page (default: 20)
- Response:
{ incidents: [...], total: number }
🔐 Role Management
Assign Role to User
- POST
/api/events/:eventId/roles - Role: Admin or SystemAdmin for the event
- Body:
{ userId, roleName } - Response:
{ message, userEventRole }
Remove Role from User
- DELETE
/api/events/:eventId/roles - Role: Admin or SystemAdmin for the event
- Body:
{ userId, roleName } - Response:
{ message }
🖼️ Event Logo Management
Upload Event Logo (by ID)
- POST
/api/events/:eventId/logo - Role: Admin or SystemAdmin for the event
- Body:
multipart/form-datawith alogofile field - Response:
{ event }
Upload Event Logo (by Slug)
- POST
/api/events/slug/:slug/logoor/events/slug/:slug/logo - Role: Admin or SystemAdmin for the event
- Body:
multipart/form-datawith alogofile field - Response:
{ event }
Get Event Logo (by ID)
- GET
/api/events/:eventId/logo - Description: Fetch the event logo image for display.
- Response: Binary image data (or 404 if not found)
Get Event Logo (by Slug)
- GET
/api/events/slug/:slug/logoor/events/slug/:slug/logo - Description: Fetch the event logo image for display.
- Response: Binary image data (or 404 if not found)