# 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.Folders do
@moduledoc """
API calls for all endpoints tagged `Folders`.
"""
alias Spatio.Connection
import Spatio.RequestBuilder
@doc """
Create an email folder.
### Parameters
- `connection` (Spatio.Connection): Connection to server
- `create_email_folder_request` (CreateEmailFolderRequest):
- `opts` (keyword): Optional parameters
### Returns
- `{:ok, Spatio.Model.EmailFolder.t}` on success
- `{:error, Tesla.Env.t}` on failure
"""
@spec create_email_folder(Tesla.Env.client, Spatio.Model.CreateEmailFolderRequest.t, keyword()) :: {:ok, Spatio.Model.EmailFolder.t} | {:ok, Spatio.Model.ApiError.t} | {:error, Tesla.Env.t}
def create_email_folder(connection, create_email_folder_request, _opts \\ []) do
request =
%{}
|> method(:post)
|> url("/v1/folders")
|> add_param(:body, :body, create_email_folder_request)
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{201, Spatio.Model.EmailFolder},
{401, Spatio.Model.ApiError}
])
end
@doc """
Delete an email folder.
### Parameters
- `connection` (Spatio.Connection): Connection to server
- `id` (String.t):
- `opts` (keyword): Optional parameters
### Returns
- `{:ok, nil}` on success
- `{:error, Tesla.Env.t}` on failure
"""
@spec delete_email_folder(Tesla.Env.client, String.t, keyword()) :: {:ok, nil} | {:ok, Spatio.Model.ApiError.t} | {:error, Tesla.Env.t}
def delete_email_folder(connection, id, _opts \\ []) do
request =
%{}
|> method(:delete)
|> url("/v1/folders/#{id}")
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{204, false},
{401, Spatio.Model.ApiError}
])
end
@doc """
List the caller's email folders.
### Parameters
- `connection` (Spatio.Connection): Connection to server
- `opts` (keyword): Optional parameters
### Returns
- `{:ok, Spatio.Model.EmailFolderListResponse.t}` on success
- `{:error, Tesla.Env.t}` on failure
"""
@spec list_email_folders(Tesla.Env.client, keyword()) :: {:ok, Spatio.Model.EmailFolderListResponse.t} | {:ok, Spatio.Model.ApiError.t} | {:error, Tesla.Env.t}
def list_email_folders(connection, _opts \\ []) do
request =
%{}
|> method(:get)
|> url("/v1/folders")
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, Spatio.Model.EmailFolderListResponse},
{401, Spatio.Model.ApiError}
])
end
@doc """
List emails inside a folder.
### Parameters
- `connection` (Spatio.Connection): Connection to server
- `id` (String.t):
- `opts` (keyword): Optional parameters
### Returns
- `{:ok, %{}}` on success
- `{:error, Tesla.Env.t}` on failure
"""
@spec list_folder_emails(Tesla.Env.client, String.t, keyword()) :: {:ok, %{optional(String.t) => any()}} | {:ok, Spatio.Model.ApiError.t} | {:error, Tesla.Env.t}
def list_folder_emails(connection, id, _opts \\ []) do
request =
%{}
|> method(:get)
|> url("/v1/folders/#{id}/emails")
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, %{}},
{401, Spatio.Model.ApiError}
])
end
@doc """
Move emails into a folder.
### Parameters
- `connection` (Spatio.Connection): Connection to server
- `id` (String.t):
- `move_emails_request` (MoveEmailsRequest):
- `opts` (keyword): Optional parameters
### Returns
- `{:ok, %{}}` on success
- `{:error, Tesla.Env.t}` on failure
"""
@spec move_emails_to_folder(Tesla.Env.client, String.t, Spatio.Model.MoveEmailsRequest.t, keyword()) :: {:ok, %{optional(String.t) => any()}} | {:ok, Spatio.Model.ApiError.t} | {:error, Tesla.Env.t}
def move_emails_to_folder(connection, id, move_emails_request, _opts \\ []) do
request =
%{}
|> method(:post)
|> url("/v1/folders/#{id}/emails")
|> add_param(:body, :body, move_emails_request)
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, %{}},
{401, Spatio.Model.ApiError}
])
end
@doc """
Update an email folder.
### Parameters
- `connection` (Spatio.Connection): Connection to server
- `id` (String.t):
- `update_email_folder_request` (UpdateEmailFolderRequest):
- `opts` (keyword): Optional parameters
### Returns
- `{:ok, Spatio.Model.EmailFolder.t}` on success
- `{:error, Tesla.Env.t}` on failure
"""
@spec update_email_folder(Tesla.Env.client, String.t, Spatio.Model.UpdateEmailFolderRequest.t, keyword()) :: {:ok, Spatio.Model.EmailFolder.t} | {:ok, Spatio.Model.ApiError.t} | {:error, Tesla.Env.t}
def update_email_folder(connection, id, update_email_folder_request, _opts \\ []) do
request =
%{}
|> method(:put)
|> url("/v1/folders/#{id}")
|> add_param(:body, :body, update_email_folder_request)
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, Spatio.Model.EmailFolder},
{401, Spatio.Model.ApiError}
])
end
end