defmodule Auth0.Management.Users do
alias Auth0.Config
alias Auth0.Management.Users.List
alias Auth0.Management.Users.Create
alias Auth0.Management.Users.Get
alias Auth0.Management.Users.Delete
alias Auth0.Management.Users.Patch
alias Auth0.Management.Users.Enrollments
alias Auth0.Management.Users.AuthenticationMethods
alias Auth0.Management.Users.Authenticators
alias Auth0.Management.Users.Enrollments
alias Auth0.Management.Users.Roles
alias Auth0.Management.Users.Logs
alias Auth0.Management.Users.Organizations
alias Auth0.Management.Users.Permissions
alias Auth0.Management.Users.Multifactor
alias Auth0.Management.Users.Identities
alias Auth0.Management.Users.RecoveryCodeRegeneration
alias Auth0.Management.Users.RefreshTokens
alias Auth0.Management.Users.Sessions
alias Auth0.Management.Users.RevokeAccess
@type id :: String.t()
@type authentication_method_id :: String.t()
@type provider :: String.t()
@type user_id :: String.t()
@type config :: Config.t()
@type error :: {:error, integer, term} | {:error, term}
@doc """
Retrieve details of users.
## see
https://auth0.com/docs/api/management/v2/users/get-users
"""
@spec list(map(), config) :: {:ok, list(map()) | map()} | error
def list(%{} = params, %Config{} = config) do
List.execute(params, config)
end
@doc """
Create a new user for a given database or passwordless connection.
## see
https://auth0.com/docs/api/management/v2/users/post-users
"""
@spec create(map(), config) ::
{:ok, map()} | error
def create(%{} = params, %Config{} = config) do
Create.execute(params, config)
end
@doc """
Retrieve user details. A list of fields to include or exclude may also be specified.
## see
https://auth0.com/docs/api/management/v2/users/get-users-by-id
"""
@spec get(id, map(), config) ::
{:ok, map()} | error
def get(id, %{} = params, %Config{} = config) do
Get.execute(id, params, config)
end
@doc """
Delete a user by user ID. This action cannot be undone.
## see
https://auth0.com/docs/api/management/v2/users/delete-users-by-id
"""
@spec delete(id, config) :: {:ok, String.t()} | error
def delete(id, %Config{} = config) do
Delete.execute(id, config)
end
@doc """
Update a user.
## see
https://auth0.com/docs/api/management/v2/users/patch-users-by-id
"""
@spec update(id, map(), config) ::
{:ok, map()} | error
def update(id, %{} = params, %Config{} = config) do
Patch.execute(id, params, config)
end
@doc """
Retrieve detailed list of authentication methods associated with a specified user.
## see
https://auth0.com/docs/api/management/v2/users/get-authentication-methods
"""
@spec list_authentication_methods(id, map(), config) ::
{:ok, list(map()) | map()} | error
def list_authentication_methods(id, %{} = params, %Config{} = config) do
AuthenticationMethods.List.execute(id, params, config)
end
@doc """
Remove all authentication methods (i.e., enrolled MFA factors) from the specified user account. This action cannot be undone.
## see
https://auth0.com/docs/api/management/v2/users/delete-authentication-methods
"""
@spec delete_authentication_methods(id, config) ::
{:ok, String.t()} | error
def delete_authentication_methods(id, %Config{} = config) do
AuthenticationMethods.DeleteAll.execute(id, config)
end
@doc """
Create an authentication method. Authentication methods created via this endpoint will be auto confirmed and should already have verification completed.
## see
https://auth0.com/docs/api/management/v2/users/post-authentication-methods
"""
@spec create_authentication_methods(id, map(), config) ::
{:ok, map()} | error
def create_authentication_methods(id, %{} = params, %Config{} = config) do
AuthenticationMethods.Create.execute(id, params, config)
end
@doc """
Replace the specified user authentication methods with supplied values.
## see
https://auth0.com/docs/api/management/v2/users/put-authentication-methods
"""
@spec update_authentication_methods(id, map(), config) ::
{:ok, list(map())} | error
def update_authentication_methods(id, %{} = params, %Config{} = config) do
AuthenticationMethods.PutAll.execute(id, params, config)
end
@doc """
Get an authentication method by ID
## see
https://auth0.com/docs/api/management/v2/users/get-authentication-methods-by-authentication-method-id
"""
@spec get_authentication_method(id, authentication_method_id, config) ::
{:ok, map()} | error
def get_authentication_method(id, authentication_method_id, %Config{} = config) do
AuthenticationMethods.Get.execute(id, authentication_method_id, config)
end
@doc """
Remove the authentication method with the given ID from the specified user.
## see
https://auth0.com/docs/api/management/v2/users/delete-authentication-methods-by-authentication-method-id
"""
@spec delete_authentication_method(id, authentication_method_id, config) ::
{:ok, String.t()} | error
def delete_authentication_method(id, authentication_method_id, %Config{} = config) do
AuthenticationMethods.Delete.execute(id, authentication_method_id, config)
end
@doc """
Modify the authentication method with the given ID from the specified user.
## see
https://auth0.com/docs/api/management/v2/users/patch-authentication-methods-by-authentication-method-id
"""
@spec update_authentication_method(id, authentication_method_id, map(), config) ::
{:ok, map()} | error
def update_authentication_method(id, authentication_method_id, %{} = params, %Config{} = config) do
AuthenticationMethods.Patch.execute(id, authentication_method_id, params, config)
end
@doc """
Remove all authenticators registered to a given user ID, such as OTP, email, phone, and push-notification. This action cannot be undone.
## see
https://auth0.com/docs/api/management/v2/users/delete-authenticators
"""
@spec delete_authenticators(id, config) ::
{:ok, String.t()} | error
def delete_authenticators(id, %Config{} = config) do
Authenticators.Delete.execute(id, config)
end
@doc """
Retrieve the first multi-factor authentication enrollment that a specific user has confirmed.
## see
https://auth0.com/docs/api/management/v2/users/get-enrollments
"""
@spec get_enrollments(id, config) ::
{:ok, list(map())} | error
def get_enrollments(id, %Config{} = config) do
Enrollments.List.execute(id, config)
end
@doc """
Link two user accounts together forming a primary and secondary relationship. On successful linking, the endpoint returns the new array of the primary account identities.
## see
https://auth0.com/docs/api/management/v2/users/post-identities
"""
@spec link_identities(id, map(), config) ::
{:ok, list(map())} | error
def link_identities(
id,
%{} = params,
%Config{} = config
) do
Identities.Link.execute(id, params, config)
end
@doc """
Unlink a specific secondary account from a target user. This action requires the ID of both the target user and the secondary account.
## see
https://auth0.com/docs/api/management/v2/users/delete-user-identity-by-user-id
"""
@spec unlink_identities(id, provider, user_id, config) ::
{:ok, list(map())} | error
def unlink_identities(
id,
provider,
user_id,
%Config{} = config
) do
Identities.Unlink.execute(id, provider, user_id, config)
end
@doc """
Retrieve log events for a specific user.
## see
https://auth0.com/docs/api/management/v2/users/get-logs-by-user
"""
@spec get_logs(id, map(), config) ::
{:ok, list(map()) | map()} | error
def get_logs(id, %{} = params, %Config{} = config) do
Logs.List.execute(id, params, config)
end
@doc """
Invalidate all remembered browsers across all authentication factors for a user.
## see
https://auth0.com/docs/api/management/v2/users/post-invalidate-remember-browser
"""
@spec invalidate_remembered_browser_for_multifactor(id, config) ::
{:ok, String.t()} | error
def invalidate_remembered_browser_for_multifactor(
id,
%Config{} = config
) do
Multifactor.InvalidateRememberedBrowser.execute(
id,
config
)
end
@doc """
Remove a multifactor authentication configuration from a user's account. This forces the user to manually reconfigure the multi-factor provider.
## see
https://auth0.com/docs/api/management/v2/users/delete-multifactor-by-provider
"""
@spec delete_multifactor(id, map(), config) ::
{:ok, String.t()} | error
def delete_multifactor(
id,
%{} = params,
%Config{} = config
) do
Multifactor.Delete.execute(id, params, config)
end
@doc """
Retrieve list of the specified user's current Organization memberships. User must be specified by user ID.
## see
https://auth0.com/docs/api/management/v2/users/get-user-organizations
"""
@spec get_organizations(id, map(), config) ::
{:ok, list(map()) | map()} | error
def get_organizations(id, %{} = params, %Config{} = config) do
Organizations.List.execute(id, params, config)
end
@doc """
Retrieve all permissions associated with the user.
## see
https://auth0.com/docs/api/management/v2/users/get-permissions
"""
@spec get_permissions(id, map(), config) ::
{:ok, list(map()) | map()} | error
def get_permissions(id, %{} = params, %Config{} = config) do
Permissions.List.execute(id, params, config)
end
@doc """
Remove permissions from a user.
## see
https://auth0.com/docs/api/management/v2/users/delete-permissions
"""
@spec remove_permissions(id, map(), config) ::
{:ok, String.t()} | error
def remove_permissions(id, %{} = params, %Config{} = config) do
Permissions.Remove.execute(id, params, config)
end
@doc """
Assign permissions to a user.
## see
https://auth0.com/docs/api/management/v2/users/post-permissions
"""
@spec assign_permissions(id, map(), config) ::
{:ok, String.t()} | error
def assign_permissions(id, %{} = params, %Config{} = config) do
Permissions.Assign.execute(id, params, config)
end
@doc """
Remove an existing multi-factor authentication (MFA) recovery code and generate a new one. If a user cannot access the original device or account used for MFA enrollment, they can use a recovery code to authenticate.
## see
https://auth0.com/docs/api/management/v2/users/post-recovery-code-regeneration
"""
@spec regenerate_recovery_code(id, config) ::
{:ok, map()} | error
def regenerate_recovery_code(
id,
%Config{} = config
) do
RecoveryCodeRegeneration.Regenerate.execute(
id,
config
)
end
@doc """
Revokes selected resources related to a user (sessions, refresh tokens, ...).
## see
https://auth0.com/docs/api/management/v2/users/user-revoke-access
"""
@spec revoke_selected_resources(id, map(), config) ::
{:ok, String.t()} | error
def revoke_selected_resources(id, %{} = params \\ %{}, %Config{} = config \\ %Config{}) do
RevokeAccess.Revoke.execute(id, params, config)
end
@doc """
Retrieve detailed list of all user roles currently assigned to a user.
## see
https://auth0.com/docs/api/management/v2/users/get-user-roles
"""
@spec get_roles(id, map(), config) ::
{:ok, list(map()) | map()} | error
def get_roles(id, %{} = params, %Config{} = config) do
Roles.List.execute(id, params, config)
end
@doc """
Remove one or more specified user roles assigned to a user.
## see
https://auth0.com/docs/api/management/v2/users/delete-user-roles
"""
@spec remove_roles(id, map(), config) ::
{:ok, String.t()} | error
def remove_roles(id, %{} = params, %Config{} = config) do
Roles.Remove.execute(id, params, config)
end
@doc """
Assign one or more existing user roles to a user.
## see
https://auth0.com/docs/api/management/v2/users/post-user-roles
"""
@spec assign_roles(id, map(), config) ::
{:ok, String.t()} | error
def assign_roles(id, %{} = params, %Config{} = config) do
Roles.Assign.execute(id, params, config)
end
@doc """
Retrieve details for a user's refresh tokens.
## see
https://auth0.com/docs/api/management/v2/users/get-refresh-tokens-for-user
"""
@spec get_refresh_tokens(id, map(), config) ::
{:ok, map()} | error
def get_refresh_tokens(id, %{} = params, %Config{} = config) do
RefreshTokens.List.execute(id, params, config)
end
@doc """
Delete all refresh tokens for a user.
## see
https://auth0.com/docs/api/management/v2/users/delete-refresh-tokens-for-user
"""
@spec delete_refresh_tokens(id, config) ::
{:ok, String.t()} | error
def delete_refresh_tokens(id, %Config{} = config) do
RefreshTokens.Delete.execute(id, config)
end
@doc """
Retrieve details for a user's sessions.
## see
https://auth0.com/docs/api/management/v2/users/get-sessions-for-user
"""
@spec get_sessions(id, map(), config) ::
{:ok, map()} | error
def get_sessions(id, %{} = params, %Config{} = config) do
Sessions.List.execute(id, params, config)
end
@doc """
Delete all sessions for a user.
## see
https://auth0.com/docs/api/management/v2/users/delete-sessions-for-user
"""
@spec delete_sessions(id, config) ::
{:ok, String.t()} | error
def delete_sessions(id, %Config{} = config) do
Sessions.Delete.execute(id, config)
end
end