> ## Documentation Index
> Fetch the complete documentation index at: https://docs.coreflux.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Slack REST API

> Client-mode REST API connector for a small Slack Web API admin subset, triggered from MQTT

Technical Preview

## Overview

This client-mode connector calls the [Slack Web API](https://api.slack.com/web) so plant or ops events on MQTT can approve apps or manage conversations. The packaged events are eight **admin** methods only (`admin.apps.*`, `admin.conversations.*`). It does not include `chat.postMessage`.

> [!NOTE]
>
> The LoT file still sets `BASE_ADDRESS` to `https://api.example.com` because the source spec did not carry the Slack host. Change it to `https://slack.com/api` before you deploy. Calls need a Slack token; this template has not been verified against the live API.

## Basic Syntax

```lot wrap theme={"theme":"css-variables","languages":{"custom":["/languages/lot.json"]}}
# Coreflux REST_API template — Slack Web API
# Generated from OpenAPI; credentials are placeholders only.
# Docs: https://docs.coreflux.org/latest/lot-language/routes/rest-api-routes

DEFINE ROUTE SlackRestApi WITH TYPE REST_API
    ADD REST_API_CONFIG
        WITH BASE_ADDRESS "https://api.example.com"
        WITH ENABLE_CLIENT "true"
        WITH USE_SSL "true"
        WITH REQUEST_TIMEOUT '30'
        WITH DEFAULT_CONTENT_TYPE "application/json"
        # Optional: WITH USERNAME "YOUR_USER" / WITH PASSWORD GET SECRET "APP_PASSWORD"
    ADD EVENT AdminAppsApprove
        WITH SOURCE_TOPIC "integrations/slack/request/AdminAppsApprove"
        WITH DESTINATION_TOPIC "integrations/slack/response/AdminAppsApprove"
        WITH METHOD "POST"
        WITH ENDPOINT "/admin.apps.approve"
        WITH HEADERS
            ADD "Content-Type" "application/json"
            ADD "Authorization" "Bearer {value.json.api_token}"
        WITH BODY "{payload}"
    ADD EVENT AdminAppsApprovedList
        WITH SOURCE_TOPIC "integrations/slack/request/AdminAppsApprovedList"
        WITH DESTINATION_TOPIC "integrations/slack/response/AdminAppsApprovedList"
        WITH METHOD "GET"
        WITH ENDPOINT "/admin.apps.approved.list"
        WITH HEADERS
            ADD "Accept" "application/json"
            ADD "Authorization" "Bearer {value.json.api_token}"
    ADD EVENT AdminAppsRequestsList
        WITH SOURCE_TOPIC "integrations/slack/request/AdminAppsRequestsList"
        WITH DESTINATION_TOPIC "integrations/slack/response/AdminAppsRequestsList"
        WITH METHOD "GET"
        WITH ENDPOINT "/admin.apps.requests.list"
        WITH HEADERS
            ADD "Accept" "application/json"
            ADD "Authorization" "Bearer {value.json.api_token}"
    ADD EVENT AdminAppsRestrict
        WITH SOURCE_TOPIC "integrations/slack/request/AdminAppsRestrict"
        WITH DESTINATION_TOPIC "integrations/slack/response/AdminAppsRestrict"
        WITH METHOD "POST"
        WITH ENDPOINT "/admin.apps.restrict"
        WITH HEADERS
            ADD "Content-Type" "application/json"
            ADD "Authorization" "Bearer {value.json.api_token}"
        WITH BODY "{payload}"
    ADD EVENT AdminAppsRestrictedList
        WITH SOURCE_TOPIC "integrations/slack/request/AdminAppsRestrictedList"
        WITH DESTINATION_TOPIC "integrations/slack/response/AdminAppsRestrictedList"
        WITH METHOD "GET"
        WITH ENDPOINT "/admin.apps.restricted.list"
        WITH HEADERS
            ADD "Accept" "application/json"
            ADD "Authorization" "Bearer {value.json.api_token}"
    ADD EVENT AdminConversationsArchive
        WITH SOURCE_TOPIC "integrations/slack/request/AdminConversationsArchive"
        WITH DESTINATION_TOPIC "integrations/slack/response/AdminConversationsArchive"
        WITH METHOD "POST"
        WITH ENDPOINT "/admin.conversations.archive"
        WITH HEADERS
            ADD "Content-Type" "application/json"
            ADD "Authorization" "Bearer {value.json.api_token}"
        WITH BODY "{payload}"
    ADD EVENT AdminConversationsConverttoprivate
        WITH SOURCE_TOPIC "integrations/slack/request/AdminConversationsConverttoprivate"
        WITH DESTINATION_TOPIC "integrations/slack/response/AdminConversationsConverttoprivate"
        WITH METHOD "POST"
        WITH ENDPOINT "/admin.conversations.convertToPrivate"
        WITH HEADERS
            ADD "Content-Type" "application/json"
            ADD "Authorization" "Bearer {value.json.api_token}"
        WITH BODY "{payload}"
    ADD EVENT AdminConversationsCreate
        WITH SOURCE_TOPIC "integrations/slack/request/AdminConversationsCreate"
        WITH DESTINATION_TOPIC "integrations/slack/response/AdminConversationsCreate"
        WITH METHOD "POST"
        WITH ENDPOINT "/admin.conversations.create"
        WITH HEADERS
            ADD "Content-Type" "application/json"
            ADD "Authorization" "Bearer {value.json.api_token}"
        WITH BODY "{payload}"
```

## Events

| Event | Method | Endpoint | Request topic | Response topic |
| - | - | - | - | - |
| AdminAppsApprove | POST | `/admin.apps.approve` | `integrations/slack/request/AdminAppsApprove` | `integrations/slack/response/AdminAppsApprove` |
| AdminAppsApprovedList | GET | `/admin.apps.approved.list` | `integrations/slack/request/AdminAppsApprovedList` | `integrations/slack/response/AdminAppsApprovedList` |
| AdminAppsRequestsList | GET | `/admin.apps.requests.list` | `integrations/slack/request/AdminAppsRequestsList` | `integrations/slack/response/AdminAppsRequestsList` |
| AdminAppsRestrict | POST | `/admin.apps.restrict` | `integrations/slack/request/AdminAppsRestrict` | `integrations/slack/response/AdminAppsRestrict` |
| AdminAppsRestrictedList | GET | `/admin.apps.restricted.list` | `integrations/slack/request/AdminAppsRestrictedList` | `integrations/slack/response/AdminAppsRestrictedList` |
| AdminConversationsArchive | POST | `/admin.conversations.archive` | `integrations/slack/request/AdminConversationsArchive` | `integrations/slack/response/AdminConversationsArchive` |
| AdminConversationsConverttoprivate | POST | `/admin.conversations.convertToPrivate` | `integrations/slack/request/AdminConversationsConverttoprivate` | `integrations/slack/response/AdminConversationsConverttoprivate` |
| AdminConversationsCreate | POST | `/admin.conversations.create` | `integrations/slack/request/AdminConversationsCreate` | `integrations/slack/response/AdminConversationsCreate` |

## Auth

Slack expects a bot or user token as Bearer:

```lot wrap theme={"theme":"css-variables","languages":{"custom":["/languages/lot.json"]}}
ADD "Authorization" "Bearer {value.json.api_token}"
```

**BASE\_ADDRESS** `string` *required*

Set to `https://slack.com/api` (the file default is a placeholder).

**api\_token** `string` *required*

Slack token with the admin scopes those methods need. Pass it on the MQTT payload. Prefer a Hub secret or `GET SECRET` upstream. Never commit the token.

POST events send `{payload}` as JSON. Put method arguments in that body (Slack also accepts form bodies; this template uses `application/json`).

## Try it

1. Fix `BASE_ADDRESS` to `https://slack.com/api`, then add the connector on a lab broker.
2. Publish `{"api_token": "YOUR_SLACK_TOKEN"}` to `integrations/slack/request/AdminAppsApprovedList`.
3. Subscribe to `integrations/slack/response/AdminAppsApprovedList`.
4. POST methods: include both `api_token` and the method fields. The connector body is `{payload}`, so keep secrets out of logs.

> [!NOTE]
>
> No live Slack call has been recorded for this package (no token on the build host, and no test log). `admin.*` methods need a workspace token with admin scopes.

## Related

* [REST API Connectors](/latest/lot-language/routes/rest-api-routes)
* [REST API Apps](/latest/lot-language/routes/rest-api-apps)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.