Meetings
Scheduling meetings with colleagues and external guests, changing or cancelling them, and attaching the recording afterwards.
Scheduling meetings with colleagues and external guests, changing or cancelling them, and attaching the recording afterwards.
Generated from the OpenAPI spec by
npm run docs:api -w api. Do not edit this page — change the decorators inapps/api/src/and regenerate.
Conventions
- Auth — a session on every route: the cookie on web, the bearer token on mobile. See Authentication.
- Errors — every non-2xx response has the body described in Errors.
- Types — a
?after a field name means it is optional;| nullmeans it is present but may be null.
Endpoints
GET /api/v1/meetings — Meetings you organise or are invited to
Soonest first. A super admin sees every meeting and may narrow it to one person with employeeId. A plain array, not a page.
| Query | Type | Required | Notes |
|---|---|---|---|
from | string | no | ISO 8601. Meetings that end at or after this. |
to | string | no | ISO 8601. Meetings that start at or before this. |
employeeId | string | no | Super admin only; ignored for everyone else. |
type | internal | client | project | general | no | |
status | UPCOMING | IN_PROGRESS | COMPLETED | CANCELLED | no | |
search | string | no | Matches the topic or description. |
Returns 200 → MeetingResponse[]
| Error | When |
|---|---|
401 | No valid session. Clear the stored token and sign in again. |
403 | Signed in, but not allowed to do this. |
POST /api/v1/meetings — Schedule a meeting
You become the organizer. Participants are notified and invited by email, external addresses included. It cannot start in the past.
Body — CreateMeetingDto
Returns 201 → MeetingResponse
| Error | When |
|---|---|
400 | The request was rejected. message is an array of field errors when validation failed. |
401 | No valid session. Clear the stored token and sign in again. |
403 | Signed in, but not allowed to do this. |
GET /api/v1/meetings/{id} — One meeting
Visible to its organizer, its participants and super admins.
| Path parameter | Type | Notes |
|---|---|---|
id | string |
Returns 200 → MeetingResponse
| Error | When |
|---|---|
401 | No valid session. Clear the stored token and sign in again. |
403 | Signed in, but not allowed to do this. |
404 | No such record. |
PATCH /api/v1/meetings/{id} — Change a meeting
Organizer only, and only before it starts.
| Path parameter | Type | Notes |
|---|---|---|
id | string |
Body — UpdateMeetingDto
Returns 200 → MeetingResponse
| Error | When |
|---|---|
400 | The request was rejected. message is an array of field errors when validation failed. |
401 | No valid session. Clear the stored token and sign in again. |
403 | Signed in, but not allowed to do this. |
404 | No such record. |
409 | The meeting has already started. |
DELETE /api/v1/meetings/{id} — Delete a meeting
Organizer only, and only before it starts. Nobody is notified — cancel instead if people were expecting it.
| Path parameter | Type | Notes |
|---|---|---|
id | string |
Returns 200 → no body
| Error | When |
|---|---|
401 | No valid session. Clear the stored token and sign in again. |
403 | Signed in, but not allowed to do this. |
404 | No such record. |
409 | The meeting has already started. |
POST /api/v1/meetings/{id}/cancel — Cancel a meeting
Organizer only, and only before it starts. It stays on the calendar as CANCELLED and participants are told.
| Path parameter | Type | Notes |
|---|---|---|
id | string |
Returns 200 → MeetingResponse
| Error | When |
|---|---|
401 | No valid session. Clear the stored token and sign in again. |
403 | Signed in, but not allowed to do this. |
404 | No such record. |
409 | The meeting has already started. |
PATCH /api/v1/meetings/{id}/links — Attach the recording and transcript
Organizer only. Allowed at any time, including after the meeting — that is when the links exist.
| Path parameter | Type | Notes |
|---|---|---|
id | string |
Body — UpdateMeetingLinksDto
Returns 200 → MeetingResponse
| Error | When |
|---|---|
400 | The request was rejected. message is an array of field errors when validation failed. |
401 | No valid session. Clear the stored token and sign in again. |
403 | Signed in, but not allowed to do this. |
404 | No such record. |
Data models
MeetingResponse
| Field | Type | Notes |
|---|---|---|
id | string | |
topic | string | |
description | string | |
startsAt | string ISO 8601 | |
endsAt | string ISO 8601 | |
status | UPCOMING | IN_PROGRESS | COMPLETED | CANCELLED | |
type | project | internal | client | general | |
meetLink | string | |
recordingLink | string | null | |
transcriptLink | string | null | |
organizer | MeetingParticipantResponse | |
participants | MeetingParticipantResponse[] | |
externalEmails | string[] | |
canManage | boolean |
MeetingParticipantResponse
| Field | Type | Notes |
|---|---|---|
id | string | |
name | string | |
email | string | |
image | string | null |
CreateMeetingDto
| Field | Type | Notes |
|---|---|---|
topic | string | ≤ 160 chars |
description? | string | ≤ 5000 chars |
startsAt | string | |
endsAt | string | |
internalParticipantIds | string[] | ≤ 100 items |
externalEmails | string[] | ≤ 100 items |
type | internal | client | project | general | |
meetLink | string | ≤ 1000 chars |
UpdateMeetingDto
| Field | Type | Notes |
|---|---|---|
topic? | string | ≤ 160 chars |
description? | string | ≤ 5000 chars |
startsAt? | string | |
endsAt? | string | |
internalParticipantIds? | string[] | ≤ 100 items |
externalEmails? | string[] | ≤ 100 items |
type? | internal | client | project | general | |
meetLink? | string | ≤ 1000 chars |
UpdateMeetingLinksDto
| Field | Type | Notes |
|---|---|---|
recordingLink? | string | ≤ 2000 chars |
transcriptLink? | string | ≤ 2000 chars |