# coding=utf-8
# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
# *** Do not edit by hand unless you're certain you know what you are doing! ***

import copy
import warnings
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union, overload
from .. import _utilities
from . import outputs

__all__ = [
    'GetDomainsAuthenticationFactorSettingResult',
    'AwaitableGetDomainsAuthenticationFactorSettingResult',
    'get_domains_authentication_factor_setting',
    'get_domains_authentication_factor_setting_output',
]

@pulumi.output_type
class GetDomainsAuthenticationFactorSettingResult:
    """
    A collection of values returned by getDomainsAuthenticationFactorSetting.
    """
    def __init__(__self__, attribute_sets=None, attributes=None, authentication_factor_setting_id=None, authorization=None, auto_enroll_email_factor_disabled=None, bypass_code_enabled=None, bypass_code_settings=None, client_app_settings=None, compartment_ocid=None, compliance_policies=None, delete_in_progress=None, domain_ocid=None, email_enabled=None, email_settings=None, endpoint_restrictions=None, fido_authenticator_enabled=None, hide_backup_factor_enabled=None, id=None, idcs_created_bies=None, idcs_endpoint=None, idcs_last_modified_bies=None, idcs_last_upgraded_in_release=None, idcs_prevented_operations=None, identity_store_settings=None, metas=None, mfa_enabled_category=None, mfa_enrollment_type=None, notification_settings=None, ocid=None, phone_call_enabled=None, push_enabled=None, resource_type_schema_version=None, schemas=None, security_questions_enabled=None, sms_enabled=None, tags=None, tenancy_ocid=None, third_party_factors=None, totp_enabled=None, totp_settings=None, urnietfparamsscimschemasoracleidcsextensionfido_authentication_factor_settings=None, urnietfparamsscimschemasoracleidcsextensionthird_party_authentication_factor_settings=None, user_enrollment_disabled_factors=None, yubico_otp_enabled=None):
        if attribute_sets and not isinstance(attribute_sets, list):
            raise TypeError("Expected argument 'attribute_sets' to be a list")
        pulumi.set(__self__, "attribute_sets", attribute_sets)
        if attributes and not isinstance(attributes, str):
            raise TypeError("Expected argument 'attributes' to be a str")
        pulumi.set(__self__, "attributes", attributes)
        if authentication_factor_setting_id and not isinstance(authentication_factor_setting_id, str):
            raise TypeError("Expected argument 'authentication_factor_setting_id' to be a str")
        pulumi.set(__self__, "authentication_factor_setting_id", authentication_factor_setting_id)
        if authorization and not isinstance(authorization, str):
            raise TypeError("Expected argument 'authorization' to be a str")
        pulumi.set(__self__, "authorization", authorization)
        if auto_enroll_email_factor_disabled and not isinstance(auto_enroll_email_factor_disabled, bool):
            raise TypeError("Expected argument 'auto_enroll_email_factor_disabled' to be a bool")
        pulumi.set(__self__, "auto_enroll_email_factor_disabled", auto_enroll_email_factor_disabled)
        if bypass_code_enabled and not isinstance(bypass_code_enabled, bool):
            raise TypeError("Expected argument 'bypass_code_enabled' to be a bool")
        pulumi.set(__self__, "bypass_code_enabled", bypass_code_enabled)
        if bypass_code_settings and not isinstance(bypass_code_settings, list):
            raise TypeError("Expected argument 'bypass_code_settings' to be a list")
        pulumi.set(__self__, "bypass_code_settings", bypass_code_settings)
        if client_app_settings and not isinstance(client_app_settings, list):
            raise TypeError("Expected argument 'client_app_settings' to be a list")
        pulumi.set(__self__, "client_app_settings", client_app_settings)
        if compartment_ocid and not isinstance(compartment_ocid, str):
            raise TypeError("Expected argument 'compartment_ocid' to be a str")
        pulumi.set(__self__, "compartment_ocid", compartment_ocid)
        if compliance_policies and not isinstance(compliance_policies, list):
            raise TypeError("Expected argument 'compliance_policies' to be a list")
        pulumi.set(__self__, "compliance_policies", compliance_policies)
        if delete_in_progress and not isinstance(delete_in_progress, bool):
            raise TypeError("Expected argument 'delete_in_progress' to be a bool")
        pulumi.set(__self__, "delete_in_progress", delete_in_progress)
        if domain_ocid and not isinstance(domain_ocid, str):
            raise TypeError("Expected argument 'domain_ocid' to be a str")
        pulumi.set(__self__, "domain_ocid", domain_ocid)
        if email_enabled and not isinstance(email_enabled, bool):
            raise TypeError("Expected argument 'email_enabled' to be a bool")
        pulumi.set(__self__, "email_enabled", email_enabled)
        if email_settings and not isinstance(email_settings, list):
            raise TypeError("Expected argument 'email_settings' to be a list")
        pulumi.set(__self__, "email_settings", email_settings)
        if endpoint_restrictions and not isinstance(endpoint_restrictions, list):
            raise TypeError("Expected argument 'endpoint_restrictions' to be a list")
        pulumi.set(__self__, "endpoint_restrictions", endpoint_restrictions)
        if fido_authenticator_enabled and not isinstance(fido_authenticator_enabled, bool):
            raise TypeError("Expected argument 'fido_authenticator_enabled' to be a bool")
        pulumi.set(__self__, "fido_authenticator_enabled", fido_authenticator_enabled)
        if hide_backup_factor_enabled and not isinstance(hide_backup_factor_enabled, bool):
            raise TypeError("Expected argument 'hide_backup_factor_enabled' to be a bool")
        pulumi.set(__self__, "hide_backup_factor_enabled", hide_backup_factor_enabled)
        if id and not isinstance(id, str):
            raise TypeError("Expected argument 'id' to be a str")
        pulumi.set(__self__, "id", id)
        if idcs_created_bies and not isinstance(idcs_created_bies, list):
            raise TypeError("Expected argument 'idcs_created_bies' to be a list")
        pulumi.set(__self__, "idcs_created_bies", idcs_created_bies)
        if idcs_endpoint and not isinstance(idcs_endpoint, str):
            raise TypeError("Expected argument 'idcs_endpoint' to be a str")
        pulumi.set(__self__, "idcs_endpoint", idcs_endpoint)
        if idcs_last_modified_bies and not isinstance(idcs_last_modified_bies, list):
            raise TypeError("Expected argument 'idcs_last_modified_bies' to be a list")
        pulumi.set(__self__, "idcs_last_modified_bies", idcs_last_modified_bies)
        if idcs_last_upgraded_in_release and not isinstance(idcs_last_upgraded_in_release, str):
            raise TypeError("Expected argument 'idcs_last_upgraded_in_release' to be a str")
        pulumi.set(__self__, "idcs_last_upgraded_in_release", idcs_last_upgraded_in_release)
        if idcs_prevented_operations and not isinstance(idcs_prevented_operations, list):
            raise TypeError("Expected argument 'idcs_prevented_operations' to be a list")
        pulumi.set(__self__, "idcs_prevented_operations", idcs_prevented_operations)
        if identity_store_settings and not isinstance(identity_store_settings, list):
            raise TypeError("Expected argument 'identity_store_settings' to be a list")
        pulumi.set(__self__, "identity_store_settings", identity_store_settings)
        if metas and not isinstance(metas, list):
            raise TypeError("Expected argument 'metas' to be a list")
        pulumi.set(__self__, "metas", metas)
        if mfa_enabled_category and not isinstance(mfa_enabled_category, str):
            raise TypeError("Expected argument 'mfa_enabled_category' to be a str")
        pulumi.set(__self__, "mfa_enabled_category", mfa_enabled_category)
        if mfa_enrollment_type and not isinstance(mfa_enrollment_type, str):
            raise TypeError("Expected argument 'mfa_enrollment_type' to be a str")
        pulumi.set(__self__, "mfa_enrollment_type", mfa_enrollment_type)
        if notification_settings and not isinstance(notification_settings, list):
            raise TypeError("Expected argument 'notification_settings' to be a list")
        pulumi.set(__self__, "notification_settings", notification_settings)
        if ocid and not isinstance(ocid, str):
            raise TypeError("Expected argument 'ocid' to be a str")
        pulumi.set(__self__, "ocid", ocid)
        if phone_call_enabled and not isinstance(phone_call_enabled, bool):
            raise TypeError("Expected argument 'phone_call_enabled' to be a bool")
        pulumi.set(__self__, "phone_call_enabled", phone_call_enabled)
        if push_enabled and not isinstance(push_enabled, bool):
            raise TypeError("Expected argument 'push_enabled' to be a bool")
        pulumi.set(__self__, "push_enabled", push_enabled)
        if resource_type_schema_version and not isinstance(resource_type_schema_version, str):
            raise TypeError("Expected argument 'resource_type_schema_version' to be a str")
        pulumi.set(__self__, "resource_type_schema_version", resource_type_schema_version)
        if schemas and not isinstance(schemas, list):
            raise TypeError("Expected argument 'schemas' to be a list")
        pulumi.set(__self__, "schemas", schemas)
        if security_questions_enabled and not isinstance(security_questions_enabled, bool):
            raise TypeError("Expected argument 'security_questions_enabled' to be a bool")
        pulumi.set(__self__, "security_questions_enabled", security_questions_enabled)
        if sms_enabled and not isinstance(sms_enabled, bool):
            raise TypeError("Expected argument 'sms_enabled' to be a bool")
        pulumi.set(__self__, "sms_enabled", sms_enabled)
        if tags and not isinstance(tags, list):
            raise TypeError("Expected argument 'tags' to be a list")
        pulumi.set(__self__, "tags", tags)
        if tenancy_ocid and not isinstance(tenancy_ocid, str):
            raise TypeError("Expected argument 'tenancy_ocid' to be a str")
        pulumi.set(__self__, "tenancy_ocid", tenancy_ocid)
        if third_party_factors and not isinstance(third_party_factors, list):
            raise TypeError("Expected argument 'third_party_factors' to be a list")
        pulumi.set(__self__, "third_party_factors", third_party_factors)
        if totp_enabled and not isinstance(totp_enabled, bool):
            raise TypeError("Expected argument 'totp_enabled' to be a bool")
        pulumi.set(__self__, "totp_enabled", totp_enabled)
        if totp_settings and not isinstance(totp_settings, list):
            raise TypeError("Expected argument 'totp_settings' to be a list")
        pulumi.set(__self__, "totp_settings", totp_settings)
        if urnietfparamsscimschemasoracleidcsextensionfido_authentication_factor_settings and not isinstance(urnietfparamsscimschemasoracleidcsextensionfido_authentication_factor_settings, list):
            raise TypeError("Expected argument 'urnietfparamsscimschemasoracleidcsextensionfido_authentication_factor_settings' to be a list")
        pulumi.set(__self__, "urnietfparamsscimschemasoracleidcsextensionfido_authentication_factor_settings", urnietfparamsscimschemasoracleidcsextensionfido_authentication_factor_settings)
        if urnietfparamsscimschemasoracleidcsextensionthird_party_authentication_factor_settings and not isinstance(urnietfparamsscimschemasoracleidcsextensionthird_party_authentication_factor_settings, list):
            raise TypeError("Expected argument 'urnietfparamsscimschemasoracleidcsextensionthird_party_authentication_factor_settings' to be a list")
        pulumi.set(__self__, "urnietfparamsscimschemasoracleidcsextensionthird_party_authentication_factor_settings", urnietfparamsscimschemasoracleidcsextensionthird_party_authentication_factor_settings)
        if user_enrollment_disabled_factors and not isinstance(user_enrollment_disabled_factors, list):
            raise TypeError("Expected argument 'user_enrollment_disabled_factors' to be a list")
        pulumi.set(__self__, "user_enrollment_disabled_factors", user_enrollment_disabled_factors)
        if yubico_otp_enabled and not isinstance(yubico_otp_enabled, bool):
            raise TypeError("Expected argument 'yubico_otp_enabled' to be a bool")
        pulumi.set(__self__, "yubico_otp_enabled", yubico_otp_enabled)

    @property
    @pulumi.getter(name="attributeSets")
    def attribute_sets(self) -> Optional[Sequence[str]]:
        return pulumi.get(self, "attribute_sets")

    @property
    @pulumi.getter
    def attributes(self) -> Optional[str]:
        return pulumi.get(self, "attributes")

    @property
    @pulumi.getter(name="authenticationFactorSettingId")
    def authentication_factor_setting_id(self) -> Optional[str]:
        return pulumi.get(self, "authentication_factor_setting_id")

    @property
    @pulumi.getter
    def authorization(self) -> Optional[str]:
        return pulumi.get(self, "authorization")

    @property
    @pulumi.getter(name="autoEnrollEmailFactorDisabled")
    def auto_enroll_email_factor_disabled(self) -> bool:
        """
        If true, indicates that email will not be enrolled as a MFA factor automatically if it a account recovery factor
        """
        return pulumi.get(self, "auto_enroll_email_factor_disabled")

    @property
    @pulumi.getter(name="bypassCodeEnabled")
    def bypass_code_enabled(self) -> bool:
        """
        If true, indicates that Bypass Code is enabled for authentication
        """
        return pulumi.get(self, "bypass_code_enabled")

    @property
    @pulumi.getter(name="bypassCodeSettings")
    def bypass_code_settings(self) -> Sequence['outputs.GetDomainsAuthenticationFactorSettingBypassCodeSettingResult']:
        """
        Settings related to the bypass code, such as bypass code length, bypass code expiry, max active bypass codes, and so on
        """
        return pulumi.get(self, "bypass_code_settings")

    @property
    @pulumi.getter(name="clientAppSettings")
    def client_app_settings(self) -> Sequence['outputs.GetDomainsAuthenticationFactorSettingClientAppSettingResult']:
        """
        Settings related to compliance, Personal Identification Number (PIN) policy, and so on
        """
        return pulumi.get(self, "client_app_settings")

    @property
    @pulumi.getter(name="compartmentOcid")
    def compartment_ocid(self) -> str:
        """
        Oracle Cloud Infrastructure Compartment Id (ocid) in which the resource lives.
        """
        return pulumi.get(self, "compartment_ocid")

    @property
    @pulumi.getter(name="compliancePolicies")
    def compliance_policies(self) -> Sequence['outputs.GetDomainsAuthenticationFactorSettingCompliancePolicyResult']:
        """
        Compliance Policy that defines actions to be taken when a condition is violated
        """
        return pulumi.get(self, "compliance_policies")

    @property
    @pulumi.getter(name="deleteInProgress")
    def delete_in_progress(self) -> bool:
        """
        A boolean flag indicating this resource in the process of being deleted. Usually set to true when synchronous deletion of the resource would take too long.
        """
        return pulumi.get(self, "delete_in_progress")

    @property
    @pulumi.getter(name="domainOcid")
    def domain_ocid(self) -> str:
        """
        Oracle Cloud Infrastructure Domain Id (ocid) in which the resource lives.
        """
        return pulumi.get(self, "domain_ocid")

    @property
    @pulumi.getter(name="emailEnabled")
    def email_enabled(self) -> bool:
        """
        If true, indicates that the EMAIL channel is enabled for authentication
        """
        return pulumi.get(self, "email_enabled")

    @property
    @pulumi.getter(name="emailSettings")
    def email_settings(self) -> Sequence['outputs.GetDomainsAuthenticationFactorSettingEmailSettingResult']:
        """
        Settings related to Email Factor, such as enabled email magic link factor, custom url for Email Link
        """
        return pulumi.get(self, "email_settings")

    @property
    @pulumi.getter(name="endpointRestrictions")
    def endpoint_restrictions(self) -> Sequence['outputs.GetDomainsAuthenticationFactorSettingEndpointRestrictionResult']:
        """
        Settings that describe the set of restrictions that the system should apply to devices and trusted endpoints of a user
        """
        return pulumi.get(self, "endpoint_restrictions")

    @property
    @pulumi.getter(name="fidoAuthenticatorEnabled")
    def fido_authenticator_enabled(self) -> bool:
        """
        If true, indicates that the Fido Authenticator channels are enabled for authentication
        """
        return pulumi.get(self, "fido_authenticator_enabled")

    @property
    @pulumi.getter(name="hideBackupFactorEnabled")
    def hide_backup_factor_enabled(self) -> bool:
        """
        If true, indicates that 'Show backup factor(s)' button will be hidden during authentication
        """
        return pulumi.get(self, "hide_backup_factor_enabled")

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        Unique identifier for the SCIM Resource as defined by the Service Provider. Each representation of the Resource MUST include a non-empty id value. This identifier MUST be unique across the Service Provider's entire set of Resources. It MUST be a stable, non-reassignable identifier that does not change when the same Resource is returned in subsequent requests. The value of the id attribute is always issued by the Service Provider and MUST never be specified by the Service Consumer. bulkId: is a reserved keyword and MUST NOT be used in the unique identifier.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter(name="idcsCreatedBies")
    def idcs_created_bies(self) -> Sequence['outputs.GetDomainsAuthenticationFactorSettingIdcsCreatedByResult']:
        """
        The User or App who created the Resource
        """
        return pulumi.get(self, "idcs_created_bies")

    @property
    @pulumi.getter(name="idcsEndpoint")
    def idcs_endpoint(self) -> str:
        return pulumi.get(self, "idcs_endpoint")

    @property
    @pulumi.getter(name="idcsLastModifiedBies")
    def idcs_last_modified_bies(self) -> Sequence['outputs.GetDomainsAuthenticationFactorSettingIdcsLastModifiedByResult']:
        """
        The User or App who modified the Resource
        """
        return pulumi.get(self, "idcs_last_modified_bies")

    @property
    @pulumi.getter(name="idcsLastUpgradedInRelease")
    def idcs_last_upgraded_in_release(self) -> str:
        """
        The release number when the resource was upgraded.
        """
        return pulumi.get(self, "idcs_last_upgraded_in_release")

    @property
    @pulumi.getter(name="idcsPreventedOperations")
    def idcs_prevented_operations(self) -> Sequence[str]:
        """
        Each value of this attribute specifies an operation that only an internal client may perform on this particular resource.
        """
        return pulumi.get(self, "idcs_prevented_operations")

    @property
    @pulumi.getter(name="identityStoreSettings")
    def identity_store_settings(self) -> Sequence['outputs.GetDomainsAuthenticationFactorSettingIdentityStoreSettingResult']:
        """
        Settings related to the use of a user's profile details from the identity store
        """
        return pulumi.get(self, "identity_store_settings")

    @property
    @pulumi.getter
    def metas(self) -> Sequence['outputs.GetDomainsAuthenticationFactorSettingMetaResult']:
        """
        A complex attribute that contains resource metadata. All sub-attributes are OPTIONAL.
        """
        return pulumi.get(self, "metas")

    @property
    @pulumi.getter(name="mfaEnabledCategory")
    def mfa_enabled_category(self) -> str:
        """
        Specifies the category of people for whom Multi-Factor Authentication is enabled. This is a readOnly attribute which reflects the value of mfaEnabledCategory attribute in SsoSettings
        """
        return pulumi.get(self, "mfa_enabled_category")

    @property
    @pulumi.getter(name="mfaEnrollmentType")
    def mfa_enrollment_type(self) -> str:
        """
        Specifies if Multi-Factor Authentication enrollment is mandatory or optional for a user
        """
        return pulumi.get(self, "mfa_enrollment_type")

    @property
    @pulumi.getter(name="notificationSettings")
    def notification_settings(self) -> Sequence['outputs.GetDomainsAuthenticationFactorSettingNotificationSettingResult']:
        """
        Settings related to the Mobile App Notification channel, such as pull
        """
        return pulumi.get(self, "notification_settings")

    @property
    @pulumi.getter
    def ocid(self) -> str:
        """
        Unique Oracle Cloud Infrastructure identifier for the SCIM Resource.
        """
        return pulumi.get(self, "ocid")

    @property
    @pulumi.getter(name="phoneCallEnabled")
    def phone_call_enabled(self) -> bool:
        """
        If true, indicates that the phone (PHONE_CALL) channel is enabled for authentication
        """
        return pulumi.get(self, "phone_call_enabled")

    @property
    @pulumi.getter(name="pushEnabled")
    def push_enabled(self) -> bool:
        """
        If true, indicates that the Mobile App Push Notification channel is enabled for authentication
        """
        return pulumi.get(self, "push_enabled")

    @property
    @pulumi.getter(name="resourceTypeSchemaVersion")
    def resource_type_schema_version(self) -> Optional[str]:
        return pulumi.get(self, "resource_type_schema_version")

    @property
    @pulumi.getter
    def schemas(self) -> Sequence[str]:
        """
        REQUIRED. The schemas attribute is an array of Strings which allows introspection of the supported schema version for a SCIM representation as well any schema extensions supported by that representation. Each String value must be a unique URI. This specification defines URIs for User, Group, and a standard \\"enterprise\\" extension. All representations of SCIM schema MUST include a non-zero value array with value(s) of the URIs supported by that representation. Duplicate values MUST NOT be included. Value order is not specified and MUST not impact behavior.
        """
        return pulumi.get(self, "schemas")

    @property
    @pulumi.getter(name="securityQuestionsEnabled")
    def security_questions_enabled(self) -> bool:
        """
        If true, indicates that Security Questions are enabled for authentication
        """
        return pulumi.get(self, "security_questions_enabled")

    @property
    @pulumi.getter(name="smsEnabled")
    def sms_enabled(self) -> bool:
        """
        If true, indicates that the Short Message Service (SMS) channel is enabled for authentication
        """
        return pulumi.get(self, "sms_enabled")

    @property
    @pulumi.getter
    def tags(self) -> Sequence['outputs.GetDomainsAuthenticationFactorSettingTagResult']:
        """
        A list of tags on this resource.
        """
        return pulumi.get(self, "tags")

    @property
    @pulumi.getter(name="tenancyOcid")
    def tenancy_ocid(self) -> str:
        """
        Oracle Cloud Infrastructure Tenant Id (ocid) in which the resource lives.
        """
        return pulumi.get(self, "tenancy_ocid")

    @property
    @pulumi.getter(name="thirdPartyFactors")
    def third_party_factors(self) -> Sequence['outputs.GetDomainsAuthenticationFactorSettingThirdPartyFactorResult']:
        """
        Settings related to third-party factor
        """
        return pulumi.get(self, "third_party_factors")

    @property
    @pulumi.getter(name="totpEnabled")
    def totp_enabled(self) -> bool:
        """
        If true, indicates that the Mobile App One Time Passcode channel is enabled for authentication
        """
        return pulumi.get(self, "totp_enabled")

    @property
    @pulumi.getter(name="totpSettings")
    def totp_settings(self) -> Sequence['outputs.GetDomainsAuthenticationFactorSettingTotpSettingResult']:
        """
        Settings related to Time-Based One-Time Passcodes (TOTP), such as hashing algo, totp time step, passcode length, and so on
        """
        return pulumi.get(self, "totp_settings")

    @property
    @pulumi.getter(name="urnietfparamsscimschemasoracleidcsextensionfidoAuthenticationFactorSettings")
    def urnietfparamsscimschemasoracleidcsextensionfido_authentication_factor_settings(self) -> Sequence['outputs.GetDomainsAuthenticationFactorSettingUrnietfparamsscimschemasoracleidcsextensionfidoAuthenticationFactorSettingResult']:
        """
        This extension defines attributes used to manage Multi-Factor Authentication settings of fido authentication
        """
        return pulumi.get(self, "urnietfparamsscimschemasoracleidcsextensionfido_authentication_factor_settings")

    @property
    @pulumi.getter(name="urnietfparamsscimschemasoracleidcsextensionthirdPartyAuthenticationFactorSettings")
    def urnietfparamsscimschemasoracleidcsextensionthird_party_authentication_factor_settings(self) -> Sequence['outputs.GetDomainsAuthenticationFactorSettingUrnietfparamsscimschemasoracleidcsextensionthirdPartyAuthenticationFactorSettingResult']:
        """
        This extension defines attributes used to manage Multi-Factor Authentication settings of third party provider
        """
        return pulumi.get(self, "urnietfparamsscimschemasoracleidcsextensionthird_party_authentication_factor_settings")

    @property
    @pulumi.getter(name="userEnrollmentDisabledFactors")
    def user_enrollment_disabled_factors(self) -> Sequence[str]:
        """
        Factors for which enrollment should be blocked for End User
        """
        return pulumi.get(self, "user_enrollment_disabled_factors")

    @property
    @pulumi.getter(name="yubicoOtpEnabled")
    def yubico_otp_enabled(self) -> bool:
        """
        If true, indicates that the Yubico OTP is enabled for authentication
        """
        return pulumi.get(self, "yubico_otp_enabled")


class AwaitableGetDomainsAuthenticationFactorSettingResult(GetDomainsAuthenticationFactorSettingResult):
    # pylint: disable=using-constant-test
    def __await__(self):
        if False:
            yield self
        return GetDomainsAuthenticationFactorSettingResult(
            attribute_sets=self.attribute_sets,
            attributes=self.attributes,
            authentication_factor_setting_id=self.authentication_factor_setting_id,
            authorization=self.authorization,
            auto_enroll_email_factor_disabled=self.auto_enroll_email_factor_disabled,
            bypass_code_enabled=self.bypass_code_enabled,
            bypass_code_settings=self.bypass_code_settings,
            client_app_settings=self.client_app_settings,
            compartment_ocid=self.compartment_ocid,
            compliance_policies=self.compliance_policies,
            delete_in_progress=self.delete_in_progress,
            domain_ocid=self.domain_ocid,
            email_enabled=self.email_enabled,
            email_settings=self.email_settings,
            endpoint_restrictions=self.endpoint_restrictions,
            fido_authenticator_enabled=self.fido_authenticator_enabled,
            hide_backup_factor_enabled=self.hide_backup_factor_enabled,
            id=self.id,
            idcs_created_bies=self.idcs_created_bies,
            idcs_endpoint=self.idcs_endpoint,
            idcs_last_modified_bies=self.idcs_last_modified_bies,
            idcs_last_upgraded_in_release=self.idcs_last_upgraded_in_release,
            idcs_prevented_operations=self.idcs_prevented_operations,
            identity_store_settings=self.identity_store_settings,
            metas=self.metas,
            mfa_enabled_category=self.mfa_enabled_category,
            mfa_enrollment_type=self.mfa_enrollment_type,
            notification_settings=self.notification_settings,
            ocid=self.ocid,
            phone_call_enabled=self.phone_call_enabled,
            push_enabled=self.push_enabled,
            resource_type_schema_version=self.resource_type_schema_version,
            schemas=self.schemas,
            security_questions_enabled=self.security_questions_enabled,
            sms_enabled=self.sms_enabled,
            tags=self.tags,
            tenancy_ocid=self.tenancy_ocid,
            third_party_factors=self.third_party_factors,
            totp_enabled=self.totp_enabled,
            totp_settings=self.totp_settings,
            urnietfparamsscimschemasoracleidcsextensionfido_authentication_factor_settings=self.urnietfparamsscimschemasoracleidcsextensionfido_authentication_factor_settings,
            urnietfparamsscimschemasoracleidcsextensionthird_party_authentication_factor_settings=self.urnietfparamsscimschemasoracleidcsextensionthird_party_authentication_factor_settings,
            user_enrollment_disabled_factors=self.user_enrollment_disabled_factors,
            yubico_otp_enabled=self.yubico_otp_enabled)


def get_domains_authentication_factor_setting(attribute_sets: Optional[Sequence[str]] = None,
                                              attributes: Optional[str] = None,
                                              authentication_factor_setting_id: Optional[str] = None,
                                              authorization: Optional[str] = None,
                                              idcs_endpoint: Optional[str] = None,
                                              resource_type_schema_version: Optional[str] = None,
                                              opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetDomainsAuthenticationFactorSettingResult:
    """
    This data source provides details about a specific Authentication Factor Setting resource in Oracle Cloud Infrastructure Identity Domains service.

    Get Authentication Factor Settings

    ## Example Usage

    ```python
    import pulumi
    import pulumi_oci as oci

    test_authentication_factor_setting = oci.Identity.get_domains_authentication_factor_setting(authentication_factor_setting_id=%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference),
        idcs_endpoint=%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference),
        attribute_sets=[],
        attributes="",
        authorization=%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference),
        resource_type_schema_version=%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference))
    ```


    :param Sequence[str] attribute_sets: A multi-valued list of strings indicating the return type of attribute definition. The specified set of attributes can be fetched by the return type of the attribute. One or more values can be given together to fetch more than one group of attributes. If 'attributes' query parameter is also available, union of the two is fetched. Valid values - all, always, never, request, default. Values are case-insensitive.
    :param str attributes: A comma-delimited string that specifies the names of resource attributes that should be returned in the response. By default, a response that contains resource attributes contains only attributes that are defined in the schema for that resource type as returned=always or returned=default. An attribute that is defined as returned=request is returned in a response only if the request specifies its name in the value of this query parameter. If a request specifies this query parameter, the response contains the attributes that this query parameter specifies, as well as any attribute that is defined as returned=always.
    :param str authentication_factor_setting_id: ID of the resource
    :param str authorization: The Authorization field value consists of credentials containing the authentication information of the user agent for the realm of the resource being requested.
    :param str idcs_endpoint: The basic endpoint for the identity domain
    :param str resource_type_schema_version: An endpoint-specific schema version number to use in the Request. Allowed version values are Earliest Version or Latest Version as specified in each REST API endpoint description, or any sequential number inbetween. All schema attributes/body parameters are a part of version 1. After version 1, any attributes added or deprecated will be tagged with the version that they were added to or deprecated in. If no version is provided, the latest schema version is returned.
    """
    __args__ = dict()
    __args__['attributeSets'] = attribute_sets
    __args__['attributes'] = attributes
    __args__['authenticationFactorSettingId'] = authentication_factor_setting_id
    __args__['authorization'] = authorization
    __args__['idcsEndpoint'] = idcs_endpoint
    __args__['resourceTypeSchemaVersion'] = resource_type_schema_version
    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
    __ret__ = pulumi.runtime.invoke('oci:Identity/getDomainsAuthenticationFactorSetting:getDomainsAuthenticationFactorSetting', __args__, opts=opts, typ=GetDomainsAuthenticationFactorSettingResult).value

    return AwaitableGetDomainsAuthenticationFactorSettingResult(
        attribute_sets=__ret__.attribute_sets,
        attributes=__ret__.attributes,
        authentication_factor_setting_id=__ret__.authentication_factor_setting_id,
        authorization=__ret__.authorization,
        auto_enroll_email_factor_disabled=__ret__.auto_enroll_email_factor_disabled,
        bypass_code_enabled=__ret__.bypass_code_enabled,
        bypass_code_settings=__ret__.bypass_code_settings,
        client_app_settings=__ret__.client_app_settings,
        compartment_ocid=__ret__.compartment_ocid,
        compliance_policies=__ret__.compliance_policies,
        delete_in_progress=__ret__.delete_in_progress,
        domain_ocid=__ret__.domain_ocid,
        email_enabled=__ret__.email_enabled,
        email_settings=__ret__.email_settings,
        endpoint_restrictions=__ret__.endpoint_restrictions,
        fido_authenticator_enabled=__ret__.fido_authenticator_enabled,
        hide_backup_factor_enabled=__ret__.hide_backup_factor_enabled,
        id=__ret__.id,
        idcs_created_bies=__ret__.idcs_created_bies,
        idcs_endpoint=__ret__.idcs_endpoint,
        idcs_last_modified_bies=__ret__.idcs_last_modified_bies,
        idcs_last_upgraded_in_release=__ret__.idcs_last_upgraded_in_release,
        idcs_prevented_operations=__ret__.idcs_prevented_operations,
        identity_store_settings=__ret__.identity_store_settings,
        metas=__ret__.metas,
        mfa_enabled_category=__ret__.mfa_enabled_category,
        mfa_enrollment_type=__ret__.mfa_enrollment_type,
        notification_settings=__ret__.notification_settings,
        ocid=__ret__.ocid,
        phone_call_enabled=__ret__.phone_call_enabled,
        push_enabled=__ret__.push_enabled,
        resource_type_schema_version=__ret__.resource_type_schema_version,
        schemas=__ret__.schemas,
        security_questions_enabled=__ret__.security_questions_enabled,
        sms_enabled=__ret__.sms_enabled,
        tags=__ret__.tags,
        tenancy_ocid=__ret__.tenancy_ocid,
        third_party_factors=__ret__.third_party_factors,
        totp_enabled=__ret__.totp_enabled,
        totp_settings=__ret__.totp_settings,
        urnietfparamsscimschemasoracleidcsextensionfido_authentication_factor_settings=__ret__.urnietfparamsscimschemasoracleidcsextensionfido_authentication_factor_settings,
        urnietfparamsscimschemasoracleidcsextensionthird_party_authentication_factor_settings=__ret__.urnietfparamsscimschemasoracleidcsextensionthird_party_authentication_factor_settings,
        user_enrollment_disabled_factors=__ret__.user_enrollment_disabled_factors,
        yubico_otp_enabled=__ret__.yubico_otp_enabled)


@_utilities.lift_output_func(get_domains_authentication_factor_setting)
def get_domains_authentication_factor_setting_output(attribute_sets: Optional[pulumi.Input[Optional[Sequence[str]]]] = None,
                                                     attributes: Optional[pulumi.Input[Optional[str]]] = None,
                                                     authentication_factor_setting_id: Optional[pulumi.Input[Optional[str]]] = None,
                                                     authorization: Optional[pulumi.Input[Optional[str]]] = None,
                                                     idcs_endpoint: Optional[pulumi.Input[str]] = None,
                                                     resource_type_schema_version: Optional[pulumi.Input[Optional[str]]] = None,
                                                     opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetDomainsAuthenticationFactorSettingResult]:
    """
    This data source provides details about a specific Authentication Factor Setting resource in Oracle Cloud Infrastructure Identity Domains service.

    Get Authentication Factor Settings

    ## Example Usage

    ```python
    import pulumi
    import pulumi_oci as oci

    test_authentication_factor_setting = oci.Identity.get_domains_authentication_factor_setting(authentication_factor_setting_id=%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference),
        idcs_endpoint=%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference),
        attribute_sets=[],
        attributes="",
        authorization=%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference),
        resource_type_schema_version=%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference))
    ```


    :param Sequence[str] attribute_sets: A multi-valued list of strings indicating the return type of attribute definition. The specified set of attributes can be fetched by the return type of the attribute. One or more values can be given together to fetch more than one group of attributes. If 'attributes' query parameter is also available, union of the two is fetched. Valid values - all, always, never, request, default. Values are case-insensitive.
    :param str attributes: A comma-delimited string that specifies the names of resource attributes that should be returned in the response. By default, a response that contains resource attributes contains only attributes that are defined in the schema for that resource type as returned=always or returned=default. An attribute that is defined as returned=request is returned in a response only if the request specifies its name in the value of this query parameter. If a request specifies this query parameter, the response contains the attributes that this query parameter specifies, as well as any attribute that is defined as returned=always.
    :param str authentication_factor_setting_id: ID of the resource
    :param str authorization: The Authorization field value consists of credentials containing the authentication information of the user agent for the realm of the resource being requested.
    :param str idcs_endpoint: The basic endpoint for the identity domain
    :param str resource_type_schema_version: An endpoint-specific schema version number to use in the Request. Allowed version values are Earliest Version or Latest Version as specified in each REST API endpoint description, or any sequential number inbetween. All schema attributes/body parameters are a part of version 1. After version 1, any attributes added or deprecated will be tagged with the version that they were added to or deprecated in. If no version is provided, the latest schema version is returned.
    """
    ...
