Skip to content

API Surface

This page lists the current workers/bookmarks-api-worker HTTP API.

MethodRouteAuthNotes
GET/healthNoneWorker health probe.
MethodRouteAuthNotes
POST/v1/auth/dev-loginNoneDev-only identity bootstrap.
POST/v1/auth/loginNoneProxies to cosmos-auth-worker.
POST/v1/auth/registerNoneProxies to cosmos-auth-worker.
POST/v1/auth/password/reset-requestNoneProxies to cosmos-auth-worker.
POST/v1/auth/password/reset-confirmNoneProxies to cosmos-auth-worker.
POST/v1/auth/refreshNoneProxies to cosmos-auth-worker.
MethodRouteAuthNotes
GET/v1/meAuthenticatedReturns current user context.
GET/v1/profileAuthenticatedReturns persisted profile fields.
PATCH/v1/profileAuthenticatedUpdates display/profile contact fields.
PATCH/v1/profile/themeAuthenticatedUpdates stored theme preference.
MethodRouteAuthNotes
GET/v1/clubsAuthenticatedClub list with role summary.
POST/v1/clubsAuthenticatedCreates club and first book; creator becomes admin.
GET/v1/clubs/:clubId/settingsClub memberReads club settings + member list.
PATCH/v1/clubs/:clubIdClub adminUpdates club name/description.
POST/v1/clubs/:clubId/joinAuthenticatedJoins as member (INSERT OR IGNORE).
GET/v1/clubs/:clubId/users/searchClub adminSearches existing users not already in the club for invite selection.
POST/v1/clubs/:clubId/membersClub adminAdds/invites an existing user by userId and role.
PATCH/v1/clubs/:clubId/members/:memberUserIdClub adminChanges member role; enforces last-admin guard.
DELETE/v1/clubs/:clubId/members/:memberUserIdClub adminRemoves member; enforces last-admin guard.
GET/v1/clubs/:clubId/booksAuthenticatedReturns book list for club context.
POST/v1/clubs/:clubId/booksClub memberCreates book in club.
PATCH/v1/books/:bookIdClub adminUpdates title/chapter/description/spine color.
PATCH/v1/books/:bookId/stateClub adminUpdates is_finished/is_current state.
PATCH/v1/books/:bookId/ratingClub memberUpserts member’s rating.
DELETE/v1/books/:bookIdClub adminDeletes book and dependent book data.
GET/v1/clubs/:clubId/meetingsClub memberReturns meetings plus RSVP summaries.
POST/v1/clubs/:clubId/meetingsClub memberCreates meeting linked to a club book (bookId).
PATCH/v1/meetings/:meetingIdMeeting creator or club adminUpdates meeting details.
POST/v1/meetings/:meetingId/rsvpClub memberUpserts member RSVP.
POST/v1/meetings/:meetingId/cancelMeeting creator or club adminMarks meeting canceled.
DELETE/v1/meetings/:meetingIdClub adminDeletes meeting and meeting-linked rows.
GET/v1/meetings/:meetingId/calendarClub memberGenerates ICS payload.
GET/v1/meetings/:meetingId/commentsClub memberLists meeting comments.
POST/v1/meetings/:meetingId/commentsClub memberCreates meeting comment.
PATCH/v1/meeting-comments/:commentIdComment author + club memberEdits meeting comment body.
DELETE/v1/meeting-comments/:commentIdClub adminDeletes meeting comment.

Notes, Sections, Comments, Reactions, Assets

Section titled “Notes, Sections, Comments, Reactions, Assets”
MethodRouteAuthNotes
GET/v1/clubs/:clubId/notesClub memberReturns sectioned notes; supports bookId, sectionType, spoiler query params.
POST/v1/clubs/:clubId/note-sectionsClub memberCreates chapter/character/event section for a book.
POST/v1/clubs/:clubId/notesClub memberCreates note in a section.
PATCH/v1/notes/:noteIdNote author + club memberEdits note body/spoiler level.
DELETE/v1/notes/:noteIdClub adminDeletes note and dependents.
GET/v1/notes/:noteId/commentsClub memberLists note comments (including replies).
POST/v1/notes/:noteId/commentsClub memberCreates note comment/reply.
PATCH/v1/comments/:commentIdComment author + club memberEdits note comment body/spoiler level.
DELETE/v1/comments/:commentIdClub adminDeletes comment subtree recursively.
POST/v1/notes/:noteId/reactionsAuthenticatedAdds reaction (INSERT OR IGNORE).
POST/v1/notes/:noteId/assetsAuthenticatedStores note asset metadata record.
DELETE/v1/assets/:assetIdClub adminDeletes asset metadata record.
MethodRouteAuthNotes
GET/v1/clubs/:clubId/streamClub member + websocket upgradeProxies websocket to Durable Object room.

Validation and authorization failures return JSON error payloads:

{ "error": "message" }

Typical status codes: 400, 401, 403, 404, 409, 426, 500.

For role/action mapping, see Authorization Matrix.