lib/circlex/api/management.ex

defmodule Circlex.Api.Management do
  @moduledoc """
  API Client to the Management API.

  Reference: https://developers.circle.com/reference/getconfig
  """

  import Circlex.Api.Tooling

  @doc ~S"""
  Retrieves general configuration information.

  Reference: https://developers.circle.com/reference/getconfig

  ## Examples

      iex> host = Circlex.Test.start_server()
      iex> Circlex.Api.Management.get_config(host: host)
      {:ok, %{payments: %{master_wallet_id: "1000216185"}}}

      iex> host = Circlex.Test.start_server(no_load: true)
      iex> Circlex.Api.Management.get_config(host: host)
      {:error, %{error: "System Configuration Issue: no main \"merchant\" wallet specified"}}
  """
  def get_config(opts \\ []) do
    with {:ok, %{"payments" => %{"masterWalletId" => master_wallet_id}}} <-
           api_get("/v1/configuration", opts) do
      {:ok, %{payments: %{master_wallet_id: master_wallet_id}}}
    end
  end
end