lib/active_campaign/user.ex

defmodule ActiveCampaign.User do
  @moduledoc """
  Documentation for `ActiveCampaign.User`.
  """

  use ActiveCampaign.Crud,
    fun: [:get, :create, :update, :delete, :list],
    endpoint: "users",
    key: :user

  @doc """
  Retrieve a user by email
  """
  @spec get_by_email(String.t()) :: {:ok, map()} | {:error, any()}
  def get_by_email(email) do
    Http.get("users/email/#{email}")
  end

  @doc """
  Retrieve a user by username
  """
  @spec get_by_username(String.t()) :: {:ok, map()} | {:error, any()}
  def get_by_username(username) do
    Http.get("users/username/#{username}")
  end

  @doc """
  Retrieve logged-in user
  """
  @spec me :: {:ok, map()} | {:error, any()}
  def me do
    Http.get("users/me")
  end
end