# 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): groupId - update_group_contacts_option (UpdateGroupContacts): updateGroupContactsOption - 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_option, _opts \\ []) do %{} |> method(:put) |> url("/groups/#{group_id}/contacts") |> add_param(:body, :body, update_group_contacts_option) |> Enum.into([]) |> (&Connection.request(connection, &1)).() |> evaluate_response([ { 200, %MailSlurpAPI.Model.GroupContactsDto{}}, { 201, false}, { 401, false}, { 403, false}, { 404, false} ]) end @doc """ Create a group ## Parameters - connection (MailSlurpAPI.Connection): Connection to server - create_group_options (CreateGroupOptions): 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{}}, { 401, false}, { 403, false}, { 404, false} ]) end @doc """ Delete group ## Parameters - connection (MailSlurpAPI.Connection): Connection to server - group_id (String.t): groupId - 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}, { 401, false}, { 403, 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 inbox list pagination - :size (integer()): Optional page size in inbox list pagination - :sort (String.t): Optional createdAt sort direction ASC or DESC ## 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 } %{} |> method(:get) |> url("/groups/paginated") |> add_optional_params(optional_params, opts) |> Enum.into([]) |> (&Connection.request(connection, &1)).() |> evaluate_response([ { 200, %MailSlurpAPI.Model.PageGroupProjection{}}, { 401, false}, { 403, false}, { 404, false} ]) end @doc """ Get group ## Parameters - connection (MailSlurpAPI.Connection): Connection to server - group_id (String.t): groupId - 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{}}, { 401, false}, { 403, false}, { 404, false} ]) end @doc """ Get group and contacts belonging to it ## Parameters - connection (MailSlurpAPI.Connection): Connection to server - group_id (String.t): groupId - 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{}}, { 401, false}, { 403, false}, { 404, false} ]) end @doc """ Get group and paginated contacts belonging to it ## Parameters - connection (MailSlurpAPI.Connection): Connection to server - group_id (String.t): groupId - 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 ## 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 } %{} |> 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{}}, { 401, false}, { 403, false}, { 404, false} ]) 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{}]}, { 401, false}, { 403, false}, { 404, false} ]) end @doc """ Remove contacts from a group ## Parameters - connection (MailSlurpAPI.Connection): Connection to server - group_id (String.t): groupId - update_group_contacts_option (UpdateGroupContacts): updateGroupContactsOption - 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_option, _opts \\ []) do %{} |> method(:delete) |> url("/groups/#{group_id}/contacts") |> add_param(:body, :body, update_group_contacts_option) |> Enum.into([]) |> (&Connection.request(connection, &1)).() |> evaluate_response([ { 200, %MailSlurpAPI.Model.GroupContactsDto{}}, { 204, false}, { 401, false}, { 403, false} ]) end end