lib/fireblocks_sdk/api/management.ex

defmodule FireblocksSdk.Api.Management do
  alias FireblocksSdk.Schema
  import FireblocksSdk.Request

  @base_path "/v1/management"

  @doc """
  Get api users from the current tenant
  """
  def get_api_users() do
    get!("#{@base_path}/api-users")
  end

  @doc """
  Create API User - admin permission is required

  Options: \n#{NimbleOptions.docs(Schema.create_api_user_request())}
  """
  def create_api_user(params) do
    {:ok, params} = NimbleOptions.validate(params, Schema.create_api_user_request())
    post!("#{@base_path}/api-users", params)
  end

  @doc """
  Get console users from the current tenant
  """
  def get_console_users() do
    get!("#{@base_path}/console-users")
  end

  @doc """
  Create Console User - admin permission is required

  Options: \n#{NimbleOptions.docs(Schema.create_console_user_request())}
  """
  def create_console_user(params) do
    {:ok, params} = NimbleOptions.validate(params, Schema.create_console_user_request())
    post!("#{@base_path}/console-users", params)
  end

  @doc """
  Reset device
  """
  def reset_device(user_id) when is_binary(user_id) do
    post!("#{@base_path}/console-users/#{user_id}/reset-device", [])
  end

  @doc """
  Get API user whitelist ip addresses from the current tenant
  """
  def get_api_user_whitelist_ip_addresses(user_id) when is_binary(user_id) do
    get!("#{@base_path}/api-users/#{user_id}/whitelist-ip-addresses")
  end
end