List the caller's notification preferences
Returns every notification preference the caller has saved: the delivery channel, whether it is enabled, its cadence, and the workspace, category, or kind it overrides. Scoped to the authenticated user, so no workspace permission is involved.
Authorization
apiKey Workspace API key created in Workspace settings → API keys. Scopes on the key bound what it can read and write.
In: header
Response Body
application/json
application/json
application/json
curl -X GET "https://example.com/v1/notification-preferences"{ "data": [ { "id": "string", "workspaceId": "string", "category": "collaboration", "kind": "comment", "channel": "in_app", "enabled": true, "cadence": "immediate" } ]}{ "_tag": "ApiNotFound", "error": "not_found", "message": "That item does not exist, or this key cannot see it.", "status": 404}{ "_tag": "ApiNotFound", "error": "not_found", "message": "That item does not exist, or this key cannot see it.", "status": 404}Archive notifications out of the inbox
Stamps `archivedAt` on the caller's notifications — the ids given, or with `allRead` every already-read, unarchived one — so they drop out of the default listing, and appends an archive event to the workspace log. A body with neither ids nor `allRead` is a validation error. Restricting to a `workspaceId` requires `workspace:read` there and accepts an `Idempotency-Key` header to make retries safe.
Create or update a notification preference
Upserts one preference for the caller, keyed by channel plus its optional workspace, category, or kind override, so re-sending the same body is idempotent. A preference may override a category or a kind but not both, and an enabled channel needs a real cadence while a disabled one must use `never`. Scoping the preference to a `workspaceId` requires `workspace:read` there and accepts an `Idempotency-Key` header.