Miosa.Admin (Miosa v1.0.1)

Copy Markdown View Source

Admin surface — /api/v1/admin/*.

Requires an admin credential: a msk_a_* / msk_p_* API key or an admin JWT. Calls from a user-role credential return {:error, %Miosa.Error{status: 403}}.

For endpoints not covered by the typed helpers below, use request/5 which accepts an arbitrary method + path.

Example

client = Miosa.client("msk_a_...")

{:ok, _} = Miosa.Admin.grant_credits(client, "tenant-uuid", 1000, "goodwill")
{:ok, users} = Miosa.Admin.list_users(client, limit: 50, status: "active")
{:ok, _} = Miosa.Admin.change_tenant_plan(client, "tenant-uuid", "pro")

Summary

Functions

Read the platform audit log.

Create an API key on behalf of a tenant/user.

List API keys across tenants.

List all computers across tenants.

Call any admin endpoint directly.

Types

result()

@type result() :: {:ok, map()} | {:error, Miosa.Error.t()}

Functions

api_key_stats(client)

@spec api_key_stats(Miosa.Client.t()) :: result()

audit_log(client, opts \\ [])

@spec audit_log(
  Miosa.Client.t(),
  keyword()
) :: result()

Read the platform audit log.

Options: :limit, :cursor.

ban_user(client, user_id, reason, opts \\ [])

@spec ban_user(Miosa.Client.t(), String.t(), String.t(), keyword()) :: result()

billing_summary(client)

@spec billing_summary(Miosa.Client.t()) :: result()

bulk_revoke_api_keys(client, key_ids)

@spec bulk_revoke_api_keys(Miosa.Client.t(), [String.t()]) :: result()

bulk_user_action(client, user_ids, action, opts \\ [])

@spec bulk_user_action(Miosa.Client.t(), [String.t()], String.t(), keyword()) ::
  result()

change_tenant_plan(client, tenant_id, plan, opts \\ [])

@spec change_tenant_plan(Miosa.Client.t(), String.t(), String.t(), keyword()) ::
  result()

change_user_role(client, user_id, role)

@spec change_user_role(Miosa.Client.t(), String.t(), String.t()) :: result()

create_api_key(client, opts)

@spec create_api_key(
  Miosa.Client.t(),
  keyword()
) :: result()

Create an API key on behalf of a tenant/user.

Required options: :name, :tenant_id, :user_id. Optional: :key_type (default "user"), :purpose (default "api"), :rate_limit_rpm, :expires_at, :allowed_ips.

dashboard(client)

@spec dashboard(Miosa.Client.t()) :: result()

deduct_credits(client, tenant_id, amount, description)

@spec deduct_credits(Miosa.Client.t(), String.t(), integer(), String.t()) :: result()

delete_computer(client, computer_id)

@spec delete_computer(Miosa.Client.t(), String.t()) :: result()

delete_tenant(client, tenant_id)

@spec delete_tenant(Miosa.Client.t(), String.t()) :: result()

delete_user(client, user_id)

@spec delete_user(Miosa.Client.t(), String.t()) :: result()

detailed_health(client)

@spec detailed_health(Miosa.Client.t()) :: result()

force_logout(client, user_id)

@spec force_logout(Miosa.Client.t(), String.t()) :: result()

get_user(client, user_id)

@spec get_user(Miosa.Client.t(), String.t()) :: result()

grant_credits(client, tenant_id, amount, description, opts \\ [])

@spec grant_credits(Miosa.Client.t(), String.t(), integer(), String.t(), keyword()) ::
  result()

list_api_keys(client, opts \\ [])

@spec list_api_keys(
  Miosa.Client.t(),
  keyword()
) :: result()

List API keys across tenants.

Options: :limit, :cursor, :tenant_id, :status ("active" | "revoked" | "expired").

list_computers(client, opts \\ [])

@spec list_computers(
  Miosa.Client.t(),
  keyword()
) :: result()

List all computers across tenants.

Options: :limit, :cursor, :status, :tenant_id.

list_optimal_models(client)

@spec list_optimal_models(Miosa.Client.t()) :: result()

list_tenants(client, opts \\ [])

@spec list_tenants(
  Miosa.Client.t(),
  keyword()
) :: result()

list_users(client, opts \\ [])

@spec list_users(
  Miosa.Client.t(),
  keyword()
) :: result()

List users.

Options: :limit, :cursor, :q, :status ("active" | "suspended" | "deleted").

optimal_status(client)

@spec optimal_status(Miosa.Client.t()) :: result()

purge_stale_computers(client)

@spec purge_stale_computers(Miosa.Client.t()) :: result()

refund_credits(client, tenant_id, amount, description, opts \\ [])

@spec refund_credits(Miosa.Client.t(), String.t(), integer(), String.t(), keyword()) ::
  result()

request(client, method, path, body \\ nil, opts \\ [])

@spec request(Miosa.Client.t(), atom(), String.t(), map() | nil, keyword()) ::
  result()

Call any admin endpoint directly.

method is one of :get, :post, :put, :patch, :delete. path is relative to /api/v1 and should include the /admin prefix.

restart_computer(client, computer_id)

@spec restart_computer(Miosa.Client.t(), String.t()) :: result()

resume_computer(client, computer_id)

@spec resume_computer(Miosa.Client.t(), String.t()) :: result()

revoke_api_key(client, key_id)

@spec revoke_api_key(Miosa.Client.t(), String.t()) :: result()

stats(client)

@spec stats(Miosa.Client.t()) :: result()

suspend_computer(client, computer_id)

@spec suspend_computer(Miosa.Client.t(), String.t()) :: result()

suspend_tenant(client, tenant_id, opts \\ [])

@spec suspend_tenant(Miosa.Client.t(), String.t(), keyword()) :: result()

suspend_user(client, user_id, opts \\ [])

@spec suspend_user(Miosa.Client.t(), String.t(), keyword()) :: result()

switch_optimal_model(client, model_id)

@spec switch_optimal_model(Miosa.Client.t(), String.t()) :: result()

tenant_balance(client, tenant_id)

@spec tenant_balance(Miosa.Client.t(), String.t()) :: result()

tenant_credit_history(client, tenant_id, opts \\ [])

@spec tenant_credit_history(Miosa.Client.t(), String.t(), keyword()) :: result()

tenant_detail(client, tenant_id)

@spec tenant_detail(Miosa.Client.t(), String.t()) :: result()

unban_user(client, user_id)

@spec unban_user(Miosa.Client.t(), String.t()) :: result()

unsuspend_tenant(client, tenant_id)

@spec unsuspend_tenant(Miosa.Client.t(), String.t()) :: result()

unsuspend_user(client, user_id)

@spec unsuspend_user(Miosa.Client.t(), String.t()) :: result()

update_user(client, user_id, attrs)

@spec update_user(Miosa.Client.t(), String.t(), map()) :: result()