Unfollow a channel
Unsubscribe this session from the channel identified by `jid` so its posts stop arriving on this account. **Not implemented in v1.** This endpoint is wired but **always responds `501` with `not_implemented`** — no unfollow is performed and no state changes. **Authorization:** requires the `send` capability (`403` `forbidden` otherwise; `401` without a valid principal). **When implemented**, this will be an **idempotent** write: unfollowing a channel that is not followed is a no-op and still returns `204` (no content). The action takes no request body. **Errors:** `403` `forbidden` (missing `send`), `404` `not_found` (session or channel unknown), `501` `not_implemented` (current behavior).
Send Authorization: Bearer <token>. The router accepts two kinds of token and tries each in turn: a frontend-minted login JWT (verified against the frontend JWKS; the person's org + role are read from it), or an api-key for a script/service (carrying a fixed set of gateway permissions). The bearerFormat: JWT label describes the person-login case.
In: header
Path Parameters
The WhatsApp session id (one attached WhatsApp number) performing the follow/unfollow.
The channel's WhatsApp JID (a newsletter address, e.g. "120363012345678901@newsletter"). Percent-encode reserved characters such as "@" ("%40") in the path — the gateway URL-decodes it before use.
Response Body
application/json
curl -X POST "https://example.com/api/v1/sessions/01HX.../channels/120363012345678901@newsletter:unfollow"{ "error": { "code": "not_found", "details": { "property1": null, "property2": null }, "message": "session not found" }}Mute or unmute a channel POST
Set this session's notification state for the channel identified by `jid`. The request body is optional. Send `{"mute": true}` to mute, `{"mute": false}` to unmute. If the field is omitted (or the body is empty/absent), the channel is **muted** (the default is `true`). **Not implemented in v1.** This endpoint is wired but **always responds `501` with `not_implemented`** — the mute state is not changed. **Authorization:** requires the `send` capability (`403` `forbidden` otherwise; `401` without a valid principal). **When implemented**, this will be an **idempotent** write that sets (not toggles) the mute state, returning `204` (no content) on success regardless of the prior state. **Errors:** `403` `forbidden` (missing `send`), `404` `not_found` (session or channel unknown), `501` `not_implemented` (current behavior).
List chats GET
Returns a page of the session's chats, served from the gateway's **stored copy** (not a live WhatsApp query), ordered for display. Page through results with `limit` and `cursor`: send the `nextCursor` from the previous response back as `cursor` to fetch the next page. When `nextCursor` is `null` there are no more chats. Requires the `read` capability. **Errors** - `not_found` (404): the session does not exist or is not owned by the caller's organization. - `forbidden` (403): the caller lacks the `read` capability.