List Slack channels for the channel picker
Serves the channel picker of the Slack connect flow. Slack's OAuth installs the bot into a workspace, not a channel, so after the redirect the caller lists the workspace's channels here and finalizes one with POST /v1/connect/slack. Served by a dedicated route that shadows GET /v1/connect/{platform} for slack.
Send exactly one of pendingDataToken (first connect: the nonce from the OAuth redirect, bound to the same profileId) or accountId (add another channel to a workspace already connected: the existing Slack account's workspace token is reused, no re-OAuth). With neither, the endpoint behaves like GET /v1/connect/{platform} and returns authUrl and state to start the OAuth flow.
Channels are read live from Slack (conversations.list, public and private, archived excluded, up to 2,000). isMember says whether the Zernio bot is already in the channel: a public channel is joined automatically on finalize, a private one must be invited (/invite @Zernio) first.
Query parameters
Zernio profile the channel account will belong to. Must match the profile the OAuth flow was started on when pendingDataToken is used.
Nonce from the OAuth redirect (first connect).
Existing active Slack account (yours or a team member's) whose workspace token is reused.
Start-OAuth mode only: where to send the user after the connect completes. redirectUrl is accepted as an alias.
Response
Channel list (picker mode), or the OAuth URL when neither pendingDataToken nor accountId is sent