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

Transport contract for Discord 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()
```

# `create_interaction_response`

```elixir
@callback create_interaction_response(
  interaction_id :: String.t() | integer(),
  interaction_token :: String.t(),
  payload :: map(),
  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_thread`

```elixir
@callback open_thread(
  channel_id :: String.t() | integer(),
  message_id :: String.t() | integer(),
  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_message`

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

# `start_typing`

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

---

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