WeaviateEx.API.Users.DB (WeaviateEx v0.7.4)
View SourceDatabase-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
Activates a user.
Assigns roles to a user.
Creates a new database user.
Deactivates a user.
Deletes a database user.
Gets a database user by ID.
Gets roles assigned to a user.
Lists all database users.
Revokes roles from a user.
Rotates a user's API key.
Types
@type opts() :: keyword()
Functions
@spec activate(WeaviateEx.Client.t(), String.t(), opts()) :: :ok | {:error, WeaviateEx.Error.t()}
Activates a user.
Examples
:ok = DB.activate(client, "john.doe")
@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"])
@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}")
@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)
@spec delete(WeaviateEx.Client.t(), String.t(), opts()) :: :ok | {:error, WeaviateEx.Error.t()}
Deletes a database user.
Examples
:ok = DB.delete(client, "john.doe")
@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")
@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)
@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)
@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"])
@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")