Board Audit Log
A chronological trail of governance-relevant actions taken on a board.
The audit log provides a chronological trail of actions taken on a board — membership changes, document activity, meeting lifecycle events, action item changes, and more. It exists for governance tracking and compliance, independent of whether a UI has been built to browse it.
Legacy, admin-only endpoint
This is a legacy endpoint — its path does not carry a /api/v1 prefix and it
is not reachable at one. It requires board admin access, stricter than the
boards:read scope used elsewhere. See
Versioning for what "legacy" means in this
API.
Endpoints
| Method | Path | Description |
|---|---|---|
GET | /api/auditlog/:boardId | Get the audit trail for a board |
Audit Log Entry Object
{
"_id": "60d5ec49f1a2c8b1f8e4e1a1",
"boardId": "60d5ec49f1a2c8b1f8e4e1b1",
"actorUser": "507f1f77bcf86cd799439011",
"action": "memberChange",
"details": {
"memberEmail": "[email protected]",
"positions": ["board member"]
},
"createdVia": "web",
"createdAt": "2025-06-01T10:00:00.000Z",
"updatedAt": "2025-06-01T10:00:00.000Z"
}Fields
| Field | Type | Description |
|---|---|---|
_id | string | Opaque entry ID |
boardId | string | null | The board this entry belongs to. Absent for a small number of system-level events (e.g. WebSocket connection events) |
actorUser | string | null | User who performed the action. Absent for system-initiated or unauthenticated events |
action | string | Type of action performed — see values below |
details | object | Action-specific metadata; shape varies by action |
createdVia | string | null | "web" or "agent", when known |
createdAt | string | ISO-8601 timestamp |
updatedAt | string | ISO-8601 timestamp |
Retention
Audit log entries are automatically deleted 365 days after createdAt.
Action Values
| Category | Values |
|---|---|
| Membership | ownershipTransfer, memberDelete, memberLeft, memberChange |
| Documents | documentVersionDelete, documentDelete, documentView |
| Meetings | meetingCreate, meetingUpdate, meetingStatusChange, meetingDelete, meetingGuestSlotsViewed, meetingGuestVoteCast |
| Action items | actionItemCreate, actionItemUpdate, actionItemStatusChange, actionItemDelete |
| Reports & dashboards | reportStatusChange, dashboardReviewStatusChange, dashboardAccessGranted, dashboardAccessRevoked, dashboardOwnershipTransferred |
| Unregistered board users | boardUserUnregisteredCreate, boardUserUnregisteredUpdate, boardUserUnregisteredArchive, boardUserUnregisteredUnarchive, boardUserUnregisteredScrubPii, boardUserUnregisteredDismissBounceFlag |
| Security / connection | wsConnect, wsDisconnect, wsRoomJoin, wsRoomLeave, wsRoomAccessDenied, wsAuthFailure, wsRateLimit |
| Account & billing | userHardPurge, billingPlanOverride |
details is validated per action value and carries fields specific to that event (for example, memberChange carries memberEmail and positions).
Get Audit Trail for a Board
GET /api/auditlog/:boardIdReturns the full audit trail for a board, sorted in ascending chronological order (oldest first, ties on createdAt broken by _id).
Path Parameters
| Parameter | Type | Description |
|---|---|---|
boardId | string | The board ID |
Response
Returns a bare array of audit log entry objects — this endpoint does not use the standard { "data": ... } envelope:
[
/* array of audit log entry objects, oldest first */
]Errors
| Code | Status | When |
|---|---|---|
UNAUTHENTICATED | 401 | Missing or invalid token |
FORBIDDEN | 403 | Caller is not a board admin |
RESOURCE_NOT_FOUND | 404 | Board does not exist |