# coding=utf-8
# *** WARNING: this file was generated by pulumi-language-python. ***
# *** Do not edit by hand unless you're certain you know what you are doing! ***

import builtins as _builtins
import warnings
import sys
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union, overload
if sys.version_info >= (3, 11):
    from typing import NotRequired, TypedDict, TypeAlias
else:
    from typing_extensions import NotRequired, TypedDict, TypeAlias
from .. import _utilities

__all__ = [
    'RuleIdpDiscoveryAppExcludeArgs',
    'RuleIdpDiscoveryAppExcludeArgsDict',
    'RuleIdpDiscoveryAppIncludeArgs',
    'RuleIdpDiscoveryAppIncludeArgsDict',
    'RuleIdpDiscoveryIdpProviderArgs',
    'RuleIdpDiscoveryIdpProviderArgsDict',
    'RuleIdpDiscoveryPlatformIncludeArgs',
    'RuleIdpDiscoveryPlatformIncludeArgsDict',
    'RuleIdpDiscoveryUserIdentifierPatternArgs',
    'RuleIdpDiscoveryUserIdentifierPatternArgsDict',
    'RuleMfaAppExcludeArgs',
    'RuleMfaAppExcludeArgsDict',
    'RuleMfaAppIncludeArgs',
    'RuleMfaAppIncludeArgsDict',
    'RuleSignonFactorSequenceArgs',
    'RuleSignonFactorSequenceArgsDict',
    'RuleSignonFactorSequenceSecondaryCriteriaArgs',
    'RuleSignonFactorSequenceSecondaryCriteriaArgsDict',
]

MYPY = False

if not MYPY:
    class RuleIdpDiscoveryAppExcludeArgsDict(TypedDict):
        type: pulumi.Input[_builtins.str]
        id: NotRequired[pulumi.Input[_builtins.str]]
        name: NotRequired[pulumi.Input[_builtins.str]]
elif False:
    RuleIdpDiscoveryAppExcludeArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class RuleIdpDiscoveryAppExcludeArgs:
    def __init__(__self__, *,
                 type: pulumi.Input[_builtins.str],
                 id: Optional[pulumi.Input[_builtins.str]] = None,
                 name: Optional[pulumi.Input[_builtins.str]] = None):
        pulumi.set(__self__, "type", type)
        if id is not None:
            pulumi.set(__self__, "id", id)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def type(self) -> pulumi.Input[_builtins.str]:
        return pulumi.get(self, "type")

    @type.setter
    def type(self, value: pulumi.Input[_builtins.str]):
        pulumi.set(self, "type", value)

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

    @id.setter
    def id(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "id", value)

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

    @name.setter
    def name(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "name", value)


if not MYPY:
    class RuleIdpDiscoveryAppIncludeArgsDict(TypedDict):
        type: pulumi.Input[_builtins.str]
        id: NotRequired[pulumi.Input[_builtins.str]]
        name: NotRequired[pulumi.Input[_builtins.str]]
elif False:
    RuleIdpDiscoveryAppIncludeArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class RuleIdpDiscoveryAppIncludeArgs:
    def __init__(__self__, *,
                 type: pulumi.Input[_builtins.str],
                 id: Optional[pulumi.Input[_builtins.str]] = None,
                 name: Optional[pulumi.Input[_builtins.str]] = None):
        pulumi.set(__self__, "type", type)
        if id is not None:
            pulumi.set(__self__, "id", id)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def type(self) -> pulumi.Input[_builtins.str]:
        return pulumi.get(self, "type")

    @type.setter
    def type(self, value: pulumi.Input[_builtins.str]):
        pulumi.set(self, "type", value)

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

    @id.setter
    def id(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "id", value)

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

    @name.setter
    def name(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "name", value)


if not MYPY:
    class RuleIdpDiscoveryIdpProviderArgsDict(TypedDict):
        id: NotRequired[pulumi.Input[_builtins.str]]
        """
        The identifier for the Idp the rule should route to if all conditions are met.
        """
        type: NotRequired[pulumi.Input[_builtins.str]]
        """
        Type of IdP. One of: `AMAZON`, `APPLE`, `DISCORD`, `FACEBOOK`, `GITHUB`, `GITLAB`, `GOOGLE`, `IDV_CLEAR`, `IDV_INCODE`, `IDV_PERSONA`, `LINKEDIN`, `LOGINGOV`, `LOGINGOV_SANDBOX`, `MICROSOFT`, `OIDC`, `PAYPAL`, `PAYPAL_SANDBOX`, `SALESFORCE`, `SAML2`, `SPOTIFY`, `X509`, `XERO`, `YAHOO`, `YAHOOJP`, Default: `OKTA`
        """
elif False:
    RuleIdpDiscoveryIdpProviderArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class RuleIdpDiscoveryIdpProviderArgs:
    def __init__(__self__, *,
                 id: Optional[pulumi.Input[_builtins.str]] = None,
                 type: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[_builtins.str] id: The identifier for the Idp the rule should route to if all conditions are met.
        :param pulumi.Input[_builtins.str] type: Type of IdP. One of: `AMAZON`, `APPLE`, `DISCORD`, `FACEBOOK`, `GITHUB`, `GITLAB`, `GOOGLE`, `IDV_CLEAR`, `IDV_INCODE`, `IDV_PERSONA`, `LINKEDIN`, `LOGINGOV`, `LOGINGOV_SANDBOX`, `MICROSOFT`, `OIDC`, `PAYPAL`, `PAYPAL_SANDBOX`, `SALESFORCE`, `SAML2`, `SPOTIFY`, `X509`, `XERO`, `YAHOO`, `YAHOOJP`, Default: `OKTA`
        """
        if id is not None:
            pulumi.set(__self__, "id", id)
        if type is not None:
            pulumi.set(__self__, "type", type)

    @_builtins.property
    @pulumi.getter
    def id(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The identifier for the Idp the rule should route to if all conditions are met.
        """
        return pulumi.get(self, "id")

    @id.setter
    def id(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "id", value)

    @_builtins.property
    @pulumi.getter
    def type(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Type of IdP. One of: `AMAZON`, `APPLE`, `DISCORD`, `FACEBOOK`, `GITHUB`, `GITLAB`, `GOOGLE`, `IDV_CLEAR`, `IDV_INCODE`, `IDV_PERSONA`, `LINKEDIN`, `LOGINGOV`, `LOGINGOV_SANDBOX`, `MICROSOFT`, `OIDC`, `PAYPAL`, `PAYPAL_SANDBOX`, `SALESFORCE`, `SAML2`, `SPOTIFY`, `X509`, `XERO`, `YAHOO`, `YAHOOJP`, Default: `OKTA`
        """
        return pulumi.get(self, "type")

    @type.setter
    def type(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "type", value)


if not MYPY:
    class RuleIdpDiscoveryPlatformIncludeArgsDict(TypedDict):
        os_expression: NotRequired[pulumi.Input[_builtins.str]]
        """
        Only available with OTHER OS type
        """
        os_type: NotRequired[pulumi.Input[_builtins.str]]
        type: NotRequired[pulumi.Input[_builtins.str]]
elif False:
    RuleIdpDiscoveryPlatformIncludeArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class RuleIdpDiscoveryPlatformIncludeArgs:
    def __init__(__self__, *,
                 os_expression: Optional[pulumi.Input[_builtins.str]] = None,
                 os_type: Optional[pulumi.Input[_builtins.str]] = None,
                 type: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[_builtins.str] os_expression: Only available with OTHER OS type
        """
        if os_expression is not None:
            pulumi.set(__self__, "os_expression", os_expression)
        if os_type is not None:
            pulumi.set(__self__, "os_type", os_type)
        if type is not None:
            pulumi.set(__self__, "type", type)

    @_builtins.property
    @pulumi.getter(name="osExpression")
    def os_expression(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Only available with OTHER OS type
        """
        return pulumi.get(self, "os_expression")

    @os_expression.setter
    def os_expression(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "os_expression", value)

    @_builtins.property
    @pulumi.getter(name="osType")
    def os_type(self) -> Optional[pulumi.Input[_builtins.str]]:
        return pulumi.get(self, "os_type")

    @os_type.setter
    def os_type(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "os_type", value)

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

    @type.setter
    def type(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "type", value)


if not MYPY:
    class RuleIdpDiscoveryUserIdentifierPatternArgsDict(TypedDict):
        match_type: NotRequired[pulumi.Input[_builtins.str]]
        value: NotRequired[pulumi.Input[_builtins.str]]
elif False:
    RuleIdpDiscoveryUserIdentifierPatternArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class RuleIdpDiscoveryUserIdentifierPatternArgs:
    def __init__(__self__, *,
                 match_type: Optional[pulumi.Input[_builtins.str]] = None,
                 value: Optional[pulumi.Input[_builtins.str]] = None):
        if match_type is not None:
            pulumi.set(__self__, "match_type", match_type)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter(name="matchType")
    def match_type(self) -> Optional[pulumi.Input[_builtins.str]]:
        return pulumi.get(self, "match_type")

    @match_type.setter
    def match_type(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "match_type", value)

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

    @value.setter
    def value(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "value", value)


if not MYPY:
    class RuleMfaAppExcludeArgsDict(TypedDict):
        type: pulumi.Input[_builtins.str]
        id: NotRequired[pulumi.Input[_builtins.str]]
        name: NotRequired[pulumi.Input[_builtins.str]]
elif False:
    RuleMfaAppExcludeArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class RuleMfaAppExcludeArgs:
    def __init__(__self__, *,
                 type: pulumi.Input[_builtins.str],
                 id: Optional[pulumi.Input[_builtins.str]] = None,
                 name: Optional[pulumi.Input[_builtins.str]] = None):
        pulumi.set(__self__, "type", type)
        if id is not None:
            pulumi.set(__self__, "id", id)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def type(self) -> pulumi.Input[_builtins.str]:
        return pulumi.get(self, "type")

    @type.setter
    def type(self, value: pulumi.Input[_builtins.str]):
        pulumi.set(self, "type", value)

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

    @id.setter
    def id(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "id", value)

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

    @name.setter
    def name(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "name", value)


if not MYPY:
    class RuleMfaAppIncludeArgsDict(TypedDict):
        type: pulumi.Input[_builtins.str]
        id: NotRequired[pulumi.Input[_builtins.str]]
        name: NotRequired[pulumi.Input[_builtins.str]]
elif False:
    RuleMfaAppIncludeArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class RuleMfaAppIncludeArgs:
    def __init__(__self__, *,
                 type: pulumi.Input[_builtins.str],
                 id: Optional[pulumi.Input[_builtins.str]] = None,
                 name: Optional[pulumi.Input[_builtins.str]] = None):
        pulumi.set(__self__, "type", type)
        if id is not None:
            pulumi.set(__self__, "id", id)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def type(self) -> pulumi.Input[_builtins.str]:
        return pulumi.get(self, "type")

    @type.setter
    def type(self, value: pulumi.Input[_builtins.str]):
        pulumi.set(self, "type", value)

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

    @id.setter
    def id(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "id", value)

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

    @name.setter
    def name(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "name", value)


if not MYPY:
    class RuleSignonFactorSequenceArgsDict(TypedDict):
        primary_criteria_factor_type: pulumi.Input[_builtins.str]
        """
        Type of a Factor
        """
        primary_criteria_provider: pulumi.Input[_builtins.str]
        """
        Factor provider
        """
        secondary_criterias: NotRequired[pulumi.Input[Sequence[pulumi.Input['RuleSignonFactorSequenceSecondaryCriteriaArgsDict']]]]
elif False:
    RuleSignonFactorSequenceArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class RuleSignonFactorSequenceArgs:
    def __init__(__self__, *,
                 primary_criteria_factor_type: pulumi.Input[_builtins.str],
                 primary_criteria_provider: pulumi.Input[_builtins.str],
                 secondary_criterias: Optional[pulumi.Input[Sequence[pulumi.Input['RuleSignonFactorSequenceSecondaryCriteriaArgs']]]] = None):
        """
        :param pulumi.Input[_builtins.str] primary_criteria_factor_type: Type of a Factor
        :param pulumi.Input[_builtins.str] primary_criteria_provider: Factor provider
        """
        pulumi.set(__self__, "primary_criteria_factor_type", primary_criteria_factor_type)
        pulumi.set(__self__, "primary_criteria_provider", primary_criteria_provider)
        if secondary_criterias is not None:
            pulumi.set(__self__, "secondary_criterias", secondary_criterias)

    @_builtins.property
    @pulumi.getter(name="primaryCriteriaFactorType")
    def primary_criteria_factor_type(self) -> pulumi.Input[_builtins.str]:
        """
        Type of a Factor
        """
        return pulumi.get(self, "primary_criteria_factor_type")

    @primary_criteria_factor_type.setter
    def primary_criteria_factor_type(self, value: pulumi.Input[_builtins.str]):
        pulumi.set(self, "primary_criteria_factor_type", value)

    @_builtins.property
    @pulumi.getter(name="primaryCriteriaProvider")
    def primary_criteria_provider(self) -> pulumi.Input[_builtins.str]:
        """
        Factor provider
        """
        return pulumi.get(self, "primary_criteria_provider")

    @primary_criteria_provider.setter
    def primary_criteria_provider(self, value: pulumi.Input[_builtins.str]):
        pulumi.set(self, "primary_criteria_provider", value)

    @_builtins.property
    @pulumi.getter(name="secondaryCriterias")
    def secondary_criterias(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['RuleSignonFactorSequenceSecondaryCriteriaArgs']]]]:
        return pulumi.get(self, "secondary_criterias")

    @secondary_criterias.setter
    def secondary_criterias(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['RuleSignonFactorSequenceSecondaryCriteriaArgs']]]]):
        pulumi.set(self, "secondary_criterias", value)


if not MYPY:
    class RuleSignonFactorSequenceSecondaryCriteriaArgsDict(TypedDict):
        factor_type: pulumi.Input[_builtins.str]
        """
        Type of a Factor
        """
        provider: pulumi.Input[_builtins.str]
        """
        Factor provider
        """
elif False:
    RuleSignonFactorSequenceSecondaryCriteriaArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class RuleSignonFactorSequenceSecondaryCriteriaArgs:
    def __init__(__self__, *,
                 factor_type: pulumi.Input[_builtins.str],
                 provider: pulumi.Input[_builtins.str]):
        """
        :param pulumi.Input[_builtins.str] factor_type: Type of a Factor
        :param pulumi.Input[_builtins.str] provider: Factor provider
        """
        pulumi.set(__self__, "factor_type", factor_type)
        pulumi.set(__self__, "provider", provider)

    @_builtins.property
    @pulumi.getter(name="factorType")
    def factor_type(self) -> pulumi.Input[_builtins.str]:
        """
        Type of a Factor
        """
        return pulumi.get(self, "factor_type")

    @factor_type.setter
    def factor_type(self, value: pulumi.Input[_builtins.str]):
        pulumi.set(self, "factor_type", value)

    @_builtins.property
    @pulumi.getter
    def provider(self) -> pulumi.Input[_builtins.str]:
        """
        Factor provider
        """
        return pulumi.get(self, "provider")

    @provider.setter
    def provider(self, value: pulumi.Input[_builtins.str]):
        pulumi.set(self, "provider", value)


