Update Workspace Config

Changed on

Update one or more workspace-level configuration flags. Any field returned by GET /v1/workspace/{workspace_slug}/config/ can be sent in the PATCH body — only fields you include are changed.

patch/v1/workspace/{workspace_slug}/config/

Request

Path parameters

workspace_slugstring required

Workspace slug (e.g. staging, production).

Request body

user_inbox_preference_enabledboolean

If you are using the Inbox channel, enable this to show the Inbox channel in the preference centre.

sms_vendor_type'basic' | 'dlt'

Switch the workspace's SMS delivery mode. Confirm with your SMS provider before switching to or from dlt.

user_tenancy_mode'shared' | 'exclusive'

Change how users are constrained across tenants. See User-tenant mapping for the effects of switching this value.

Only exclusive → shared can be changed through the API. Switching from shared to exclusive returns 400; contact support for that change.

user_tenancy_channel_fallback_mode'all' | 'allowlist'

Switch between all (every channel falls back from global) and allowlist (only channels in user_tenancy_channel_fallback fall back).

user_tenancy_channel_fallbackstring[]

Channel keys (without the $ prefix) allowed to fall back when user_tenancy_channel_fallback_mode = allowlist. Ignored otherwise. Inbox always falls back.

user_tenancy_channel_fallback_applies_to_default_tenantboolean

When true, the fallback rule above also governs sends with no tenant_id.

Example request

{
  "user_inbox_preference_enabled": true,
  "sms_vendor_type": "basic",
  "user_tenancy_mode": "shared",
  "user_tenancy_channel_fallback_mode": "allowlist",
  "user_tenancy_channel_fallback": [
    "email",
    "sms",
    "whatsapp"
  ]
}

Response

Workspace config updated. The full updated config is returned.

user_inbox_preference_enabledboolean

If you are using the Inbox channel, enable this to show the Inbox channel in the preference centre.

sms_vendor_type'basic' | 'dlt'

SMS delivery mode for the workspace. Use dlt for India DLT-compliant sends; basic for standard sends.

user_tenancy_mode'shared' | 'exclusive'

Constraint on user-tenant associations for this workspace.

  • shared — a user can belong to any number of tenants.
  • exclusive — a user can belong to at most one tenant. The associate call rejects users that already have a mapping.

New workspaces default to exclusive; workspaces that existed before this setting was introduced default to shared.

user_tenancy_channel_fallback_mode'all' | 'allowlist'

Controls which channels a tenant-scoped profile is allowed to inherit from the user's global profile when the tenant has no override for that channel.

  • all — every channel falls back to global (default; reproduces a straight shallow merge).
  • allowlist — only the channels listed in user_tenancy_channel_fallback fall back; every other channel is dropped from the send when the tenant has no override for it. Prevents identities like $androidpush or $slack from leaking across tenants.
user_tenancy_channel_fallbackstring[]

Channel keys allowed to fall back from the global profile when user_tenancy_channel_fallback_mode = allowlist. Ignored when the mode is all. Values are channel names without the $ prefix (email, sms, whatsapp, androidpush, iospush, webpush, slack, ms_teams). Inbox always falls back and cannot be listed.

Typical setup: ["email", "sms", "whatsapp"] — safe to fall back — while excluding androidpush, iospush, webpush, and slack.

user_tenancy_channel_fallback_applies_to_default_tenantboolean

Whether the fallback rule above also governs sends that carry no tenant_id (the default-tenant path).

  • false (default) — the default-tenant path always falls back for every channel, regardless of the allowlist.
  • true — the default-tenant path follows the same user_tenancy_channel_fallback_mode + user_tenancy_channel_fallback rule as other tenants.

Example response

{
  "user_inbox_preference_enabled": true,
  "sms_vendor_type": "basic",
  "user_tenancy_mode": "exclusive",
  "user_tenancy_channel_fallback_mode": "all",
  "user_tenancy_channel_fallback": [
    "email",
    "sms",
    "whatsapp"
  ]
}

Changes

    • breaking

      response property detail list-of-types was widened by adding types array and object to media type application/json of response 400

    • breaking

      response property detail list-of-types was widened by adding types array and object to media type application/json of response 401

    • breaking

      response property detail list-of-types was widened by adding types array and object to media type application/json of response 404

    • breaking

      removed the success response with the status

    • info

      added the success response with the status

    • info

      endpoint added