# NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
# https://openapi-generator.tech
# Do not edit the class manually.
defmodule MailSlurpAPI.Api.GroupController do
@moduledoc """
API calls for all endpoints tagged `GroupController`.
"""
alias MailSlurpAPI.Connection
import MailSlurpAPI.RequestBuilder
@doc """
Add contacts to a group
## Parameters
- connection (MailSlurpAPI.Connection): Connection to server
- group_id (String.t):
- update_group_contacts (UpdateGroupContacts):
- opts (KeywordList): [optional] Optional parameters
## Returns
{:ok, %MailSlurpAPI.Model.GroupContactsDto{}} on success
{:error, info} on failure
"""
@spec add_contacts_to_group(Tesla.Env.client, String.t, MailSlurpAPI.Model.UpdateGroupContacts.t, keyword()) :: {:ok, MailSlurpAPI.Model.GroupContactsDto.t} | {:error, Tesla.Env.t}
def add_contacts_to_group(connection, group_id, update_group_contacts, _opts \\ []) do
%{}
|> method(:put)
|> url("/groups/#{group_id}/contacts")
|> add_param(:body, :body, update_group_contacts)
|> Enum.into([])
|> (&Connection.request(connection, &1)).()
|> evaluate_response([
{ 200, %MailSlurpAPI.Model.GroupContactsDto{}}
])
end
@doc """
Create a group
## Parameters
- connection (MailSlurpAPI.Connection): Connection to server
- create_group_options (CreateGroupOptions):
- opts (KeywordList): [optional] Optional parameters
## Returns
{:ok, %MailSlurpAPI.Model.GroupDto{}} on success
{:error, info} on failure
"""
@spec create_group(Tesla.Env.client, MailSlurpAPI.Model.CreateGroupOptions.t, keyword()) :: {:ok, MailSlurpAPI.Model.GroupDto.t} | {:error, Tesla.Env.t}
def create_group(connection, create_group_options, _opts \\ []) do
%{}
|> method(:post)
|> url("/groups")
|> add_param(:body, :body, create_group_options)
|> Enum.into([])
|> (&Connection.request(connection, &1)).()
|> evaluate_response([
{ 201, %MailSlurpAPI.Model.GroupDto{}}
])
end
@doc """
Delete group
## Parameters
- connection (MailSlurpAPI.Connection): Connection to server
- group_id (String.t):
- opts (KeywordList): [optional] Optional parameters
## Returns
{:ok, %{}} on success
{:error, info} on failure
"""
@spec delete_group(Tesla.Env.client, String.t, keyword()) :: {:ok, nil} | {:error, Tesla.Env.t}
def delete_group(connection, group_id, _opts \\ []) do
%{}
|> method(:delete)
|> url("/groups/#{group_id}")
|> Enum.into([])
|> (&Connection.request(connection, &1)).()
|> evaluate_response([
{ 204, false}
])
end
@doc """
Get all Contact Groups in paginated format
## Parameters
- connection (MailSlurpAPI.Connection): Connection to server
- opts (KeywordList): [optional] Optional parameters
- :page (integer()): Optional page index in list pagination
- :size (integer()): Optional page size in list pagination
- :sort (String.t): Optional createdAt sort direction ASC or DESC
- :since (DateTime.t): Filter by created at after the given timestamp
- :before (DateTime.t): Filter by created at before the given timestamp
## Returns
{:ok, %MailSlurpAPI.Model.PageGroupProjection{}} on success
{:error, info} on failure
"""
@spec get_all_groups(Tesla.Env.client, keyword()) :: {:ok, MailSlurpAPI.Model.PageGroupProjection.t} | {:error, Tesla.Env.t}
def get_all_groups(connection, opts \\ []) do
optional_params = %{
:"page" => :query,
:"size" => :query,
:"sort" => :query,
:"since" => :query,
:"before" => :query
}
%{}
|> method(:get)
|> url("/groups/paginated")
|> add_optional_params(optional_params, opts)
|> Enum.into([])
|> (&Connection.request(connection, &1)).()
|> evaluate_response([
{ 200, %MailSlurpAPI.Model.PageGroupProjection{}}
])
end
@doc """
Get group
## Parameters
- connection (MailSlurpAPI.Connection): Connection to server
- group_id (String.t):
- opts (KeywordList): [optional] Optional parameters
## Returns
{:ok, %MailSlurpAPI.Model.GroupDto{}} on success
{:error, info} on failure
"""
@spec get_group(Tesla.Env.client, String.t, keyword()) :: {:ok, MailSlurpAPI.Model.GroupDto.t} | {:error, Tesla.Env.t}
def get_group(connection, group_id, _opts \\ []) do
%{}
|> method(:get)
|> url("/groups/#{group_id}")
|> Enum.into([])
|> (&Connection.request(connection, &1)).()
|> evaluate_response([
{ 200, %MailSlurpAPI.Model.GroupDto{}}
])
end
@doc """
Get group and contacts belonging to it
## Parameters
- connection (MailSlurpAPI.Connection): Connection to server
- group_id (String.t):
- opts (KeywordList): [optional] Optional parameters
## Returns
{:ok, %MailSlurpAPI.Model.GroupContactsDto{}} on success
{:error, info} on failure
"""
@spec get_group_with_contacts(Tesla.Env.client, String.t, keyword()) :: {:ok, MailSlurpAPI.Model.GroupContactsDto.t} | {:error, Tesla.Env.t}
def get_group_with_contacts(connection, group_id, _opts \\ []) do
%{}
|> method(:get)
|> url("/groups/#{group_id}/contacts")
|> Enum.into([])
|> (&Connection.request(connection, &1)).()
|> evaluate_response([
{ 200, %MailSlurpAPI.Model.GroupContactsDto{}}
])
end
@doc """
Get group and paginated contacts belonging to it
## Parameters
- connection (MailSlurpAPI.Connection): Connection to server
- group_id (String.t):
- opts (KeywordList): [optional] Optional parameters
- :page (integer()): Optional page index in group contact pagination
- :size (integer()): Optional page size in group contact pagination
- :sort (String.t): Optional createdAt sort direction ASC or DESC
- :since (DateTime.t): Filter by created at after the given timestamp
- :before (DateTime.t): Filter by created at before the given timestamp
## Returns
{:ok, %MailSlurpAPI.Model.PageContactProjection{}} on success
{:error, info} on failure
"""
@spec get_group_with_contacts_paginated(Tesla.Env.client, String.t, keyword()) :: {:ok, MailSlurpAPI.Model.PageContactProjection.t} | {:error, Tesla.Env.t}
def get_group_with_contacts_paginated(connection, group_id, opts \\ []) do
optional_params = %{
:"page" => :query,
:"size" => :query,
:"sort" => :query,
:"since" => :query,
:"before" => :query
}
%{}
|> method(:get)
|> url("/groups/#{group_id}/contacts-paginated")
|> add_optional_params(optional_params, opts)
|> Enum.into([])
|> (&Connection.request(connection, &1)).()
|> evaluate_response([
{ 200, %MailSlurpAPI.Model.PageContactProjection{}}
])
end
@doc """
Get all groups
## Parameters
- connection (MailSlurpAPI.Connection): Connection to server
- opts (KeywordList): [optional] Optional parameters
## Returns
{:ok, [%GroupProjection{}, ...]} on success
{:error, info} on failure
"""
@spec get_groups(Tesla.Env.client, keyword()) :: {:ok, list(MailSlurpAPI.Model.GroupProjection.t)} | {:error, Tesla.Env.t}
def get_groups(connection, _opts \\ []) do
%{}
|> method(:get)
|> url("/groups")
|> Enum.into([])
|> (&Connection.request(connection, &1)).()
|> evaluate_response([
{ 200, [%MailSlurpAPI.Model.GroupProjection{}]}
])
end
@doc """
Remove contacts from a group
## Parameters
- connection (MailSlurpAPI.Connection): Connection to server
- group_id (String.t):
- update_group_contacts (UpdateGroupContacts):
- opts (KeywordList): [optional] Optional parameters
## Returns
{:ok, %MailSlurpAPI.Model.GroupContactsDto{}} on success
{:error, info} on failure
"""
@spec remove_contacts_from_group(Tesla.Env.client, String.t, MailSlurpAPI.Model.UpdateGroupContacts.t, keyword()) :: {:ok, MailSlurpAPI.Model.GroupContactsDto.t} | {:error, Tesla.Env.t}
def remove_contacts_from_group(connection, group_id, update_group_contacts, _opts \\ []) do
%{}
|> method(:delete)
|> url("/groups/#{group_id}/contacts")
|> add_param(:body, :body, update_group_contacts)
|> Enum.into([])
|> (&Connection.request(connection, &1)).()
|> evaluate_response([
{ 200, %MailSlurpAPI.Model.GroupContactsDto{}}
])
end
end