# NOTE: This file is auto generated by OpenAPI Generator 7.22.0 (https://openapi-generator.tech).
# Do not edit this file manually.
defmodule Spatio.Api.DirectMessages do
@moduledoc """
API calls for all endpoints tagged `DirectMessages`.
"""
alias Spatio.Connection
import Spatio.RequestBuilder
@doc """
React to a DM message.
### Parameters
- `connection` (Spatio.Connection): Connection to server
- `message_id` (String.t): Chat-message id.
- `dm_reaction_request` (DmReactionRequest):
- `opts` (keyword): Optional parameters
### Returns
- `{:ok, Spatio.Model.DmReactionResponse.t}` on success
- `{:error, Tesla.Env.t}` on failure
"""
@spec add_dm_reaction(Tesla.Env.client, String.t, Spatio.Model.DmReactionRequest.t, keyword()) :: {:ok, Spatio.Model.DmReactionResponse.t} | {:ok, Spatio.Model.ApiError.t} | {:error, Tesla.Env.t}
def add_dm_reaction(connection, message_id, dm_reaction_request, _opts \\ []) do
request =
%{}
|> method(:post)
|> url("/v1/direct-messages/messages/#{message_id}/reactions")
|> add_param(:body, :body, dm_reaction_request)
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, Spatio.Model.DmReactionResponse},
{400, Spatio.Model.ApiError},
{401, Spatio.Model.ApiError}
])
end
@doc """
Attach a file/image/etc. to an existing DM message.
### Parameters
- `connection` (Spatio.Connection): Connection to server
- `message_id` (String.t): Chat-message id.
- `dm_attach_request` (DmAttachRequest):
- `opts` (keyword): Optional parameters
### Returns
- `{:ok, Spatio.Model.DmMessageEnvelope.t}` on success
- `{:error, Tesla.Env.t}` on failure
"""
@spec attach_to_dm_message(Tesla.Env.client, String.t, Spatio.Model.DmAttachRequest.t, keyword()) :: {:ok, Spatio.Model.DmMessageEnvelope.t} | {:ok, Spatio.Model.ApiError.t} | {:error, Tesla.Env.t}
def attach_to_dm_message(connection, message_id, dm_attach_request, _opts \\ []) do
request =
%{}
|> method(:post)
|> url("/v1/direct-messages/messages/#{message_id}/attachments")
|> add_param(:body, :body, dm_attach_request)
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, Spatio.Model.DmMessageEnvelope},
{400, Spatio.Model.ApiError},
{401, Spatio.Model.ApiError}
])
end
@doc """
Dispatch a DM action by id.
### Parameters
- `connection` (Spatio.Connection): Connection to server
- `execute_chat_action_request` (ExecuteChatActionRequest):
- `opts` (keyword): Optional parameters
### Returns
- `{:ok, Spatio.Model.ExecuteChatActionResponse.t}` on success
- `{:error, Tesla.Env.t}` on failure
"""
@spec execute_dm_action(Tesla.Env.client, Spatio.Model.ExecuteChatActionRequest.t, keyword()) :: {:ok, Spatio.Model.ExecuteChatActionResponse.t} | {:ok, Spatio.Model.ApiError.t} | {:error, Tesla.Env.t}
def execute_dm_action(connection, execute_chat_action_request, _opts \\ []) do
request =
%{}
|> method(:post)
|> url("/v1/direct-messages/execute")
|> add_param(:body, :body, execute_chat_action_request)
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, Spatio.Model.ExecuteChatActionResponse},
{400, Spatio.Model.ApiError},
{401, Spatio.Model.ApiError}
])
end
@doc """
Forward a DM message to another DM or channel.
### Parameters
- `connection` (Spatio.Connection): Connection to server
- `message_id` (String.t): Chat-message id.
- `dm_forward_request` (DmForwardRequest):
- `opts` (keyword): Optional parameters
### Returns
- `{:ok, Spatio.Model.DmMessageEnvelope.t}` on success
- `{:error, Tesla.Env.t}` on failure
"""
@spec forward_dm_message(Tesla.Env.client, String.t, Spatio.Model.DmForwardRequest.t, keyword()) :: {:ok, Spatio.Model.DmMessageEnvelope.t} | {:ok, Spatio.Model.ApiError.t} | {:error, Tesla.Env.t}
def forward_dm_message(connection, message_id, dm_forward_request, _opts \\ []) do
request =
%{}
|> method(:post)
|> url("/v1/direct-messages/messages/#{message_id}/forward")
|> add_param(:body, :body, dm_forward_request)
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, Spatio.Model.DmMessageEnvelope},
{400, Spatio.Model.ApiError},
{401, Spatio.Model.ApiError}
])
end
@doc """
Fetch one chat user.
### Parameters
- `connection` (Spatio.Connection): Connection to server
- `id` (String.t): Chat-user id (provider-scoped).
- `opts` (keyword): Optional parameters
- `:accountId` (String.t):
### Returns
- `{:ok, Spatio.Model.GetChatUserResponse.t}` on success
- `{:error, Tesla.Env.t}` on failure
"""
@spec get_dm_user(Tesla.Env.client, String.t, keyword()) :: {:ok, Spatio.Model.GetChatUserResponse.t} | {:ok, Spatio.Model.ApiError.t} | {:error, Tesla.Env.t}
def get_dm_user(connection, id, opts \\ []) do
optional_params = %{
:accountId => :query
}
request =
%{}
|> method(:get)
|> url("/v1/direct-messages/users/#{id}")
|> add_optional_params(optional_params, opts)
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, Spatio.Model.GetChatUserResponse},
{401, Spatio.Model.ApiError},
{404, Spatio.Model.ApiError}
])
end
@doc """
Enriched DM conversation list with unread + pin + draft state.
Native fast-path. Returns conversations augmented with the DM-feature state (unread counts, pinned/muted flags, saved drafts) the renderer's DM UI consumes. The shape is provider-specific and treated as opaque.
### Parameters
- `connection` (Spatio.Connection): Connection to server
- `opts` (keyword): Optional parameters
- `:accountId` (String.t):
- `:"X-Workspace-ID"` (String.t): Workspace scope for unscoped tokens. Workspace-scoped PATs and OAuth tokens carry this implicitly; for session/JWT auth without a scoped PAT, pass it explicitly.
### Returns
- `{:ok, %{}}` on success
- `{:error, Tesla.Env.t}` on failure
"""
@spec list_direct_conversations_enriched(Tesla.Env.client, keyword()) :: {:ok, %{optional(String.t) => any()}} | {:ok, Spatio.Model.ApiError.t} | {:error, Tesla.Env.t}
def list_direct_conversations_enriched(connection, opts \\ []) do
optional_params = %{
:accountId => :query,
:"X-Workspace-ID" => :headers
}
request =
%{}
|> method(:get)
|> url("/v1/direct-messages/conversations")
|> add_optional_params(optional_params, opts)
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, %{}},
{401, Spatio.Model.ApiError}
])
end
@doc """
List 1:1 and group DM conversations.
Returns DM-type conversations only (`type: im | mpim`). Channel-type conversations are surfaced via `/v1/channels`.
### Parameters
- `connection` (Spatio.Connection): Connection to server
- `opts` (keyword): Optional parameters
- `:accountIds` ([String.t]): Repeatable. Restrict to these connected-account row ids. Mutually orthogonal to `providers` — when both are set the intersection is used.
- `:providers` ([String.t]): Repeatable. Restrict to these provider ids (`gmail`, `outlook`).
- `:"X-Workspace-ID"` (String.t): Workspace scope for unscoped tokens. Workspace-scoped PATs and OAuth tokens carry this implicitly; for session/JWT auth without a scoped PAT, pass it explicitly.
- `:limit` (integer()):
- `:cursor` (String.t):
- `:includeArchived` (boolean()):
### Returns
- `{:ok, Spatio.Model.ListChannelsResponse.t}` on success
- `{:error, Tesla.Env.t}` on failure
"""
@spec list_direct_message_conversations(Tesla.Env.client, keyword()) :: {:ok, Spatio.Model.ListChannelsResponse.t} | {:ok, Spatio.Model.ApiError.t} | {:error, Tesla.Env.t}
def list_direct_message_conversations(connection, opts \\ []) do
optional_params = %{
:accountIds => :query,
:providers => :query,
:"X-Workspace-ID" => :headers,
:limit => :query,
:cursor => :query,
:includeArchived => :query
}
request =
%{}
|> method(:get)
|> url("/v1/direct-messages")
|> add_optional_params(optional_params, opts)
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, Spatio.Model.ListChannelsResponse},
{401, Spatio.Model.ApiError}
])
end
@doc """
List messages in a DM conversation.
### Parameters
- `connection` (Spatio.Connection): Connection to server
- `channel` (String.t): DM conversation id.
- `opts` (keyword): Optional parameters
- `:accountId` (String.t):
- `:accountIds` ([String.t]): Repeatable. Restrict to these connected-account row ids. Mutually orthogonal to `providers` — when both are set the intersection is used.
- `:providers` ([String.t]): Repeatable. Restrict to these provider ids (`gmail`, `outlook`).
- `:"X-Workspace-ID"` (String.t): Workspace scope for unscoped tokens. Workspace-scoped PATs and OAuth tokens carry this implicitly; for session/JWT auth without a scoped PAT, pass it explicitly.
- `:limit` (integer()):
- `:cursor` (String.t):
- `:oldestFirst` (boolean()):
### Returns
- `{:ok, Spatio.Model.ListMessagesResponse.t}` on success
- `{:error, Tesla.Env.t}` on failure
"""
@spec list_direct_messages(Tesla.Env.client, String.t, keyword()) :: {:ok, Spatio.Model.ListMessagesResponse.t} | {:ok, Spatio.Model.ApiError.t} | {:error, Tesla.Env.t}
def list_direct_messages(connection, channel, opts \\ []) do
optional_params = %{
:accountId => :query,
:accountIds => :query,
:providers => :query,
:"X-Workspace-ID" => :headers,
:limit => :query,
:cursor => :query,
:oldestFirst => :query
}
request =
%{}
|> method(:get)
|> url("/v1/direct-messages/messages")
|> add_param(:query, :channel, channel)
|> add_optional_params(optional_params, opts)
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, Spatio.Model.ListMessagesResponse},
{400, Spatio.Model.ApiError},
{401, Spatio.Model.ApiError}
])
end
@doc """
Discover the action catalog for DirectMessages.
### Parameters
- `connection` (Spatio.Connection): Connection to server
- `opts` (keyword): Optional parameters
### Returns
- `{:ok, Spatio.Model.ChatActionsList.t}` on success
- `{:error, Tesla.Env.t}` on failure
"""
@spec list_dm_actions(Tesla.Env.client, keyword()) :: {:ok, Spatio.Model.ChatActionsList.t} | {:ok, Spatio.Model.ApiError.t} | {:error, Tesla.Env.t}
def list_dm_actions(connection, _opts \\ []) do
request =
%{}
|> method(:get)
|> url("/v1/direct-messages/actions")
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, Spatio.Model.ChatActionsList},
{401, Spatio.Model.ApiError}
])
end
@doc """
List pinned messages in a DM conversation.
### Parameters
- `connection` (Spatio.Connection): Connection to server
- `dm_id` (String.t): Direct-message conversation id.
- `opts` (keyword): Optional parameters
- `:accountId` (String.t):
### Returns
- `{:ok, Spatio.Model.DmPinnedList.t}` on success
- `{:error, Tesla.Env.t}` on failure
"""
@spec list_dm_pinned_messages(Tesla.Env.client, String.t, keyword()) :: {:ok, Spatio.Model.DmPinnedList.t} | {:ok, Spatio.Model.ApiError.t} | {:error, Tesla.Env.t}
def list_dm_pinned_messages(connection, dm_id, opts \\ []) do
optional_params = %{
:accountId => :query
}
request =
%{}
|> method(:get)
|> url("/v1/direct-messages/#{dm_id}/pinned")
|> add_optional_params(optional_params, opts)
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, Spatio.Model.DmPinnedList},
{401, Spatio.Model.ApiError}
])
end
@doc """
List replies in a DM message thread.
### Parameters
- `connection` (Spatio.Connection): Connection to server
- `dm_id` (String.t): Direct-message conversation id.
- `message_id` (String.t): Chat-message id.
- `opts` (keyword): Optional parameters
- `:accountId` (String.t):
### Returns
- `{:ok, %{}}` on success
- `{:error, Tesla.Env.t}` on failure
"""
@spec list_dm_thread_replies(Tesla.Env.client, String.t, String.t, keyword()) :: {:ok, %{optional(String.t) => any()}} | {:ok, Spatio.Model.ApiError.t} | {:error, Tesla.Env.t}
def list_dm_thread_replies(connection, dm_id, message_id, opts \\ []) do
optional_params = %{
:accountId => :query
}
request =
%{}
|> method(:get)
|> url("/v1/direct-messages/#{dm_id}/messages/#{message_id}/replies")
|> add_optional_params(optional_params, opts)
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, %{}},
{401, Spatio.Model.ApiError}
])
end
@doc """
List chat users (DM contacts) across connected accounts.
### Parameters
- `connection` (Spatio.Connection): Connection to server
- `opts` (keyword): Optional parameters
- `:accountIds` ([String.t]): Repeatable. Restrict to these connected-account row ids. Mutually orthogonal to `providers` — when both are set the intersection is used.
- `:providers` ([String.t]): Repeatable. Restrict to these provider ids (`gmail`, `outlook`).
- `:"X-Workspace-ID"` (String.t): Workspace scope for unscoped tokens. Workspace-scoped PATs and OAuth tokens carry this implicitly; for session/JWT auth without a scoped PAT, pass it explicitly.
- `:limit` (integer()):
- `:cursor` (String.t):
### Returns
- `{:ok, Spatio.Model.ListChatUsersResponse.t}` on success
- `{:error, Tesla.Env.t}` on failure
"""
@spec list_dm_users(Tesla.Env.client, keyword()) :: {:ok, Spatio.Model.ApiError.t} | {:ok, Spatio.Model.ListChatUsersResponse.t} | {:error, Tesla.Env.t}
def list_dm_users(connection, opts \\ []) do
optional_params = %{
:accountIds => :query,
:providers => :query,
:"X-Workspace-ID" => :headers,
:limit => :query,
:cursor => :query
}
request =
%{}
|> method(:get)
|> url("/v1/direct-messages/users")
|> add_optional_params(optional_params, opts)
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, Spatio.Model.ListChatUsersResponse},
{401, Spatio.Model.ApiError}
])
end
@doc """
Mark a DM message read.
### Parameters
- `connection` (Spatio.Connection): Connection to server
- `dm_id` (String.t): Direct-message conversation id.
- `dm_mark_read_request` (DmMarkReadRequest):
- `opts` (keyword): Optional parameters
### Returns
- `{:ok, Spatio.Model.SuccessFlag.t}` on success
- `{:error, Tesla.Env.t}` on failure
"""
@spec mark_dm_read(Tesla.Env.client, String.t, Spatio.Model.DmMarkReadRequest.t, keyword()) :: {:ok, Spatio.Model.ApiError.t} | {:ok, Spatio.Model.SuccessFlag.t} | {:error, Tesla.Env.t}
def mark_dm_read(connection, dm_id, dm_mark_read_request, _opts \\ []) do
request =
%{}
|> method(:post)
|> url("/v1/direct-messages/#{dm_id}/read")
|> add_param(:body, :body, dm_mark_read_request)
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, Spatio.Model.SuccessFlag},
{400, Spatio.Model.ApiError},
{401, Spatio.Model.ApiError}
])
end
@doc """
Mute a DM conversation (until a time, or forever).
### Parameters
- `connection` (Spatio.Connection): Connection to server
- `dm_id` (String.t): Direct-message conversation id.
- `dm_mute_request` (DmMuteRequest):
- `opts` (keyword): Optional parameters
### Returns
- `{:ok, Spatio.Model.DmMuteResponse.t}` on success
- `{:error, Tesla.Env.t}` on failure
"""
@spec mute_dm(Tesla.Env.client, String.t, Spatio.Model.DmMuteRequest.t, keyword()) :: {:ok, Spatio.Model.DmMuteResponse.t} | {:ok, Spatio.Model.ApiError.t} | {:error, Tesla.Env.t}
def mute_dm(connection, dm_id, dm_mute_request, _opts \\ []) do
request =
%{}
|> method(:post)
|> url("/v1/direct-messages/#{dm_id}/mute")
|> add_param(:body, :body, dm_mute_request)
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, Spatio.Model.DmMuteResponse},
{400, Spatio.Model.ApiError},
{401, Spatio.Model.ApiError}
])
end
@doc """
Pin a DM conversation to the top of the sidebar.
### Parameters
- `connection` (Spatio.Connection): Connection to server
- `dm_id` (String.t): Direct-message conversation id.
- `opts` (keyword): Optional parameters
- `:accountId` (String.t):
### Returns
- `{:ok, Spatio.Model.SuccessFlag.t}` on success
- `{:error, Tesla.Env.t}` on failure
"""
@spec pin_dm_conversation(Tesla.Env.client, String.t, keyword()) :: {:ok, Spatio.Model.ApiError.t} | {:ok, Spatio.Model.SuccessFlag.t} | {:error, Tesla.Env.t}
def pin_dm_conversation(connection, dm_id, opts \\ []) do
optional_params = %{
:accountId => :query
}
request =
%{}
|> method(:post)
|> url("/v1/direct-messages/#{dm_id}/pin")
|> add_optional_params(optional_params, opts)
|> ensure_body()
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, Spatio.Model.SuccessFlag},
{401, Spatio.Model.ApiError}
])
end
@doc """
Pin a DM message.
### Parameters
- `connection` (Spatio.Connection): Connection to server
- `message_id` (String.t): Chat-message id.
- `opts` (keyword): Optional parameters
- `:body` (ChannelMembershipRequest):
### Returns
- `{:ok, Spatio.Model.SuccessFlag.t}` on success
- `{:error, Tesla.Env.t}` on failure
"""
@spec pin_dm_message(Tesla.Env.client, String.t, keyword()) :: {:ok, Spatio.Model.ApiError.t} | {:ok, Spatio.Model.SuccessFlag.t} | {:error, Tesla.Env.t}
def pin_dm_message(connection, message_id, opts \\ []) do
optional_params = %{
:body => :body
}
request =
%{}
|> method(:post)
|> url("/v1/direct-messages/messages/#{message_id}/pin")
|> add_optional_params(optional_params, opts)
|> ensure_body()
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, Spatio.Model.SuccessFlag},
{401, Spatio.Model.ApiError}
])
end
@doc """
Reply in a DM message thread.
### Parameters
- `connection` (Spatio.Connection): Connection to server
- `dm_id` (String.t): Direct-message conversation id.
- `message_id` (String.t): Chat-message id.
- `dm_thread_reply_request` (DmThreadReplyRequest):
- `opts` (keyword): Optional parameters
- `:accountId` (String.t):
### Returns
- `{:ok, Spatio.Model.DmMessageEnvelope.t}` on success
- `{:error, Tesla.Env.t}` on failure
"""
@spec post_dm_thread_reply(Tesla.Env.client, String.t, String.t, Spatio.Model.DmThreadReplyRequest.t, keyword()) :: {:ok, Spatio.Model.DmMessageEnvelope.t} | {:ok, Spatio.Model.ApiError.t} | {:error, Tesla.Env.t}
def post_dm_thread_reply(connection, dm_id, message_id, dm_thread_reply_request, opts \\ []) do
optional_params = %{
:accountId => :query
}
request =
%{}
|> method(:post)
|> url("/v1/direct-messages/#{dm_id}/messages/#{message_id}/replies")
|> add_param(:body, :body, dm_thread_reply_request)
|> add_optional_params(optional_params, opts)
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, Spatio.Model.DmMessageEnvelope},
{400, Spatio.Model.ApiError},
{401, Spatio.Model.ApiError}
])
end
@doc """
Remove a DM message reaction.
### Parameters
- `connection` (Spatio.Connection): Connection to server
- `message_id` (String.t): Chat-message id.
- `emoji` (String.t): Reaction emoji (e.g. `+1`, `eyes`, `pepper`).
- `opts` (keyword): Optional parameters
- `:accountId` (String.t):
### Returns
- `{:ok, Spatio.Model.DmReactionResponse.t}` on success
- `{:error, Tesla.Env.t}` on failure
"""
@spec remove_dm_reaction(Tesla.Env.client, String.t, String.t, keyword()) :: {:ok, Spatio.Model.DmReactionResponse.t} | {:ok, Spatio.Model.ApiError.t} | {:error, Tesla.Env.t}
def remove_dm_reaction(connection, message_id, emoji, opts \\ []) do
optional_params = %{
:accountId => :query
}
request =
%{}
|> method(:delete)
|> url("/v1/direct-messages/messages/#{message_id}/reactions/#{emoji}")
|> add_optional_params(optional_params, opts)
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, Spatio.Model.DmReactionResponse},
{401, Spatio.Model.ApiError}
])
end
@doc """
Search across DM messages.
### Parameters
- `connection` (Spatio.Connection): Connection to server
- `q` (String.t): Free-form query string.
- `opts` (keyword): Optional parameters
- `:limit` (integer()):
- `:dmId` (String.t): Restrict to one conversation.
- `:user` (String.t): Restrict to messages from this user id.
- `:accountId` (String.t):
### Returns
- `{:ok, Spatio.Model.DmSearchResults.t}` on success
- `{:error, Tesla.Env.t}` on failure
"""
@spec search_direct_messages(Tesla.Env.client, String.t, keyword()) :: {:ok, Spatio.Model.DmSearchResults.t} | {:ok, Spatio.Model.ApiError.t} | {:error, Tesla.Env.t}
def search_direct_messages(connection, q, opts \\ []) do
optional_params = %{
:limit => :query,
:dmId => :query,
:user => :query,
:accountId => :query
}
request =
%{}
|> method(:get)
|> url("/v1/direct-messages/search")
|> add_param(:query, :q, q)
|> add_optional_params(optional_params, opts)
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, Spatio.Model.DmSearchResults},
{400, Spatio.Model.ApiError},
{401, Spatio.Model.ApiError}
])
end
@doc """
Send a DM.
### Parameters
- `connection` (Spatio.Connection): Connection to server
- `send_chat_message_request` (SendChatMessageRequest):
- `opts` (keyword): Optional parameters
### Returns
- `{:ok, Spatio.Model.SendChatMessageResponse.t}` on success
- `{:error, Tesla.Env.t}` on failure
"""
@spec send_direct_message(Tesla.Env.client, Spatio.Model.SendChatMessageRequest.t, keyword()) :: {:ok, Spatio.Model.SendChatMessageResponse.t} | {:ok, Spatio.Model.ApiError.t} | {:error, Tesla.Env.t}
def send_direct_message(connection, send_chat_message_request, _opts \\ []) do
request =
%{}
|> method(:post)
|> url("/v1/direct-messages/messages")
|> add_param(:body, :body, send_chat_message_request)
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, Spatio.Model.SendChatMessageResponse},
{400, Spatio.Model.ApiError},
{401, Spatio.Model.ApiError}
])
end
@doc """
Save the unsent draft text for a DM.
### Parameters
- `connection` (Spatio.Connection): Connection to server
- `dm_id` (String.t): Direct-message conversation id.
- `dm_set_draft_request` (DmSetDraftRequest):
- `opts` (keyword): Optional parameters
### Returns
- `{:ok, Spatio.Model.SuccessFlag.t}` on success
- `{:error, Tesla.Env.t}` on failure
"""
@spec set_dm_draft(Tesla.Env.client, String.t, Spatio.Model.DmSetDraftRequest.t, keyword()) :: {:ok, Spatio.Model.ApiError.t} | {:ok, Spatio.Model.SuccessFlag.t} | {:error, Tesla.Env.t}
def set_dm_draft(connection, dm_id, dm_set_draft_request, _opts \\ []) do
request =
%{}
|> method(:put)
|> url("/v1/direct-messages/#{dm_id}/draft")
|> add_param(:body, :body, dm_set_draft_request)
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, Spatio.Model.SuccessFlag},
{400, Spatio.Model.ApiError},
{401, Spatio.Model.ApiError}
])
end
@doc """
Unpin a DM conversation.
### Parameters
- `connection` (Spatio.Connection): Connection to server
- `dm_id` (String.t): Direct-message conversation id.
- `opts` (keyword): Optional parameters
- `:accountId` (String.t):
### Returns
- `{:ok, Spatio.Model.SuccessFlag.t}` on success
- `{:error, Tesla.Env.t}` on failure
"""
@spec unpin_dm_conversation(Tesla.Env.client, String.t, keyword()) :: {:ok, Spatio.Model.ApiError.t} | {:ok, Spatio.Model.SuccessFlag.t} | {:error, Tesla.Env.t}
def unpin_dm_conversation(connection, dm_id, opts \\ []) do
optional_params = %{
:accountId => :query
}
request =
%{}
|> method(:delete)
|> url("/v1/direct-messages/#{dm_id}/pin")
|> add_optional_params(optional_params, opts)
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, Spatio.Model.SuccessFlag},
{401, Spatio.Model.ApiError}
])
end
@doc """
Unpin a DM message.
### Parameters
- `connection` (Spatio.Connection): Connection to server
- `message_id` (String.t): Chat-message id.
- `opts` (keyword): Optional parameters
- `:accountId` (String.t):
### Returns
- `{:ok, Spatio.Model.SuccessFlag.t}` on success
- `{:error, Tesla.Env.t}` on failure
"""
@spec unpin_dm_message(Tesla.Env.client, String.t, keyword()) :: {:ok, Spatio.Model.ApiError.t} | {:ok, Spatio.Model.SuccessFlag.t} | {:error, Tesla.Env.t}
def unpin_dm_message(connection, message_id, opts \\ []) do
optional_params = %{
:accountId => :query
}
request =
%{}
|> method(:delete)
|> url("/v1/direct-messages/messages/#{message_id}/pin")
|> add_optional_params(optional_params, opts)
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, Spatio.Model.SuccessFlag},
{401, Spatio.Model.ApiError}
])
end
@doc """
### Parameters
- `connection` (Spatio.Connection): Connection to server
- `org` (String.t):
- `workspace` (String.t):
- `request_body` (%{optional(String.t) => any()}):
- `opts` (keyword): Optional parameters
### Returns
- `{:ok, %{}}` on success
- `{:error, Tesla.Env.t}` on failure
"""
@spec workspace_execute_dm_action(Tesla.Env.client, String.t, String.t, %{optional(String.t) => any()}, keyword()) :: {:ok, %{optional(String.t) => any()}} | {:ok, Spatio.Model.ApiError.t} | {:error, Tesla.Env.t}
def workspace_execute_dm_action(connection, org, workspace, request_body, _opts \\ []) do
request =
%{}
|> method(:post)
|> url("/v1/organizations/#{org}/workspaces/#{workspace}/direct-messages/execute")
|> add_param(:body, :body, request_body)
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, %{}},
{401, Spatio.Model.ApiError},
{403, Spatio.Model.ApiError}
])
end
@doc """
### Parameters
- `connection` (Spatio.Connection): Connection to server
- `org` (String.t):
- `workspace` (String.t):
- `id` (String.t):
- `opts` (keyword): Optional parameters
### Returns
- `{:ok, %{}}` on success
- `{:error, Tesla.Env.t}` on failure
"""
@spec workspace_get_dm_user(Tesla.Env.client, String.t, String.t, String.t, keyword()) :: {:ok, %{optional(String.t) => any()}} | {:ok, Spatio.Model.ApiError.t} | {:error, Tesla.Env.t}
def workspace_get_dm_user(connection, org, workspace, id, _opts \\ []) do
request =
%{}
|> method(:get)
|> url("/v1/organizations/#{org}/workspaces/#{workspace}/direct-messages/users/#{id}")
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, %{}},
{401, Spatio.Model.ApiError},
{403, Spatio.Model.ApiError}
])
end
@doc """
### Parameters
- `connection` (Spatio.Connection): Connection to server
- `org` (String.t):
- `workspace` (String.t):
- `opts` (keyword): Optional parameters
### Returns
- `{:ok, %{}}` on success
- `{:error, Tesla.Env.t}` on failure
"""
@spec workspace_list_direct_messages(Tesla.Env.client, String.t, String.t, keyword()) :: {:ok, %{optional(String.t) => any()}} | {:ok, Spatio.Model.ApiError.t} | {:error, Tesla.Env.t}
def workspace_list_direct_messages(connection, org, workspace, _opts \\ []) do
request =
%{}
|> method(:get)
|> url("/v1/organizations/#{org}/workspaces/#{workspace}/direct-messages")
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, %{}},
{401, Spatio.Model.ApiError},
{403, Spatio.Model.ApiError}
])
end
@doc """
### Parameters
- `connection` (Spatio.Connection): Connection to server
- `org` (String.t):
- `workspace` (String.t):
- `opts` (keyword): Optional parameters
### Returns
- `{:ok, %{}}` on success
- `{:error, Tesla.Env.t}` on failure
"""
@spec workspace_list_dm_actions(Tesla.Env.client, String.t, String.t, keyword()) :: {:ok, %{optional(String.t) => any()}} | {:ok, Spatio.Model.ApiError.t} | {:error, Tesla.Env.t}
def workspace_list_dm_actions(connection, org, workspace, _opts \\ []) do
request =
%{}
|> method(:get)
|> url("/v1/organizations/#{org}/workspaces/#{workspace}/direct-messages/actions")
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, %{}},
{401, Spatio.Model.ApiError},
{403, Spatio.Model.ApiError}
])
end
@doc """
### Parameters
- `connection` (Spatio.Connection): Connection to server
- `org` (String.t):
- `workspace` (String.t):
- `opts` (keyword): Optional parameters
### Returns
- `{:ok, %{}}` on success
- `{:error, Tesla.Env.t}` on failure
"""
@spec workspace_list_dm_conversations(Tesla.Env.client, String.t, String.t, keyword()) :: {:ok, %{optional(String.t) => any()}} | {:ok, Spatio.Model.ApiError.t} | {:error, Tesla.Env.t}
def workspace_list_dm_conversations(connection, org, workspace, _opts \\ []) do
request =
%{}
|> method(:get)
|> url("/v1/organizations/#{org}/workspaces/#{workspace}/direct-messages/conversations")
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, %{}},
{401, Spatio.Model.ApiError},
{403, Spatio.Model.ApiError}
])
end
@doc """
### Parameters
- `connection` (Spatio.Connection): Connection to server
- `org` (String.t):
- `workspace` (String.t):
- `opts` (keyword): Optional parameters
### Returns
- `{:ok, %{}}` on success
- `{:error, Tesla.Env.t}` on failure
"""
@spec workspace_list_dm_messages(Tesla.Env.client, String.t, String.t, keyword()) :: {:ok, %{optional(String.t) => any()}} | {:ok, Spatio.Model.ApiError.t} | {:error, Tesla.Env.t}
def workspace_list_dm_messages(connection, org, workspace, _opts \\ []) do
request =
%{}
|> method(:get)
|> url("/v1/organizations/#{org}/workspaces/#{workspace}/direct-messages/messages")
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, %{}},
{401, Spatio.Model.ApiError},
{403, Spatio.Model.ApiError}
])
end
@doc """
### Parameters
- `connection` (Spatio.Connection): Connection to server
- `org` (String.t):
- `workspace` (String.t):
- `opts` (keyword): Optional parameters
### Returns
- `{:ok, %{}}` on success
- `{:error, Tesla.Env.t}` on failure
"""
@spec workspace_list_dm_users(Tesla.Env.client, String.t, String.t, keyword()) :: {:ok, %{optional(String.t) => any()}} | {:ok, Spatio.Model.ApiError.t} | {:error, Tesla.Env.t}
def workspace_list_dm_users(connection, org, workspace, _opts \\ []) do
request =
%{}
|> method(:get)
|> url("/v1/organizations/#{org}/workspaces/#{workspace}/direct-messages/users")
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, %{}},
{401, Spatio.Model.ApiError},
{403, Spatio.Model.ApiError}
])
end
@doc """
### Parameters
- `connection` (Spatio.Connection): Connection to server
- `org` (String.t):
- `workspace` (String.t):
- `request_body` (%{optional(String.t) => any()}):
- `opts` (keyword): Optional parameters
### Returns
- `{:ok, %{}}` on success
- `{:error, Tesla.Env.t}` on failure
"""
@spec workspace_send_direct_message(Tesla.Env.client, String.t, String.t, %{optional(String.t) => any()}, keyword()) :: {:ok, %{optional(String.t) => any()}} | {:ok, Spatio.Model.ApiError.t} | {:error, Tesla.Env.t}
def workspace_send_direct_message(connection, org, workspace, request_body, _opts \\ []) do
request =
%{}
|> method(:post)
|> url("/v1/organizations/#{org}/workspaces/#{workspace}/direct-messages/messages")
|> add_param(:body, :body, request_body)
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, %{}},
{401, Spatio.Model.ApiError},
{403, Spatio.Model.ApiError}
])
end
end