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
Workspace-wide default UI language (BCP-47-ish, e.g. en / sv). Absent
leaves it unchanged. Cannot be cleared - the column is NOT NULL.
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).
Whether HQ posts RECURRING skill/integration recommendations in active
channels (separate from the one-time welcome). Default false - an
admin opts in. Only effective when proactive_nudges_enabled is on.
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.
Workspace-wide default UI language (tenants.default_locale). The
fallback for members with no locale of their own; the i18n resolver
falls back to English if this names a language with no UI translation.
Local hour the daily nudge stops, exclusive (1–24, default 18).
Local hour the daily nudge may start (0–23, default 9).
Master switch for HQ posting in channels unprompted - in practice the
one-time join welcome. Default true; admins opt out here. Also gates
the recurring recommendations below (those need this on).
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.