---
title: "Get Engagement Settings"
method: GET
path: "/slack/enrollments/settings"
tags: ["slack-channel-enrollments"]
---

# Get Engagement Settings

`GET /slack/enrollments/settings`

## Response `200`

Successful Response

- ChannelEngagementSettingsResponse — Organization-wide settings behind the Channel management page. Both the stored and the resolved default are returned. Clients render the stored value in the editor (so an org admin sees the choice they made) and apply the resolved one (so a stale ``READ_ONLY`` default can't leak out after the gate is withdrawn) -- rather than re-deriving the rule client side, where it would drift from ``engagement_policy``.
  - `read_only_mode_enabled` boolean, required — Whether READ_ONLY is offered as a channel mode for this organization. Granted by a Traversal platform admin.
  - `default_channel_mode` 'MANUAL' | 'AUTO' | 'CUSTOM' | 'READ_ONLY', required — How Traversal is wired into a chat channel. Stored as ``slack_channel_enrollments.mode``. A channel with no enrollment row is implicitly ``MANUAL``; storing an explicit ``MANUAL`` row lets the channel carry per-channel state (like ``custom_instruction``) without enabling auto-triggers. Removing a channel from Channel Management entirely is a separate act (archiving the enrollment), not a mode. ``READ_ONLY`` is the one mode that suppresses *outbound* behavior rather than selecting a flavor of it: Traversal keeps ingesting and storing every message, and answers every interactive surface with a fixed notice instead of doing work. It is only offered while its organization's gate is on -- see ``engagement_policy``. Existing ``READ_ONLY`` channels keep the mode when that gate is turned back off, so nothing starts talking again behind a customer's back.
  - `effective_default_channel_mode` 'MANUAL' | 'AUTO' | 'CUSTOM' | 'READ_ONLY', required — How Traversal is wired into a chat channel. Stored as ``slack_channel_enrollments.mode``. A channel with no enrollment row is implicitly ``MANUAL``; storing an explicit ``MANUAL`` row lets the channel carry per-channel state (like ``custom_instruction``) without enabling auto-triggers. Removing a channel from Channel Management entirely is a separate act (archiving the enrollment), not a mode. ``READ_ONLY`` is the one mode that suppresses *outbound* behavior rather than selecting a flavor of it: Traversal keeps ingesting and storing every message, and answers every interactive surface with a fixed notice instead of doing work. It is only offered while its organization's gate is on -- see ``engagement_policy``. Existing ``READ_ONLY`` channels keep the mode when that gate is turned back off, so nothing starts talking again behind a customer's back.
  - `selectable_modes` EngagementMode[], required — Modes assignable to a channel that has no enrollment row yet. A channel already set to READ_ONLY may additionally keep that mode.
  - `can_manage_read_only_availability` boolean, required — Whether the calling user may change read_only_mode_enabled (platform admins only).

---

[API](https://skmtc.net/traversal/apis/fastapi.md) · [All operations](https://skmtc.net/traversal/apis/fastapi/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/traversal/fastapi/revisions/2134ebffd1ef/schema)
