Update workspace settings
Updates the workspace-level settings an admin controls and returns the full updated settings. Admin only. Any subset of fields may be supplied; omitted fields are left unchanged, and for the nudge timezone and fallback language an empty string reverts to the default. Validates allowed values and ranges (for example profile_mode must be enabled or disabled, consent_mode admin_only or per_user, corpus_history_days 30-365, sign-in mode open or approval, and nudge start hour before end hour), returning 400 on an invalid value and 403 for non-admins.
Authorizations
Personal Access Token. Send as Authorization: Bearer hq_pat_....
Body
Empty string clears (revert to derived/default); absent leaves unchanged.
Empty string clears (revert to derived/default); absent leaves unchanged.
Response
Updated settings
Whether Slack guests (single-/multi-channel) may sign in. Default
false - guests are blocked unless an admin flips this on (or
explicitly allows an individual guest under Users).
admin_only (default - the admin opts in for the whole tenant)
or per_user (each user must grant consent before distillation
considers their messages).
How far back the corpus crawler ingests messages. 30–365.
Local hour the daily nudge stops, exclusive (1–24, default 18).
Local hour the daily nudge may start (0–23, default 9).
Whether HQ proactively nudges channels - the one-time welcome plus
capped daily "you could connect/turn on X" messages. Default true;
admins opt out here.
enabled / disabled. When enabled, the profile worker runs
every tick and distils a per-user persona doc from the
messages_corpus table.
Who in the connected workspace may sign in to HQ (migration 0129):
open (default - any workspace member, minus explicit denies) or
approval (allowlist - only users an admin has explicitly allowed).
workspace_corpus_sources.id for the (single) connected source.
Surfaced so the UI knows what it's editing; the PATCH endpoint
scopes by tenant slug, not by id.
Connector kind - slack / teams / manual. Read-only.
BCP-47 language HQ falls back to when a channel is too quiet to detect
one. null = Slack workspace locale, else English.
IANA timezone the daily nudge schedules in (e.g. Europe/Stockholm).
null = derive from the connected workspace, else UTC. Set this for a
web-only tenant with no Slack to derive a tz from.
Display name of the connected workspace (e.g. "Truespar"). Read-only.