defmodule Auth0.Management.Guardian do
alias Auth0.Config
alias Auth0.Management.Guardian.Factors
alias Auth0.Management.Guardian.Policies
alias Auth0.Management.Guardian.Enrollments
alias Auth0.Management.Guardian.Factors.Phone
alias Auth0.Management.Guardian.Factors.PushNotification
@type id :: String.t()
@type name :: String.t()
@type config :: Config.t()
@type error :: {:error, integer, term} | {:error, term}
@doc """
Create a multi-factor authentication (MFA) enrollment ticket, and optionally send an email with the created ticket, to a given user.
## see
https://auth0.com/docs/api/management/v2/guardian/post-ticket
"""
@spec create_enrollment_ticket(map(), config) ::
{:ok, map()} | error
def create_enrollment_ticket(%{} = params, %Config{} = config) do
Enrollments.Ticket.execute(params, config)
end
@doc """
Retrieve details, such as status and type, for a specific multi-factor authentication enrollment registered to a user account.
## see
https://auth0.com/docs/api/management/v2/guardian/get-enrollments-by-id
"""
@spec get_enrollment(id, config) ::
{:ok, map()} | error
def get_enrollment(id, %Config{} = config) do
Enrollments.Get.execute(id, config)
end
@doc """
Remove a specific multi-factor authentication (MFA) enrollment from a user's account. This allows the user to re-enroll with MFA.
## see
https://auth0.com/docs/api/management/v2/guardian/delete-enrollments-by-id
"""
@spec delete_enrollment(id, config) :: {:ok, String.t()} | error
def delete_enrollment(id, %Config{} = config) do
Enrollments.Delete.execute(id, config)
end
@doc """
Retrieve details of all multi-factor authentication factors associated with your tenant.
## see
https://auth0.com/docs/api/management/v2/guardian/get-factors
"""
@spec list_factors(config) ::
{:ok, list(map())} | error
def list_factors(%Config{} = config) do
Factors.List.execute(config)
end
@doc """
Retrieve list of phone-type MFA factors (i.e., sms and voice) that are enabled for your tenant.
## see
https://auth0.com/docs/api/management/v2/guardian/get-message-types
"""
@spec get_phone_factor(config) ::
{:ok, map()} | error
def get_phone_factor(%Config{} = config) do
Phone.MessageTypes.Get.execute(config)
end
@doc """
Replace the list of phone-type MFA factors (i.e., sms and voice) that are enabled for your tenant.
## see
https://auth0.com/docs/api/management/v2/guardian/put-message-types
"""
@spec update_phone_factor(map(), config) ::
{:ok, map()} | error
def update_phone_factor(%{} = params, %Config{} = config) do
Phone.MessageTypes.Put.execute(params, config)
end
@doc """
Retrieve configuration details for a Twilio phone provider that has been set up in your tenant.
## see
https://auth0.com/docs/api/management/v2/guardian/get-phone-twilio-factor-provider
"""
@spec get_twilio_phone_configuration(config) ::
{:ok, map()} | error
def get_twilio_phone_configuration(%Config{} = config) do
Phone.Providers.Twilio.Get.execute(config)
end
@doc """
Update the configuration of a Twilio phone provider that has been set up in your tenant.
## see
https://auth0.com/docs/api/management/v2/guardian/put-twilio
"""
@spec update_twilio_phone_configuration(map(), config) ::
{:ok, map()} | error
def update_twilio_phone_configuration(
%{} = params,
%Config{} = config
) do
Phone.Providers.Twilio.Put.execute(params, config)
end
@doc """
Retrieve details of the multi-factor authentication phone provider configured for your tenant.
## see
https://auth0.com/docs/api/management/v2/guardian/get-guardian-phone-providers
"""
@spec get_phone_configuration(config) ::
{:ok, map()} | error
def get_phone_configuration(%Config{} = config) do
Phone.SelectedProviders.Get.execute(config)
end
@doc """
Update phone provider configuration
## see
https://auth0.com/docs/api/management/v2/guardian/put-phone-providers
"""
@spec update_phone_configuration(map(), config) ::
{:ok, map()} | error
def update_phone_configuration(%{} = params, %Config{} = config) do
Phone.SelectedProviders.Put.execute(params, config)
end
@doc """
Retrieve details of the multi-factor authentication enrollment and verification templates for phone-type factors available in your tenant.
## see
https://auth0.com/docs/api/management/v2/guardian/get-factor-phone-templates
"""
@spec get_phone_template(config) ::
{:ok, map()} | error
def get_phone_template(%Config{} = config) do
Phone.Templates.Get.execute(config)
end
@doc """
Customize the messages sent to complete phone enrollment and verification (subscription required).
## see
https://auth0.com/docs/api/management/v2/guardian/put-factor-phone-templates
"""
@spec update_phone_template(map(), config) ::
{:ok, map()} | error
def update_phone_template(%{} = params, %Config{} = config) do
Phone.Templates.Put.execute(params, config)
end
@doc """
Retrieve configuration details for the multi-factor authentication APNS provider associated with your tenant.
## see
https://auth0.com/docs/api/management/v2/guardian/get-apns
"""
@spec get_apns_configuration(config) ::
{:ok, map()} | error
def get_apns_configuration(%Config{} = config) do
PushNotification.Providers.Apns.Get.execute(config)
end
@doc """
Modify configuration details of the multi-factor authentication APNS provider associated with your tenant.
## see
https://auth0.com/docs/api/management/v2/guardian/patch-apns
"""
@spec patch_apns_configuration(map(), config) ::
{:ok, map()} | error
def patch_apns_configuration(
%{} = params,
%Config{} = config
) do
PushNotification.Providers.Apns.Patch.execute(params, config)
end
@doc """
Overwrite all configuration details of the multi-factor authentication APNS provider associated with your tenant.
## see
https://auth0.com/docs/api/management/v2/guardian/put-apns
"""
@spec update_apns_configuration(map(), config) ::
{:ok, map()} | error
def update_apns_configuration(
%{} = params,
%Config{} = config
) do
PushNotification.Providers.Apns.Put.execute(params, config)
end
@doc """
Modify configuration details of the multi-factor authentication FCM provider associated with your tenant.
## see
https://auth0.com/docs/api/management/v2/guardian/patch-fcm
"""
@spec patch_fcm_configuration(map(), config) ::
{:ok, map()} | error
def patch_fcm_configuration(
%{} = params,
%Config{} = config
) do
PushNotification.Providers.Fcm.Patch.execute(params, config)
end
@doc """
Overwrite all configuration details of the multi-factor authentication FCM provider associated with your tenant.
## see
https://auth0.com/docs/api/management/v2/guardian/put-fcm
"""
@spec update_fcm_configuration(map(), config) ::
{:ok, map()} | error
def update_fcm_configuration(
%{} = params,
%Config{} = config
) do
PushNotification.Providers.Fcm.Put.execute(params, config)
end
@doc """
Modify configuration details of the multi-factor authentication FCMV1 provider associated with your tenant.
## see
https://auth0.com/docs/api/management/v2/guardian/patch-fcmv-1
"""
@spec patch_fcmv1_configuration(map(), config) ::
{:ok, map()} | error
def patch_fcmv1_configuration(
%{} = params,
%Config{} = config
) do
PushNotification.Providers.Fcmv1.Patch.execute(params, config)
end
@doc """
Overwrite all configuration details of the multi-factor authentication FCMV1 provider associated with your tenant.
## see
https://auth0.com/docs/api/management/v2/guardian/put-fcmv-1
"""
@spec update_fcmv1_configuration(map(), config) ::
{:ok, map()} | error
def update_fcmv1_configuration(
%{} = params,
%Config{} = config
) do
PushNotification.Providers.Fcmv1.Put.execute(params, config)
end
@doc """
Retrieve configuration details for an AWS SNS push notification provider that has been enabled for MFA.
## see
https://auth0.com/docs/api/management/v2/guardian/get-sns
"""
@spec get_aws_sns_configuration(config) ::
{:ok, map()} | error
def get_aws_sns_configuration(%Config{} = config) do
PushNotification.Providers.Sns.Get.execute(config)
end
@doc """
Configure the AWS SNS push notification provider configuration (subscription required).
## see
https://auth0.com/docs/api/management/v2/guardian/patch-sns
"""
@spec patch_aws_sns_configuration(map(), config) ::
{:ok, map()} | error
def patch_aws_sns_configuration(
%{} = params,
%Config{} = config
) do
PushNotification.Providers.Sns.Patch.execute(params, config)
end
@doc """
Configure the AWS SNS push notification provider configuration (subscription required).
## see
https://auth0.com/docs/api/management/v2/guardian/put-sns
"""
@spec update_aws_sns_configuration(map(), config) ::
{:ok, map()} | error
def update_aws_sns_configuration(
%{} = params,
%Config{} = config
) do
PushNotification.Providers.Sns.Put.execute(params, config)
end
@doc """
Retrieve the push notification provider configured for your tenant.
## see
https://auth0.com/docs/api/management/v2/guardian/get-pn-providers
"""
@spec get_notification_provider(config) ::
{:ok, map()} | error
def get_notification_provider(%Config{} = config) do
PushNotification.SelectedProviders.Get.execute(config)
end
@doc """
Modify the push notification provider configured for your tenant.
## see
https://auth0.com/docs/api/management/v2/guardian/put-pn-providers
"""
@spec update_notification_provider(map(), config) ::
{:ok, map()} | error
def update_notification_provider(
%{} = params,
%Config{} = config
) do
PushNotification.SelectedProviders.Put.execute(params, config)
end
@doc """
Update the status (i.e., enabled or disabled) of a specific multi-factor authentication factor.
## see
https://auth0.com/docs/api/management/v2/guardian/put-factors-by-name
"""
@spec update_factor(name, map(), config) ::
{:ok, map()} | error
def update_factor(name, %{} = params, %Config{} = config) do
Factors.Put.execute(name, params, config)
end
@doc """
Retrieve the multi-factor authentication (MFA) policies configured for your tenant.
## see
https://auth0.com/docs/api/management/v2/guardian/get-policies
"""
@spec list_policies(config) :: {:ok, list()} | error
def list_policies(%Config{} = config) do
Policies.List.execute(config)
end
@doc """
Set multi-factor authentication (MFA) policies for your tenant.
## see
https://auth0.com/docs/api/management/v2/guardian/put-policies
"""
@spec set_policies(map, config) :: {:ok, list()} | error
def set_policies(params, %Config{} = config) do
Policies.Put.execute(params, config)
end
end