# 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

__all__ = [
    'ApplicationSegmentBrowserAccessClientlessAppArgs',
    'ApplicationSegmentBrowserAccessServerGroupArgs',
    'ApplicationSegmentBrowserAccessTcpPortRangeArgs',
    'ApplicationSegmentBrowserAccessUdpPortRangeArgs',
    'ApplicationSegmentInspectionCommonAppsDtoArgs',
    'ApplicationSegmentInspectionCommonAppsDtoAppsConfigArgs',
    'ApplicationSegmentInspectionServerGroupArgs',
    'ApplicationSegmentInspectionTcpPortRangeArgs',
    'ApplicationSegmentInspectionUdpPortRangeArgs',
    'ApplicationSegmentPRACommonAppsDtoArgs',
    'ApplicationSegmentPRACommonAppsDtoAppsConfigArgs',
    'ApplicationSegmentPRAServerGroupArgs',
    'ApplicationSegmentPRATcpPortRangeArgs',
    'ApplicationSegmentPRAUdpPortRangeArgs',
    'ApplicationSegmentServerGroupArgs',
    'ApplicationSegmentTcpPortRangeArgs',
    'ApplicationSegmentUdpPortRangeArgs',
    'BrowserAccessClientlessAppArgs',
    'BrowserAccessServerGroupArgs',
    'BrowserAccessTcpPortRangeArgs',
    'BrowserAccessUdpPortRangeArgs',
    'CloudBrowserIsolationExternalProfileSecurityControlArgs',
    'CloudBrowserIsolationExternalProfileUserExperienceArgs',
    'InspectionCustomControlsAssociatedInspectionProfileNameArgs',
    'InspectionCustomControlsRuleArgs',
    'InspectionCustomControlsRuleConditionsArgs',
    'InspectionProfileControlsInfoArgs',
    'InspectionProfileCustomControlArgs',
    'InspectionProfilePredefinedControlArgs',
    'LSSConfigControllerConfigArgs',
    'LSSConfigControllerConnectorGroupArgs',
    'LSSConfigControllerPolicyRuleResourceArgs',
    'LSSConfigControllerPolicyRuleResourceConditionArgs',
    'LSSConfigControllerPolicyRuleResourceConditionOperandArgs',
    'LSSConfigControllerPolicyRuleResourceConditionOperandEntryValueArgs',
    'MicrotenantUserArgs',
    'PolicyAccessForwardingRuleConditionArgs',
    'PolicyAccessForwardingRuleConditionOperandArgs',
    'PolicyAccessInspectionRuleConditionArgs',
    'PolicyAccessInspectionRuleConditionOperandArgs',
    'PolicyAccessIsolationRuleConditionArgs',
    'PolicyAccessIsolationRuleConditionOperandArgs',
    'PolicyAccessReorderRuleRuleArgs',
    'PolicyAccessRuleAppConnectorGroupArgs',
    'PolicyAccessRuleAppServerGroupArgs',
    'PolicyAccessRuleConditionArgs',
    'PolicyAccessRuleConditionOperandArgs',
    'PolicyAccessTimeOutRuleConditionArgs',
    'PolicyAccessTimeOutRuleConditionOperandArgs',
    'SegmentGroupApplicationArgs',
    'ServerGroupAppConnectorGroupArgs',
    'ServerGroupApplicationArgs',
    'ServerGroupServerArgs',
    'ServiceEdgeGroupServiceEdgeArgs',
    'ServiceEdgeGroupTrustedNetworkArgs',
    'GetApplicationSegmentBrowserAccessTcpPortRangeArgs',
    'GetApplicationSegmentBrowserAccessUdpPortRangeArgs',
    'GetApplicationSegmentInspectionTcpPortRangeArgs',
    'GetApplicationSegmentInspectionUdpPortRangeArgs',
    'GetApplicationSegmentPRATcpPortRangeArgs',
    'GetApplicationSegmentPRAUdpPortRangeArgs',
    'GetApplicationSegmentTcpPortRangeArgs',
    'GetApplicationSegmentUdpPortRangeArgs',
    'GetLSSConfigControllerConfigArgs',
]

@pulumi.input_type
class ApplicationSegmentBrowserAccessClientlessAppArgs:
    def __init__(__self__, *,
                 application_port: pulumi.Input[str],
                 application_protocol: pulumi.Input[str],
                 certificate_id: pulumi.Input[str],
                 name: pulumi.Input[str],
                 allow_options: Optional[pulumi.Input[bool]] = None,
                 cname: Optional[pulumi.Input[str]] = None,
                 description: Optional[pulumi.Input[str]] = None,
                 domain: Optional[pulumi.Input[str]] = None,
                 enabled: Optional[pulumi.Input[bool]] = None,
                 hidden: Optional[pulumi.Input[bool]] = None,
                 id: Optional[pulumi.Input[str]] = None,
                 local_domain: Optional[pulumi.Input[str]] = None,
                 path: Optional[pulumi.Input[str]] = None,
                 trust_untrusted_cert: Optional[pulumi.Input[bool]] = None):
        """
        :param pulumi.Input[str] application_port: Port for the BA app.
        :param pulumi.Input[str] application_protocol: Protocol for the BA app. Supported values: `HTTP` and `HTTPS`
        :param pulumi.Input[str] certificate_id: ID of the BA certificate. Refer to the data source documentation for `BrowserCertificate`
        :param pulumi.Input[str] name: Name of BA app.
        :param pulumi.Input[bool] allow_options: If you want ZPA to forward unauthenticated HTTP preflight OPTIONS requests from the browser to the app.. Supported values: `true` and `false`
        :param pulumi.Input[str] cname: (Optional)
        :param pulumi.Input[str] description: (Optional) Description of the application.
        :param pulumi.Input[str] domain: Domain name or IP address of the BA app.
        :param pulumi.Input[bool] enabled: (Optional) - Whether this app is enabled or not.
        :param pulumi.Input[bool] hidden: (Optional)
        :param pulumi.Input[str] local_domain: (Optional)
        :param pulumi.Input[str] path: (Optional)
        :param pulumi.Input[bool] trust_untrusted_cert: (Optional)
        """
        pulumi.set(__self__, "application_port", application_port)
        pulumi.set(__self__, "application_protocol", application_protocol)
        pulumi.set(__self__, "certificate_id", certificate_id)
        pulumi.set(__self__, "name", name)
        if allow_options is not None:
            pulumi.set(__self__, "allow_options", allow_options)
        if cname is not None:
            pulumi.set(__self__, "cname", cname)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if domain is not None:
            pulumi.set(__self__, "domain", domain)
        if enabled is not None:
            pulumi.set(__self__, "enabled", enabled)
        if hidden is not None:
            pulumi.set(__self__, "hidden", hidden)
        if id is not None:
            pulumi.set(__self__, "id", id)
        if local_domain is not None:
            pulumi.set(__self__, "local_domain", local_domain)
        if path is not None:
            pulumi.set(__self__, "path", path)
        if trust_untrusted_cert is not None:
            pulumi.set(__self__, "trust_untrusted_cert", trust_untrusted_cert)

    @property
    @pulumi.getter(name="applicationPort")
    def application_port(self) -> pulumi.Input[str]:
        """
        Port for the BA app.
        """
        return pulumi.get(self, "application_port")

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

    @property
    @pulumi.getter(name="applicationProtocol")
    def application_protocol(self) -> pulumi.Input[str]:
        """
        Protocol for the BA app. Supported values: `HTTP` and `HTTPS`
        """
        return pulumi.get(self, "application_protocol")

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

    @property
    @pulumi.getter(name="certificateId")
    def certificate_id(self) -> pulumi.Input[str]:
        """
        ID of the BA certificate. Refer to the data source documentation for `BrowserCertificate`
        """
        return pulumi.get(self, "certificate_id")

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

    @property
    @pulumi.getter
    def name(self) -> pulumi.Input[str]:
        """
        Name of BA app.
        """
        return pulumi.get(self, "name")

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

    @property
    @pulumi.getter(name="allowOptions")
    def allow_options(self) -> Optional[pulumi.Input[bool]]:
        """
        If you want ZPA to forward unauthenticated HTTP preflight OPTIONS requests from the browser to the app.. Supported values: `true` and `false`
        """
        return pulumi.get(self, "allow_options")

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

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

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

    @property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[str]]:
        """
        (Optional) Description of the application.
        """
        return pulumi.get(self, "description")

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

    @property
    @pulumi.getter
    def domain(self) -> Optional[pulumi.Input[str]]:
        """
        Domain name or IP address of the BA app.
        """
        return pulumi.get(self, "domain")

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

    @property
    @pulumi.getter
    def enabled(self) -> Optional[pulumi.Input[bool]]:
        """
        (Optional) - Whether this app is enabled or not.
        """
        return pulumi.get(self, "enabled")

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

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

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

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

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

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

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

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

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

    @property
    @pulumi.getter(name="trustUntrustedCert")
    def trust_untrusted_cert(self) -> Optional[pulumi.Input[bool]]:
        """
        (Optional)
        """
        return pulumi.get(self, "trust_untrusted_cert")

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


@pulumi.input_type
class ApplicationSegmentBrowserAccessServerGroupArgs:
    def __init__(__self__, *,
                 ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
        if ids is not None:
            pulumi.set(__self__, "ids", ids)

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

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


@pulumi.input_type
class ApplicationSegmentBrowserAccessTcpPortRangeArgs:
    def __init__(__self__, *,
                 from_: Optional[pulumi.Input[str]] = None,
                 to: Optional[pulumi.Input[str]] = None):
        if from_ is not None:
            pulumi.set(__self__, "from_", from_)
        if to is not None:
            pulumi.set(__self__, "to", to)

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

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

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

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


@pulumi.input_type
class ApplicationSegmentBrowserAccessUdpPortRangeArgs:
    def __init__(__self__, *,
                 from_: Optional[pulumi.Input[str]] = None,
                 to: Optional[pulumi.Input[str]] = None):
        if from_ is not None:
            pulumi.set(__self__, "from_", from_)
        if to is not None:
            pulumi.set(__self__, "to", to)

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

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

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

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


@pulumi.input_type
class ApplicationSegmentInspectionCommonAppsDtoArgs:
    def __init__(__self__, *,
                 apps_configs: Optional[pulumi.Input[Sequence[pulumi.Input['ApplicationSegmentInspectionCommonAppsDtoAppsConfigArgs']]]] = None):
        if apps_configs is not None:
            pulumi.set(__self__, "apps_configs", apps_configs)

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

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


@pulumi.input_type
class ApplicationSegmentInspectionCommonAppsDtoAppsConfigArgs:
    def __init__(__self__, *,
                 app_types: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 application_port: Optional[pulumi.Input[str]] = None,
                 application_protocol: Optional[pulumi.Input[str]] = None,
                 certificate_id: Optional[pulumi.Input[str]] = None,
                 description: Optional[pulumi.Input[str]] = None,
                 domain: Optional[pulumi.Input[str]] = None,
                 enabled: Optional[pulumi.Input[bool]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 trust_untrusted_cert: Optional[pulumi.Input[bool]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input[str]]] app_types: Indicates the type of application as inspection. Supported value: `INSPECT`
        :param pulumi.Input[str] application_port: Port for the Inspection Application Segment.
        :param pulumi.Input[str] application_protocol: Protocol for the Inspection Application Segment.. Supported values: `HTTP` and `HTTPS`
        :param pulumi.Input[str] certificate_id: ID of the signing certificate. This field is required if the ``application_protocol`` is set to `HTTPS`. The ``certificate_id`` is **NOT** supported if the application_protocol is set to `HTTP`.
        :param pulumi.Input[str] description: (Optional) Description of the application.
        :param pulumi.Input[str] domain: Domain name of the Inspection Application Segment.
        :param pulumi.Input[bool] enabled: Whether this application is enabled or not
        :param pulumi.Input[str] name: Name of the Inspection Application Segment.
        """
        if app_types is not None:
            pulumi.set(__self__, "app_types", app_types)
        if application_port is not None:
            pulumi.set(__self__, "application_port", application_port)
        if application_protocol is not None:
            pulumi.set(__self__, "application_protocol", application_protocol)
        if certificate_id is not None:
            pulumi.set(__self__, "certificate_id", certificate_id)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if domain is not None:
            pulumi.set(__self__, "domain", domain)
        if enabled is not None:
            pulumi.set(__self__, "enabled", enabled)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if trust_untrusted_cert is not None:
            pulumi.set(__self__, "trust_untrusted_cert", trust_untrusted_cert)

    @property
    @pulumi.getter(name="appTypes")
    def app_types(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        Indicates the type of application as inspection. Supported value: `INSPECT`
        """
        return pulumi.get(self, "app_types")

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

    @property
    @pulumi.getter(name="applicationPort")
    def application_port(self) -> Optional[pulumi.Input[str]]:
        """
        Port for the Inspection Application Segment.
        """
        return pulumi.get(self, "application_port")

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

    @property
    @pulumi.getter(name="applicationProtocol")
    def application_protocol(self) -> Optional[pulumi.Input[str]]:
        """
        Protocol for the Inspection Application Segment.. Supported values: `HTTP` and `HTTPS`
        """
        return pulumi.get(self, "application_protocol")

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

    @property
    @pulumi.getter(name="certificateId")
    def certificate_id(self) -> Optional[pulumi.Input[str]]:
        """
        ID of the signing certificate. This field is required if the ``application_protocol`` is set to `HTTPS`. The ``certificate_id`` is **NOT** supported if the application_protocol is set to `HTTP`.
        """
        return pulumi.get(self, "certificate_id")

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

    @property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[str]]:
        """
        (Optional) Description of the application.
        """
        return pulumi.get(self, "description")

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

    @property
    @pulumi.getter
    def domain(self) -> Optional[pulumi.Input[str]]:
        """
        Domain name of the Inspection Application Segment.
        """
        return pulumi.get(self, "domain")

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

    @property
    @pulumi.getter
    def enabled(self) -> Optional[pulumi.Input[bool]]:
        """
        Whether this application is enabled or not
        """
        return pulumi.get(self, "enabled")

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

    @property
    @pulumi.getter
    def name(self) -> Optional[pulumi.Input[str]]:
        """
        Name of the Inspection Application Segment.
        """
        return pulumi.get(self, "name")

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

    @property
    @pulumi.getter(name="trustUntrustedCert")
    def trust_untrusted_cert(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "trust_untrusted_cert")

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


@pulumi.input_type
class ApplicationSegmentInspectionServerGroupArgs:
    def __init__(__self__, *,
                 ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
        if ids is not None:
            pulumi.set(__self__, "ids", ids)

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

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


@pulumi.input_type
class ApplicationSegmentInspectionTcpPortRangeArgs:
    def __init__(__self__, *,
                 from_: Optional[pulumi.Input[str]] = None,
                 to: Optional[pulumi.Input[str]] = None):
        if from_ is not None:
            pulumi.set(__self__, "from_", from_)
        if to is not None:
            pulumi.set(__self__, "to", to)

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

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

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

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


@pulumi.input_type
class ApplicationSegmentInspectionUdpPortRangeArgs:
    def __init__(__self__, *,
                 from_: Optional[pulumi.Input[str]] = None,
                 to: Optional[pulumi.Input[str]] = None):
        if from_ is not None:
            pulumi.set(__self__, "from_", from_)
        if to is not None:
            pulumi.set(__self__, "to", to)

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

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

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

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


@pulumi.input_type
class ApplicationSegmentPRACommonAppsDtoArgs:
    def __init__(__self__, *,
                 apps_configs: Optional[pulumi.Input[Sequence[pulumi.Input['ApplicationSegmentPRACommonAppsDtoAppsConfigArgs']]]] = None):
        if apps_configs is not None:
            pulumi.set(__self__, "apps_configs", apps_configs)

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

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


@pulumi.input_type
class ApplicationSegmentPRACommonAppsDtoAppsConfigArgs:
    def __init__(__self__, *,
                 app_id: Optional[pulumi.Input[str]] = None,
                 app_types: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 application_port: Optional[pulumi.Input[str]] = None,
                 application_protocol: Optional[pulumi.Input[str]] = None,
                 connection_security: Optional[pulumi.Input[str]] = None,
                 description: Optional[pulumi.Input[str]] = None,
                 domain: Optional[pulumi.Input[str]] = None,
                 enabled: Optional[pulumi.Input[bool]] = None,
                 name: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input[str]]] app_types: Indicates the type of application as Privileged Remote Access. Supported value: `SECURE_REMOTE_ACCESS`
        :param pulumi.Input[str] application_port: Port for the Privileged Remote Access
        :param pulumi.Input[str] application_protocol: Protocol for the Privileged Remote Access. Supported values: `RDP` and `SSH`
        :param pulumi.Input[str] connection_security: Parameter required when `application_protocol` is of type `RDP`
        :param pulumi.Input[str] description: (Optional) Description of the application.
        :param pulumi.Input[str] domain: Domain name of the Privileged Remote Access
        :param pulumi.Input[bool] enabled: Whether this application is enabled or not
        :param pulumi.Input[str] name: Name of the Privileged Remote Access
        """
        if app_id is not None:
            pulumi.set(__self__, "app_id", app_id)
        if app_types is not None:
            pulumi.set(__self__, "app_types", app_types)
        if application_port is not None:
            pulumi.set(__self__, "application_port", application_port)
        if application_protocol is not None:
            pulumi.set(__self__, "application_protocol", application_protocol)
        if connection_security is not None:
            pulumi.set(__self__, "connection_security", connection_security)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if domain is not None:
            pulumi.set(__self__, "domain", domain)
        if enabled is not None:
            pulumi.set(__self__, "enabled", enabled)
        if name is not None:
            pulumi.set(__self__, "name", name)

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

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

    @property
    @pulumi.getter(name="appTypes")
    def app_types(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        Indicates the type of application as Privileged Remote Access. Supported value: `SECURE_REMOTE_ACCESS`
        """
        return pulumi.get(self, "app_types")

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

    @property
    @pulumi.getter(name="applicationPort")
    def application_port(self) -> Optional[pulumi.Input[str]]:
        """
        Port for the Privileged Remote Access
        """
        return pulumi.get(self, "application_port")

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

    @property
    @pulumi.getter(name="applicationProtocol")
    def application_protocol(self) -> Optional[pulumi.Input[str]]:
        """
        Protocol for the Privileged Remote Access. Supported values: `RDP` and `SSH`
        """
        return pulumi.get(self, "application_protocol")

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

    @property
    @pulumi.getter(name="connectionSecurity")
    def connection_security(self) -> Optional[pulumi.Input[str]]:
        """
        Parameter required when `application_protocol` is of type `RDP`
        """
        return pulumi.get(self, "connection_security")

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

    @property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[str]]:
        """
        (Optional) Description of the application.
        """
        return pulumi.get(self, "description")

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

    @property
    @pulumi.getter
    def domain(self) -> Optional[pulumi.Input[str]]:
        """
        Domain name of the Privileged Remote Access
        """
        return pulumi.get(self, "domain")

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

    @property
    @pulumi.getter
    def enabled(self) -> Optional[pulumi.Input[bool]]:
        """
        Whether this application is enabled or not
        """
        return pulumi.get(self, "enabled")

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

    @property
    @pulumi.getter
    def name(self) -> Optional[pulumi.Input[str]]:
        """
        Name of the Privileged Remote Access
        """
        return pulumi.get(self, "name")

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


@pulumi.input_type
class ApplicationSegmentPRAServerGroupArgs:
    def __init__(__self__, *,
                 ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
        if ids is not None:
            pulumi.set(__self__, "ids", ids)

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

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


@pulumi.input_type
class ApplicationSegmentPRATcpPortRangeArgs:
    def __init__(__self__, *,
                 from_: Optional[pulumi.Input[str]] = None,
                 to: Optional[pulumi.Input[str]] = None):
        if from_ is not None:
            pulumi.set(__self__, "from_", from_)
        if to is not None:
            pulumi.set(__self__, "to", to)

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

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

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

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


@pulumi.input_type
class ApplicationSegmentPRAUdpPortRangeArgs:
    def __init__(__self__, *,
                 from_: Optional[pulumi.Input[str]] = None,
                 to: Optional[pulumi.Input[str]] = None):
        if from_ is not None:
            pulumi.set(__self__, "from_", from_)
        if to is not None:
            pulumi.set(__self__, "to", to)

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

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

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

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


@pulumi.input_type
class ApplicationSegmentServerGroupArgs:
    def __init__(__self__, *,
                 ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
        if ids is not None:
            pulumi.set(__self__, "ids", ids)

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

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


@pulumi.input_type
class ApplicationSegmentTcpPortRangeArgs:
    def __init__(__self__, *,
                 from_: Optional[pulumi.Input[str]] = None,
                 to: Optional[pulumi.Input[str]] = None):
        if from_ is not None:
            pulumi.set(__self__, "from_", from_)
        if to is not None:
            pulumi.set(__self__, "to", to)

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

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

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

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


@pulumi.input_type
class ApplicationSegmentUdpPortRangeArgs:
    def __init__(__self__, *,
                 from_: Optional[pulumi.Input[str]] = None,
                 to: Optional[pulumi.Input[str]] = None):
        if from_ is not None:
            pulumi.set(__self__, "from_", from_)
        if to is not None:
            pulumi.set(__self__, "to", to)

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

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

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

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


@pulumi.input_type
class BrowserAccessClientlessAppArgs:
    def __init__(__self__, *,
                 application_port: pulumi.Input[str],
                 application_protocol: pulumi.Input[str],
                 certificate_id: pulumi.Input[str],
                 name: pulumi.Input[str],
                 allow_options: Optional[pulumi.Input[bool]] = None,
                 cname: Optional[pulumi.Input[str]] = None,
                 description: Optional[pulumi.Input[str]] = None,
                 domain: Optional[pulumi.Input[str]] = None,
                 enabled: Optional[pulumi.Input[bool]] = None,
                 hidden: Optional[pulumi.Input[bool]] = None,
                 id: Optional[pulumi.Input[str]] = None,
                 local_domain: Optional[pulumi.Input[str]] = None,
                 path: Optional[pulumi.Input[str]] = None,
                 trust_untrusted_cert: Optional[pulumi.Input[bool]] = None):
        """
        :param pulumi.Input[str] application_port: Port for the BA app.
        :param pulumi.Input[str] application_protocol: Protocol for the BA app. Supported values: `HTTP` and `HTTPS`
        :param pulumi.Input[str] certificate_id: ID of the BA certificate. Refer to the data source documentation for `BrowserCertificate`
        :param pulumi.Input[str] name: Name of BA app.
        :param pulumi.Input[bool] allow_options: If you want ZPA to forward unauthenticated HTTP preflight OPTIONS requests from the browser to the app.. Supported values: `true` and `false`
        :param pulumi.Input[str] cname: (Optional)
        :param pulumi.Input[str] description: (Optional) Description of the application.
        :param pulumi.Input[str] domain: Domain name or IP address of the BA app.
        :param pulumi.Input[bool] enabled: (Optional) - Whether this app is enabled or not.
        :param pulumi.Input[bool] hidden: (Optional)
        :param pulumi.Input[str] local_domain: (Optional)
        :param pulumi.Input[str] path: (Optional)
        :param pulumi.Input[bool] trust_untrusted_cert: (Optional)
        """
        pulumi.set(__self__, "application_port", application_port)
        pulumi.set(__self__, "application_protocol", application_protocol)
        pulumi.set(__self__, "certificate_id", certificate_id)
        pulumi.set(__self__, "name", name)
        if allow_options is not None:
            pulumi.set(__self__, "allow_options", allow_options)
        if cname is not None:
            pulumi.set(__self__, "cname", cname)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if domain is not None:
            pulumi.set(__self__, "domain", domain)
        if enabled is not None:
            pulumi.set(__self__, "enabled", enabled)
        if hidden is not None:
            pulumi.set(__self__, "hidden", hidden)
        if id is not None:
            pulumi.set(__self__, "id", id)
        if local_domain is not None:
            pulumi.set(__self__, "local_domain", local_domain)
        if path is not None:
            pulumi.set(__self__, "path", path)
        if trust_untrusted_cert is not None:
            pulumi.set(__self__, "trust_untrusted_cert", trust_untrusted_cert)

    @property
    @pulumi.getter(name="applicationPort")
    def application_port(self) -> pulumi.Input[str]:
        """
        Port for the BA app.
        """
        return pulumi.get(self, "application_port")

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

    @property
    @pulumi.getter(name="applicationProtocol")
    def application_protocol(self) -> pulumi.Input[str]:
        """
        Protocol for the BA app. Supported values: `HTTP` and `HTTPS`
        """
        return pulumi.get(self, "application_protocol")

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

    @property
    @pulumi.getter(name="certificateId")
    def certificate_id(self) -> pulumi.Input[str]:
        """
        ID of the BA certificate. Refer to the data source documentation for `BrowserCertificate`
        """
        return pulumi.get(self, "certificate_id")

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

    @property
    @pulumi.getter
    def name(self) -> pulumi.Input[str]:
        """
        Name of BA app.
        """
        return pulumi.get(self, "name")

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

    @property
    @pulumi.getter(name="allowOptions")
    def allow_options(self) -> Optional[pulumi.Input[bool]]:
        """
        If you want ZPA to forward unauthenticated HTTP preflight OPTIONS requests from the browser to the app.. Supported values: `true` and `false`
        """
        return pulumi.get(self, "allow_options")

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

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

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

    @property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[str]]:
        """
        (Optional) Description of the application.
        """
        return pulumi.get(self, "description")

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

    @property
    @pulumi.getter
    def domain(self) -> Optional[pulumi.Input[str]]:
        """
        Domain name or IP address of the BA app.
        """
        return pulumi.get(self, "domain")

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

    @property
    @pulumi.getter
    def enabled(self) -> Optional[pulumi.Input[bool]]:
        """
        (Optional) - Whether this app is enabled or not.
        """
        return pulumi.get(self, "enabled")

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

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

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

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

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

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

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

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

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

    @property
    @pulumi.getter(name="trustUntrustedCert")
    def trust_untrusted_cert(self) -> Optional[pulumi.Input[bool]]:
        """
        (Optional)
        """
        return pulumi.get(self, "trust_untrusted_cert")

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


@pulumi.input_type
class BrowserAccessServerGroupArgs:
    def __init__(__self__, *,
                 ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
        if ids is not None:
            pulumi.set(__self__, "ids", ids)

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

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


@pulumi.input_type
class BrowserAccessTcpPortRangeArgs:
    def __init__(__self__, *,
                 from_: Optional[pulumi.Input[str]] = None,
                 to: Optional[pulumi.Input[str]] = None):
        if from_ is not None:
            pulumi.set(__self__, "from_", from_)
        if to is not None:
            pulumi.set(__self__, "to", to)

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

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

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

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


@pulumi.input_type
class BrowserAccessUdpPortRangeArgs:
    def __init__(__self__, *,
                 from_: Optional[pulumi.Input[str]] = None,
                 to: Optional[pulumi.Input[str]] = None):
        if from_ is not None:
            pulumi.set(__self__, "from_", from_)
        if to is not None:
            pulumi.set(__self__, "to", to)

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

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

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

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


@pulumi.input_type
class CloudBrowserIsolationExternalProfileSecurityControlArgs:
    def __init__(__self__, *,
                 allow_printing: Optional[pulumi.Input[bool]] = None,
                 copy_paste: Optional[pulumi.Input[str]] = None,
                 document_viewer: Optional[pulumi.Input[bool]] = None,
                 local_render: Optional[pulumi.Input[bool]] = None,
                 restrict_keystrokes: Optional[pulumi.Input[bool]] = None,
                 upload_download: Optional[pulumi.Input[str]] = None):
        if allow_printing is not None:
            pulumi.set(__self__, "allow_printing", allow_printing)
        if copy_paste is not None:
            pulumi.set(__self__, "copy_paste", copy_paste)
        if document_viewer is not None:
            pulumi.set(__self__, "document_viewer", document_viewer)
        if local_render is not None:
            pulumi.set(__self__, "local_render", local_render)
        if restrict_keystrokes is not None:
            pulumi.set(__self__, "restrict_keystrokes", restrict_keystrokes)
        if upload_download is not None:
            pulumi.set(__self__, "upload_download", upload_download)

    @property
    @pulumi.getter(name="allowPrinting")
    def allow_printing(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "allow_printing")

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

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

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

    @property
    @pulumi.getter(name="documentViewer")
    def document_viewer(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "document_viewer")

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

    @property
    @pulumi.getter(name="localRender")
    def local_render(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "local_render")

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

    @property
    @pulumi.getter(name="restrictKeystrokes")
    def restrict_keystrokes(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "restrict_keystrokes")

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

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

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


@pulumi.input_type
class CloudBrowserIsolationExternalProfileUserExperienceArgs:
    def __init__(__self__, *,
                 browser_in_browser: Optional[pulumi.Input[bool]] = None,
                 session_persistence: Optional[pulumi.Input[bool]] = None):
        if browser_in_browser is not None:
            pulumi.set(__self__, "browser_in_browser", browser_in_browser)
        if session_persistence is not None:
            pulumi.set(__self__, "session_persistence", session_persistence)

    @property
    @pulumi.getter(name="browserInBrowser")
    def browser_in_browser(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "browser_in_browser")

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

    @property
    @pulumi.getter(name="sessionPersistence")
    def session_persistence(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "session_persistence")

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


@pulumi.input_type
class InspectionCustomControlsAssociatedInspectionProfileNameArgs:
    def __init__(__self__, *,
                 ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
        if ids is not None:
            pulumi.set(__self__, "ids", ids)

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

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


@pulumi.input_type
class InspectionCustomControlsRuleArgs:
    def __init__(__self__, *,
                 conditions: Optional[pulumi.Input['InspectionCustomControlsRuleConditionsArgs']] = None,
                 names: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 type: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input[str]]] names: Name of the rules. If rules.type is set to REQUEST_HEADERS, REQUEST_COOKIES, or RESPONSE_HEADERS, the rules.name field is required.
        :param pulumi.Input[str] type: Type value for the rules.
        """
        if conditions is not None:
            pulumi.set(__self__, "conditions", conditions)
        if names is not None:
            pulumi.set(__self__, "names", names)
        if type is not None:
            pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter
    def conditions(self) -> Optional[pulumi.Input['InspectionCustomControlsRuleConditionsArgs']]:
        return pulumi.get(self, "conditions")

    @conditions.setter
    def conditions(self, value: Optional[pulumi.Input['InspectionCustomControlsRuleConditionsArgs']]):
        pulumi.set(self, "conditions", value)

    @property
    @pulumi.getter
    def names(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        Name of the rules. If rules.type is set to REQUEST_HEADERS, REQUEST_COOKIES, or RESPONSE_HEADERS, the rules.name field is required.
        """
        return pulumi.get(self, "names")

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

    @property
    @pulumi.getter
    def type(self) -> Optional[pulumi.Input[str]]:
        """
        Type value for the rules.
        """
        return pulumi.get(self, "type")

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


@pulumi.input_type
class InspectionCustomControlsRuleConditionsArgs:
    def __init__(__self__, *,
                 lhs: Optional[pulumi.Input[str]] = None,
                 op: Optional[pulumi.Input[str]] = None,
                 rhs: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] lhs: Signifies the key for the object type
        :param pulumi.Input[str] op: Denotes the operation type.
        :param pulumi.Input[str] rhs: Denotes the value for the given object type. Its value depends on the key.
        """
        if lhs is not None:
            pulumi.set(__self__, "lhs", lhs)
        if op is not None:
            pulumi.set(__self__, "op", op)
        if rhs is not None:
            pulumi.set(__self__, "rhs", rhs)

    @property
    @pulumi.getter
    def lhs(self) -> Optional[pulumi.Input[str]]:
        """
        Signifies the key for the object type
        """
        return pulumi.get(self, "lhs")

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

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

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

    @property
    @pulumi.getter
    def rhs(self) -> Optional[pulumi.Input[str]]:
        """
        Denotes the value for the given object type. Its value depends on the key.
        """
        return pulumi.get(self, "rhs")

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


@pulumi.input_type
class InspectionProfileControlsInfoArgs:
    def __init__(__self__, *,
                 control_type: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] control_type: (string) Control types. Supported Values: `WEBSOCKET_PREDEFINED`, `WEBSOCKET_CUSTOM`, `CUSTOM`, `PREDEFINED`, `ZSCALER`
        """
        if control_type is not None:
            pulumi.set(__self__, "control_type", control_type)

    @property
    @pulumi.getter(name="controlType")
    def control_type(self) -> Optional[pulumi.Input[str]]:
        """
        (string) Control types. Supported Values: `WEBSOCKET_PREDEFINED`, `WEBSOCKET_CUSTOM`, `CUSTOM`, `PREDEFINED`, `ZSCALER`
        """
        return pulumi.get(self, "control_type")

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


@pulumi.input_type
class InspectionProfileCustomControlArgs:
    def __init__(__self__, *,
                 id: pulumi.Input[str],
                 action: Optional[pulumi.Input[str]] = None,
                 action_value: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] id: ID of the predefined control
        :param pulumi.Input[str] action: The action of the predefined control. Supported values: `PASS`, `BLOCK` and `REDIRECT`
        :param pulumi.Input[str] action_value: Value for the predefined controls action. This field is only required if the action is set to REDIRECT. This field is only required if the action is set to `REDIRECT`.
        """
        pulumi.set(__self__, "id", id)
        if action is not None:
            pulumi.set(__self__, "action", action)
        if action_value is not None:
            pulumi.set(__self__, "action_value", action_value)

    @property
    @pulumi.getter
    def id(self) -> pulumi.Input[str]:
        """
        ID of the predefined control
        """
        return pulumi.get(self, "id")

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

    @property
    @pulumi.getter
    def action(self) -> Optional[pulumi.Input[str]]:
        """
        The action of the predefined control. Supported values: `PASS`, `BLOCK` and `REDIRECT`
        """
        return pulumi.get(self, "action")

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

    @property
    @pulumi.getter(name="actionValue")
    def action_value(self) -> Optional[pulumi.Input[str]]:
        """
        Value for the predefined controls action. This field is only required if the action is set to REDIRECT. This field is only required if the action is set to `REDIRECT`.
        """
        return pulumi.get(self, "action_value")

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


@pulumi.input_type
class InspectionProfilePredefinedControlArgs:
    def __init__(__self__, *,
                 action: Optional[pulumi.Input[str]] = None,
                 action_value: Optional[pulumi.Input[str]] = None,
                 control_type: Optional[pulumi.Input[str]] = None,
                 id: Optional[pulumi.Input[str]] = None,
                 protocol_type: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] action: The action of the predefined control. Supported values: `PASS`, `BLOCK` and `REDIRECT`
        :param pulumi.Input[str] action_value: Value for the predefined controls action. This field is only required if the action is set to REDIRECT. This field is only required if the action is set to `REDIRECT`.
        :param pulumi.Input[str] control_type: (string) Control types. Supported Values: `WEBSOCKET_PREDEFINED`, `WEBSOCKET_CUSTOM`, `CUSTOM`, `PREDEFINED`, `ZSCALER`
        :param pulumi.Input[str] id: ID of the predefined control
        :param pulumi.Input[str] protocol_type: The protocol type of the predefined control
        """
        if action is not None:
            pulumi.set(__self__, "action", action)
        if action_value is not None:
            pulumi.set(__self__, "action_value", action_value)
        if control_type is not None:
            pulumi.set(__self__, "control_type", control_type)
        if id is not None:
            pulumi.set(__self__, "id", id)
        if protocol_type is not None:
            pulumi.set(__self__, "protocol_type", protocol_type)

    @property
    @pulumi.getter
    def action(self) -> Optional[pulumi.Input[str]]:
        """
        The action of the predefined control. Supported values: `PASS`, `BLOCK` and `REDIRECT`
        """
        return pulumi.get(self, "action")

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

    @property
    @pulumi.getter(name="actionValue")
    def action_value(self) -> Optional[pulumi.Input[str]]:
        """
        Value for the predefined controls action. This field is only required if the action is set to REDIRECT. This field is only required if the action is set to `REDIRECT`.
        """
        return pulumi.get(self, "action_value")

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

    @property
    @pulumi.getter(name="controlType")
    def control_type(self) -> Optional[pulumi.Input[str]]:
        """
        (string) Control types. Supported Values: `WEBSOCKET_PREDEFINED`, `WEBSOCKET_CUSTOM`, `CUSTOM`, `PREDEFINED`, `ZSCALER`
        """
        return pulumi.get(self, "control_type")

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

    @property
    @pulumi.getter
    def id(self) -> Optional[pulumi.Input[str]]:
        """
        ID of the predefined control
        """
        return pulumi.get(self, "id")

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

    @property
    @pulumi.getter(name="protocolType")
    def protocol_type(self) -> Optional[pulumi.Input[str]]:
        """
        The protocol type of the predefined control
        """
        return pulumi.get(self, "protocol_type")

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


@pulumi.input_type
class LSSConfigControllerConfigArgs:
    def __init__(__self__, *,
                 format: pulumi.Input[str],
                 lss_host: pulumi.Input[str],
                 lss_port: pulumi.Input[str],
                 name: pulumi.Input[str],
                 source_log_type: pulumi.Input[str],
                 audit_message: Optional[pulumi.Input[str]] = None,
                 description: Optional[pulumi.Input[str]] = None,
                 enabled: Optional[pulumi.Input[bool]] = None,
                 filters: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 id: Optional[pulumi.Input[str]] = None,
                 use_tls: Optional[pulumi.Input[bool]] = None):
        """
        :param pulumi.Input[str] format: Format of the log type. Format given by the following API to get formats: /mgmtconfig/v2/admin/lssConfig/logType/formats
        :param pulumi.Input[str] lss_host: Host of the LSS configuration
        :param pulumi.Input[str] lss_port: Port of the LSS configuration
        :param pulumi.Input[str] name: Name of the LSS configuration
        :param pulumi.Input[str] source_log_type: Log type of the LSS configuration
        :param pulumi.Input[str] description: Description of the LSS configuration
        :param pulumi.Input[bool] enabled: Whether this LSS configuration is enabled or not. Supported values: true, false
        :param pulumi.Input[Sequence[pulumi.Input[str]]] filters: Filter for the LSS configuration. Format given by the following API to get status codes: /mgmtconfig/v2/admin/lssConfig/statusCodes
        """
        pulumi.set(__self__, "format", format)
        pulumi.set(__self__, "lss_host", lss_host)
        pulumi.set(__self__, "lss_port", lss_port)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "source_log_type", source_log_type)
        if audit_message is not None:
            pulumi.set(__self__, "audit_message", audit_message)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if enabled is not None:
            pulumi.set(__self__, "enabled", enabled)
        if filters is not None:
            pulumi.set(__self__, "filters", filters)
        if id is not None:
            pulumi.set(__self__, "id", id)
        if use_tls is not None:
            pulumi.set(__self__, "use_tls", use_tls)

    @property
    @pulumi.getter
    def format(self) -> pulumi.Input[str]:
        """
        Format of the log type. Format given by the following API to get formats: /mgmtconfig/v2/admin/lssConfig/logType/formats
        """
        return pulumi.get(self, "format")

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

    @property
    @pulumi.getter(name="lssHost")
    def lss_host(self) -> pulumi.Input[str]:
        """
        Host of the LSS configuration
        """
        return pulumi.get(self, "lss_host")

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

    @property
    @pulumi.getter(name="lssPort")
    def lss_port(self) -> pulumi.Input[str]:
        """
        Port of the LSS configuration
        """
        return pulumi.get(self, "lss_port")

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

    @property
    @pulumi.getter
    def name(self) -> pulumi.Input[str]:
        """
        Name of the LSS configuration
        """
        return pulumi.get(self, "name")

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

    @property
    @pulumi.getter(name="sourceLogType")
    def source_log_type(self) -> pulumi.Input[str]:
        """
        Log type of the LSS configuration
        """
        return pulumi.get(self, "source_log_type")

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

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

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

    @property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[str]]:
        """
        Description of the LSS configuration
        """
        return pulumi.get(self, "description")

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

    @property
    @pulumi.getter
    def enabled(self) -> Optional[pulumi.Input[bool]]:
        """
        Whether this LSS configuration is enabled or not. Supported values: true, false
        """
        return pulumi.get(self, "enabled")

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

    @property
    @pulumi.getter
    def filters(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        Filter for the LSS configuration. Format given by the following API to get status codes: /mgmtconfig/v2/admin/lssConfig/statusCodes
        """
        return pulumi.get(self, "filters")

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

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

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

    @property
    @pulumi.getter(name="useTls")
    def use_tls(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "use_tls")

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


@pulumi.input_type
class LSSConfigControllerConnectorGroupArgs:
    def __init__(__self__, *,
                 ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
        if ids is not None:
            pulumi.set(__self__, "ids", ids)

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

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


@pulumi.input_type
class LSSConfigControllerPolicyRuleResourceArgs:
    def __init__(__self__, *,
                 name: pulumi.Input[str],
                 action: Optional[pulumi.Input[str]] = None,
                 action_id: Optional[pulumi.Input[str]] = None,
                 bypass_default_rule: Optional[pulumi.Input[bool]] = None,
                 conditions: Optional[pulumi.Input[Sequence[pulumi.Input['LSSConfigControllerPolicyRuleResourceConditionArgs']]]] = None,
                 custom_msg: Optional[pulumi.Input[str]] = None,
                 default_rule: Optional[pulumi.Input[bool]] = None,
                 description: Optional[pulumi.Input[str]] = None,
                 id: Optional[pulumi.Input[str]] = None,
                 lss_default_rule: Optional[pulumi.Input[bool]] = None,
                 microtenant_id: Optional[pulumi.Input[str]] = None,
                 operator: Optional[pulumi.Input[str]] = None,
                 policy_set_id: Optional[pulumi.Input[str]] = None,
                 policy_type: Optional[pulumi.Input[str]] = None,
                 priority: Optional[pulumi.Input[str]] = None,
                 reauth_default_rule: Optional[pulumi.Input[bool]] = None,
                 reauth_idle_timeout: Optional[pulumi.Input[str]] = None,
                 reauth_timeout: Optional[pulumi.Input[str]] = None,
                 rule_order: Optional[pulumi.Input[str]] = None,
                 zpn_cbi_profile_id: Optional[pulumi.Input[str]] = None,
                 zpn_inspection_profile_id: Optional[pulumi.Input[str]] = None,
                 zpn_isolation_profile_id: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] name: This is the name of the policy.
        :param pulumi.Input[str] action: This is for providing the rule action.
        :param pulumi.Input[str] action_id: This field defines the description of the server.
        :param pulumi.Input[Sequence[pulumi.Input['LSSConfigControllerPolicyRuleResourceConditionArgs']]] conditions: This is for proviidng the set of conditions for the policy.
        :param pulumi.Input[str] custom_msg: This is for providing a customer message for the user.
        :param pulumi.Input[bool] default_rule: This is for providing a customer message for the user.
        :param pulumi.Input[str] description: This is the description of the access policy.
        """
        pulumi.set(__self__, "name", name)
        if action is not None:
            pulumi.set(__self__, "action", action)
        if action_id is not None:
            pulumi.set(__self__, "action_id", action_id)
        if bypass_default_rule is not None:
            pulumi.set(__self__, "bypass_default_rule", bypass_default_rule)
        if conditions is not None:
            pulumi.set(__self__, "conditions", conditions)
        if custom_msg is not None:
            pulumi.set(__self__, "custom_msg", custom_msg)
        if default_rule is not None:
            pulumi.set(__self__, "default_rule", default_rule)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if id is not None:
            pulumi.set(__self__, "id", id)
        if lss_default_rule is not None:
            pulumi.set(__self__, "lss_default_rule", lss_default_rule)
        if microtenant_id is not None:
            pulumi.set(__self__, "microtenant_id", microtenant_id)
        if operator is not None:
            pulumi.set(__self__, "operator", operator)
        if policy_set_id is not None:
            pulumi.set(__self__, "policy_set_id", policy_set_id)
        if policy_type is not None:
            pulumi.set(__self__, "policy_type", policy_type)
        if priority is not None:
            pulumi.set(__self__, "priority", priority)
        if reauth_default_rule is not None:
            pulumi.set(__self__, "reauth_default_rule", reauth_default_rule)
        if reauth_idle_timeout is not None:
            pulumi.set(__self__, "reauth_idle_timeout", reauth_idle_timeout)
        if reauth_timeout is not None:
            pulumi.set(__self__, "reauth_timeout", reauth_timeout)
        if rule_order is not None:
            warnings.warn("""The `rule_order` field is now deprecated for all zpa access policy resources in favor of the resource `zpa_policy_access_rule_reorder`""", DeprecationWarning)
            pulumi.log.warn("""rule_order is deprecated: The `rule_order` field is now deprecated for all zpa access policy resources in favor of the resource `zpa_policy_access_rule_reorder`""")
        if rule_order is not None:
            pulumi.set(__self__, "rule_order", rule_order)
        if zpn_cbi_profile_id is not None:
            pulumi.set(__self__, "zpn_cbi_profile_id", zpn_cbi_profile_id)
        if zpn_inspection_profile_id is not None:
            pulumi.set(__self__, "zpn_inspection_profile_id", zpn_inspection_profile_id)
        if zpn_isolation_profile_id is not None:
            pulumi.set(__self__, "zpn_isolation_profile_id", zpn_isolation_profile_id)

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

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

    @property
    @pulumi.getter
    def action(self) -> Optional[pulumi.Input[str]]:
        """
        This is for providing the rule action.
        """
        return pulumi.get(self, "action")

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

    @property
    @pulumi.getter(name="actionId")
    def action_id(self) -> Optional[pulumi.Input[str]]:
        """
        This field defines the description of the server.
        """
        return pulumi.get(self, "action_id")

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

    @property
    @pulumi.getter(name="bypassDefaultRule")
    def bypass_default_rule(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "bypass_default_rule")

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

    @property
    @pulumi.getter
    def conditions(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['LSSConfigControllerPolicyRuleResourceConditionArgs']]]]:
        """
        This is for proviidng the set of conditions for the policy.
        """
        return pulumi.get(self, "conditions")

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

    @property
    @pulumi.getter(name="customMsg")
    def custom_msg(self) -> Optional[pulumi.Input[str]]:
        """
        This is for providing a customer message for the user.
        """
        return pulumi.get(self, "custom_msg")

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

    @property
    @pulumi.getter(name="defaultRule")
    def default_rule(self) -> Optional[pulumi.Input[bool]]:
        """
        This is for providing a customer message for the user.
        """
        return pulumi.get(self, "default_rule")

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

    @property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[str]]:
        """
        This is the description of the access policy.
        """
        return pulumi.get(self, "description")

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

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

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

    @property
    @pulumi.getter(name="lssDefaultRule")
    def lss_default_rule(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "lss_default_rule")

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

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

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

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

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

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

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

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

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

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

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

    @property
    @pulumi.getter(name="reauthDefaultRule")
    def reauth_default_rule(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "reauth_default_rule")

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

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

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

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

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

    @property
    @pulumi.getter(name="ruleOrder")
    def rule_order(self) -> Optional[pulumi.Input[str]]:
        warnings.warn("""The `rule_order` field is now deprecated for all zpa access policy resources in favor of the resource `zpa_policy_access_rule_reorder`""", DeprecationWarning)
        pulumi.log.warn("""rule_order is deprecated: The `rule_order` field is now deprecated for all zpa access policy resources in favor of the resource `zpa_policy_access_rule_reorder`""")

        return pulumi.get(self, "rule_order")

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

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

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

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

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

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

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


@pulumi.input_type
class LSSConfigControllerPolicyRuleResourceConditionArgs:
    def __init__(__self__, *,
                 operator: pulumi.Input[str],
                 negated: Optional[pulumi.Input[bool]] = None,
                 operands: Optional[pulumi.Input[Sequence[pulumi.Input['LSSConfigControllerPolicyRuleResourceConditionOperandArgs']]]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input['LSSConfigControllerPolicyRuleResourceConditionOperandArgs']]] operands: This signifies the various policy criteria.
        """
        pulumi.set(__self__, "operator", operator)
        if negated is not None:
            pulumi.set(__self__, "negated", negated)
        if operands is not None:
            pulumi.set(__self__, "operands", operands)

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

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

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

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

    @property
    @pulumi.getter
    def operands(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['LSSConfigControllerPolicyRuleResourceConditionOperandArgs']]]]:
        """
        This signifies the various policy criteria.
        """
        return pulumi.get(self, "operands")

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


@pulumi.input_type
class LSSConfigControllerPolicyRuleResourceConditionOperandArgs:
    def __init__(__self__, *,
                 object_type: pulumi.Input[str],
                 entry_values: Optional[pulumi.Input[Sequence[pulumi.Input['LSSConfigControllerPolicyRuleResourceConditionOperandEntryValueArgs']]]] = None,
                 values: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
        """
        :param pulumi.Input[str] object_type: This is for specifying the policy critiera.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] values: This denotes a list of values for the given object type. The value depend upon the key. If rhs is defined this list will be ignored
        """
        pulumi.set(__self__, "object_type", object_type)
        if entry_values is not None:
            pulumi.set(__self__, "entry_values", entry_values)
        if values is not None:
            pulumi.set(__self__, "values", values)

    @property
    @pulumi.getter(name="objectType")
    def object_type(self) -> pulumi.Input[str]:
        """
        This is for specifying the policy critiera.
        """
        return pulumi.get(self, "object_type")

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

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

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

    @property
    @pulumi.getter
    def values(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        This denotes a list of values for the given object type. The value depend upon the key. If rhs is defined this list will be ignored
        """
        return pulumi.get(self, "values")

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


@pulumi.input_type
class LSSConfigControllerPolicyRuleResourceConditionOperandEntryValueArgs:
    def __init__(__self__, *,
                 lhs: Optional[pulumi.Input[str]] = None,
                 rhs: Optional[pulumi.Input[str]] = None):
        if lhs is not None:
            pulumi.set(__self__, "lhs", lhs)
        if rhs is not None:
            pulumi.set(__self__, "rhs", rhs)

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

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

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

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


@pulumi.input_type
class MicrotenantUserArgs:
    def __init__(__self__, *,
                 display_name: Optional[pulumi.Input[str]] = None,
                 microtenant_id: Optional[pulumi.Input[str]] = None,
                 password: Optional[pulumi.Input[str]] = None,
                 username: Optional[pulumi.Input[str]] = None):
        if display_name is not None:
            pulumi.set(__self__, "display_name", display_name)
        if microtenant_id is not None:
            pulumi.set(__self__, "microtenant_id", microtenant_id)
        if password is not None:
            pulumi.set(__self__, "password", password)
        if username is not None:
            pulumi.set(__self__, "username", username)

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

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

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

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

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

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

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

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


@pulumi.input_type
class PolicyAccessForwardingRuleConditionArgs:
    def __init__(__self__, *,
                 operator: pulumi.Input[str],
                 id: Optional[pulumi.Input[str]] = None,
                 microtenant_id: Optional[pulumi.Input[str]] = None,
                 negated: Optional[pulumi.Input[bool]] = None,
                 operands: Optional[pulumi.Input[Sequence[pulumi.Input['PolicyAccessForwardingRuleConditionOperandArgs']]]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input['PolicyAccessForwardingRuleConditionOperandArgs']]] operands: This signifies the various policy criteria.
        """
        pulumi.set(__self__, "operator", operator)
        if id is not None:
            pulumi.set(__self__, "id", id)
        if microtenant_id is not None:
            pulumi.set(__self__, "microtenant_id", microtenant_id)
        if negated is not None:
            pulumi.set(__self__, "negated", negated)
        if operands is not None:
            pulumi.set(__self__, "operands", operands)

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

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

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

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

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

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

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

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

    @property
    @pulumi.getter
    def operands(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['PolicyAccessForwardingRuleConditionOperandArgs']]]]:
        """
        This signifies the various policy criteria.
        """
        return pulumi.get(self, "operands")

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


@pulumi.input_type
class PolicyAccessForwardingRuleConditionOperandArgs:
    def __init__(__self__, *,
                 lhs: pulumi.Input[str],
                 object_type: pulumi.Input[str],
                 id: Optional[pulumi.Input[str]] = None,
                 idp_id: Optional[pulumi.Input[str]] = None,
                 microtenant_id: Optional[pulumi.Input[str]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 rhs: Optional[pulumi.Input[str]] = None,
                 rhs_lists: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
        """
        :param pulumi.Input[str] lhs: This signifies the key for the object type. String ID example: id
        :param pulumi.Input[str] object_type: This is for specifying the policy critiera.
        :param pulumi.Input[str] microtenant_id: This denotes the value for the given object type. Its value depends upon the key.
        :param pulumi.Input[str] rhs: This denotes the value for the given object type. Its value depends upon the key.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] rhs_lists: This denotes a list of values for the given object type. The value depend upon the key. If rhs is defined this list will be ignored
        """
        pulumi.set(__self__, "lhs", lhs)
        pulumi.set(__self__, "object_type", object_type)
        if id is not None:
            pulumi.set(__self__, "id", id)
        if idp_id is not None:
            pulumi.set(__self__, "idp_id", idp_id)
        if microtenant_id is not None:
            pulumi.set(__self__, "microtenant_id", microtenant_id)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if rhs is not None:
            pulumi.set(__self__, "rhs", rhs)
        if rhs_lists is not None:
            pulumi.set(__self__, "rhs_lists", rhs_lists)

    @property
    @pulumi.getter
    def lhs(self) -> pulumi.Input[str]:
        """
        This signifies the key for the object type. String ID example: id
        """
        return pulumi.get(self, "lhs")

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

    @property
    @pulumi.getter(name="objectType")
    def object_type(self) -> pulumi.Input[str]:
        """
        This is for specifying the policy critiera.
        """
        return pulumi.get(self, "object_type")

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

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

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

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

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

    @property
    @pulumi.getter(name="microtenantId")
    def microtenant_id(self) -> Optional[pulumi.Input[str]]:
        """
        This denotes the value for the given object type. Its value depends upon the key.
        """
        return pulumi.get(self, "microtenant_id")

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

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

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

    @property
    @pulumi.getter
    def rhs(self) -> Optional[pulumi.Input[str]]:
        """
        This denotes the value for the given object type. Its value depends upon the key.
        """
        return pulumi.get(self, "rhs")

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

    @property
    @pulumi.getter(name="rhsLists")
    def rhs_lists(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        This denotes a list of values for the given object type. The value depend upon the key. If rhs is defined this list will be ignored
        """
        return pulumi.get(self, "rhs_lists")

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


@pulumi.input_type
class PolicyAccessInspectionRuleConditionArgs:
    def __init__(__self__, *,
                 operator: pulumi.Input[str],
                 id: Optional[pulumi.Input[str]] = None,
                 microtenant_id: Optional[pulumi.Input[str]] = None,
                 negated: Optional[pulumi.Input[bool]] = None,
                 operands: Optional[pulumi.Input[Sequence[pulumi.Input['PolicyAccessInspectionRuleConditionOperandArgs']]]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input['PolicyAccessInspectionRuleConditionOperandArgs']]] operands: This signifies the various policy criteria.
        """
        pulumi.set(__self__, "operator", operator)
        if id is not None:
            pulumi.set(__self__, "id", id)
        if microtenant_id is not None:
            pulumi.set(__self__, "microtenant_id", microtenant_id)
        if negated is not None:
            pulumi.set(__self__, "negated", negated)
        if operands is not None:
            pulumi.set(__self__, "operands", operands)

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

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

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

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

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

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

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

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

    @property
    @pulumi.getter
    def operands(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['PolicyAccessInspectionRuleConditionOperandArgs']]]]:
        """
        This signifies the various policy criteria.
        """
        return pulumi.get(self, "operands")

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


@pulumi.input_type
class PolicyAccessInspectionRuleConditionOperandArgs:
    def __init__(__self__, *,
                 lhs: pulumi.Input[str],
                 object_type: pulumi.Input[str],
                 id: Optional[pulumi.Input[str]] = None,
                 idp_id: Optional[pulumi.Input[str]] = None,
                 microtenant_id: Optional[pulumi.Input[str]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 rhs: Optional[pulumi.Input[str]] = None,
                 rhs_lists: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
        """
        :param pulumi.Input[str] lhs: This signifies the key for the object type. String ID example: id
        :param pulumi.Input[str] object_type: This is for specifying the policy critiera.
        :param pulumi.Input[str] microtenant_id: This denotes the value for the given object type. Its value depends upon the key.
        :param pulumi.Input[str] rhs: This denotes the value for the given object type. Its value depends upon the key.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] rhs_lists: This denotes a list of values for the given object type. The value depend upon the key. If rhs is defined this list will be ignored
        """
        pulumi.set(__self__, "lhs", lhs)
        pulumi.set(__self__, "object_type", object_type)
        if id is not None:
            pulumi.set(__self__, "id", id)
        if idp_id is not None:
            pulumi.set(__self__, "idp_id", idp_id)
        if microtenant_id is not None:
            pulumi.set(__self__, "microtenant_id", microtenant_id)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if rhs is not None:
            pulumi.set(__self__, "rhs", rhs)
        if rhs_lists is not None:
            pulumi.set(__self__, "rhs_lists", rhs_lists)

    @property
    @pulumi.getter
    def lhs(self) -> pulumi.Input[str]:
        """
        This signifies the key for the object type. String ID example: id
        """
        return pulumi.get(self, "lhs")

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

    @property
    @pulumi.getter(name="objectType")
    def object_type(self) -> pulumi.Input[str]:
        """
        This is for specifying the policy critiera.
        """
        return pulumi.get(self, "object_type")

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

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

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

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

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

    @property
    @pulumi.getter(name="microtenantId")
    def microtenant_id(self) -> Optional[pulumi.Input[str]]:
        """
        This denotes the value for the given object type. Its value depends upon the key.
        """
        return pulumi.get(self, "microtenant_id")

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

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

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

    @property
    @pulumi.getter
    def rhs(self) -> Optional[pulumi.Input[str]]:
        """
        This denotes the value for the given object type. Its value depends upon the key.
        """
        return pulumi.get(self, "rhs")

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

    @property
    @pulumi.getter(name="rhsLists")
    def rhs_lists(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        This denotes a list of values for the given object type. The value depend upon the key. If rhs is defined this list will be ignored
        """
        return pulumi.get(self, "rhs_lists")

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


@pulumi.input_type
class PolicyAccessIsolationRuleConditionArgs:
    def __init__(__self__, *,
                 operator: pulumi.Input[str],
                 id: Optional[pulumi.Input[str]] = None,
                 microtenant_id: Optional[pulumi.Input[str]] = None,
                 negated: Optional[pulumi.Input[bool]] = None,
                 operands: Optional[pulumi.Input[Sequence[pulumi.Input['PolicyAccessIsolationRuleConditionOperandArgs']]]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input['PolicyAccessIsolationRuleConditionOperandArgs']]] operands: This signifies the various policy criteria.
        """
        pulumi.set(__self__, "operator", operator)
        if id is not None:
            pulumi.set(__self__, "id", id)
        if microtenant_id is not None:
            pulumi.set(__self__, "microtenant_id", microtenant_id)
        if negated is not None:
            pulumi.set(__self__, "negated", negated)
        if operands is not None:
            pulumi.set(__self__, "operands", operands)

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

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

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

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

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

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

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

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

    @property
    @pulumi.getter
    def operands(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['PolicyAccessIsolationRuleConditionOperandArgs']]]]:
        """
        This signifies the various policy criteria.
        """
        return pulumi.get(self, "operands")

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


@pulumi.input_type
class PolicyAccessIsolationRuleConditionOperandArgs:
    def __init__(__self__, *,
                 lhs: pulumi.Input[str],
                 object_type: pulumi.Input[str],
                 id: Optional[pulumi.Input[str]] = None,
                 idp_id: Optional[pulumi.Input[str]] = None,
                 microtenant_id: Optional[pulumi.Input[str]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 rhs: Optional[pulumi.Input[str]] = None,
                 rhs_lists: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
        """
        :param pulumi.Input[str] lhs: This signifies the key for the object type. String ID example: id
        :param pulumi.Input[str] object_type: This is for specifying the policy critiera.
        :param pulumi.Input[str] microtenant_id: This denotes the value for the given object type. Its value depends upon the key.
        :param pulumi.Input[str] rhs: This denotes the value for the given object type. Its value depends upon the key.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] rhs_lists: This denotes a list of values for the given object type. The value depend upon the key. If rhs is defined this list will be ignored
        """
        pulumi.set(__self__, "lhs", lhs)
        pulumi.set(__self__, "object_type", object_type)
        if id is not None:
            pulumi.set(__self__, "id", id)
        if idp_id is not None:
            pulumi.set(__self__, "idp_id", idp_id)
        if microtenant_id is not None:
            pulumi.set(__self__, "microtenant_id", microtenant_id)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if rhs is not None:
            pulumi.set(__self__, "rhs", rhs)
        if rhs_lists is not None:
            pulumi.set(__self__, "rhs_lists", rhs_lists)

    @property
    @pulumi.getter
    def lhs(self) -> pulumi.Input[str]:
        """
        This signifies the key for the object type. String ID example: id
        """
        return pulumi.get(self, "lhs")

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

    @property
    @pulumi.getter(name="objectType")
    def object_type(self) -> pulumi.Input[str]:
        """
        This is for specifying the policy critiera.
        """
        return pulumi.get(self, "object_type")

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

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

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

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

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

    @property
    @pulumi.getter(name="microtenantId")
    def microtenant_id(self) -> Optional[pulumi.Input[str]]:
        """
        This denotes the value for the given object type. Its value depends upon the key.
        """
        return pulumi.get(self, "microtenant_id")

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

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

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

    @property
    @pulumi.getter
    def rhs(self) -> Optional[pulumi.Input[str]]:
        """
        This denotes the value for the given object type. Its value depends upon the key.
        """
        return pulumi.get(self, "rhs")

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

    @property
    @pulumi.getter(name="rhsLists")
    def rhs_lists(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        This denotes a list of values for the given object type. The value depend upon the key. If rhs is defined this list will be ignored
        """
        return pulumi.get(self, "rhs_lists")

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


@pulumi.input_type
class PolicyAccessReorderRuleRuleArgs:
    def __init__(__self__, *,
                 id: pulumi.Input[str],
                 order: pulumi.Input[str]):
        """
        :param pulumi.Input[str] id: (Required) - The ID of the rule to which the order number will be applied.
        :param pulumi.Input[str] order: (Required) - The order number that should be applied to the respective rule ID.
        """
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "order", order)

    @property
    @pulumi.getter
    def id(self) -> pulumi.Input[str]:
        """
        (Required) - The ID of the rule to which the order number will be applied.
        """
        return pulumi.get(self, "id")

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

    @property
    @pulumi.getter
    def order(self) -> pulumi.Input[str]:
        """
        (Required) - The order number that should be applied to the respective rule ID.
        """
        return pulumi.get(self, "order")

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


@pulumi.input_type
class PolicyAccessRuleAppConnectorGroupArgs:
    def __init__(__self__, *,
                 ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input[str]]] ids: (Optional) The ID of a server group resource
        """
        if ids is not None:
            pulumi.set(__self__, "ids", ids)

    @property
    @pulumi.getter
    def ids(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        (Optional) The ID of a server group resource
        """
        return pulumi.get(self, "ids")

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


@pulumi.input_type
class PolicyAccessRuleAppServerGroupArgs:
    def __init__(__self__, *,
                 ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input[str]]] ids: (Optional) The ID of a server group resource
        """
        if ids is not None:
            pulumi.set(__self__, "ids", ids)

    @property
    @pulumi.getter
    def ids(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        (Optional) The ID of a server group resource
        """
        return pulumi.get(self, "ids")

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


@pulumi.input_type
class PolicyAccessRuleConditionArgs:
    def __init__(__self__, *,
                 operator: pulumi.Input[str],
                 id: Optional[pulumi.Input[str]] = None,
                 microtenant_id: Optional[pulumi.Input[str]] = None,
                 negated: Optional[pulumi.Input[bool]] = None,
                 operands: Optional[pulumi.Input[Sequence[pulumi.Input['PolicyAccessRuleConditionOperandArgs']]]] = None):
        """
        :param pulumi.Input[str] operator: (Optional) Supported values: ``AND``, and ``OR``
        :param pulumi.Input[str] id: (Optional) The ID of a server group resource
        :param pulumi.Input[str] microtenant_id: (Optional) The ID of the microtenant the resource is to be associated with.
        :param pulumi.Input[bool] negated: (Optional) Supported values: ``true`` or ``false``
        :param pulumi.Input[Sequence[pulumi.Input['PolicyAccessRuleConditionOperandArgs']]] operands: (Optional) - Operands block must be repeated if multiple per `object_type` conditions are to be added to the rule.
        """
        pulumi.set(__self__, "operator", operator)
        if id is not None:
            pulumi.set(__self__, "id", id)
        if microtenant_id is not None:
            pulumi.set(__self__, "microtenant_id", microtenant_id)
        if negated is not None:
            pulumi.set(__self__, "negated", negated)
        if operands is not None:
            pulumi.set(__self__, "operands", operands)

    @property
    @pulumi.getter
    def operator(self) -> pulumi.Input[str]:
        """
        (Optional) Supported values: ``AND``, and ``OR``
        """
        return pulumi.get(self, "operator")

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

    @property
    @pulumi.getter
    def id(self) -> Optional[pulumi.Input[str]]:
        """
        (Optional) The ID of a server group resource
        """
        return pulumi.get(self, "id")

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

    @property
    @pulumi.getter(name="microtenantId")
    def microtenant_id(self) -> Optional[pulumi.Input[str]]:
        """
        (Optional) The ID of the microtenant the resource is to be associated with.
        """
        return pulumi.get(self, "microtenant_id")

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

    @property
    @pulumi.getter
    def negated(self) -> Optional[pulumi.Input[bool]]:
        """
        (Optional) Supported values: ``true`` or ``false``
        """
        return pulumi.get(self, "negated")

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

    @property
    @pulumi.getter
    def operands(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['PolicyAccessRuleConditionOperandArgs']]]]:
        """
        (Optional) - Operands block must be repeated if multiple per `object_type` conditions are to be added to the rule.
        """
        return pulumi.get(self, "operands")

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


@pulumi.input_type
class PolicyAccessRuleConditionOperandArgs:
    def __init__(__self__, *,
                 lhs: pulumi.Input[str],
                 object_type: pulumi.Input[str],
                 id: Optional[pulumi.Input[str]] = None,
                 idp_id: Optional[pulumi.Input[str]] = None,
                 microtenant_id: Optional[pulumi.Input[str]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 rhs: Optional[pulumi.Input[str]] = None,
                 rhs_lists: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
        """
        :param pulumi.Input[str] lhs: (Optional) LHS must always carry the string value ``id`` or the attribute ID of the resource being associated with the rule.
        :param pulumi.Input[str] object_type: (Optional) This is for specifying the policy critiera. Supported values: `APP`, `APP_GROUP`, `SAML`, `IDP`, `CLIENT_TYPE`, `TRUSTED_NETWORK`, `POSTURE`, `SCIM`, `SCIM_GROUP`, and `CLOUD_CONNECTOR_GROUP`. `TRUSTED_NETWORK`, `CLIENT_TYPE`, `PLATFORM`, `COUNTRY_CODE`.
        :param pulumi.Input[str] id: (Optional) The ID of a server group resource
        :param pulumi.Input[str] idp_id: (Optional)
        :param pulumi.Input[str] microtenant_id: (Optional) The ID of the microtenant the resource is to be associated with.
        :param pulumi.Input[str] name: (Optional)
        :param pulumi.Input[str] rhs: (Optional) RHS is either the ID attribute of a resource or fixed string value. Refer to the chart below for further details.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] rhs_lists: This denotes a list of values for the given object type. The value depend upon the key. If rhs is defined this list will be ignored
        """
        pulumi.set(__self__, "lhs", lhs)
        pulumi.set(__self__, "object_type", object_type)
        if id is not None:
            pulumi.set(__self__, "id", id)
        if idp_id is not None:
            pulumi.set(__self__, "idp_id", idp_id)
        if microtenant_id is not None:
            pulumi.set(__self__, "microtenant_id", microtenant_id)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if rhs is not None:
            pulumi.set(__self__, "rhs", rhs)
        if rhs_lists is not None:
            pulumi.set(__self__, "rhs_lists", rhs_lists)

    @property
    @pulumi.getter
    def lhs(self) -> pulumi.Input[str]:
        """
        (Optional) LHS must always carry the string value ``id`` or the attribute ID of the resource being associated with the rule.
        """
        return pulumi.get(self, "lhs")

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

    @property
    @pulumi.getter(name="objectType")
    def object_type(self) -> pulumi.Input[str]:
        """
        (Optional) This is for specifying the policy critiera. Supported values: `APP`, `APP_GROUP`, `SAML`, `IDP`, `CLIENT_TYPE`, `TRUSTED_NETWORK`, `POSTURE`, `SCIM`, `SCIM_GROUP`, and `CLOUD_CONNECTOR_GROUP`. `TRUSTED_NETWORK`, `CLIENT_TYPE`, `PLATFORM`, `COUNTRY_CODE`.
        """
        return pulumi.get(self, "object_type")

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

    @property
    @pulumi.getter
    def id(self) -> Optional[pulumi.Input[str]]:
        """
        (Optional) The ID of a server group resource
        """
        return pulumi.get(self, "id")

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

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

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

    @property
    @pulumi.getter(name="microtenantId")
    def microtenant_id(self) -> Optional[pulumi.Input[str]]:
        """
        (Optional) The ID of the microtenant the resource is to be associated with.
        """
        return pulumi.get(self, "microtenant_id")

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

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

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

    @property
    @pulumi.getter
    def rhs(self) -> Optional[pulumi.Input[str]]:
        """
        (Optional) RHS is either the ID attribute of a resource or fixed string value. Refer to the chart below for further details.
        """
        return pulumi.get(self, "rhs")

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

    @property
    @pulumi.getter(name="rhsLists")
    def rhs_lists(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        This denotes a list of values for the given object type. The value depend upon the key. If rhs is defined this list will be ignored
        """
        return pulumi.get(self, "rhs_lists")

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


@pulumi.input_type
class PolicyAccessTimeOutRuleConditionArgs:
    def __init__(__self__, *,
                 operator: pulumi.Input[str],
                 id: Optional[pulumi.Input[str]] = None,
                 microtenant_id: Optional[pulumi.Input[str]] = None,
                 negated: Optional[pulumi.Input[bool]] = None,
                 operands: Optional[pulumi.Input[Sequence[pulumi.Input['PolicyAccessTimeOutRuleConditionOperandArgs']]]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input['PolicyAccessTimeOutRuleConditionOperandArgs']]] operands: This signifies the various policy criteria.
        """
        pulumi.set(__self__, "operator", operator)
        if id is not None:
            pulumi.set(__self__, "id", id)
        if microtenant_id is not None:
            pulumi.set(__self__, "microtenant_id", microtenant_id)
        if negated is not None:
            pulumi.set(__self__, "negated", negated)
        if operands is not None:
            pulumi.set(__self__, "operands", operands)

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

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

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

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

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

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

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

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

    @property
    @pulumi.getter
    def operands(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['PolicyAccessTimeOutRuleConditionOperandArgs']]]]:
        """
        This signifies the various policy criteria.
        """
        return pulumi.get(self, "operands")

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


@pulumi.input_type
class PolicyAccessTimeOutRuleConditionOperandArgs:
    def __init__(__self__, *,
                 lhs: pulumi.Input[str],
                 object_type: pulumi.Input[str],
                 id: Optional[pulumi.Input[str]] = None,
                 idp_id: Optional[pulumi.Input[str]] = None,
                 microtenant_id: Optional[pulumi.Input[str]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 rhs: Optional[pulumi.Input[str]] = None,
                 rhs_lists: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
        """
        :param pulumi.Input[str] lhs: This signifies the key for the object type. String ID example: id
        :param pulumi.Input[str] object_type: This is for specifying the policy critiera.
        :param pulumi.Input[str] microtenant_id: This denotes the value for the given object type. Its value depends upon the key.
        :param pulumi.Input[str] rhs: This denotes the value for the given object type. Its value depends upon the key.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] rhs_lists: This denotes a list of values for the given object type. The value depend upon the key. If rhs is defined this list will be ignored
        """
        pulumi.set(__self__, "lhs", lhs)
        pulumi.set(__self__, "object_type", object_type)
        if id is not None:
            pulumi.set(__self__, "id", id)
        if idp_id is not None:
            pulumi.set(__self__, "idp_id", idp_id)
        if microtenant_id is not None:
            pulumi.set(__self__, "microtenant_id", microtenant_id)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if rhs is not None:
            pulumi.set(__self__, "rhs", rhs)
        if rhs_lists is not None:
            pulumi.set(__self__, "rhs_lists", rhs_lists)

    @property
    @pulumi.getter
    def lhs(self) -> pulumi.Input[str]:
        """
        This signifies the key for the object type. String ID example: id
        """
        return pulumi.get(self, "lhs")

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

    @property
    @pulumi.getter(name="objectType")
    def object_type(self) -> pulumi.Input[str]:
        """
        This is for specifying the policy critiera.
        """
        return pulumi.get(self, "object_type")

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

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

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

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

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

    @property
    @pulumi.getter(name="microtenantId")
    def microtenant_id(self) -> Optional[pulumi.Input[str]]:
        """
        This denotes the value for the given object type. Its value depends upon the key.
        """
        return pulumi.get(self, "microtenant_id")

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

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

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

    @property
    @pulumi.getter
    def rhs(self) -> Optional[pulumi.Input[str]]:
        """
        This denotes the value for the given object type. Its value depends upon the key.
        """
        return pulumi.get(self, "rhs")

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

    @property
    @pulumi.getter(name="rhsLists")
    def rhs_lists(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        This denotes a list of values for the given object type. The value depend upon the key. If rhs is defined this list will be ignored
        """
        return pulumi.get(self, "rhs_lists")

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


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

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

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


@pulumi.input_type
class ServerGroupAppConnectorGroupArgs:
    def __init__(__self__, *,
                 ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
        if ids is not None:
            pulumi.set(__self__, "ids", ids)

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

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


@pulumi.input_type
class ServerGroupApplicationArgs:
    def __init__(__self__, *,
                 ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
        if ids is not None:
            pulumi.set(__self__, "ids", ids)

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

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


@pulumi.input_type
class ServerGroupServerArgs:
    def __init__(__self__, *,
                 ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
        if ids is not None:
            pulumi.set(__self__, "ids", ids)

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

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


@pulumi.input_type
class ServiceEdgeGroupServiceEdgeArgs:
    def __init__(__self__, *,
                 ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
        if ids is not None:
            pulumi.set(__self__, "ids", ids)

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

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


@pulumi.input_type
class ServiceEdgeGroupTrustedNetworkArgs:
    def __init__(__self__, *,
                 ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
        if ids is not None:
            pulumi.set(__self__, "ids", ids)

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

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


@pulumi.input_type
class GetApplicationSegmentBrowserAccessTcpPortRangeArgs:
    def __init__(__self__, *,
                 from_: Optional[str] = None,
                 to: Optional[str] = None):
        if from_ is not None:
            pulumi.set(__self__, "from_", from_)
        if to is not None:
            pulumi.set(__self__, "to", to)

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

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

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

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


@pulumi.input_type
class GetApplicationSegmentBrowserAccessUdpPortRangeArgs:
    def __init__(__self__, *,
                 from_: Optional[str] = None,
                 to: Optional[str] = None):
        if from_ is not None:
            pulumi.set(__self__, "from_", from_)
        if to is not None:
            pulumi.set(__self__, "to", to)

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

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

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

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


@pulumi.input_type
class GetApplicationSegmentInspectionTcpPortRangeArgs:
    def __init__(__self__, *,
                 from_: Optional[str] = None,
                 to: Optional[str] = None):
        if from_ is not None:
            pulumi.set(__self__, "from_", from_)
        if to is not None:
            pulumi.set(__self__, "to", to)

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

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

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

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


@pulumi.input_type
class GetApplicationSegmentInspectionUdpPortRangeArgs:
    def __init__(__self__, *,
                 from_: Optional[str] = None,
                 to: Optional[str] = None):
        if from_ is not None:
            pulumi.set(__self__, "from_", from_)
        if to is not None:
            pulumi.set(__self__, "to", to)

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

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

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

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


@pulumi.input_type
class GetApplicationSegmentPRATcpPortRangeArgs:
    def __init__(__self__, *,
                 from_: Optional[str] = None,
                 to: Optional[str] = None):
        if from_ is not None:
            pulumi.set(__self__, "from_", from_)
        if to is not None:
            pulumi.set(__self__, "to", to)

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

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

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

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


@pulumi.input_type
class GetApplicationSegmentPRAUdpPortRangeArgs:
    def __init__(__self__, *,
                 from_: Optional[str] = None,
                 to: Optional[str] = None):
        if from_ is not None:
            pulumi.set(__self__, "from_", from_)
        if to is not None:
            pulumi.set(__self__, "to", to)

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

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

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

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


@pulumi.input_type
class GetApplicationSegmentTcpPortRangeArgs:
    def __init__(__self__, *,
                 from_: Optional[str] = None,
                 to: Optional[str] = None):
        if from_ is not None:
            pulumi.set(__self__, "from_", from_)
        if to is not None:
            pulumi.set(__self__, "to", to)

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

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

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

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


@pulumi.input_type
class GetApplicationSegmentUdpPortRangeArgs:
    def __init__(__self__, *,
                 from_: Optional[str] = None,
                 to: Optional[str] = None):
        if from_ is not None:
            pulumi.set(__self__, "from_", from_)
        if to is not None:
            pulumi.set(__self__, "to", to)

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

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

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

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


@pulumi.input_type
class GetLSSConfigControllerConfigArgs:
    def __init__(__self__, *,
                 audit_message: str,
                 description: str,
                 enabled: bool,
                 filters: Sequence[str],
                 format: str,
                 id: str,
                 lss_host: str,
                 lss_port: str,
                 name: str,
                 source_log_type: str,
                 use_tls: bool):
        """
        :param str audit_message: (string)
        :param str description: (string)
        :param bool enabled: (bool)
        :param Sequence[str] filters: (string)
        :param str format: (string)
        :param str id: This field defines the name of the log streaming resource.
        :param str lss_host: (string)
        :param str lss_port: (string)
        :param str name: This field defines the name of the log streaming resource.
        :param str source_log_type: (string)
        """
        pulumi.set(__self__, "audit_message", audit_message)
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "enabled", enabled)
        pulumi.set(__self__, "filters", filters)
        pulumi.set(__self__, "format", format)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "lss_host", lss_host)
        pulumi.set(__self__, "lss_port", lss_port)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "source_log_type", source_log_type)
        pulumi.set(__self__, "use_tls", use_tls)

    @property
    @pulumi.getter(name="auditMessage")
    def audit_message(self) -> str:
        """
        (string)
        """
        return pulumi.get(self, "audit_message")

    @audit_message.setter
    def audit_message(self, value: str):
        pulumi.set(self, "audit_message", value)

    @property
    @pulumi.getter
    def description(self) -> str:
        """
        (string)
        """
        return pulumi.get(self, "description")

    @description.setter
    def description(self, value: str):
        pulumi.set(self, "description", value)

    @property
    @pulumi.getter
    def enabled(self) -> bool:
        """
        (bool)
        """
        return pulumi.get(self, "enabled")

    @enabled.setter
    def enabled(self, value: bool):
        pulumi.set(self, "enabled", value)

    @property
    @pulumi.getter
    def filters(self) -> Sequence[str]:
        """
        (string)
        """
        return pulumi.get(self, "filters")

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

    @property
    @pulumi.getter
    def format(self) -> str:
        """
        (string)
        """
        return pulumi.get(self, "format")

    @format.setter
    def format(self, value: str):
        pulumi.set(self, "format", value)

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        This field defines the name of the log streaming resource.
        """
        return pulumi.get(self, "id")

    @id.setter
    def id(self, value: str):
        pulumi.set(self, "id", value)

    @property
    @pulumi.getter(name="lssHost")
    def lss_host(self) -> str:
        """
        (string)
        """
        return pulumi.get(self, "lss_host")

    @lss_host.setter
    def lss_host(self, value: str):
        pulumi.set(self, "lss_host", value)

    @property
    @pulumi.getter(name="lssPort")
    def lss_port(self) -> str:
        """
        (string)
        """
        return pulumi.get(self, "lss_port")

    @lss_port.setter
    def lss_port(self, value: str):
        pulumi.set(self, "lss_port", value)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        This field defines the name of the log streaming resource.
        """
        return pulumi.get(self, "name")

    @name.setter
    def name(self, value: str):
        pulumi.set(self, "name", value)

    @property
    @pulumi.getter(name="sourceLogType")
    def source_log_type(self) -> str:
        """
        (string)
        """
        return pulumi.get(self, "source_log_type")

    @source_log_type.setter
    def source_log_type(self, value: str):
        pulumi.set(self, "source_log_type", value)

    @property
    @pulumi.getter(name="useTls")
    def use_tls(self) -> bool:
        return pulumi.get(self, "use_tls")

    @use_tls.setter
    def use_tls(self, value: bool):
        pulumi.set(self, "use_tls", value)


