Bulletins are announcements posted to a tour day. They can be pinned and can trigger a notification to tour members. Bulletin IDs are string/ID values.
All endpoints require the standard authentication headers.
List bulletins
GET /v1/tours/{tourId}/bulletins
Returns the bulletins for a tour.
Scope: bulletins.read
Example
curl "$BASE/v1/tours/2f1c…/bulletins" \
-H "x-api-key: $KEY" -H "x-api-secret: $SECRET" -H "Authorization: Bearer $TOKEN"
Path parameters
| Name | Type | Description |
|---|
tourId | string (UUID) | The tour. |
Response data — array of bulletins:
{
"id": "a8e2…",
"title": "Schedule change",
"body": "Doors now at 7pm",
"is_edited": false,
"is_pinned": true,
"has_notification": true,
"notification_has_sent": true,
"day_id": 1843,
"tour_id": "2f1c…",
"posted_at": "2026-05-20T08:00:00Z",
"created_at": "2026-05-20T08:00:00Z",
"updated_at": "2026-05-20T08:00:00Z",
"is_deleted": false,
"created_by": { "id": "…", "firstname": "Jane", "lastname": "Doe", "email": "jane@…", "image": "https://…" }
}
Create a bulletin
Scope: bulletins.write
Body
| Field | Type | Required | Description |
|---|
dayId | number | Yes | Day to post the bulletin on. |
title | string | Yes | Bulletin title. |
body | string | Yes | Bulletin content. |
isPinned | boolean | Yes | Whether to pin the bulletin. |
hasNotification | boolean | Yes | Whether to notify tour members. |
scheduledFor | string | No | Schedule the bulletin for a future time. |
Create takes dayId (camelCase, not day_id or tour_id); the tour is resolved from the day. See Field naming for the snake_case vs camelCase conventions across resources.
Response data: { "bulletin_id": "a8e2…" }.
Update a bulletin
PUT /v1/bulletins/{bulletinId}
Scope: bulletins.write
Path parameters
| Name | Type | Description |
|---|
bulletinId | string (ID) | The bulletin to update. |
Body — all optional; send only what changes.
| Field | Type | Description |
|---|
title | string | Bulletin title. |
body | string | Bulletin content. |
isPinned | boolean | Pin state. |
hasNotification | boolean | Notification flag. |
scheduledFor | string | Scheduled time. |
The bulletinId is taken from the URL path — do not send it in the request body.
Response data: none.
Delete a bulletin
DELETE /v1/bulletins/{bulletinId}
Soft-deletes the bulletin.
Scope: bulletins.write
Path parameters
| Name | Type | Description |
|---|
bulletinId | string (ID) | The bulletin to delete. |
Response data: none.
See also: Tours, Guest List.