The person's portal settings
const url = 'http://localhost:8000/api/portal/settings/';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url http://localhost:8000/api/portal/settings/ \ --header 'Authorization: Bearer <token>'The language the person chose for their e-mails — null when they chose none: then each card’s e-mails are written in that card’s invite language, exactly as the notifier sends them — and whether an unread message e-mails them (on unless they switched it off; a coach’s own chat e-mail is a separate switch).
Account level: the signed-in person’s own settings, whichever cards they hold. 404 while client access is switched off on the environment; a partner API key gets 403; 429 past the account’s rate (client_portal, 120/min).
Authorizations
Section titled “Authorizations”Responses
Section titled “Responses”GET / PATCH /api/portal/settings/ — per person, not per card.
object
E-mail when a message waits unread for 10 minutes — at most one per conversation every 6 hours, never with the message’s words. The e-mail’s unsubscribe link switches the same setting off. A coach’s own chat e-mail (on /api/me/) is a separate switch.
Examples
{ "language": "ru", "notify_messages_email": true}No language chosen
{ "language": null, "notify_messages_email": true}object
Human-readable message, or a stable machine code for the cases a client branches on. The standard envelope for 400 (validation — a field-keyed object may appear instead), 401 (missing / invalid credentials), 403 (authenticated but not permitted), and 404 (absent — cross-team records are collapsed to 404 so the API never leaks the existence of another team’s data).
Example generated
{ "detail": "example"}object
Human-readable message, or a stable machine code for the cases a client branches on. The standard envelope for 400 (validation — a field-keyed object may appear instead), 401 (missing / invalid credentials), 403 (authenticated but not permitted), and 404 (absent — cross-team records are collapsed to 404 so the API never leaks the existence of another team’s data).
Example generated
{ "detail": "example"}object
Human-readable message, or a stable machine code for the cases a client branches on. The standard envelope for 400 (validation — a field-keyed object may appear instead), 401 (missing / invalid credentials), 403 (authenticated but not permitted), and 404 (absent — cross-team records are collapsed to 404 so the API never leaks the existence of another team’s data).
Example generated
{ "detail": "example"}object
429 — throttled: this account’s (or address’s) rate for the route is used up; try again after wait seconds, which Retry-After repeats. A route with a limit of its own answers its own code instead, documented there.
With throttled: whole seconds until the next request can pass.
Example generated
{ "detail": "example", "wait": 1}