Integrations
Finalize Slack auto-install
Combine the OAuth-obtained bot token (held server-side) with the operator-pasted app-level token to create the bot + integration and push it live, then delete the pending session. Refuses with SLACK_MISSING_SCOPES (and the missingScopes list) when the workspace authorization granted fewer bot scopes than the app requires, so a short install never becomes a bot.
Authorization
bearerAuth AuthorizationBearer <token>
In: header
Path Parameters
orgId*string
id*string
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/v1/orgs/string/integrations/slack/app/string/finalize" \ -H "Content-Type: application/json" \ -d '{}'{ "id": "string", "name": "string", "platform": "string", "agentId": "string", "botId": "string", "status": "string", "region": "feishu", "createdAt": "string", "channels": [ { "channelId": "string", "name": "string", "spaceId": "string", "space": "string", "icon": "string", "color": "string", "key": "string", "url": "string", "isPrivate": true, "kind": "channel", "trigger": "off", "decisionBinding": { "decisionId": "string", "when": { "type": "choice", "thresholds": { "property1": 0, "property2": 0 } }, "nextStepId": "string", "elseStepId": "string", "type": "gate", "steps": [ { "decisionId": "string", "when": { "type": "choice", "thresholds": { "property1": 0, "property2": 0 } }, "nextStepId": "string", "elseStepId": "string", "id": "string" } ] }, "decision": { "consumer": "gate", "id": "string", "name": "string", "enabled": true, "disabledReason": "needs_review", "readiness": { "status": "ready", "reason": "string" } }, "sessionMode": "createNew", "agentId": "string", "externalReason": "externallyShared" } ]}