Current section

Files

Jump to
plaid_elixir lib plaid categories.ex
Raw

lib/plaid/categories.ex

defmodule Plaid.Categories do
@moduledoc """
Functions for Plaid `categories` endpoint.
"""
@derive Jason.Encoder
defstruct categories: [], request_id: nil
@type t :: %__MODULE__{categories: [Plaid.Categories.Category.t()], request_id: String.t()}
@type config :: %{required(atom) => String.t()}
@endpoint :categories
defmodule Category do
@moduledoc """
Plaid Category data structure.
"""
@derive Jason.Encoder
defstruct category_id: nil, hierarchy: [], group: nil
@type t :: %__MODULE__{category_id: String.t(), hierarchy: list, group: String.t()}
end
@doc """
Gets all categories.
"""
@spec get(config | nil) :: {:ok, Plaid.Categories.t()} | {:error, Plaid.Error.t()}
def get(config \\ %{}) do
config = Map.drop(config, [:public_key, :client_id, :secret])
endpoint = "#{@endpoint}/get"
Plaid.make_request_with_cred(:post, endpoint, config)
|> Plaid.Utils.handle_resp(@endpoint)
end
end