WeaviateEx.API.Users.DB (WeaviateEx v0.7.4)

View Source

Database-backed user management.

This module manages users that are stored in Weaviate's database, as opposed to OIDC users which are managed by an external identity provider.

DB users:

  • Have API keys for authentication
  • Can be created and deleted via this API
  • Can have their API keys rotated
  • Can be activated/deactivated

Examples

alias WeaviateEx.API.Users.DB

# Create a new DB user
{:ok, user} = DB.create(client, "new-user")
IO.puts("API Key: #{user.api_key}")

# Rotate API key
{:ok, new_key} = DB.rotate_api_key(client, "new-user")

# Assign roles
:ok = DB.assign_roles(client, "new-user", ["editor", "viewer"])

# Delete user
:ok = DB.delete(client, "new-user")

Summary

Functions

Creates a new database user.

Deletes a database user.

Gets a database user by ID.

Gets roles assigned to a user.

Lists all database users.

Types

opts()

@type opts() :: keyword()

Functions

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

@spec activate(WeaviateEx.Client.t(), String.t(), opts()) ::
  :ok | {:error, WeaviateEx.Error.t()}

Activates a user.

Examples

:ok = DB.activate(client, "john.doe")

assign_roles(client, user_id, role_names, opts \\ [])

@spec assign_roles(WeaviateEx.Client.t(), String.t(), [String.t()], opts()) ::
  :ok | {:error, WeaviateEx.Error.t()}

Assigns roles to a user.

Examples

:ok = DB.assign_roles(client, "john.doe", ["admin", "editor"])

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

@spec create(WeaviateEx.Client.t(), String.t(), opts()) ::
  {:ok, WeaviateEx.Users.User.DB.t()} | {:error, WeaviateEx.Error.t()}

Creates a new database user.

Returns the user with their generated API key.

Examples

{:ok, user} = DB.create(client, "john.doe")
IO.puts("API Key: #{user.api_key}")

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

@spec deactivate(WeaviateEx.Client.t(), String.t(), opts()) ::
  :ok | {:error, WeaviateEx.Error.t()}

Deactivates a user.

Options

  • :revoke_key - If true, also revokes the user's API key (default: false)

Examples

# Deactivate user, keeping API key
:ok = DB.deactivate(client, "john.doe")

# Deactivate user and revoke their API key
:ok = DB.deactivate(client, "john.doe", revoke_key: true)

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

@spec delete(WeaviateEx.Client.t(), String.t(), opts()) ::
  :ok | {:error, WeaviateEx.Error.t()}

Deletes a database user.

Examples

:ok = DB.delete(client, "john.doe")

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

@spec get(WeaviateEx.Client.t(), String.t(), opts()) ::
  {:ok, WeaviateEx.Users.User.DB.t()} | {:error, WeaviateEx.Error.t()}

Gets a database user by ID.

Examples

{:ok, user} = DB.get(client, "john.doe")

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

@spec get_roles(WeaviateEx.Client.t(), String.t(), opts()) ::
  {:ok, [String.t()] | map()} | {:error, WeaviateEx.Error.t()}

Gets roles assigned to a user.

Options

  • :include_permissions - If true, returns a map of role names to Role structs with full permission details instead of just role names (default: false)

Examples

# Get role names only
{:ok, ["admin", "editor"]} = DB.get_roles(client, "john.doe")

# Get roles with full permission details
{:ok, %{"admin" => %Role{...}}} = DB.get_roles(client, "john.doe", include_permissions: true)

list(client, opts \\ [])

@spec list(WeaviateEx.Client.t(), opts()) ::
  {:ok, [WeaviateEx.Users.User.DB.t()]} | {:error, WeaviateEx.Error.t()}

Lists all database users.

Examples

{:ok, users} = DB.list(client)

revoke_roles(client, user_id, role_names, opts \\ [])

@spec revoke_roles(WeaviateEx.Client.t(), String.t(), [String.t()], opts()) ::
  :ok | {:error, WeaviateEx.Error.t()}

Revokes roles from a user.

Examples

:ok = DB.revoke_roles(client, "john.doe", ["admin"])

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

@spec rotate_api_key(WeaviateEx.Client.t(), String.t(), opts()) ::
  {:ok, String.t()} | {:error, WeaviateEx.Error.t()}

Rotates a user's API key.

Returns the new API key.

Examples

{:ok, new_key} = DB.rotate_api_key(client, "john.doe")