# 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, Callable, Mapping, Optional, Sequence, Union, overload
from . import _utilities
from . import outputs
from ._inputs import *

__all__ = ['AppSignonPolicyRuleArgs', 'AppSignonPolicyRule']

@pulumi.input_type
class AppSignonPolicyRuleArgs:
    def __init__(__self__, *,
                 policy_id: pulumi.Input[str],
                 access: Optional[pulumi.Input[str]] = None,
                 constraints: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 custom_expression: Optional[pulumi.Input[str]] = None,
                 device_assurances_includeds: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 device_is_managed: Optional[pulumi.Input[bool]] = None,
                 device_is_registered: Optional[pulumi.Input[bool]] = None,
                 factor_mode: Optional[pulumi.Input[str]] = None,
                 groups_excludeds: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 groups_includeds: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 inactivity_period: Optional[pulumi.Input[str]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 network_connection: Optional[pulumi.Input[str]] = None,
                 network_excludes: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 network_includes: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 platform_includes: Optional[pulumi.Input[Sequence[pulumi.Input['AppSignonPolicyRulePlatformIncludeArgs']]]] = None,
                 priority: Optional[pulumi.Input[int]] = None,
                 re_authentication_frequency: Optional[pulumi.Input[str]] = None,
                 risk_score: Optional[pulumi.Input[str]] = None,
                 status: Optional[pulumi.Input[str]] = None,
                 type: Optional[pulumi.Input[str]] = None,
                 user_types_excludeds: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 user_types_includeds: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 users_excludeds: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 users_includeds: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
        """
        The set of arguments for constructing a AppSignonPolicyRule resource.
        :param pulumi.Input[str] policy_id: ID of the policy
        :param pulumi.Input[str] access: Allow or deny access based on the rule conditions: ALLOW or DENY
        :param pulumi.Input[Sequence[pulumi.Input[str]]] constraints: An array that contains nested Authenticator Constraint objects that are organized by the Authenticator class
        :param pulumi.Input[str] custom_expression: This is an optional advanced setting. If the expression is formatted incorrectly or conflicts with conditions set above, the rule may not match any users.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] device_assurances_includeds: List of device assurance IDs to include
        :param pulumi.Input[bool] device_is_managed: If the device is managed. A device is managed if it's managed by a device management system. When managed is passed, registered must also be included and must be set to true.
        :param pulumi.Input[bool] device_is_registered: If the device is registered. A device is registered if the User enrolls with Okta Verify that is installed on the device.
        :param pulumi.Input[str] factor_mode: The number of factors required to satisfy this assurance level
        :param pulumi.Input[Sequence[pulumi.Input[str]]] groups_excludeds: List of group IDs to exclude
        :param pulumi.Input[Sequence[pulumi.Input[str]]] groups_includeds: List of group IDs to include
        :param pulumi.Input[str] inactivity_period: The inactivity duration after which the end user must re-authenticate. Use the ISO 8601 Period format for recurring time intervals.
        :param pulumi.Input[str] name: Policy Rule Name
        :param pulumi.Input[str] network_connection: Network selection mode: ANYWHERE, ZONE, ON*NETWORK, or OFF*NETWORK.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] network_excludes: The zones to exclude
        :param pulumi.Input[Sequence[pulumi.Input[str]]] network_includes: The zones to include
        :param pulumi.Input[int] priority: Priority of the rule.
        :param pulumi.Input[str] re_authentication_frequency: The duration after which the end user must re-authenticate, regardless of user activity. Use the ISO 8601 Period format for recurring time intervals. PT0S - Every sign-in attempt, PT43800H - Once per session
        :param pulumi.Input[str] risk_score: The risk score specifies a particular level of risk to match on.
        :param pulumi.Input[str] status: Status of the rule
        :param pulumi.Input[str] type: The Verification Method type
        :param pulumi.Input[Sequence[pulumi.Input[str]]] user_types_excludeds: Set of User Type IDs to exclude
        :param pulumi.Input[Sequence[pulumi.Input[str]]] user_types_includeds: Set of User Type IDs to include
        :param pulumi.Input[Sequence[pulumi.Input[str]]] users_excludeds: Set of User IDs to exclude
        :param pulumi.Input[Sequence[pulumi.Input[str]]] users_includeds: Set of User IDs to include
        """
        AppSignonPolicyRuleArgs._configure(
            lambda key, value: pulumi.set(__self__, key, value),
            policy_id=policy_id,
            access=access,
            constraints=constraints,
            custom_expression=custom_expression,
            device_assurances_includeds=device_assurances_includeds,
            device_is_managed=device_is_managed,
            device_is_registered=device_is_registered,
            factor_mode=factor_mode,
            groups_excludeds=groups_excludeds,
            groups_includeds=groups_includeds,
            inactivity_period=inactivity_period,
            name=name,
            network_connection=network_connection,
            network_excludes=network_excludes,
            network_includes=network_includes,
            platform_includes=platform_includes,
            priority=priority,
            re_authentication_frequency=re_authentication_frequency,
            risk_score=risk_score,
            status=status,
            type=type,
            user_types_excludeds=user_types_excludeds,
            user_types_includeds=user_types_includeds,
            users_excludeds=users_excludeds,
            users_includeds=users_includeds,
        )
    @staticmethod
    def _configure(
             _setter: Callable[[Any, Any], None],
             policy_id: pulumi.Input[str],
             access: Optional[pulumi.Input[str]] = None,
             constraints: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
             custom_expression: Optional[pulumi.Input[str]] = None,
             device_assurances_includeds: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
             device_is_managed: Optional[pulumi.Input[bool]] = None,
             device_is_registered: Optional[pulumi.Input[bool]] = None,
             factor_mode: Optional[pulumi.Input[str]] = None,
             groups_excludeds: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
             groups_includeds: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
             inactivity_period: Optional[pulumi.Input[str]] = None,
             name: Optional[pulumi.Input[str]] = None,
             network_connection: Optional[pulumi.Input[str]] = None,
             network_excludes: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
             network_includes: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
             platform_includes: Optional[pulumi.Input[Sequence[pulumi.Input['AppSignonPolicyRulePlatformIncludeArgs']]]] = None,
             priority: Optional[pulumi.Input[int]] = None,
             re_authentication_frequency: Optional[pulumi.Input[str]] = None,
             risk_score: Optional[pulumi.Input[str]] = None,
             status: Optional[pulumi.Input[str]] = None,
             type: Optional[pulumi.Input[str]] = None,
             user_types_excludeds: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
             user_types_includeds: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
             users_excludeds: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
             users_includeds: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
             opts: Optional[pulumi.ResourceOptions]=None,
             **kwargs):
        if 'policyId' in kwargs:
            policy_id = kwargs['policyId']
        if 'customExpression' in kwargs:
            custom_expression = kwargs['customExpression']
        if 'deviceAssurancesIncludeds' in kwargs:
            device_assurances_includeds = kwargs['deviceAssurancesIncludeds']
        if 'deviceIsManaged' in kwargs:
            device_is_managed = kwargs['deviceIsManaged']
        if 'deviceIsRegistered' in kwargs:
            device_is_registered = kwargs['deviceIsRegistered']
        if 'factorMode' in kwargs:
            factor_mode = kwargs['factorMode']
        if 'groupsExcludeds' in kwargs:
            groups_excludeds = kwargs['groupsExcludeds']
        if 'groupsIncludeds' in kwargs:
            groups_includeds = kwargs['groupsIncludeds']
        if 'inactivityPeriod' in kwargs:
            inactivity_period = kwargs['inactivityPeriod']
        if 'networkConnection' in kwargs:
            network_connection = kwargs['networkConnection']
        if 'networkExcludes' in kwargs:
            network_excludes = kwargs['networkExcludes']
        if 'networkIncludes' in kwargs:
            network_includes = kwargs['networkIncludes']
        if 'platformIncludes' in kwargs:
            platform_includes = kwargs['platformIncludes']
        if 'reAuthenticationFrequency' in kwargs:
            re_authentication_frequency = kwargs['reAuthenticationFrequency']
        if 'riskScore' in kwargs:
            risk_score = kwargs['riskScore']
        if 'userTypesExcludeds' in kwargs:
            user_types_excludeds = kwargs['userTypesExcludeds']
        if 'userTypesIncludeds' in kwargs:
            user_types_includeds = kwargs['userTypesIncludeds']
        if 'usersExcludeds' in kwargs:
            users_excludeds = kwargs['usersExcludeds']
        if 'usersIncludeds' in kwargs:
            users_includeds = kwargs['usersIncludeds']

        _setter("policy_id", policy_id)
        if access is not None:
            _setter("access", access)
        if constraints is not None:
            _setter("constraints", constraints)
        if custom_expression is not None:
            _setter("custom_expression", custom_expression)
        if device_assurances_includeds is not None:
            _setter("device_assurances_includeds", device_assurances_includeds)
        if device_is_managed is not None:
            _setter("device_is_managed", device_is_managed)
        if device_is_registered is not None:
            _setter("device_is_registered", device_is_registered)
        if factor_mode is not None:
            _setter("factor_mode", factor_mode)
        if groups_excludeds is not None:
            _setter("groups_excludeds", groups_excludeds)
        if groups_includeds is not None:
            _setter("groups_includeds", groups_includeds)
        if inactivity_period is not None:
            _setter("inactivity_period", inactivity_period)
        if name is not None:
            _setter("name", name)
        if network_connection is not None:
            _setter("network_connection", network_connection)
        if network_excludes is not None:
            _setter("network_excludes", network_excludes)
        if network_includes is not None:
            _setter("network_includes", network_includes)
        if platform_includes is not None:
            _setter("platform_includes", platform_includes)
        if priority is not None:
            _setter("priority", priority)
        if re_authentication_frequency is not None:
            _setter("re_authentication_frequency", re_authentication_frequency)
        if risk_score is not None:
            _setter("risk_score", risk_score)
        if status is not None:
            _setter("status", status)
        if type is not None:
            _setter("type", type)
        if user_types_excludeds is not None:
            _setter("user_types_excludeds", user_types_excludeds)
        if user_types_includeds is not None:
            _setter("user_types_includeds", user_types_includeds)
        if users_excludeds is not None:
            _setter("users_excludeds", users_excludeds)
        if users_includeds is not None:
            _setter("users_includeds", users_includeds)

    @property
    @pulumi.getter(name="policyId")
    def policy_id(self) -> pulumi.Input[str]:
        """
        ID of the policy
        """
        return pulumi.get(self, "policy_id")

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

    @property
    @pulumi.getter
    def access(self) -> Optional[pulumi.Input[str]]:
        """
        Allow or deny access based on the rule conditions: ALLOW or DENY
        """
        return pulumi.get(self, "access")

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

    @property
    @pulumi.getter
    def constraints(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        An array that contains nested Authenticator Constraint objects that are organized by the Authenticator class
        """
        return pulumi.get(self, "constraints")

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

    @property
    @pulumi.getter(name="customExpression")
    def custom_expression(self) -> Optional[pulumi.Input[str]]:
        """
        This is an optional advanced setting. If the expression is formatted incorrectly or conflicts with conditions set above, the rule may not match any users.
        """
        return pulumi.get(self, "custom_expression")

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

    @property
    @pulumi.getter(name="deviceAssurancesIncludeds")
    def device_assurances_includeds(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        List of device assurance IDs to include
        """
        return pulumi.get(self, "device_assurances_includeds")

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

    @property
    @pulumi.getter(name="deviceIsManaged")
    def device_is_managed(self) -> Optional[pulumi.Input[bool]]:
        """
        If the device is managed. A device is managed if it's managed by a device management system. When managed is passed, registered must also be included and must be set to true.
        """
        return pulumi.get(self, "device_is_managed")

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

    @property
    @pulumi.getter(name="deviceIsRegistered")
    def device_is_registered(self) -> Optional[pulumi.Input[bool]]:
        """
        If the device is registered. A device is registered if the User enrolls with Okta Verify that is installed on the device.
        """
        return pulumi.get(self, "device_is_registered")

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

    @property
    @pulumi.getter(name="factorMode")
    def factor_mode(self) -> Optional[pulumi.Input[str]]:
        """
        The number of factors required to satisfy this assurance level
        """
        return pulumi.get(self, "factor_mode")

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

    @property
    @pulumi.getter(name="groupsExcludeds")
    def groups_excludeds(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        List of group IDs to exclude
        """
        return pulumi.get(self, "groups_excludeds")

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

    @property
    @pulumi.getter(name="groupsIncludeds")
    def groups_includeds(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        List of group IDs to include
        """
        return pulumi.get(self, "groups_includeds")

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

    @property
    @pulumi.getter(name="inactivityPeriod")
    def inactivity_period(self) -> Optional[pulumi.Input[str]]:
        """
        The inactivity duration after which the end user must re-authenticate. Use the ISO 8601 Period format for recurring time intervals.
        """
        return pulumi.get(self, "inactivity_period")

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

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

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

    @property
    @pulumi.getter(name="networkConnection")
    def network_connection(self) -> Optional[pulumi.Input[str]]:
        """
        Network selection mode: ANYWHERE, ZONE, ON*NETWORK, or OFF*NETWORK.
        """
        return pulumi.get(self, "network_connection")

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

    @property
    @pulumi.getter(name="networkExcludes")
    def network_excludes(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        The zones to exclude
        """
        return pulumi.get(self, "network_excludes")

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

    @property
    @pulumi.getter(name="networkIncludes")
    def network_includes(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        The zones to include
        """
        return pulumi.get(self, "network_includes")

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

    @property
    @pulumi.getter(name="platformIncludes")
    def platform_includes(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['AppSignonPolicyRulePlatformIncludeArgs']]]]:
        return pulumi.get(self, "platform_includes")

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

    @property
    @pulumi.getter
    def priority(self) -> Optional[pulumi.Input[int]]:
        """
        Priority of the rule.
        """
        return pulumi.get(self, "priority")

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

    @property
    @pulumi.getter(name="reAuthenticationFrequency")
    def re_authentication_frequency(self) -> Optional[pulumi.Input[str]]:
        """
        The duration after which the end user must re-authenticate, regardless of user activity. Use the ISO 8601 Period format for recurring time intervals. PT0S - Every sign-in attempt, PT43800H - Once per session
        """
        return pulumi.get(self, "re_authentication_frequency")

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

    @property
    @pulumi.getter(name="riskScore")
    def risk_score(self) -> Optional[pulumi.Input[str]]:
        """
        The risk score specifies a particular level of risk to match on.
        """
        return pulumi.get(self, "risk_score")

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

    @property
    @pulumi.getter
    def status(self) -> Optional[pulumi.Input[str]]:
        """
        Status of the rule
        """
        return pulumi.get(self, "status")

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

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

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

    @property
    @pulumi.getter(name="userTypesExcludeds")
    def user_types_excludeds(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        Set of User Type IDs to exclude
        """
        return pulumi.get(self, "user_types_excludeds")

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

    @property
    @pulumi.getter(name="userTypesIncludeds")
    def user_types_includeds(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        Set of User Type IDs to include
        """
        return pulumi.get(self, "user_types_includeds")

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

    @property
    @pulumi.getter(name="usersExcludeds")
    def users_excludeds(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        Set of User IDs to exclude
        """
        return pulumi.get(self, "users_excludeds")

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

    @property
    @pulumi.getter(name="usersIncludeds")
    def users_includeds(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        Set of User IDs to include
        """
        return pulumi.get(self, "users_includeds")

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


@pulumi.input_type
class _AppSignonPolicyRuleState:
    def __init__(__self__, *,
                 access: Optional[pulumi.Input[str]] = None,
                 constraints: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 custom_expression: Optional[pulumi.Input[str]] = None,
                 device_assurances_includeds: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 device_is_managed: Optional[pulumi.Input[bool]] = None,
                 device_is_registered: Optional[pulumi.Input[bool]] = None,
                 factor_mode: Optional[pulumi.Input[str]] = None,
                 groups_excludeds: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 groups_includeds: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 inactivity_period: Optional[pulumi.Input[str]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 network_connection: Optional[pulumi.Input[str]] = None,
                 network_excludes: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 network_includes: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 platform_includes: Optional[pulumi.Input[Sequence[pulumi.Input['AppSignonPolicyRulePlatformIncludeArgs']]]] = None,
                 policy_id: Optional[pulumi.Input[str]] = None,
                 priority: Optional[pulumi.Input[int]] = None,
                 re_authentication_frequency: Optional[pulumi.Input[str]] = None,
                 risk_score: Optional[pulumi.Input[str]] = None,
                 status: Optional[pulumi.Input[str]] = None,
                 type: Optional[pulumi.Input[str]] = None,
                 user_types_excludeds: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 user_types_includeds: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 users_excludeds: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 users_includeds: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
        """
        Input properties used for looking up and filtering AppSignonPolicyRule resources.
        :param pulumi.Input[str] access: Allow or deny access based on the rule conditions: ALLOW or DENY
        :param pulumi.Input[Sequence[pulumi.Input[str]]] constraints: An array that contains nested Authenticator Constraint objects that are organized by the Authenticator class
        :param pulumi.Input[str] custom_expression: This is an optional advanced setting. If the expression is formatted incorrectly or conflicts with conditions set above, the rule may not match any users.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] device_assurances_includeds: List of device assurance IDs to include
        :param pulumi.Input[bool] device_is_managed: If the device is managed. A device is managed if it's managed by a device management system. When managed is passed, registered must also be included and must be set to true.
        :param pulumi.Input[bool] device_is_registered: If the device is registered. A device is registered if the User enrolls with Okta Verify that is installed on the device.
        :param pulumi.Input[str] factor_mode: The number of factors required to satisfy this assurance level
        :param pulumi.Input[Sequence[pulumi.Input[str]]] groups_excludeds: List of group IDs to exclude
        :param pulumi.Input[Sequence[pulumi.Input[str]]] groups_includeds: List of group IDs to include
        :param pulumi.Input[str] inactivity_period: The inactivity duration after which the end user must re-authenticate. Use the ISO 8601 Period format for recurring time intervals.
        :param pulumi.Input[str] name: Policy Rule Name
        :param pulumi.Input[str] network_connection: Network selection mode: ANYWHERE, ZONE, ON*NETWORK, or OFF*NETWORK.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] network_excludes: The zones to exclude
        :param pulumi.Input[Sequence[pulumi.Input[str]]] network_includes: The zones to include
        :param pulumi.Input[str] policy_id: ID of the policy
        :param pulumi.Input[int] priority: Priority of the rule.
        :param pulumi.Input[str] re_authentication_frequency: The duration after which the end user must re-authenticate, regardless of user activity. Use the ISO 8601 Period format for recurring time intervals. PT0S - Every sign-in attempt, PT43800H - Once per session
        :param pulumi.Input[str] risk_score: The risk score specifies a particular level of risk to match on.
        :param pulumi.Input[str] status: Status of the rule
        :param pulumi.Input[str] type: The Verification Method type
        :param pulumi.Input[Sequence[pulumi.Input[str]]] user_types_excludeds: Set of User Type IDs to exclude
        :param pulumi.Input[Sequence[pulumi.Input[str]]] user_types_includeds: Set of User Type IDs to include
        :param pulumi.Input[Sequence[pulumi.Input[str]]] users_excludeds: Set of User IDs to exclude
        :param pulumi.Input[Sequence[pulumi.Input[str]]] users_includeds: Set of User IDs to include
        """
        _AppSignonPolicyRuleState._configure(
            lambda key, value: pulumi.set(__self__, key, value),
            access=access,
            constraints=constraints,
            custom_expression=custom_expression,
            device_assurances_includeds=device_assurances_includeds,
            device_is_managed=device_is_managed,
            device_is_registered=device_is_registered,
            factor_mode=factor_mode,
            groups_excludeds=groups_excludeds,
            groups_includeds=groups_includeds,
            inactivity_period=inactivity_period,
            name=name,
            network_connection=network_connection,
            network_excludes=network_excludes,
            network_includes=network_includes,
            platform_includes=platform_includes,
            policy_id=policy_id,
            priority=priority,
            re_authentication_frequency=re_authentication_frequency,
            risk_score=risk_score,
            status=status,
            type=type,
            user_types_excludeds=user_types_excludeds,
            user_types_includeds=user_types_includeds,
            users_excludeds=users_excludeds,
            users_includeds=users_includeds,
        )
    @staticmethod
    def _configure(
             _setter: Callable[[Any, Any], None],
             access: Optional[pulumi.Input[str]] = None,
             constraints: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
             custom_expression: Optional[pulumi.Input[str]] = None,
             device_assurances_includeds: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
             device_is_managed: Optional[pulumi.Input[bool]] = None,
             device_is_registered: Optional[pulumi.Input[bool]] = None,
             factor_mode: Optional[pulumi.Input[str]] = None,
             groups_excludeds: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
             groups_includeds: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
             inactivity_period: Optional[pulumi.Input[str]] = None,
             name: Optional[pulumi.Input[str]] = None,
             network_connection: Optional[pulumi.Input[str]] = None,
             network_excludes: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
             network_includes: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
             platform_includes: Optional[pulumi.Input[Sequence[pulumi.Input['AppSignonPolicyRulePlatformIncludeArgs']]]] = None,
             policy_id: Optional[pulumi.Input[str]] = None,
             priority: Optional[pulumi.Input[int]] = None,
             re_authentication_frequency: Optional[pulumi.Input[str]] = None,
             risk_score: Optional[pulumi.Input[str]] = None,
             status: Optional[pulumi.Input[str]] = None,
             type: Optional[pulumi.Input[str]] = None,
             user_types_excludeds: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
             user_types_includeds: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
             users_excludeds: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
             users_includeds: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
             opts: Optional[pulumi.ResourceOptions]=None,
             **kwargs):
        if 'customExpression' in kwargs:
            custom_expression = kwargs['customExpression']
        if 'deviceAssurancesIncludeds' in kwargs:
            device_assurances_includeds = kwargs['deviceAssurancesIncludeds']
        if 'deviceIsManaged' in kwargs:
            device_is_managed = kwargs['deviceIsManaged']
        if 'deviceIsRegistered' in kwargs:
            device_is_registered = kwargs['deviceIsRegistered']
        if 'factorMode' in kwargs:
            factor_mode = kwargs['factorMode']
        if 'groupsExcludeds' in kwargs:
            groups_excludeds = kwargs['groupsExcludeds']
        if 'groupsIncludeds' in kwargs:
            groups_includeds = kwargs['groupsIncludeds']
        if 'inactivityPeriod' in kwargs:
            inactivity_period = kwargs['inactivityPeriod']
        if 'networkConnection' in kwargs:
            network_connection = kwargs['networkConnection']
        if 'networkExcludes' in kwargs:
            network_excludes = kwargs['networkExcludes']
        if 'networkIncludes' in kwargs:
            network_includes = kwargs['networkIncludes']
        if 'platformIncludes' in kwargs:
            platform_includes = kwargs['platformIncludes']
        if 'policyId' in kwargs:
            policy_id = kwargs['policyId']
        if 'reAuthenticationFrequency' in kwargs:
            re_authentication_frequency = kwargs['reAuthenticationFrequency']
        if 'riskScore' in kwargs:
            risk_score = kwargs['riskScore']
        if 'userTypesExcludeds' in kwargs:
            user_types_excludeds = kwargs['userTypesExcludeds']
        if 'userTypesIncludeds' in kwargs:
            user_types_includeds = kwargs['userTypesIncludeds']
        if 'usersExcludeds' in kwargs:
            users_excludeds = kwargs['usersExcludeds']
        if 'usersIncludeds' in kwargs:
            users_includeds = kwargs['usersIncludeds']

        if access is not None:
            _setter("access", access)
        if constraints is not None:
            _setter("constraints", constraints)
        if custom_expression is not None:
            _setter("custom_expression", custom_expression)
        if device_assurances_includeds is not None:
            _setter("device_assurances_includeds", device_assurances_includeds)
        if device_is_managed is not None:
            _setter("device_is_managed", device_is_managed)
        if device_is_registered is not None:
            _setter("device_is_registered", device_is_registered)
        if factor_mode is not None:
            _setter("factor_mode", factor_mode)
        if groups_excludeds is not None:
            _setter("groups_excludeds", groups_excludeds)
        if groups_includeds is not None:
            _setter("groups_includeds", groups_includeds)
        if inactivity_period is not None:
            _setter("inactivity_period", inactivity_period)
        if name is not None:
            _setter("name", name)
        if network_connection is not None:
            _setter("network_connection", network_connection)
        if network_excludes is not None:
            _setter("network_excludes", network_excludes)
        if network_includes is not None:
            _setter("network_includes", network_includes)
        if platform_includes is not None:
            _setter("platform_includes", platform_includes)
        if policy_id is not None:
            _setter("policy_id", policy_id)
        if priority is not None:
            _setter("priority", priority)
        if re_authentication_frequency is not None:
            _setter("re_authentication_frequency", re_authentication_frequency)
        if risk_score is not None:
            _setter("risk_score", risk_score)
        if status is not None:
            _setter("status", status)
        if type is not None:
            _setter("type", type)
        if user_types_excludeds is not None:
            _setter("user_types_excludeds", user_types_excludeds)
        if user_types_includeds is not None:
            _setter("user_types_includeds", user_types_includeds)
        if users_excludeds is not None:
            _setter("users_excludeds", users_excludeds)
        if users_includeds is not None:
            _setter("users_includeds", users_includeds)

    @property
    @pulumi.getter
    def access(self) -> Optional[pulumi.Input[str]]:
        """
        Allow or deny access based on the rule conditions: ALLOW or DENY
        """
        return pulumi.get(self, "access")

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

    @property
    @pulumi.getter
    def constraints(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        An array that contains nested Authenticator Constraint objects that are organized by the Authenticator class
        """
        return pulumi.get(self, "constraints")

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

    @property
    @pulumi.getter(name="customExpression")
    def custom_expression(self) -> Optional[pulumi.Input[str]]:
        """
        This is an optional advanced setting. If the expression is formatted incorrectly or conflicts with conditions set above, the rule may not match any users.
        """
        return pulumi.get(self, "custom_expression")

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

    @property
    @pulumi.getter(name="deviceAssurancesIncludeds")
    def device_assurances_includeds(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        List of device assurance IDs to include
        """
        return pulumi.get(self, "device_assurances_includeds")

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

    @property
    @pulumi.getter(name="deviceIsManaged")
    def device_is_managed(self) -> Optional[pulumi.Input[bool]]:
        """
        If the device is managed. A device is managed if it's managed by a device management system. When managed is passed, registered must also be included and must be set to true.
        """
        return pulumi.get(self, "device_is_managed")

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

    @property
    @pulumi.getter(name="deviceIsRegistered")
    def device_is_registered(self) -> Optional[pulumi.Input[bool]]:
        """
        If the device is registered. A device is registered if the User enrolls with Okta Verify that is installed on the device.
        """
        return pulumi.get(self, "device_is_registered")

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

    @property
    @pulumi.getter(name="factorMode")
    def factor_mode(self) -> Optional[pulumi.Input[str]]:
        """
        The number of factors required to satisfy this assurance level
        """
        return pulumi.get(self, "factor_mode")

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

    @property
    @pulumi.getter(name="groupsExcludeds")
    def groups_excludeds(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        List of group IDs to exclude
        """
        return pulumi.get(self, "groups_excludeds")

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

    @property
    @pulumi.getter(name="groupsIncludeds")
    def groups_includeds(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        List of group IDs to include
        """
        return pulumi.get(self, "groups_includeds")

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

    @property
    @pulumi.getter(name="inactivityPeriod")
    def inactivity_period(self) -> Optional[pulumi.Input[str]]:
        """
        The inactivity duration after which the end user must re-authenticate. Use the ISO 8601 Period format for recurring time intervals.
        """
        return pulumi.get(self, "inactivity_period")

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

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

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

    @property
    @pulumi.getter(name="networkConnection")
    def network_connection(self) -> Optional[pulumi.Input[str]]:
        """
        Network selection mode: ANYWHERE, ZONE, ON*NETWORK, or OFF*NETWORK.
        """
        return pulumi.get(self, "network_connection")

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

    @property
    @pulumi.getter(name="networkExcludes")
    def network_excludes(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        The zones to exclude
        """
        return pulumi.get(self, "network_excludes")

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

    @property
    @pulumi.getter(name="networkIncludes")
    def network_includes(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        The zones to include
        """
        return pulumi.get(self, "network_includes")

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

    @property
    @pulumi.getter(name="platformIncludes")
    def platform_includes(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['AppSignonPolicyRulePlatformIncludeArgs']]]]:
        return pulumi.get(self, "platform_includes")

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

    @property
    @pulumi.getter(name="policyId")
    def policy_id(self) -> Optional[pulumi.Input[str]]:
        """
        ID of the policy
        """
        return pulumi.get(self, "policy_id")

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

    @property
    @pulumi.getter
    def priority(self) -> Optional[pulumi.Input[int]]:
        """
        Priority of the rule.
        """
        return pulumi.get(self, "priority")

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

    @property
    @pulumi.getter(name="reAuthenticationFrequency")
    def re_authentication_frequency(self) -> Optional[pulumi.Input[str]]:
        """
        The duration after which the end user must re-authenticate, regardless of user activity. Use the ISO 8601 Period format for recurring time intervals. PT0S - Every sign-in attempt, PT43800H - Once per session
        """
        return pulumi.get(self, "re_authentication_frequency")

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

    @property
    @pulumi.getter(name="riskScore")
    def risk_score(self) -> Optional[pulumi.Input[str]]:
        """
        The risk score specifies a particular level of risk to match on.
        """
        return pulumi.get(self, "risk_score")

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

    @property
    @pulumi.getter
    def status(self) -> Optional[pulumi.Input[str]]:
        """
        Status of the rule
        """
        return pulumi.get(self, "status")

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

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

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

    @property
    @pulumi.getter(name="userTypesExcludeds")
    def user_types_excludeds(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        Set of User Type IDs to exclude
        """
        return pulumi.get(self, "user_types_excludeds")

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

    @property
    @pulumi.getter(name="userTypesIncludeds")
    def user_types_includeds(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        Set of User Type IDs to include
        """
        return pulumi.get(self, "user_types_includeds")

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

    @property
    @pulumi.getter(name="usersExcludeds")
    def users_excludeds(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        Set of User IDs to exclude
        """
        return pulumi.get(self, "users_excludeds")

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

    @property
    @pulumi.getter(name="usersIncludeds")
    def users_includeds(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        Set of User IDs to include
        """
        return pulumi.get(self, "users_includeds")

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


class AppSignonPolicyRule(pulumi.CustomResource):
    @overload
    def __init__(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 access: Optional[pulumi.Input[str]] = None,
                 constraints: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 custom_expression: Optional[pulumi.Input[str]] = None,
                 device_assurances_includeds: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 device_is_managed: Optional[pulumi.Input[bool]] = None,
                 device_is_registered: Optional[pulumi.Input[bool]] = None,
                 factor_mode: Optional[pulumi.Input[str]] = None,
                 groups_excludeds: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 groups_includeds: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 inactivity_period: Optional[pulumi.Input[str]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 network_connection: Optional[pulumi.Input[str]] = None,
                 network_excludes: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 network_includes: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 platform_includes: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['AppSignonPolicyRulePlatformIncludeArgs']]]]] = None,
                 policy_id: Optional[pulumi.Input[str]] = None,
                 priority: Optional[pulumi.Input[int]] = None,
                 re_authentication_frequency: Optional[pulumi.Input[str]] = None,
                 risk_score: Optional[pulumi.Input[str]] = None,
                 status: Optional[pulumi.Input[str]] = None,
                 type: Optional[pulumi.Input[str]] = None,
                 user_types_excludeds: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 user_types_includeds: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 users_excludeds: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 users_includeds: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 __props__=None):
        """
        Create a AppSignonPolicyRule resource with the given unique name, props, and options.
        :param str resource_name: The name of the resource.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[str] access: Allow or deny access based on the rule conditions: ALLOW or DENY
        :param pulumi.Input[Sequence[pulumi.Input[str]]] constraints: An array that contains nested Authenticator Constraint objects that are organized by the Authenticator class
        :param pulumi.Input[str] custom_expression: This is an optional advanced setting. If the expression is formatted incorrectly or conflicts with conditions set above, the rule may not match any users.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] device_assurances_includeds: List of device assurance IDs to include
        :param pulumi.Input[bool] device_is_managed: If the device is managed. A device is managed if it's managed by a device management system. When managed is passed, registered must also be included and must be set to true.
        :param pulumi.Input[bool] device_is_registered: If the device is registered. A device is registered if the User enrolls with Okta Verify that is installed on the device.
        :param pulumi.Input[str] factor_mode: The number of factors required to satisfy this assurance level
        :param pulumi.Input[Sequence[pulumi.Input[str]]] groups_excludeds: List of group IDs to exclude
        :param pulumi.Input[Sequence[pulumi.Input[str]]] groups_includeds: List of group IDs to include
        :param pulumi.Input[str] inactivity_period: The inactivity duration after which the end user must re-authenticate. Use the ISO 8601 Period format for recurring time intervals.
        :param pulumi.Input[str] name: Policy Rule Name
        :param pulumi.Input[str] network_connection: Network selection mode: ANYWHERE, ZONE, ON*NETWORK, or OFF*NETWORK.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] network_excludes: The zones to exclude
        :param pulumi.Input[Sequence[pulumi.Input[str]]] network_includes: The zones to include
        :param pulumi.Input[str] policy_id: ID of the policy
        :param pulumi.Input[int] priority: Priority of the rule.
        :param pulumi.Input[str] re_authentication_frequency: The duration after which the end user must re-authenticate, regardless of user activity. Use the ISO 8601 Period format for recurring time intervals. PT0S - Every sign-in attempt, PT43800H - Once per session
        :param pulumi.Input[str] risk_score: The risk score specifies a particular level of risk to match on.
        :param pulumi.Input[str] status: Status of the rule
        :param pulumi.Input[str] type: The Verification Method type
        :param pulumi.Input[Sequence[pulumi.Input[str]]] user_types_excludeds: Set of User Type IDs to exclude
        :param pulumi.Input[Sequence[pulumi.Input[str]]] user_types_includeds: Set of User Type IDs to include
        :param pulumi.Input[Sequence[pulumi.Input[str]]] users_excludeds: Set of User IDs to exclude
        :param pulumi.Input[Sequence[pulumi.Input[str]]] users_includeds: Set of User IDs to include
        """
        ...
    @overload
    def __init__(__self__,
                 resource_name: str,
                 args: AppSignonPolicyRuleArgs,
                 opts: Optional[pulumi.ResourceOptions] = None):
        """
        Create a AppSignonPolicyRule resource with the given unique name, props, and options.
        :param str resource_name: The name of the resource.
        :param AppSignonPolicyRuleArgs args: The arguments to use to populate this resource's properties.
        :param pulumi.ResourceOptions opts: Options for the resource.
        """
        ...
    def __init__(__self__, resource_name: str, *args, **kwargs):
        resource_args, opts = _utilities.get_resource_args_opts(AppSignonPolicyRuleArgs, pulumi.ResourceOptions, *args, **kwargs)
        if resource_args is not None:
            __self__._internal_init(resource_name, opts, **resource_args.__dict__)
        else:
            kwargs = kwargs or {}
            def _setter(key, value):
                kwargs[key] = value
            AppSignonPolicyRuleArgs._configure(_setter, **kwargs)
            __self__._internal_init(resource_name, *args, **kwargs)

    def _internal_init(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 access: Optional[pulumi.Input[str]] = None,
                 constraints: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 custom_expression: Optional[pulumi.Input[str]] = None,
                 device_assurances_includeds: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 device_is_managed: Optional[pulumi.Input[bool]] = None,
                 device_is_registered: Optional[pulumi.Input[bool]] = None,
                 factor_mode: Optional[pulumi.Input[str]] = None,
                 groups_excludeds: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 groups_includeds: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 inactivity_period: Optional[pulumi.Input[str]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 network_connection: Optional[pulumi.Input[str]] = None,
                 network_excludes: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 network_includes: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 platform_includes: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['AppSignonPolicyRulePlatformIncludeArgs']]]]] = None,
                 policy_id: Optional[pulumi.Input[str]] = None,
                 priority: Optional[pulumi.Input[int]] = None,
                 re_authentication_frequency: Optional[pulumi.Input[str]] = None,
                 risk_score: Optional[pulumi.Input[str]] = None,
                 status: Optional[pulumi.Input[str]] = None,
                 type: Optional[pulumi.Input[str]] = None,
                 user_types_excludeds: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 user_types_includeds: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 users_excludeds: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 users_includeds: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 __props__=None):
        opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
        if not isinstance(opts, pulumi.ResourceOptions):
            raise TypeError('Expected resource options to be a ResourceOptions instance')
        if opts.id is None:
            if __props__ is not None:
                raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
            __props__ = AppSignonPolicyRuleArgs.__new__(AppSignonPolicyRuleArgs)

            __props__.__dict__["access"] = access
            __props__.__dict__["constraints"] = constraints
            __props__.__dict__["custom_expression"] = custom_expression
            __props__.__dict__["device_assurances_includeds"] = device_assurances_includeds
            __props__.__dict__["device_is_managed"] = device_is_managed
            __props__.__dict__["device_is_registered"] = device_is_registered
            __props__.__dict__["factor_mode"] = factor_mode
            __props__.__dict__["groups_excludeds"] = groups_excludeds
            __props__.__dict__["groups_includeds"] = groups_includeds
            __props__.__dict__["inactivity_period"] = inactivity_period
            __props__.__dict__["name"] = name
            __props__.__dict__["network_connection"] = network_connection
            __props__.__dict__["network_excludes"] = network_excludes
            __props__.__dict__["network_includes"] = network_includes
            __props__.__dict__["platform_includes"] = platform_includes
            if policy_id is None and not opts.urn:
                raise TypeError("Missing required property 'policy_id'")
            __props__.__dict__["policy_id"] = policy_id
            __props__.__dict__["priority"] = priority
            __props__.__dict__["re_authentication_frequency"] = re_authentication_frequency
            __props__.__dict__["risk_score"] = risk_score
            __props__.__dict__["status"] = status
            __props__.__dict__["type"] = type
            __props__.__dict__["user_types_excludeds"] = user_types_excludeds
            __props__.__dict__["user_types_includeds"] = user_types_includeds
            __props__.__dict__["users_excludeds"] = users_excludeds
            __props__.__dict__["users_includeds"] = users_includeds
        super(AppSignonPolicyRule, __self__).__init__(
            'okta:index/appSignonPolicyRule:AppSignonPolicyRule',
            resource_name,
            __props__,
            opts)

    @staticmethod
    def get(resource_name: str,
            id: pulumi.Input[str],
            opts: Optional[pulumi.ResourceOptions] = None,
            access: Optional[pulumi.Input[str]] = None,
            constraints: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
            custom_expression: Optional[pulumi.Input[str]] = None,
            device_assurances_includeds: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
            device_is_managed: Optional[pulumi.Input[bool]] = None,
            device_is_registered: Optional[pulumi.Input[bool]] = None,
            factor_mode: Optional[pulumi.Input[str]] = None,
            groups_excludeds: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
            groups_includeds: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
            inactivity_period: Optional[pulumi.Input[str]] = None,
            name: Optional[pulumi.Input[str]] = None,
            network_connection: Optional[pulumi.Input[str]] = None,
            network_excludes: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
            network_includes: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
            platform_includes: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['AppSignonPolicyRulePlatformIncludeArgs']]]]] = None,
            policy_id: Optional[pulumi.Input[str]] = None,
            priority: Optional[pulumi.Input[int]] = None,
            re_authentication_frequency: Optional[pulumi.Input[str]] = None,
            risk_score: Optional[pulumi.Input[str]] = None,
            status: Optional[pulumi.Input[str]] = None,
            type: Optional[pulumi.Input[str]] = None,
            user_types_excludeds: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
            user_types_includeds: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
            users_excludeds: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
            users_includeds: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None) -> 'AppSignonPolicyRule':
        """
        Get an existing AppSignonPolicyRule resource's state with the given name, id, and optional extra
        properties used to qualify the lookup.

        :param str resource_name: The unique name of the resulting resource.
        :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[str] access: Allow or deny access based on the rule conditions: ALLOW or DENY
        :param pulumi.Input[Sequence[pulumi.Input[str]]] constraints: An array that contains nested Authenticator Constraint objects that are organized by the Authenticator class
        :param pulumi.Input[str] custom_expression: This is an optional advanced setting. If the expression is formatted incorrectly or conflicts with conditions set above, the rule may not match any users.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] device_assurances_includeds: List of device assurance IDs to include
        :param pulumi.Input[bool] device_is_managed: If the device is managed. A device is managed if it's managed by a device management system. When managed is passed, registered must also be included and must be set to true.
        :param pulumi.Input[bool] device_is_registered: If the device is registered. A device is registered if the User enrolls with Okta Verify that is installed on the device.
        :param pulumi.Input[str] factor_mode: The number of factors required to satisfy this assurance level
        :param pulumi.Input[Sequence[pulumi.Input[str]]] groups_excludeds: List of group IDs to exclude
        :param pulumi.Input[Sequence[pulumi.Input[str]]] groups_includeds: List of group IDs to include
        :param pulumi.Input[str] inactivity_period: The inactivity duration after which the end user must re-authenticate. Use the ISO 8601 Period format for recurring time intervals.
        :param pulumi.Input[str] name: Policy Rule Name
        :param pulumi.Input[str] network_connection: Network selection mode: ANYWHERE, ZONE, ON*NETWORK, or OFF*NETWORK.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] network_excludes: The zones to exclude
        :param pulumi.Input[Sequence[pulumi.Input[str]]] network_includes: The zones to include
        :param pulumi.Input[str] policy_id: ID of the policy
        :param pulumi.Input[int] priority: Priority of the rule.
        :param pulumi.Input[str] re_authentication_frequency: The duration after which the end user must re-authenticate, regardless of user activity. Use the ISO 8601 Period format for recurring time intervals. PT0S - Every sign-in attempt, PT43800H - Once per session
        :param pulumi.Input[str] risk_score: The risk score specifies a particular level of risk to match on.
        :param pulumi.Input[str] status: Status of the rule
        :param pulumi.Input[str] type: The Verification Method type
        :param pulumi.Input[Sequence[pulumi.Input[str]]] user_types_excludeds: Set of User Type IDs to exclude
        :param pulumi.Input[Sequence[pulumi.Input[str]]] user_types_includeds: Set of User Type IDs to include
        :param pulumi.Input[Sequence[pulumi.Input[str]]] users_excludeds: Set of User IDs to exclude
        :param pulumi.Input[Sequence[pulumi.Input[str]]] users_includeds: Set of User IDs to include
        """
        opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))

        __props__ = _AppSignonPolicyRuleState.__new__(_AppSignonPolicyRuleState)

        __props__.__dict__["access"] = access
        __props__.__dict__["constraints"] = constraints
        __props__.__dict__["custom_expression"] = custom_expression
        __props__.__dict__["device_assurances_includeds"] = device_assurances_includeds
        __props__.__dict__["device_is_managed"] = device_is_managed
        __props__.__dict__["device_is_registered"] = device_is_registered
        __props__.__dict__["factor_mode"] = factor_mode
        __props__.__dict__["groups_excludeds"] = groups_excludeds
        __props__.__dict__["groups_includeds"] = groups_includeds
        __props__.__dict__["inactivity_period"] = inactivity_period
        __props__.__dict__["name"] = name
        __props__.__dict__["network_connection"] = network_connection
        __props__.__dict__["network_excludes"] = network_excludes
        __props__.__dict__["network_includes"] = network_includes
        __props__.__dict__["platform_includes"] = platform_includes
        __props__.__dict__["policy_id"] = policy_id
        __props__.__dict__["priority"] = priority
        __props__.__dict__["re_authentication_frequency"] = re_authentication_frequency
        __props__.__dict__["risk_score"] = risk_score
        __props__.__dict__["status"] = status
        __props__.__dict__["type"] = type
        __props__.__dict__["user_types_excludeds"] = user_types_excludeds
        __props__.__dict__["user_types_includeds"] = user_types_includeds
        __props__.__dict__["users_excludeds"] = users_excludeds
        __props__.__dict__["users_includeds"] = users_includeds
        return AppSignonPolicyRule(resource_name, opts=opts, __props__=__props__)

    @property
    @pulumi.getter
    def access(self) -> pulumi.Output[Optional[str]]:
        """
        Allow or deny access based on the rule conditions: ALLOW or DENY
        """
        return pulumi.get(self, "access")

    @property
    @pulumi.getter
    def constraints(self) -> pulumi.Output[Optional[Sequence[str]]]:
        """
        An array that contains nested Authenticator Constraint objects that are organized by the Authenticator class
        """
        return pulumi.get(self, "constraints")

    @property
    @pulumi.getter(name="customExpression")
    def custom_expression(self) -> pulumi.Output[Optional[str]]:
        """
        This is an optional advanced setting. If the expression is formatted incorrectly or conflicts with conditions set above, the rule may not match any users.
        """
        return pulumi.get(self, "custom_expression")

    @property
    @pulumi.getter(name="deviceAssurancesIncludeds")
    def device_assurances_includeds(self) -> pulumi.Output[Optional[Sequence[str]]]:
        """
        List of device assurance IDs to include
        """
        return pulumi.get(self, "device_assurances_includeds")

    @property
    @pulumi.getter(name="deviceIsManaged")
    def device_is_managed(self) -> pulumi.Output[Optional[bool]]:
        """
        If the device is managed. A device is managed if it's managed by a device management system. When managed is passed, registered must also be included and must be set to true.
        """
        return pulumi.get(self, "device_is_managed")

    @property
    @pulumi.getter(name="deviceIsRegistered")
    def device_is_registered(self) -> pulumi.Output[Optional[bool]]:
        """
        If the device is registered. A device is registered if the User enrolls with Okta Verify that is installed on the device.
        """
        return pulumi.get(self, "device_is_registered")

    @property
    @pulumi.getter(name="factorMode")
    def factor_mode(self) -> pulumi.Output[Optional[str]]:
        """
        The number of factors required to satisfy this assurance level
        """
        return pulumi.get(self, "factor_mode")

    @property
    @pulumi.getter(name="groupsExcludeds")
    def groups_excludeds(self) -> pulumi.Output[Optional[Sequence[str]]]:
        """
        List of group IDs to exclude
        """
        return pulumi.get(self, "groups_excludeds")

    @property
    @pulumi.getter(name="groupsIncludeds")
    def groups_includeds(self) -> pulumi.Output[Optional[Sequence[str]]]:
        """
        List of group IDs to include
        """
        return pulumi.get(self, "groups_includeds")

    @property
    @pulumi.getter(name="inactivityPeriod")
    def inactivity_period(self) -> pulumi.Output[Optional[str]]:
        """
        The inactivity duration after which the end user must re-authenticate. Use the ISO 8601 Period format for recurring time intervals.
        """
        return pulumi.get(self, "inactivity_period")

    @property
    @pulumi.getter
    def name(self) -> pulumi.Output[str]:
        """
        Policy Rule Name
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter(name="networkConnection")
    def network_connection(self) -> pulumi.Output[Optional[str]]:
        """
        Network selection mode: ANYWHERE, ZONE, ON*NETWORK, or OFF*NETWORK.
        """
        return pulumi.get(self, "network_connection")

    @property
    @pulumi.getter(name="networkExcludes")
    def network_excludes(self) -> pulumi.Output[Optional[Sequence[str]]]:
        """
        The zones to exclude
        """
        return pulumi.get(self, "network_excludes")

    @property
    @pulumi.getter(name="networkIncludes")
    def network_includes(self) -> pulumi.Output[Optional[Sequence[str]]]:
        """
        The zones to include
        """
        return pulumi.get(self, "network_includes")

    @property
    @pulumi.getter(name="platformIncludes")
    def platform_includes(self) -> pulumi.Output[Optional[Sequence['outputs.AppSignonPolicyRulePlatformInclude']]]:
        return pulumi.get(self, "platform_includes")

    @property
    @pulumi.getter(name="policyId")
    def policy_id(self) -> pulumi.Output[str]:
        """
        ID of the policy
        """
        return pulumi.get(self, "policy_id")

    @property
    @pulumi.getter
    def priority(self) -> pulumi.Output[Optional[int]]:
        """
        Priority of the rule.
        """
        return pulumi.get(self, "priority")

    @property
    @pulumi.getter(name="reAuthenticationFrequency")
    def re_authentication_frequency(self) -> pulumi.Output[Optional[str]]:
        """
        The duration after which the end user must re-authenticate, regardless of user activity. Use the ISO 8601 Period format for recurring time intervals. PT0S - Every sign-in attempt, PT43800H - Once per session
        """
        return pulumi.get(self, "re_authentication_frequency")

    @property
    @pulumi.getter(name="riskScore")
    def risk_score(self) -> pulumi.Output[Optional[str]]:
        """
        The risk score specifies a particular level of risk to match on.
        """
        return pulumi.get(self, "risk_score")

    @property
    @pulumi.getter
    def status(self) -> pulumi.Output[Optional[str]]:
        """
        Status of the rule
        """
        return pulumi.get(self, "status")

    @property
    @pulumi.getter
    def type(self) -> pulumi.Output[Optional[str]]:
        """
        The Verification Method type
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter(name="userTypesExcludeds")
    def user_types_excludeds(self) -> pulumi.Output[Optional[Sequence[str]]]:
        """
        Set of User Type IDs to exclude
        """
        return pulumi.get(self, "user_types_excludeds")

    @property
    @pulumi.getter(name="userTypesIncludeds")
    def user_types_includeds(self) -> pulumi.Output[Optional[Sequence[str]]]:
        """
        Set of User Type IDs to include
        """
        return pulumi.get(self, "user_types_includeds")

    @property
    @pulumi.getter(name="usersExcludeds")
    def users_excludeds(self) -> pulumi.Output[Optional[Sequence[str]]]:
        """
        Set of User IDs to exclude
        """
        return pulumi.get(self, "users_excludeds")

    @property
    @pulumi.getter(name="usersIncludeds")
    def users_includeds(self) -> pulumi.Output[Optional[Sequence[str]]]:
        """
        Set of User IDs to include
        """
        return pulumi.get(self, "users_includeds")

