# `Jido.Chat.Slack.Transport`
[🔗](https://github.com/agentjido/jido_chat_slack/blob/v1.0.0/lib/jido/chat/slack/transport.ex#L1)

Transport contract for Slack Web API operations.

# `api_result`

```elixir
@type api_result() :: {:ok, map() | boolean()} | {:error, term()}
```

# `add_reaction`

```elixir
@callback add_reaction(
  channel_id :: String.t() | integer(),
  message_id :: String.t() | integer(),
  emoji :: String.t(),
  opts :: keyword()
) :: api_result()
```

# `delete_message`

```elixir
@callback delete_message(
  channel_id :: String.t() | integer(),
  message_id :: String.t() | integer(),
  opts :: keyword()
) :: api_result()
```

# `edit_message`

```elixir
@callback edit_message(
  channel_id :: String.t() | integer(),
  message_id :: String.t() | integer(),
  text :: String.t(),
  opts :: keyword()
) :: api_result()
```

# `fetch_channel_messages`

```elixir
@callback fetch_channel_messages(channel_id :: String.t() | integer(), opts :: keyword()) ::
  api_result()
```

# `fetch_message`

```elixir
@callback fetch_message(
  channel_id :: String.t() | integer(),
  message_id :: String.t() | integer(),
  opts :: keyword()
) :: api_result()
```

# `fetch_messages`

```elixir
@callback fetch_messages(channel_id :: String.t() | integer(), opts :: keyword()) ::
  api_result()
```

# `fetch_metadata`

```elixir
@callback fetch_metadata(channel_id :: String.t() | integer(), opts :: keyword()) ::
  api_result()
```

# `fetch_thread`

```elixir
@callback fetch_thread(channel_id :: String.t() | integer(), opts :: keyword()) ::
  api_result()
```

# `list_threads`

```elixir
@callback list_threads(channel_id :: String.t() | integer(), opts :: keyword()) ::
  api_result()
```

# `open_dm`

```elixir
@callback open_dm(user_id :: String.t() | integer(), opts :: keyword()) ::
  {:ok, String.t() | integer()} | {:error, term()}
```

# `open_modal`

```elixir
@callback open_modal(trigger_id :: String.t(), payload :: map(), opts :: keyword()) ::
  api_result()
```

# `post_ephemeral`

```elixir
@callback post_ephemeral(
  channel_id :: String.t() | integer(),
  user_id :: String.t() | integer(),
  text :: String.t(),
  opts :: keyword()
) :: api_result()
```

# `remove_reaction`

```elixir
@callback remove_reaction(
  channel_id :: String.t() | integer(),
  message_id :: String.t() | integer(),
  emoji :: String.t(),
  opts :: keyword()
) :: api_result()
```

# `send_file`

```elixir
@callback send_file(
  channel_id :: String.t() | integer(),
  upload :: Jido.Chat.FileUpload.t(),
  opts :: keyword()
) :: api_result()
```

# `send_message`

```elixir
@callback send_message(
  channel_id :: String.t() | integer(),
  text :: String.t(),
  opts :: keyword()
) :: api_result()
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
