Skip to main content

Events API

Base path: /api/orgs/{organizationId}/events

All endpoints require Authorization: Bearer <token>.


Events

Create Event

POST /api/orgs/{organizationId}/events
Authorization: Bearer <adminToken>
{
"title": "Annual General Meeting 2024",
"description": "Our yearly AGM open to all members.",
"eventType": "IN_PERSON",
"category": "MEETING",
"startDate": "2024-06-15T14:00:00Z",
"endDate": "2024-06-15T17:00:00Z",
"venueName": "City Hall — Room 201",
"address": {
"street": "123 Main St",
"city": "Toronto",
"province": "ON",
"postalCode": "M5H 1A1",
"country": "CA"
},
"locationTypeNote": "Parking available on site",
"registrationRequired": true,
"maxAttendees": 100,
"waitingListEnabled": true,
"isFree": false,
"basePrice": 15.00,
"memberPrice": 0.00,
"earlyBirdPrice": 10.00,
"currency": "CAD"
}

Event Types: IN_PERSON, VIRTUAL, HYBRID


List Events

GET /api/orgs/{organizationId}/events
Authorization: Bearer <token>

Query Parameters:

ParamTypeDescription
statusstringDRAFT, PUBLISHED, CANCELLED, COMPLETED
categorystringFilter by category
fromdateStart date filter (ISO 8601)
todateEnd date filter
searchstringSearch by title
pageintPage number
sizeintPage size

Get Event

GET /api/orgs/{organizationId}/events/{eventId}
Authorization: Bearer <token>

Update Event

PUT /api/orgs/{organizationId}/events/{eventId}
Authorization: Bearer <adminToken>

Delete Event

DELETE /api/orgs/{organizationId}/events/{eventId}
Authorization: Bearer <adminToken>

Publish Event

POST /api/orgs/{organizationId}/events/{eventId}/publish
Authorization: Bearer <adminToken>

Transitions the event from DRAFT to PUBLISHED. Notifies registered members.


Cancel Event

POST /api/orgs/{organizationId}/events/{eventId}/cancel
Authorization: Bearer <adminToken>
{
"reason": "Venue unavailable — will be rescheduled."
}

Notifies all registrants by email.


Bulk Import Events

POST /api/orgs/{organizationId}/events/import
Authorization: Bearer <adminToken>
Content-Type: multipart/form-data

file=<csv-file>

Accepted format: CSV with columns matching the event creation fields.


Event Registrations

Register for Event

POST /api/orgs/{organizationId}/events/{eventId}/registrations
Authorization: Bearer <token>
{
"userId": "user-uuid",
"ticketType": "MEMBER",
"notes": "Dietary restriction: vegetarian"
}

Response 201:

{
"id": "reg-uuid",
"status": "CONFIRMED",
"ticketType": "MEMBER",
"confirmedAt": "2024-05-10T09:00:00Z"
}

If the event is at capacity and waitingListEnabled is true, the status will be WAITLISTED.


List Registrations

GET /api/orgs/{organizationId}/events/{eventId}/registrations
Authorization: Bearer <adminToken>

Query Parameters:

ParamTypeDescription
statusstringPENDING, CONFIRMED, WAITLISTED, CANCELLED
pageintPage number
sizeintPage size

Get Registration

GET /api/orgs/{organizationId}/events/{eventId}/registrations/{registrationId}
Authorization: Bearer <token>

Update Registration Status

PATCH /api/orgs/{organizationId}/events/{eventId}/registrations/{registrationId}/status
Authorization: Bearer <adminToken>
{ "status": "CONFIRMED" }

Used to move waitlisted attendees to confirmed when spots open up.


Cancel Registration

DELETE /api/orgs/{organizationId}/events/{eventId}/registrations/{registrationId}
Authorization: Bearer <token>

Members can cancel their own registration. Admins can cancel any registration.


Event Responses (Surveys)

Submit Response

POST /api/orgs/{organizationId}/events/{eventId}/responses/{responseId}/submit
Authorization: Bearer <token>
{
"answers": [
{ "questionId": "q1", "answer": "Very satisfied" },
{ "questionId": "q2", "answer": "The networking session" }
]
}

List Responses

GET /api/orgs/{organizationId}/events/{eventId}/responses
Authorization: Bearer <adminToken>

Get Response

GET /api/orgs/{organizationId}/events/{eventId}/responses/{responseId}
Authorization: Bearer <adminToken>