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()} @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() :: {:ok, Plaid.Categories.t()} | {:error, Plaid.Error.t()} def get do endpoint = "#{@endpoint}/get" Plaid.make_request(:post, endpoint) |> Plaid.Utils.handle_resp(:categories) end end