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

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

__all__ = [
    'ApplicationSegmentBrowserAccessClientlessApp',
    'ApplicationSegmentBrowserAccessServerGroup',
    'ApplicationSegmentBrowserAccessTcpPortRange',
    'ApplicationSegmentBrowserAccessUdpPortRange',
    'ApplicationSegmentInspectionCommonAppsDto',
    'ApplicationSegmentInspectionCommonAppsDtoAppsConfig',
    'ApplicationSegmentInspectionServerGroup',
    'ApplicationSegmentInspectionTcpPortRange',
    'ApplicationSegmentInspectionUdpPortRange',
    'ApplicationSegmentPRACommonAppsDto',
    'ApplicationSegmentPRACommonAppsDtoAppsConfig',
    'ApplicationSegmentPRAServerGroup',
    'ApplicationSegmentPRATcpPortRange',
    'ApplicationSegmentPRAUdpPortRange',
    'ApplicationSegmentServerGroup',
    'ApplicationSegmentTcpPortRange',
    'ApplicationSegmentUdpPortRange',
    'BrowserAccessClientlessApp',
    'BrowserAccessServerGroup',
    'BrowserAccessTcpPortRange',
    'BrowserAccessUdpPortRange',
    'CloudBrowserIsolationExternalProfileSecurityControl',
    'CloudBrowserIsolationExternalProfileUserExperience',
    'InspectionCustomControlsAssociatedInspectionProfileName',
    'InspectionCustomControlsRule',
    'InspectionCustomControlsRuleConditions',
    'InspectionProfileControlsInfo',
    'InspectionProfileCustomControl',
    'InspectionProfilePredefinedControl',
    'LSSConfigControllerConfig',
    'LSSConfigControllerConnectorGroup',
    'LSSConfigControllerPolicyRuleResource',
    'LSSConfigControllerPolicyRuleResourceCondition',
    'LSSConfigControllerPolicyRuleResourceConditionOperand',
    'LSSConfigControllerPolicyRuleResourceConditionOperandEntryValue',
    'MicrotenantUser',
    'PolicyAccessForwardingRuleCondition',
    'PolicyAccessForwardingRuleConditionOperand',
    'PolicyAccessInspectionRuleCondition',
    'PolicyAccessInspectionRuleConditionOperand',
    'PolicyAccessIsolationRuleCondition',
    'PolicyAccessIsolationRuleConditionOperand',
    'PolicyAccessReorderRuleRule',
    'PolicyAccessRuleAppConnectorGroup',
    'PolicyAccessRuleAppServerGroup',
    'PolicyAccessRuleCondition',
    'PolicyAccessRuleConditionOperand',
    'PolicyAccessTimeOutRuleCondition',
    'PolicyAccessTimeOutRuleConditionOperand',
    'SegmentGroupApplication',
    'ServerGroupAppConnectorGroup',
    'ServerGroupApplication',
    'ServerGroupServer',
    'ServiceEdgeGroupServiceEdge',
    'ServiceEdgeGroupTrustedNetwork',
    'GetAppConnectorGroupConnectorResult',
    'GetAppConnectorGroupServerGroupResult',
    'GetApplicationSegmentBrowserAccessClientlessAppResult',
    'GetApplicationSegmentBrowserAccessServerGroupResult',
    'GetApplicationSegmentBrowserAccessTcpPortRangeResult',
    'GetApplicationSegmentBrowserAccessUdpPortRangeResult',
    'GetApplicationSegmentInspectionInspectionAppResult',
    'GetApplicationSegmentInspectionServerGroupResult',
    'GetApplicationSegmentInspectionTcpPortRangeResult',
    'GetApplicationSegmentInspectionUdpPortRangeResult',
    'GetApplicationSegmentPRAServerGroupResult',
    'GetApplicationSegmentPRASraAppResult',
    'GetApplicationSegmentPRATcpPortRangeResult',
    'GetApplicationSegmentPRAUdpPortRangeResult',
    'GetApplicationSegmentServerGroupResult',
    'GetApplicationSegmentTcpPortRangeResult',
    'GetApplicationSegmentUdpPortRangeResult',
    'GetCloudBrowserIsolationExternalProfileRegionResult',
    'GetCloudBrowserIsolationExternalProfileSecurityControlResult',
    'GetCloudBrowserIsolationExternalProfileUserExperienceResult',
    'GetCloudConnectorGroupCloudConnectorResult',
    'GetCustomerVersionProfileCustomScopeCustomerIdResult',
    'GetCustomerVersionProfileVersionResult',
    'GetIdPControllerAdminMetadataResult',
    'GetIdPControllerUserMetadataResult',
    'GetInspectionAllPredefinedControlsListResult',
    'GetInspectionAllPredefinedControlsListAssociatedInspectionProfileNameResult',
    'GetInspectionCustomControlsRuleResult',
    'GetInspectionCustomControlsRuleConditionResult',
    'GetInspectionPredefinedControlsAssociatedInspectionProfileNameResult',
    'GetInspectionProfileControlsInfoResult',
    'GetInspectionProfileCustomControlResult',
    'GetInspectionProfileCustomControlAssociatedInspectionProfileNameResult',
    'GetInspectionProfileCustomControlRuleResult',
    'GetInspectionProfileCustomControlRuleConditionResult',
    'GetInspectionProfilePredefinedControlResult',
    'GetInspectionProfilePredefinedControlAssociatedInspectionProfileNameResult',
    'GetInspectionProfileWebSocketControlResult',
    'GetInspectionProfileWebSocketControlAssociatedInspectionProfileNameResult',
    'GetLSSConfigControllerConfigResult',
    'GetLSSConfigControllerConnectorGroupResult',
    'GetLSSConfigControllerPolicyRuleResult',
    'GetLSSConfigControllerPolicyRuleConditionResult',
    'GetLSSConfigControllerPolicyRuleConditionOperandResult',
    'GetMachineGroupMachineResult',
    'GetMicrotenantRoleResult',
    'GetMicrotenantUserResult',
    'GetPolicyTypeRuleResult',
    'GetPolicyTypeRuleConditionResult',
    'GetPolicyTypeRuleConditionOperandResult',
    'GetSegmentGroupApplicationResult',
    'GetSegmentGroupApplicationServerGroupResult',
    'GetServerGroupAppConnectorGroupResult',
    'GetServerGroupAppConnectorGroupConnectorResult',
    'GetServerGroupAppConnectorGroupServerGroupResult',
    'GetServerGroupApplicationResult',
    'GetServerGroupServerResult',
    'GetServiceEdgeControllerZpnSubModuleUpgradeListResult',
    'GetServiceEdgeGroupServiceEdgeResult',
    'GetServiceEdgeGroupServiceEdgeZpnSubModuleUpgradeListResult',
    'GetServiceEdgeGroupTrustedNetworkResult',
]

@pulumi.output_type
class ApplicationSegmentBrowserAccessClientlessApp(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "applicationPort":
            suggest = "application_port"
        elif key == "applicationProtocol":
            suggest = "application_protocol"
        elif key == "certificateId":
            suggest = "certificate_id"
        elif key == "allowOptions":
            suggest = "allow_options"
        elif key == "localDomain":
            suggest = "local_domain"
        elif key == "trustUntrustedCert":
            suggest = "trust_untrusted_cert"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ApplicationSegmentBrowserAccessClientlessApp. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ApplicationSegmentBrowserAccessClientlessApp.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ApplicationSegmentBrowserAccessClientlessApp.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 application_port: str,
                 application_protocol: str,
                 certificate_id: str,
                 name: str,
                 allow_options: Optional[bool] = None,
                 cname: Optional[str] = None,
                 description: Optional[str] = None,
                 domain: Optional[str] = None,
                 enabled: Optional[bool] = None,
                 hidden: Optional[bool] = None,
                 id: Optional[str] = None,
                 local_domain: Optional[str] = None,
                 path: Optional[str] = None,
                 trust_untrusted_cert: Optional[bool] = None):
        """
        :param str application_port: Port for the BA app.
        :param str application_protocol: Protocol for the BA app. Supported values: `HTTP` and `HTTPS`
        :param str certificate_id: ID of the BA certificate. Refer to the data source documentation for `BrowserCertificate`
        :param str name: Name of BA app.
        :param 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 str cname: (Optional)
        :param str description: (Optional) Description of the application.
        :param str domain: Domain name or IP address of the BA app.
        :param bool enabled: (Optional) - Whether this app is enabled or not.
        :param bool hidden: (Optional)
        :param str local_domain: (Optional)
        :param str path: (Optional)
        :param 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) -> str:
        """
        Port for the BA app.
        """
        return pulumi.get(self, "application_port")

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

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

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

    @property
    @pulumi.getter(name="allowOptions")
    def allow_options(self) -> Optional[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")

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

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

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

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

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

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

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

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

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


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

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


@pulumi.output_type
class ApplicationSegmentBrowserAccessTcpPortRange(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "from":
            suggest = "from_"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ApplicationSegmentBrowserAccessTcpPortRange. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ApplicationSegmentBrowserAccessTcpPortRange.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ApplicationSegmentBrowserAccessTcpPortRange.__key_warning(key)
        return super().get(key, default)

    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_")

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


@pulumi.output_type
class ApplicationSegmentBrowserAccessUdpPortRange(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "from":
            suggest = "from_"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ApplicationSegmentBrowserAccessUdpPortRange. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ApplicationSegmentBrowserAccessUdpPortRange.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ApplicationSegmentBrowserAccessUdpPortRange.__key_warning(key)
        return super().get(key, default)

    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_")

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


@pulumi.output_type
class ApplicationSegmentInspectionCommonAppsDto(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "appsConfigs":
            suggest = "apps_configs"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ApplicationSegmentInspectionCommonAppsDto. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ApplicationSegmentInspectionCommonAppsDto.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ApplicationSegmentInspectionCommonAppsDto.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 apps_configs: Optional[Sequence['outputs.ApplicationSegmentInspectionCommonAppsDtoAppsConfig']] = None):
        if apps_configs is not None:
            pulumi.set(__self__, "apps_configs", apps_configs)

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


@pulumi.output_type
class ApplicationSegmentInspectionCommonAppsDtoAppsConfig(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "appTypes":
            suggest = "app_types"
        elif key == "applicationPort":
            suggest = "application_port"
        elif key == "applicationProtocol":
            suggest = "application_protocol"
        elif key == "certificateId":
            suggest = "certificate_id"
        elif key == "trustUntrustedCert":
            suggest = "trust_untrusted_cert"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ApplicationSegmentInspectionCommonAppsDtoAppsConfig. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ApplicationSegmentInspectionCommonAppsDtoAppsConfig.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ApplicationSegmentInspectionCommonAppsDtoAppsConfig.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 app_types: Optional[Sequence[str]] = None,
                 application_port: Optional[str] = None,
                 application_protocol: Optional[str] = None,
                 certificate_id: Optional[str] = None,
                 description: Optional[str] = None,
                 domain: Optional[str] = None,
                 enabled: Optional[bool] = None,
                 name: Optional[str] = None,
                 trust_untrusted_cert: Optional[bool] = None):
        """
        :param Sequence[str] app_types: Indicates the type of application as inspection. Supported value: `INSPECT`
        :param str application_port: Port for the Inspection Application Segment.
        :param str application_protocol: Protocol for the Inspection Application Segment.. Supported values: `HTTP` and `HTTPS`
        :param 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 str description: (Optional) Description of the application.
        :param str domain: Domain name of the Inspection Application Segment.
        :param bool enabled: Whether this application is enabled or not
        :param 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[Sequence[str]]:
        """
        Indicates the type of application as inspection. Supported value: `INSPECT`
        """
        return pulumi.get(self, "app_types")

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

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

    @property
    @pulumi.getter(name="certificateId")
    def certificate_id(self) -> Optional[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")

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

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

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

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

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


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

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


@pulumi.output_type
class ApplicationSegmentInspectionTcpPortRange(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "from":
            suggest = "from_"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ApplicationSegmentInspectionTcpPortRange. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ApplicationSegmentInspectionTcpPortRange.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ApplicationSegmentInspectionTcpPortRange.__key_warning(key)
        return super().get(key, default)

    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_")

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


@pulumi.output_type
class ApplicationSegmentInspectionUdpPortRange(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "from":
            suggest = "from_"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ApplicationSegmentInspectionUdpPortRange. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ApplicationSegmentInspectionUdpPortRange.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ApplicationSegmentInspectionUdpPortRange.__key_warning(key)
        return super().get(key, default)

    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_")

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


@pulumi.output_type
class ApplicationSegmentPRACommonAppsDto(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "appsConfigs":
            suggest = "apps_configs"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ApplicationSegmentPRACommonAppsDto. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ApplicationSegmentPRACommonAppsDto.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ApplicationSegmentPRACommonAppsDto.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 apps_configs: Optional[Sequence['outputs.ApplicationSegmentPRACommonAppsDtoAppsConfig']] = None):
        if apps_configs is not None:
            pulumi.set(__self__, "apps_configs", apps_configs)

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


@pulumi.output_type
class ApplicationSegmentPRACommonAppsDtoAppsConfig(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "appId":
            suggest = "app_id"
        elif key == "appTypes":
            suggest = "app_types"
        elif key == "applicationPort":
            suggest = "application_port"
        elif key == "applicationProtocol":
            suggest = "application_protocol"
        elif key == "connectionSecurity":
            suggest = "connection_security"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ApplicationSegmentPRACommonAppsDtoAppsConfig. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ApplicationSegmentPRACommonAppsDtoAppsConfig.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ApplicationSegmentPRACommonAppsDtoAppsConfig.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 app_id: Optional[str] = None,
                 app_types: Optional[Sequence[str]] = None,
                 application_port: Optional[str] = None,
                 application_protocol: Optional[str] = None,
                 connection_security: Optional[str] = None,
                 description: Optional[str] = None,
                 domain: Optional[str] = None,
                 enabled: Optional[bool] = None,
                 name: Optional[str] = None):
        """
        :param Sequence[str] app_types: Indicates the type of application as Privileged Remote Access. Supported value: `SECURE_REMOTE_ACCESS`
        :param str application_port: Port for the Privileged Remote Access
        :param str application_protocol: Protocol for the Privileged Remote Access. Supported values: `RDP` and `SSH`
        :param str connection_security: Parameter required when `application_protocol` is of type `RDP`
        :param str description: (Optional) Description of the application.
        :param str domain: Domain name of the Privileged Remote Access
        :param bool enabled: Whether this application is enabled or not
        :param 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[str]:
        return pulumi.get(self, "app_id")

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

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

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

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

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

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

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

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


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

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


@pulumi.output_type
class ApplicationSegmentPRATcpPortRange(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "from":
            suggest = "from_"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ApplicationSegmentPRATcpPortRange. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ApplicationSegmentPRATcpPortRange.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ApplicationSegmentPRATcpPortRange.__key_warning(key)
        return super().get(key, default)

    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_")

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


@pulumi.output_type
class ApplicationSegmentPRAUdpPortRange(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "from":
            suggest = "from_"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ApplicationSegmentPRAUdpPortRange. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ApplicationSegmentPRAUdpPortRange.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ApplicationSegmentPRAUdpPortRange.__key_warning(key)
        return super().get(key, default)

    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_")

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


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

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


@pulumi.output_type
class ApplicationSegmentTcpPortRange(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "from":
            suggest = "from_"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ApplicationSegmentTcpPortRange. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ApplicationSegmentTcpPortRange.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ApplicationSegmentTcpPortRange.__key_warning(key)
        return super().get(key, default)

    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_")

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


@pulumi.output_type
class ApplicationSegmentUdpPortRange(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "from":
            suggest = "from_"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ApplicationSegmentUdpPortRange. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ApplicationSegmentUdpPortRange.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ApplicationSegmentUdpPortRange.__key_warning(key)
        return super().get(key, default)

    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_")

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


@pulumi.output_type
class BrowserAccessClientlessApp(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "applicationPort":
            suggest = "application_port"
        elif key == "applicationProtocol":
            suggest = "application_protocol"
        elif key == "certificateId":
            suggest = "certificate_id"
        elif key == "allowOptions":
            suggest = "allow_options"
        elif key == "localDomain":
            suggest = "local_domain"
        elif key == "trustUntrustedCert":
            suggest = "trust_untrusted_cert"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in BrowserAccessClientlessApp. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        BrowserAccessClientlessApp.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        BrowserAccessClientlessApp.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 application_port: str,
                 application_protocol: str,
                 certificate_id: str,
                 name: str,
                 allow_options: Optional[bool] = None,
                 cname: Optional[str] = None,
                 description: Optional[str] = None,
                 domain: Optional[str] = None,
                 enabled: Optional[bool] = None,
                 hidden: Optional[bool] = None,
                 id: Optional[str] = None,
                 local_domain: Optional[str] = None,
                 path: Optional[str] = None,
                 trust_untrusted_cert: Optional[bool] = None):
        """
        :param str application_port: Port for the BA app.
        :param str application_protocol: Protocol for the BA app. Supported values: `HTTP` and `HTTPS`
        :param str certificate_id: ID of the BA certificate. Refer to the data source documentation for `BrowserCertificate`
        :param str name: Name of BA app.
        :param 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 str cname: (Optional)
        :param str description: (Optional) Description of the application.
        :param str domain: Domain name or IP address of the BA app.
        :param bool enabled: (Optional) - Whether this app is enabled or not.
        :param bool hidden: (Optional)
        :param str local_domain: (Optional)
        :param str path: (Optional)
        :param 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) -> str:
        """
        Port for the BA app.
        """
        return pulumi.get(self, "application_port")

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

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

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

    @property
    @pulumi.getter(name="allowOptions")
    def allow_options(self) -> Optional[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")

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

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

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

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

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

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

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

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

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


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

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


@pulumi.output_type
class BrowserAccessTcpPortRange(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "from":
            suggest = "from_"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in BrowserAccessTcpPortRange. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        BrowserAccessTcpPortRange.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        BrowserAccessTcpPortRange.__key_warning(key)
        return super().get(key, default)

    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_")

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


@pulumi.output_type
class BrowserAccessUdpPortRange(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "from":
            suggest = "from_"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in BrowserAccessUdpPortRange. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        BrowserAccessUdpPortRange.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        BrowserAccessUdpPortRange.__key_warning(key)
        return super().get(key, default)

    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_")

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


@pulumi.output_type
class CloudBrowserIsolationExternalProfileSecurityControl(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allowPrinting":
            suggest = "allow_printing"
        elif key == "copyPaste":
            suggest = "copy_paste"
        elif key == "documentViewer":
            suggest = "document_viewer"
        elif key == "localRender":
            suggest = "local_render"
        elif key == "restrictKeystrokes":
            suggest = "restrict_keystrokes"
        elif key == "uploadDownload":
            suggest = "upload_download"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in CloudBrowserIsolationExternalProfileSecurityControl. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        CloudBrowserIsolationExternalProfileSecurityControl.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        CloudBrowserIsolationExternalProfileSecurityControl.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 allow_printing: Optional[bool] = None,
                 copy_paste: Optional[str] = None,
                 document_viewer: Optional[bool] = None,
                 local_render: Optional[bool] = None,
                 restrict_keystrokes: Optional[bool] = None,
                 upload_download: Optional[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[bool]:
        return pulumi.get(self, "allow_printing")

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

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

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

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

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


@pulumi.output_type
class CloudBrowserIsolationExternalProfileUserExperience(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "browserInBrowser":
            suggest = "browser_in_browser"
        elif key == "sessionPersistence":
            suggest = "session_persistence"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in CloudBrowserIsolationExternalProfileUserExperience. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        CloudBrowserIsolationExternalProfileUserExperience.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        CloudBrowserIsolationExternalProfileUserExperience.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 browser_in_browser: Optional[bool] = None,
                 session_persistence: Optional[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[bool]:
        return pulumi.get(self, "browser_in_browser")

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


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

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


@pulumi.output_type
class InspectionCustomControlsRule(dict):
    def __init__(__self__, *,
                 conditions: Optional['outputs.InspectionCustomControlsRuleConditions'] = None,
                 names: Optional[Sequence[str]] = None,
                 type: Optional[str] = None):
        """
        :param Sequence[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 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['outputs.InspectionCustomControlsRuleConditions']:
        return pulumi.get(self, "conditions")

    @property
    @pulumi.getter
    def names(self) -> Optional[Sequence[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")

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


@pulumi.output_type
class InspectionCustomControlsRuleConditions(dict):
    def __init__(__self__, *,
                 lhs: Optional[str] = None,
                 op: Optional[str] = None,
                 rhs: Optional[str] = None):
        """
        :param str lhs: Signifies the key for the object type
        :param str op: Denotes the operation type.
        :param 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[str]:
        """
        Signifies the key for the object type
        """
        return pulumi.get(self, "lhs")

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

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


@pulumi.output_type
class InspectionProfileControlsInfo(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "controlType":
            suggest = "control_type"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in InspectionProfileControlsInfo. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        InspectionProfileControlsInfo.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        InspectionProfileControlsInfo.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 control_type: Optional[str] = None):
        """
        :param 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[str]:
        """
        (string) Control types. Supported Values: `WEBSOCKET_PREDEFINED`, `WEBSOCKET_CUSTOM`, `CUSTOM`, `PREDEFINED`, `ZSCALER`
        """
        return pulumi.get(self, "control_type")


@pulumi.output_type
class InspectionProfileCustomControl(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "actionValue":
            suggest = "action_value"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in InspectionProfileCustomControl. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        InspectionProfileCustomControl.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        InspectionProfileCustomControl.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 id: str,
                 action: Optional[str] = None,
                 action_value: Optional[str] = None):
        """
        :param str id: ID of the predefined control
        :param str action: The action of the predefined control. Supported values: `PASS`, `BLOCK` and `REDIRECT`
        :param 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) -> str:
        """
        ID of the predefined control
        """
        return pulumi.get(self, "id")

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

    @property
    @pulumi.getter(name="actionValue")
    def action_value(self) -> Optional[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")


@pulumi.output_type
class InspectionProfilePredefinedControl(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "actionValue":
            suggest = "action_value"
        elif key == "controlType":
            suggest = "control_type"
        elif key == "protocolType":
            suggest = "protocol_type"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in InspectionProfilePredefinedControl. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        InspectionProfilePredefinedControl.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        InspectionProfilePredefinedControl.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 action: Optional[str] = None,
                 action_value: Optional[str] = None,
                 control_type: Optional[str] = None,
                 id: Optional[str] = None,
                 protocol_type: Optional[str] = None):
        """
        :param str action: The action of the predefined control. Supported values: `PASS`, `BLOCK` and `REDIRECT`
        :param 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 str control_type: (string) Control types. Supported Values: `WEBSOCKET_PREDEFINED`, `WEBSOCKET_CUSTOM`, `CUSTOM`, `PREDEFINED`, `ZSCALER`
        :param str id: ID of the predefined control
        :param 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[str]:
        """
        The action of the predefined control. Supported values: `PASS`, `BLOCK` and `REDIRECT`
        """
        return pulumi.get(self, "action")

    @property
    @pulumi.getter(name="actionValue")
    def action_value(self) -> Optional[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")

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

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

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


@pulumi.output_type
class LSSConfigControllerConfig(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "lssHost":
            suggest = "lss_host"
        elif key == "lssPort":
            suggest = "lss_port"
        elif key == "sourceLogType":
            suggest = "source_log_type"
        elif key == "auditMessage":
            suggest = "audit_message"
        elif key == "useTls":
            suggest = "use_tls"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in LSSConfigControllerConfig. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        LSSConfigControllerConfig.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        LSSConfigControllerConfig.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 format: str,
                 lss_host: str,
                 lss_port: str,
                 name: str,
                 source_log_type: str,
                 audit_message: Optional[str] = None,
                 description: Optional[str] = None,
                 enabled: Optional[bool] = None,
                 filters: Optional[Sequence[str]] = None,
                 id: Optional[str] = None,
                 use_tls: Optional[bool] = None):
        """
        :param str format: Format of the log type. Format given by the following API to get formats: /mgmtconfig/v2/admin/lssConfig/logType/formats
        :param str lss_host: Host of the LSS configuration
        :param str lss_port: Port of the LSS configuration
        :param str name: Name of the LSS configuration
        :param str source_log_type: Log type of the LSS configuration
        :param str description: Description of the LSS configuration
        :param bool enabled: Whether this LSS configuration is enabled or not. Supported values: true, false
        :param Sequence[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) -> 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")

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

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

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

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

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

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

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

    @property
    @pulumi.getter
    def filters(self) -> Optional[Sequence[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")

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

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


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

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


@pulumi.output_type
class LSSConfigControllerPolicyRuleResource(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "actionId":
            suggest = "action_id"
        elif key == "bypassDefaultRule":
            suggest = "bypass_default_rule"
        elif key == "customMsg":
            suggest = "custom_msg"
        elif key == "defaultRule":
            suggest = "default_rule"
        elif key == "lssDefaultRule":
            suggest = "lss_default_rule"
        elif key == "microtenantId":
            suggest = "microtenant_id"
        elif key == "policySetId":
            suggest = "policy_set_id"
        elif key == "policyType":
            suggest = "policy_type"
        elif key == "reauthDefaultRule":
            suggest = "reauth_default_rule"
        elif key == "reauthIdleTimeout":
            suggest = "reauth_idle_timeout"
        elif key == "reauthTimeout":
            suggest = "reauth_timeout"
        elif key == "ruleOrder":
            suggest = "rule_order"
        elif key == "zpnCbiProfileId":
            suggest = "zpn_cbi_profile_id"
        elif key == "zpnInspectionProfileId":
            suggest = "zpn_inspection_profile_id"
        elif key == "zpnIsolationProfileId":
            suggest = "zpn_isolation_profile_id"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in LSSConfigControllerPolicyRuleResource. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        LSSConfigControllerPolicyRuleResource.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        LSSConfigControllerPolicyRuleResource.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 name: str,
                 action: Optional[str] = None,
                 action_id: Optional[str] = None,
                 bypass_default_rule: Optional[bool] = None,
                 conditions: Optional[Sequence['outputs.LSSConfigControllerPolicyRuleResourceCondition']] = None,
                 custom_msg: Optional[str] = None,
                 default_rule: Optional[bool] = None,
                 description: Optional[str] = None,
                 id: Optional[str] = None,
                 lss_default_rule: Optional[bool] = None,
                 microtenant_id: Optional[str] = None,
                 operator: Optional[str] = None,
                 policy_set_id: Optional[str] = None,
                 policy_type: Optional[str] = None,
                 priority: Optional[str] = None,
                 reauth_default_rule: Optional[bool] = None,
                 reauth_idle_timeout: Optional[str] = None,
                 reauth_timeout: Optional[str] = None,
                 rule_order: Optional[str] = None,
                 zpn_cbi_profile_id: Optional[str] = None,
                 zpn_inspection_profile_id: Optional[str] = None,
                 zpn_isolation_profile_id: Optional[str] = None):
        """
        :param str name: This is the name of the policy.
        :param str action: This is for providing the rule action.
        :param str action_id: This field defines the description of the server.
        :param Sequence['LSSConfigControllerPolicyRuleResourceConditionArgs'] conditions: This is for proviidng the set of conditions for the policy.
        :param str custom_msg: This is for providing a customer message for the user.
        :param bool default_rule: This is for providing a customer message for the user.
        :param 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:
            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) -> str:
        """
        This is the name of the policy.
        """
        return pulumi.get(self, "name")

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    @property
    @pulumi.getter(name="ruleOrder")
    def rule_order(self) -> Optional[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")

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

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

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


@pulumi.output_type
class LSSConfigControllerPolicyRuleResourceCondition(dict):
    def __init__(__self__, *,
                 operator: str,
                 negated: Optional[bool] = None,
                 operands: Optional[Sequence['outputs.LSSConfigControllerPolicyRuleResourceConditionOperand']] = None):
        """
        :param Sequence['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) -> str:
        return pulumi.get(self, "operator")

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

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


@pulumi.output_type
class LSSConfigControllerPolicyRuleResourceConditionOperand(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "objectType":
            suggest = "object_type"
        elif key == "entryValues":
            suggest = "entry_values"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in LSSConfigControllerPolicyRuleResourceConditionOperand. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        LSSConfigControllerPolicyRuleResourceConditionOperand.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        LSSConfigControllerPolicyRuleResourceConditionOperand.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 object_type: str,
                 entry_values: Optional[Sequence['outputs.LSSConfigControllerPolicyRuleResourceConditionOperandEntryValue']] = None,
                 values: Optional[Sequence[str]] = None):
        """
        :param str object_type: This is for specifying the policy critiera.
        :param Sequence[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) -> str:
        """
        This is for specifying the policy critiera.
        """
        return pulumi.get(self, "object_type")

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

    @property
    @pulumi.getter
    def values(self) -> Optional[Sequence[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")


@pulumi.output_type
class LSSConfigControllerPolicyRuleResourceConditionOperandEntryValue(dict):
    def __init__(__self__, *,
                 lhs: Optional[str] = None,
                 rhs: Optional[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[str]:
        return pulumi.get(self, "lhs")

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


@pulumi.output_type
class MicrotenantUser(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "displayName":
            suggest = "display_name"
        elif key == "microtenantId":
            suggest = "microtenant_id"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in MicrotenantUser. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        MicrotenantUser.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        MicrotenantUser.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 display_name: Optional[str] = None,
                 microtenant_id: Optional[str] = None,
                 password: Optional[str] = None,
                 username: Optional[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[str]:
        return pulumi.get(self, "display_name")

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

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

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


@pulumi.output_type
class PolicyAccessForwardingRuleCondition(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "microtenantId":
            suggest = "microtenant_id"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in PolicyAccessForwardingRuleCondition. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        PolicyAccessForwardingRuleCondition.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        PolicyAccessForwardingRuleCondition.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 operator: str,
                 id: Optional[str] = None,
                 microtenant_id: Optional[str] = None,
                 negated: Optional[bool] = None,
                 operands: Optional[Sequence['outputs.PolicyAccessForwardingRuleConditionOperand']] = None):
        """
        :param Sequence['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) -> str:
        return pulumi.get(self, "operator")

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

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

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

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


@pulumi.output_type
class PolicyAccessForwardingRuleConditionOperand(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "objectType":
            suggest = "object_type"
        elif key == "idpId":
            suggest = "idp_id"
        elif key == "microtenantId":
            suggest = "microtenant_id"
        elif key == "rhsLists":
            suggest = "rhs_lists"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in PolicyAccessForwardingRuleConditionOperand. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        PolicyAccessForwardingRuleConditionOperand.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        PolicyAccessForwardingRuleConditionOperand.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 lhs: str,
                 object_type: str,
                 id: Optional[str] = None,
                 idp_id: Optional[str] = None,
                 microtenant_id: Optional[str] = None,
                 name: Optional[str] = None,
                 rhs: Optional[str] = None,
                 rhs_lists: Optional[Sequence[str]] = None):
        """
        :param str lhs: This signifies the key for the object type. String ID example: id
        :param str object_type: This is for specifying the policy critiera.
        :param str microtenant_id: This denotes the value for the given object type. Its value depends upon the key.
        :param str rhs: This denotes the value for the given object type. Its value depends upon the key.
        :param Sequence[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) -> str:
        """
        This signifies the key for the object type. String ID example: id
        """
        return pulumi.get(self, "lhs")

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

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

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

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

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

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

    @property
    @pulumi.getter(name="rhsLists")
    def rhs_lists(self) -> Optional[Sequence[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")


@pulumi.output_type
class PolicyAccessInspectionRuleCondition(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "microtenantId":
            suggest = "microtenant_id"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in PolicyAccessInspectionRuleCondition. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        PolicyAccessInspectionRuleCondition.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        PolicyAccessInspectionRuleCondition.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 operator: str,
                 id: Optional[str] = None,
                 microtenant_id: Optional[str] = None,
                 negated: Optional[bool] = None,
                 operands: Optional[Sequence['outputs.PolicyAccessInspectionRuleConditionOperand']] = None):
        """
        :param Sequence['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) -> str:
        return pulumi.get(self, "operator")

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

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

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

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


@pulumi.output_type
class PolicyAccessInspectionRuleConditionOperand(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "objectType":
            suggest = "object_type"
        elif key == "idpId":
            suggest = "idp_id"
        elif key == "microtenantId":
            suggest = "microtenant_id"
        elif key == "rhsLists":
            suggest = "rhs_lists"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in PolicyAccessInspectionRuleConditionOperand. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        PolicyAccessInspectionRuleConditionOperand.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        PolicyAccessInspectionRuleConditionOperand.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 lhs: str,
                 object_type: str,
                 id: Optional[str] = None,
                 idp_id: Optional[str] = None,
                 microtenant_id: Optional[str] = None,
                 name: Optional[str] = None,
                 rhs: Optional[str] = None,
                 rhs_lists: Optional[Sequence[str]] = None):
        """
        :param str lhs: This signifies the key for the object type. String ID example: id
        :param str object_type: This is for specifying the policy critiera.
        :param str microtenant_id: This denotes the value for the given object type. Its value depends upon the key.
        :param str rhs: This denotes the value for the given object type. Its value depends upon the key.
        :param Sequence[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) -> str:
        """
        This signifies the key for the object type. String ID example: id
        """
        return pulumi.get(self, "lhs")

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

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

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

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

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

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

    @property
    @pulumi.getter(name="rhsLists")
    def rhs_lists(self) -> Optional[Sequence[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")


@pulumi.output_type
class PolicyAccessIsolationRuleCondition(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "microtenantId":
            suggest = "microtenant_id"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in PolicyAccessIsolationRuleCondition. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        PolicyAccessIsolationRuleCondition.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        PolicyAccessIsolationRuleCondition.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 operator: str,
                 id: Optional[str] = None,
                 microtenant_id: Optional[str] = None,
                 negated: Optional[bool] = None,
                 operands: Optional[Sequence['outputs.PolicyAccessIsolationRuleConditionOperand']] = None):
        """
        :param Sequence['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) -> str:
        return pulumi.get(self, "operator")

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

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

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

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


@pulumi.output_type
class PolicyAccessIsolationRuleConditionOperand(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "objectType":
            suggest = "object_type"
        elif key == "idpId":
            suggest = "idp_id"
        elif key == "microtenantId":
            suggest = "microtenant_id"
        elif key == "rhsLists":
            suggest = "rhs_lists"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in PolicyAccessIsolationRuleConditionOperand. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        PolicyAccessIsolationRuleConditionOperand.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        PolicyAccessIsolationRuleConditionOperand.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 lhs: str,
                 object_type: str,
                 id: Optional[str] = None,
                 idp_id: Optional[str] = None,
                 microtenant_id: Optional[str] = None,
                 name: Optional[str] = None,
                 rhs: Optional[str] = None,
                 rhs_lists: Optional[Sequence[str]] = None):
        """
        :param str lhs: This signifies the key for the object type. String ID example: id
        :param str object_type: This is for specifying the policy critiera.
        :param str microtenant_id: This denotes the value for the given object type. Its value depends upon the key.
        :param str rhs: This denotes the value for the given object type. Its value depends upon the key.
        :param Sequence[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) -> str:
        """
        This signifies the key for the object type. String ID example: id
        """
        return pulumi.get(self, "lhs")

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

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

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

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

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

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

    @property
    @pulumi.getter(name="rhsLists")
    def rhs_lists(self) -> Optional[Sequence[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")


@pulumi.output_type
class PolicyAccessReorderRuleRule(dict):
    def __init__(__self__, *,
                 id: str,
                 order: str):
        """
        :param str id: (Required) - The ID of the rule to which the order number will be applied.
        :param 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) -> str:
        """
        (Required) - The ID of the rule to which the order number will be applied.
        """
        return pulumi.get(self, "id")

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


@pulumi.output_type
class PolicyAccessRuleAppConnectorGroup(dict):
    def __init__(__self__, *,
                 ids: Optional[Sequence[str]] = None):
        """
        :param Sequence[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[Sequence[str]]:
        """
        (Optional) The ID of a server group resource
        """
        return pulumi.get(self, "ids")


@pulumi.output_type
class PolicyAccessRuleAppServerGroup(dict):
    def __init__(__self__, *,
                 ids: Optional[Sequence[str]] = None):
        """
        :param Sequence[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[Sequence[str]]:
        """
        (Optional) The ID of a server group resource
        """
        return pulumi.get(self, "ids")


@pulumi.output_type
class PolicyAccessRuleCondition(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "microtenantId":
            suggest = "microtenant_id"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in PolicyAccessRuleCondition. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        PolicyAccessRuleCondition.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        PolicyAccessRuleCondition.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 operator: str,
                 id: Optional[str] = None,
                 microtenant_id: Optional[str] = None,
                 negated: Optional[bool] = None,
                 operands: Optional[Sequence['outputs.PolicyAccessRuleConditionOperand']] = None):
        """
        :param str operator: (Optional) Supported values: ``AND``, and ``OR``
        :param str id: (Optional) The ID of a server group resource
        :param str microtenant_id: (Optional) The ID of the microtenant the resource is to be associated with.
        :param bool negated: (Optional) Supported values: ``true`` or ``false``
        :param Sequence['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) -> str:
        """
        (Optional) Supported values: ``AND``, and ``OR``
        """
        return pulumi.get(self, "operator")

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

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

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

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


@pulumi.output_type
class PolicyAccessRuleConditionOperand(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "objectType":
            suggest = "object_type"
        elif key == "idpId":
            suggest = "idp_id"
        elif key == "microtenantId":
            suggest = "microtenant_id"
        elif key == "rhsLists":
            suggest = "rhs_lists"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in PolicyAccessRuleConditionOperand. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        PolicyAccessRuleConditionOperand.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        PolicyAccessRuleConditionOperand.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 lhs: str,
                 object_type: str,
                 id: Optional[str] = None,
                 idp_id: Optional[str] = None,
                 microtenant_id: Optional[str] = None,
                 name: Optional[str] = None,
                 rhs: Optional[str] = None,
                 rhs_lists: Optional[Sequence[str]] = None):
        """
        :param str lhs: (Optional) LHS must always carry the string value ``id`` or the attribute ID of the resource being associated with the rule.
        :param 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 str id: (Optional) The ID of a server group resource
        :param str idp_id: (Optional)
        :param str microtenant_id: (Optional) The ID of the microtenant the resource is to be associated with.
        :param str name: (Optional)
        :param 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 Sequence[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) -> 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")

    @property
    @pulumi.getter(name="objectType")
    def object_type(self) -> 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")

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

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

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

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

    @property
    @pulumi.getter
    def rhs(self) -> Optional[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")

    @property
    @pulumi.getter(name="rhsLists")
    def rhs_lists(self) -> Optional[Sequence[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")


@pulumi.output_type
class PolicyAccessTimeOutRuleCondition(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "microtenantId":
            suggest = "microtenant_id"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in PolicyAccessTimeOutRuleCondition. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        PolicyAccessTimeOutRuleCondition.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        PolicyAccessTimeOutRuleCondition.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 operator: str,
                 id: Optional[str] = None,
                 microtenant_id: Optional[str] = None,
                 negated: Optional[bool] = None,
                 operands: Optional[Sequence['outputs.PolicyAccessTimeOutRuleConditionOperand']] = None):
        """
        :param Sequence['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) -> str:
        return pulumi.get(self, "operator")

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

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

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

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


@pulumi.output_type
class PolicyAccessTimeOutRuleConditionOperand(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "objectType":
            suggest = "object_type"
        elif key == "idpId":
            suggest = "idp_id"
        elif key == "microtenantId":
            suggest = "microtenant_id"
        elif key == "rhsLists":
            suggest = "rhs_lists"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in PolicyAccessTimeOutRuleConditionOperand. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        PolicyAccessTimeOutRuleConditionOperand.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        PolicyAccessTimeOutRuleConditionOperand.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 lhs: str,
                 object_type: str,
                 id: Optional[str] = None,
                 idp_id: Optional[str] = None,
                 microtenant_id: Optional[str] = None,
                 name: Optional[str] = None,
                 rhs: Optional[str] = None,
                 rhs_lists: Optional[Sequence[str]] = None):
        """
        :param str lhs: This signifies the key for the object type. String ID example: id
        :param str object_type: This is for specifying the policy critiera.
        :param str microtenant_id: This denotes the value for the given object type. Its value depends upon the key.
        :param str rhs: This denotes the value for the given object type. Its value depends upon the key.
        :param Sequence[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) -> str:
        """
        This signifies the key for the object type. String ID example: id
        """
        return pulumi.get(self, "lhs")

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

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

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

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

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

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

    @property
    @pulumi.getter(name="rhsLists")
    def rhs_lists(self) -> Optional[Sequence[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")


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

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


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

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


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

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


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

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


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

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


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

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


@pulumi.output_type
class GetAppConnectorGroupConnectorResult(dict):
    def __init__(__self__, *,
                 appconnector_group_id: str,
                 appconnector_group_name: str,
                 application_start_time: str,
                 control_channel_status: str,
                 creation_time: str,
                 ctrl_broker_name: str,
                 current_version: str,
                 description: str,
                 enabled: bool,
                 enrollment_cert: Mapping[str, Any],
                 expected_upgrade_time: str,
                 expected_version: str,
                 fingerprint: str,
                 id: str,
                 ipacl: str,
                 issued_cert_id: str,
                 last_broker_connect_time: str,
                 last_broker_connect_time_duration: str,
                 last_broker_disconnect_time: str,
                 last_broker_disconnect_time_duration: str,
                 last_upgrade_time: str,
                 latitude: str,
                 location: str,
                 longitude: str,
                 modified_time: str,
                 modifiedby: str,
                 name: str,
                 platform: str,
                 previous_version: str,
                 private_ip: str,
                 provisioning_key_id: str,
                 provisioning_key_name: str,
                 public_ip: str,
                 sarge_version: str,
                 upgrade_attempt: str,
                 upgrade_status: str):
        """
        :param str description: (String) Description of the App Connector Group.
        :param bool enabled: (String) Whether this App Connector Group is enabled or not. Default value: `true`. Supported values: `true`, `false`
        :param str id: ID of the App Connector Group.
        :param str latitude: (String) Latitude of the App Connector Group. Integer or decimal. With values in the range of `-90` to `90`
        :param str location: (String) Location of the App Connector Group.
        :param str longitude: (String) Longitude of the App Connector Group. Integer or decimal. With values in the range of `-180` to `180`
        :param str name: Name of the App Connector Group.
        """
        pulumi.set(__self__, "appconnector_group_id", appconnector_group_id)
        pulumi.set(__self__, "appconnector_group_name", appconnector_group_name)
        pulumi.set(__self__, "application_start_time", application_start_time)
        pulumi.set(__self__, "control_channel_status", control_channel_status)
        pulumi.set(__self__, "creation_time", creation_time)
        pulumi.set(__self__, "ctrl_broker_name", ctrl_broker_name)
        pulumi.set(__self__, "current_version", current_version)
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "enabled", enabled)
        pulumi.set(__self__, "enrollment_cert", enrollment_cert)
        pulumi.set(__self__, "expected_upgrade_time", expected_upgrade_time)
        pulumi.set(__self__, "expected_version", expected_version)
        pulumi.set(__self__, "fingerprint", fingerprint)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "ipacl", ipacl)
        pulumi.set(__self__, "issued_cert_id", issued_cert_id)
        pulumi.set(__self__, "last_broker_connect_time", last_broker_connect_time)
        pulumi.set(__self__, "last_broker_connect_time_duration", last_broker_connect_time_duration)
        pulumi.set(__self__, "last_broker_disconnect_time", last_broker_disconnect_time)
        pulumi.set(__self__, "last_broker_disconnect_time_duration", last_broker_disconnect_time_duration)
        pulumi.set(__self__, "last_upgrade_time", last_upgrade_time)
        pulumi.set(__self__, "latitude", latitude)
        pulumi.set(__self__, "location", location)
        pulumi.set(__self__, "longitude", longitude)
        pulumi.set(__self__, "modified_time", modified_time)
        pulumi.set(__self__, "modifiedby", modifiedby)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "platform", platform)
        pulumi.set(__self__, "previous_version", previous_version)
        pulumi.set(__self__, "private_ip", private_ip)
        pulumi.set(__self__, "provisioning_key_id", provisioning_key_id)
        pulumi.set(__self__, "provisioning_key_name", provisioning_key_name)
        pulumi.set(__self__, "public_ip", public_ip)
        pulumi.set(__self__, "sarge_version", sarge_version)
        pulumi.set(__self__, "upgrade_attempt", upgrade_attempt)
        pulumi.set(__self__, "upgrade_status", upgrade_status)

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

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

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

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

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

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

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

    @property
    @pulumi.getter
    def description(self) -> str:
        """
        (String) Description of the App Connector Group.
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter
    def enabled(self) -> bool:
        """
        (String) Whether this App Connector Group is enabled or not. Default value: `true`. Supported values: `true`, `false`
        """
        return pulumi.get(self, "enabled")

    @property
    @pulumi.getter(name="enrollmentCert")
    def enrollment_cert(self) -> Mapping[str, Any]:
        return pulumi.get(self, "enrollment_cert")

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

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

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

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        ID of the App Connector Group.
        """
        return pulumi.get(self, "id")

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

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

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

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

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

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

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

    @property
    @pulumi.getter
    def latitude(self) -> str:
        """
        (String) Latitude of the App Connector Group. Integer or decimal. With values in the range of `-90` to `90`
        """
        return pulumi.get(self, "latitude")

    @property
    @pulumi.getter
    def location(self) -> str:
        """
        (String) Location of the App Connector Group.
        """
        return pulumi.get(self, "location")

    @property
    @pulumi.getter
    def longitude(self) -> str:
        """
        (String) Longitude of the App Connector Group. Integer or decimal. With values in the range of `-180` to `180`
        """
        return pulumi.get(self, "longitude")

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

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

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        Name of the App Connector Group.
        """
        return pulumi.get(self, "name")

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

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

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

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

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

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

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

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

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


@pulumi.output_type
class GetAppConnectorGroupServerGroupResult(dict):
    def __init__(__self__, *,
                 config_space: str,
                 creation_time: str,
                 description: str,
                 dynamic_discovery: bool,
                 enabled: bool,
                 id: str,
                 modified_time: str,
                 modifiedby: str,
                 name: str):
        """
        :param str description: (String) Description of the App Connector Group.
        :param bool enabled: (String) Whether this App Connector Group is enabled or not. Default value: `true`. Supported values: `true`, `false`
        :param str id: ID of the App Connector Group.
        :param str name: Name of the App Connector Group.
        """
        pulumi.set(__self__, "config_space", config_space)
        pulumi.set(__self__, "creation_time", creation_time)
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "dynamic_discovery", dynamic_discovery)
        pulumi.set(__self__, "enabled", enabled)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "modified_time", modified_time)
        pulumi.set(__self__, "modifiedby", modifiedby)
        pulumi.set(__self__, "name", name)

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

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

    @property
    @pulumi.getter
    def description(self) -> str:
        """
        (String) Description of the App Connector Group.
        """
        return pulumi.get(self, "description")

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

    @property
    @pulumi.getter
    def enabled(self) -> bool:
        """
        (String) Whether this App Connector Group is enabled or not. Default value: `true`. Supported values: `true`, `false`
        """
        return pulumi.get(self, "enabled")

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        ID of the App Connector Group.
        """
        return pulumi.get(self, "id")

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

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

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        Name of the App Connector Group.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GetApplicationSegmentBrowserAccessClientlessAppResult(dict):
    def __init__(__self__, *,
                 allow_options: bool,
                 app_id: str,
                 application_port: str,
                 application_protocol: str,
                 certificate_id: str,
                 certificate_name: str,
                 cname: str,
                 description: str,
                 domain: str,
                 enabled: bool,
                 hidden: bool,
                 id: str,
                 local_domain: str,
                 name: str,
                 path: str,
                 trust_untrusted_cert: bool):
        """
        :param bool allow_options: (bool)
        :param str application_port: (string)
        :param str application_protocol: (string)
        :param str certificate_id: (string)
        :param str certificate_name: (string)
        :param str cname: (string)
        :param str description: (string)
        :param str domain: (string)
        :param bool enabled: (bool)
        :param bool hidden: (bool)
        :param str id: This field defines the id of the application server.
        :param str local_domain: (string)
        :param str name: This field defines the name of the server.
        :param str path: (string)
        :param bool trust_untrusted_cert: (bool)
        """
        pulumi.set(__self__, "allow_options", allow_options)
        pulumi.set(__self__, "app_id", app_id)
        pulumi.set(__self__, "application_port", application_port)
        pulumi.set(__self__, "application_protocol", application_protocol)
        pulumi.set(__self__, "certificate_id", certificate_id)
        pulumi.set(__self__, "certificate_name", certificate_name)
        pulumi.set(__self__, "cname", cname)
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "domain", domain)
        pulumi.set(__self__, "enabled", enabled)
        pulumi.set(__self__, "hidden", hidden)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "local_domain", local_domain)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "path", path)
        pulumi.set(__self__, "trust_untrusted_cert", trust_untrusted_cert)

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

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

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

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

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

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

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

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

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

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

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

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        This field defines the id of the application server.
        """
        return pulumi.get(self, "id")

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

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

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

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


@pulumi.output_type
class GetApplicationSegmentBrowserAccessServerGroupResult(dict):
    def __init__(__self__, *,
                 ids: Sequence[str]):
        """
        :param Sequence[str] ids: This field defines the id of the application server.
        """
        pulumi.set(__self__, "ids", ids)

    @property
    @pulumi.getter
    def ids(self) -> Sequence[str]:
        """
        This field defines the id of the application server.
        """
        return pulumi.get(self, "ids")


@pulumi.output_type
class GetApplicationSegmentBrowserAccessTcpPortRangeResult(dict):
    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_")

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


@pulumi.output_type
class GetApplicationSegmentBrowserAccessUdpPortRangeResult(dict):
    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_")

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


@pulumi.output_type
class GetApplicationSegmentInspectionInspectionAppResult(dict):
    def __init__(__self__, *,
                 app_id: str,
                 application_port: str,
                 application_protocol: str,
                 certificate_id: str,
                 certificate_name: str,
                 description: str,
                 domain: str,
                 enabled: bool,
                 id: str,
                 name: str):
        """
        :param str application_port: (string) TCP/UDP Port for ZPA Inspection.
        :param str application_protocol: (string) Protocol for the Inspection Application. Supported values: `HTTP` and `HTTPS`
        :param str certificate_id: (string) - ID of the signing certificate. This field is required if the applicationProtocol is set to `HTTPS`. The certificateId is not supported if the applicationProtocol is set to `HTTP`.
        :param str certificate_name: (string) - Parameter required when `application_protocol` is of type `HTTPS`
        :param str description: (string) Description of the application.
        :param bool enabled: (bool) Whether this application is enabled or not
        :param str id: The ID of the Inspection Application Segment to be exported.
        :param str name: The name of the Inspection Application Segment to be exported.
        """
        pulumi.set(__self__, "app_id", app_id)
        pulumi.set(__self__, "application_port", application_port)
        pulumi.set(__self__, "application_protocol", application_protocol)
        pulumi.set(__self__, "certificate_id", certificate_id)
        pulumi.set(__self__, "certificate_name", certificate_name)
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "domain", domain)
        pulumi.set(__self__, "enabled", enabled)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "name", name)

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

    @property
    @pulumi.getter(name="applicationPort")
    def application_port(self) -> str:
        """
        (string) TCP/UDP Port for ZPA Inspection.
        """
        return pulumi.get(self, "application_port")

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

    @property
    @pulumi.getter(name="certificateId")
    def certificate_id(self) -> str:
        """
        (string) - ID of the signing certificate. This field is required if the applicationProtocol is set to `HTTPS`. The certificateId is not supported if the applicationProtocol is set to `HTTP`.
        """
        return pulumi.get(self, "certificate_id")

    @property
    @pulumi.getter(name="certificateName")
    def certificate_name(self) -> str:
        """
        (string) - Parameter required when `application_protocol` is of type `HTTPS`
        """
        return pulumi.get(self, "certificate_name")

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

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

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

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The ID of the Inspection Application Segment to be exported.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The name of the Inspection Application Segment to be exported.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GetApplicationSegmentInspectionServerGroupResult(dict):
    def __init__(__self__, *,
                 ids: Sequence[str]):
        """
        :param Sequence[str] ids: The ID of the Inspection Application Segment to be exported.
        """
        pulumi.set(__self__, "ids", ids)

    @property
    @pulumi.getter
    def ids(self) -> Sequence[str]:
        """
        The ID of the Inspection Application Segment to be exported.
        """
        return pulumi.get(self, "ids")


@pulumi.output_type
class GetApplicationSegmentInspectionTcpPortRangeResult(dict):
    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_")

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


@pulumi.output_type
class GetApplicationSegmentInspectionUdpPortRangeResult(dict):
    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_")

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


@pulumi.output_type
class GetApplicationSegmentPRAServerGroupResult(dict):
    def __init__(__self__, *,
                 ids: Sequence[str]):
        pulumi.set(__self__, "ids", ids)

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


@pulumi.output_type
class GetApplicationSegmentPRASraAppResult(dict):
    def __init__(__self__, *,
                 app_id: str,
                 application_port: str,
                 application_protocol: str,
                 certificate_id: str,
                 certificate_name: str,
                 connection_security: str,
                 description: str,
                 domain: str,
                 enabled: bool,
                 hidden: bool,
                 id: str,
                 microtenant_id: str,
                 microtenant_name: str,
                 name: str,
                 portal: bool):
        """
        :param str application_port: (string) Port for the Privileged Remote Accessvalues: `RDP` and `SSH`
        :param str application_protocol: (string) Protocol for the Privileged Remote Access. Supported values: `RDP` and `SSH`
        :param str connection_security: (string) - Parameter required when `application_protocol` is of type `RDP`
        :param str description: (string) Description of the application.
        :param bool enabled: (bool) Whether this application is enabled or not
        :param str microtenant_id: (string) The ID of the microtenant the resource is to be associated with.
        :param str microtenant_name: (string) The name of the microtenant the resource is to be associated with.
        :param str name: The name of the PRA Application Segment to be exported.
        """
        pulumi.set(__self__, "app_id", app_id)
        pulumi.set(__self__, "application_port", application_port)
        pulumi.set(__self__, "application_protocol", application_protocol)
        pulumi.set(__self__, "certificate_id", certificate_id)
        pulumi.set(__self__, "certificate_name", certificate_name)
        pulumi.set(__self__, "connection_security", connection_security)
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "domain", domain)
        pulumi.set(__self__, "enabled", enabled)
        pulumi.set(__self__, "hidden", hidden)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "microtenant_id", microtenant_id)
        pulumi.set(__self__, "microtenant_name", microtenant_name)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "portal", portal)

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

    @property
    @pulumi.getter(name="applicationPort")
    def application_port(self) -> str:
        """
        (string) Port for the Privileged Remote Accessvalues: `RDP` and `SSH`
        """
        return pulumi.get(self, "application_port")

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

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

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

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

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

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

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

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

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

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

    @property
    @pulumi.getter(name="microtenantName")
    def microtenant_name(self) -> str:
        """
        (string) The name of the microtenant the resource is to be associated with.
        """
        return pulumi.get(self, "microtenant_name")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The name of the PRA Application Segment to be exported.
        """
        return pulumi.get(self, "name")

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


@pulumi.output_type
class GetApplicationSegmentPRATcpPortRangeResult(dict):
    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_")

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


@pulumi.output_type
class GetApplicationSegmentPRAUdpPortRangeResult(dict):
    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_")

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


@pulumi.output_type
class GetApplicationSegmentServerGroupResult(dict):
    def __init__(__self__, *,
                 config_space: str,
                 creation_time: str,
                 description: str,
                 dynamic_discovery: bool,
                 enabled: bool,
                 id: str,
                 modified_time: str,
                 modifiedby: str,
                 name: str):
        """
        :param str config_space: Supported values: `DEFAULT`, `SIEM`.
        :param str description: Description of the application.
        :param bool enabled: Whether this application is enabled or not. Default: false. Supported values: `true`, `false`.
        :param str name: Name of the application.
        """
        pulumi.set(__self__, "config_space", config_space)
        pulumi.set(__self__, "creation_time", creation_time)
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "dynamic_discovery", dynamic_discovery)
        pulumi.set(__self__, "enabled", enabled)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "modified_time", modified_time)
        pulumi.set(__self__, "modifiedby", modifiedby)
        pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter(name="configSpace")
    def config_space(self) -> str:
        """
        Supported values: `DEFAULT`, `SIEM`.
        """
        return pulumi.get(self, "config_space")

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

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

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

    @property
    @pulumi.getter
    def enabled(self) -> bool:
        """
        Whether this application is enabled or not. Default: false. Supported values: `true`, `false`.
        """
        return pulumi.get(self, "enabled")

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

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

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

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        Name of the application.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GetApplicationSegmentTcpPortRangeResult(dict):
    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_")

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


@pulumi.output_type
class GetApplicationSegmentUdpPortRangeResult(dict):
    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_")

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


@pulumi.output_type
class GetCloudBrowserIsolationExternalProfileRegionResult(dict):
    def __init__(__self__, *,
                 id: str,
                 name: str):
        """
        :param str name: The name of the CBI banner to be exported.
        """
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "name", name)

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

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The name of the CBI banner to be exported.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GetCloudBrowserIsolationExternalProfileSecurityControlResult(dict):
    def __init__(__self__, *,
                 allow_printing: bool,
                 copy_paste: str,
                 document_viewer: bool,
                 local_render: bool,
                 restrict_keystrokes: bool,
                 upload_download: str):
        pulumi.set(__self__, "allow_printing", allow_printing)
        pulumi.set(__self__, "copy_paste", copy_paste)
        pulumi.set(__self__, "document_viewer", document_viewer)
        pulumi.set(__self__, "local_render", local_render)
        pulumi.set(__self__, "restrict_keystrokes", restrict_keystrokes)
        pulumi.set(__self__, "upload_download", upload_download)

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

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

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

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

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

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


@pulumi.output_type
class GetCloudBrowserIsolationExternalProfileUserExperienceResult(dict):
    def __init__(__self__, *,
                 browser_in_browser: bool,
                 session_persistence: bool):
        pulumi.set(__self__, "browser_in_browser", browser_in_browser)
        pulumi.set(__self__, "session_persistence", session_persistence)

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

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


@pulumi.output_type
class GetCloudConnectorGroupCloudConnectorResult(dict):
    def __init__(__self__, *,
                 creation_time: str,
                 description: str,
                 enabled: bool,
                 fingerprint: str,
                 id: str,
                 ipacls: Sequence[Any],
                 issued_cert_id: str,
                 modified_time: str,
                 modifiedby: str,
                 name: str,
                 signing_cert: Mapping[str, Any]):
        """
        :param str creation_time: (string) - Only applicable for a GET request. Ignored in PUT/POST/DELETE requests.
        :param str description: (string) - Only applicable for a GET request. Ignored in PUT/POST/DELETE requests.
        :param bool enabled: (bool) - Only applicable for a GET request. Ignored in PUT/POST/DELETE requests.
        :param str id: This field defines the id of the cloud connector group.
        :param str issued_cert_id: (string) - Only applicable for a GET request. Ignored in PUT/POST/DELETE requests.
        :param str modified_time: (string)- Only applicable for a GET request. Ignored in PUT/POST/DELETE requests.
        :param str name: This field defines the name of the cloud connector group.
        """
        pulumi.set(__self__, "creation_time", creation_time)
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "enabled", enabled)
        pulumi.set(__self__, "fingerprint", fingerprint)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "ipacls", ipacls)
        pulumi.set(__self__, "issued_cert_id", issued_cert_id)
        pulumi.set(__self__, "modified_time", modified_time)
        pulumi.set(__self__, "modifiedby", modifiedby)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "signing_cert", signing_cert)

    @property
    @pulumi.getter(name="creationTime")
    def creation_time(self) -> str:
        """
        (string) - Only applicable for a GET request. Ignored in PUT/POST/DELETE requests.
        """
        return pulumi.get(self, "creation_time")

    @property
    @pulumi.getter
    def description(self) -> str:
        """
        (string) - Only applicable for a GET request. Ignored in PUT/POST/DELETE requests.
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter
    def enabled(self) -> bool:
        """
        (bool) - Only applicable for a GET request. Ignored in PUT/POST/DELETE requests.
        """
        return pulumi.get(self, "enabled")

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

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        This field defines the id of the cloud connector group.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter
    def ipacls(self) -> Sequence[Any]:
        return pulumi.get(self, "ipacls")

    @property
    @pulumi.getter(name="issuedCertId")
    def issued_cert_id(self) -> str:
        """
        (string) - Only applicable for a GET request. Ignored in PUT/POST/DELETE requests.
        """
        return pulumi.get(self, "issued_cert_id")

    @property
    @pulumi.getter(name="modifiedTime")
    def modified_time(self) -> str:
        """
        (string)- Only applicable for a GET request. Ignored in PUT/POST/DELETE requests.
        """
        return pulumi.get(self, "modified_time")

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

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        This field defines the name of the cloud connector group.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter(name="signingCert")
    def signing_cert(self) -> Mapping[str, Any]:
        return pulumi.get(self, "signing_cert")


@pulumi.output_type
class GetCustomerVersionProfileCustomScopeCustomerIdResult(dict):
    def __init__(__self__, *,
                 customer_id: str,
                 exclude_constellation: bool,
                 name: str):
        """
        :param str name: The name of the enrollment certificate to be exported.
        """
        pulumi.set(__self__, "customer_id", customer_id)
        pulumi.set(__self__, "exclude_constellation", exclude_constellation)
        pulumi.set(__self__, "name", name)

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

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

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The name of the enrollment certificate to be exported.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GetCustomerVersionProfileVersionResult(dict):
    def __init__(__self__, *,
                 creation_time: str,
                 customer_id: str,
                 id: str,
                 modified_by: str,
                 modified_time: str,
                 platform: str,
                 restart_after_uptime_in_days: str,
                 role: str,
                 version: str,
                 version_profile_gid: str):
        """
        :param str creation_time: (string)
        :param str id: The id of the enrollment certificate to be exported.
        :param str modified_by: (string)
        :param str modified_time: (string)
        """
        pulumi.set(__self__, "creation_time", creation_time)
        pulumi.set(__self__, "customer_id", customer_id)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "modified_by", modified_by)
        pulumi.set(__self__, "modified_time", modified_time)
        pulumi.set(__self__, "platform", platform)
        pulumi.set(__self__, "restart_after_uptime_in_days", restart_after_uptime_in_days)
        pulumi.set(__self__, "role", role)
        pulumi.set(__self__, "version", version)
        pulumi.set(__self__, "version_profile_gid", version_profile_gid)

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

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

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The id of the enrollment certificate to be exported.
        """
        return pulumi.get(self, "id")

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

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

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

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

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

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

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


@pulumi.output_type
class GetIdPControllerAdminMetadataResult(dict):
    def __init__(__self__, *,
                 certificate_url: str,
                 sp_base_url: str,
                 sp_entity_id: str,
                 sp_metadata_url: str,
                 sp_post_url: str):
        """
        :param str certificate_url: (string)
        :param str sp_entity_id: (string)
        :param str sp_metadata_url: (string)
        :param str sp_post_url: (string)
        """
        pulumi.set(__self__, "certificate_url", certificate_url)
        pulumi.set(__self__, "sp_base_url", sp_base_url)
        pulumi.set(__self__, "sp_entity_id", sp_entity_id)
        pulumi.set(__self__, "sp_metadata_url", sp_metadata_url)
        pulumi.set(__self__, "sp_post_url", sp_post_url)

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

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

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

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

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


@pulumi.output_type
class GetIdPControllerUserMetadataResult(dict):
    def __init__(__self__, *,
                 certificate_url: str,
                 sp_base_url: str,
                 sp_entity_id: str,
                 sp_metadata_url: str,
                 sp_post_url: str):
        """
        :param str certificate_url: (string)
        :param str sp_entity_id: (string)
        :param str sp_metadata_url: (string)
        :param str sp_post_url: (string)
        """
        pulumi.set(__self__, "certificate_url", certificate_url)
        pulumi.set(__self__, "sp_base_url", sp_base_url)
        pulumi.set(__self__, "sp_entity_id", sp_entity_id)
        pulumi.set(__self__, "sp_metadata_url", sp_metadata_url)
        pulumi.set(__self__, "sp_post_url", sp_post_url)

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

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

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

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

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


@pulumi.output_type
class GetInspectionAllPredefinedControlsListResult(dict):
    def __init__(__self__, *,
                 action: str,
                 action_value: str,
                 associated_inspection_profile_names: Sequence['outputs.GetInspectionAllPredefinedControlsListAssociatedInspectionProfileNameResult'],
                 attachment: str,
                 control_group: str,
                 control_number: str,
                 control_type: str,
                 creation_time: str,
                 default_action: str,
                 default_action_value: str,
                 description: str,
                 id: str,
                 modified_time: str,
                 modifiedby: str,
                 name: str,
                 paranoia_level: str,
                 protocol_type: str,
                 severity: str,
                 version: str):
        """
        :param str action: (string)
        :param str action_value: (string)
        :param Sequence['GetInspectionAllPredefinedControlsListAssociatedInspectionProfileNameArgs'] associated_inspection_profile_names: (string)
        :param str attachment: (string)
        :param str control_group: (string)
        :param str control_number: (string)
        :param str control_type: (string) Returned values: `WEBSOCKET_PREDEFINED`, `WEBSOCKET_CUSTOM`, `ZSCALER`, `CUSTOM`, `PREDEFINED`
        :param str creation_time: (string)
        :param str default_action: (string)
        :param str default_action_value: (string)
        :param str description: (string)
        :param str id: (string)
        :param str modified_time: (string)
        :param str name: (string)
        :param str paranoia_level: (string)
        :param str protocol_type: (string) Returned values: `HTTP`, `HTTPS`, `FTP`, `RDP`, `SSH`, `WEBSOCKET`
        :param str severity: (string)
        :param str version: The version of the predefined control, the default is: `OWASP_CRS/3.3.0`
        """
        pulumi.set(__self__, "action", action)
        pulumi.set(__self__, "action_value", action_value)
        pulumi.set(__self__, "associated_inspection_profile_names", associated_inspection_profile_names)
        pulumi.set(__self__, "attachment", attachment)
        pulumi.set(__self__, "control_group", control_group)
        pulumi.set(__self__, "control_number", control_number)
        pulumi.set(__self__, "control_type", control_type)
        pulumi.set(__self__, "creation_time", creation_time)
        pulumi.set(__self__, "default_action", default_action)
        pulumi.set(__self__, "default_action_value", default_action_value)
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "modified_time", modified_time)
        pulumi.set(__self__, "modifiedby", modifiedby)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "paranoia_level", paranoia_level)
        pulumi.set(__self__, "protocol_type", protocol_type)
        pulumi.set(__self__, "severity", severity)
        pulumi.set(__self__, "version", version)

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

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

    @property
    @pulumi.getter(name="associatedInspectionProfileNames")
    def associated_inspection_profile_names(self) -> Sequence['outputs.GetInspectionAllPredefinedControlsListAssociatedInspectionProfileNameResult']:
        """
        (string)
        """
        return pulumi.get(self, "associated_inspection_profile_names")

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

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

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

    @property
    @pulumi.getter(name="controlType")
    def control_type(self) -> str:
        """
        (string) Returned values: `WEBSOCKET_PREDEFINED`, `WEBSOCKET_CUSTOM`, `ZSCALER`, `CUSTOM`, `PREDEFINED`
        """
        return pulumi.get(self, "control_type")

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

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

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

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

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

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

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

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

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

    @property
    @pulumi.getter(name="protocolType")
    def protocol_type(self) -> str:
        """
        (string) Returned values: `HTTP`, `HTTPS`, `FTP`, `RDP`, `SSH`, `WEBSOCKET`
        """
        return pulumi.get(self, "protocol_type")

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

    @property
    @pulumi.getter
    def version(self) -> str:
        """
        The version of the predefined control, the default is: `OWASP_CRS/3.3.0`
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GetInspectionAllPredefinedControlsListAssociatedInspectionProfileNameResult(dict):
    def __init__(__self__, *,
                 id: str,
                 name: str):
        """
        :param str id: (string)
        :param str name: (string)
        """
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "name", name)

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

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


@pulumi.output_type
class GetInspectionCustomControlsRuleResult(dict):
    def __init__(__self__, *,
                 conditions: Sequence['outputs.GetInspectionCustomControlsRuleConditionResult'],
                 names: Sequence[str],
                 type: str):
        """
        :param Sequence[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.
        """
        pulumi.set(__self__, "conditions", conditions)
        pulumi.set(__self__, "names", names)
        pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter
    def conditions(self) -> Sequence['outputs.GetInspectionCustomControlsRuleConditionResult']:
        return pulumi.get(self, "conditions")

    @property
    @pulumi.getter
    def names(self) -> Sequence[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")

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


@pulumi.output_type
class GetInspectionCustomControlsRuleConditionResult(dict):
    def __init__(__self__, *,
                 lhs: str,
                 op: str,
                 rhs: str):
        pulumi.set(__self__, "lhs", lhs)
        pulumi.set(__self__, "op", op)
        pulumi.set(__self__, "rhs", rhs)

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

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

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


@pulumi.output_type
class GetInspectionPredefinedControlsAssociatedInspectionProfileNameResult(dict):
    def __init__(__self__, *,
                 id: str,
                 name: str):
        """
        :param str id: (Computed)
        :param str name: The name of the predefined control.
        """
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "name", name)

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

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The name of the predefined control.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GetInspectionProfileControlsInfoResult(dict):
    def __init__(__self__, *,
                 control_type: str,
                 count: str):
        """
        :param str control_type: (string) Control types. Supported Values: `WEBSOCKET_PREDEFINED`, `WEBSOCKET_CUSTOM`, `CUSTOM`, `PREDEFINED`, `ZSCALER`
        :param str count: (string) Control information counts `Long`
        """
        pulumi.set(__self__, "control_type", control_type)
        pulumi.set(__self__, "count", count)

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

    @property
    @pulumi.getter
    def count(self) -> str:
        """
        (string) Control information counts `Long`
        """
        return pulumi.get(self, "count")


@pulumi.output_type
class GetInspectionProfileCustomControlResult(dict):
    def __init__(__self__, *,
                 action: str,
                 action_value: str,
                 associated_inspection_profile_names: Sequence['outputs.GetInspectionProfileCustomControlAssociatedInspectionProfileNameResult'],
                 control_number: str,
                 control_rule_json: str,
                 creation_time: str,
                 default_action: str,
                 default_action_value: str,
                 description: str,
                 id: str,
                 modified_by: str,
                 modified_time: str,
                 name: str,
                 paranoia_level: str,
                 rules: Sequence['outputs.GetInspectionProfileCustomControlRuleResult'],
                 severity: str,
                 type: str,
                 version: str):
        """
        :param str action: (string) The action of the predefined control. Supported values: `PASS`, `BLOCK` and `REDIRECT`
        :param str action_value: (string) 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 Sequence['GetInspectionProfileCustomControlAssociatedInspectionProfileNameArgs'] associated_inspection_profile_names: (string) Name of the inspection profile
        :param str control_rule_json: (string) Custom controls string in JSON format
        :param str description: (string) Description of the inspection profile.
        :param str id: This field defines the id of the inspection profile.
        :param str name: This field defines the name of the inspection profile.
        :param str paranoia_level: (string) OWASP Predefined Paranoia Level. Range: [1-4], inclusive
        :param Sequence['GetInspectionProfileCustomControlRuleArgs'] rules: (string) Rules of the custom controls applied as conditions `JSON`
        :param str type: (string) Type value for the rules
        :param str version: (string) The version of the predefined control, the default is: `OWASP_CRS/3.3.0`
        """
        pulumi.set(__self__, "action", action)
        pulumi.set(__self__, "action_value", action_value)
        pulumi.set(__self__, "associated_inspection_profile_names", associated_inspection_profile_names)
        pulumi.set(__self__, "control_number", control_number)
        pulumi.set(__self__, "control_rule_json", control_rule_json)
        pulumi.set(__self__, "creation_time", creation_time)
        pulumi.set(__self__, "default_action", default_action)
        pulumi.set(__self__, "default_action_value", default_action_value)
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "modified_by", modified_by)
        pulumi.set(__self__, "modified_time", modified_time)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "paranoia_level", paranoia_level)
        pulumi.set(__self__, "rules", rules)
        pulumi.set(__self__, "severity", severity)
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "version", version)

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

    @property
    @pulumi.getter(name="actionValue")
    def action_value(self) -> str:
        """
        (string) 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")

    @property
    @pulumi.getter(name="associatedInspectionProfileNames")
    def associated_inspection_profile_names(self) -> Sequence['outputs.GetInspectionProfileCustomControlAssociatedInspectionProfileNameResult']:
        """
        (string) Name of the inspection profile
        """
        return pulumi.get(self, "associated_inspection_profile_names")

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

    @property
    @pulumi.getter(name="controlRuleJson")
    def control_rule_json(self) -> str:
        """
        (string) Custom controls string in JSON format
        """
        return pulumi.get(self, "control_rule_json")

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

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

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

    @property
    @pulumi.getter
    def description(self) -> str:
        """
        (string) Description of the inspection profile.
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        This field defines the id of the inspection profile.
        """
        return pulumi.get(self, "id")

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

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

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

    @property
    @pulumi.getter(name="paranoiaLevel")
    def paranoia_level(self) -> str:
        """
        (string) OWASP Predefined Paranoia Level. Range: [1-4], inclusive
        """
        return pulumi.get(self, "paranoia_level")

    @property
    @pulumi.getter
    def rules(self) -> Sequence['outputs.GetInspectionProfileCustomControlRuleResult']:
        """
        (string) Rules of the custom controls applied as conditions `JSON`
        """
        return pulumi.get(self, "rules")

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

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

    @property
    @pulumi.getter
    def version(self) -> str:
        """
        (string) The version of the predefined control, the default is: `OWASP_CRS/3.3.0`
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GetInspectionProfileCustomControlAssociatedInspectionProfileNameResult(dict):
    def __init__(__self__, *,
                 id: str,
                 name: str):
        """
        :param str id: This field defines the id of the inspection profile.
        :param str name: This field defines the name of the inspection profile.
        """
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        This field defines the id of the inspection profile.
        """
        return pulumi.get(self, "id")

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


@pulumi.output_type
class GetInspectionProfileCustomControlRuleResult(dict):
    def __init__(__self__, *,
                 conditions: Sequence['outputs.GetInspectionProfileCustomControlRuleConditionResult'],
                 names: str,
                 type: str):
        """
        :param Sequence['GetInspectionProfileCustomControlRuleConditionArgs'] conditions: (string)
        :param str names: (string) Name of the rules. If rules.type is set to `REQUEST_HEADERS`, `REQUEST_COOKIES`, or `RESPONSE_HEADERS`, the rules.name field is required.
        :param str type: (string) Type value for the rules
        """
        pulumi.set(__self__, "conditions", conditions)
        pulumi.set(__self__, "names", names)
        pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter
    def conditions(self) -> Sequence['outputs.GetInspectionProfileCustomControlRuleConditionResult']:
        """
        (string)
        """
        return pulumi.get(self, "conditions")

    @property
    @pulumi.getter
    def names(self) -> str:
        """
        (string) 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")

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


@pulumi.output_type
class GetInspectionProfileCustomControlRuleConditionResult(dict):
    def __init__(__self__, *,
                 lhs: str,
                 op: str,
                 rhs: str):
        """
        :param str lhs: (string) Signifies the key for the object type Supported values: `SIZE`, `VALUE`
        :param str op: (string) If lhs is set to SIZE, then the user may pass one of the following: `EQ: Equals`, `LE: Less than or equal to`, `GE: Greater than or equal to`. If the lhs is set to `VALUE`, then the user may pass one of the following: `CONTAINS`, `STARTS_WITH`, `ENDS_WITH`, `RX`.
        :param str rhs: (string) Denotes the value for the given object type. Its value depends on the key. If rules.type is set to REQUEST_METHOD, the conditions.rhs field must have one of the following values: `GET`,`HEAD`, `POST`, `OPTIONS`, `PUT`, `DELETE`, `TRACE`
        """
        pulumi.set(__self__, "lhs", lhs)
        pulumi.set(__self__, "op", op)
        pulumi.set(__self__, "rhs", rhs)

    @property
    @pulumi.getter
    def lhs(self) -> str:
        """
        (string) Signifies the key for the object type Supported values: `SIZE`, `VALUE`
        """
        return pulumi.get(self, "lhs")

    @property
    @pulumi.getter
    def op(self) -> str:
        """
        (string) If lhs is set to SIZE, then the user may pass one of the following: `EQ: Equals`, `LE: Less than or equal to`, `GE: Greater than or equal to`. If the lhs is set to `VALUE`, then the user may pass one of the following: `CONTAINS`, `STARTS_WITH`, `ENDS_WITH`, `RX`.
        """
        return pulumi.get(self, "op")

    @property
    @pulumi.getter
    def rhs(self) -> str:
        """
        (string) Denotes the value for the given object type. Its value depends on the key. If rules.type is set to REQUEST_METHOD, the conditions.rhs field must have one of the following values: `GET`,`HEAD`, `POST`, `OPTIONS`, `PUT`, `DELETE`, `TRACE`
        """
        return pulumi.get(self, "rhs")


@pulumi.output_type
class GetInspectionProfilePredefinedControlResult(dict):
    def __init__(__self__, *,
                 action: str,
                 action_value: str,
                 associated_inspection_profile_names: Sequence['outputs.GetInspectionProfilePredefinedControlAssociatedInspectionProfileNameResult'],
                 attachment: str,
                 control_group: str,
                 control_number: str,
                 control_type: str,
                 creation_time: str,
                 default_action: str,
                 default_action_value: str,
                 description: str,
                 id: str,
                 modified_by: str,
                 modified_time: str,
                 name: str,
                 paranoia_level: str,
                 severity: str,
                 version: str):
        """
        :param str action: (string) The action of the predefined control. Supported values: `PASS`, `BLOCK` and `REDIRECT`
        :param str action_value: (string) 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 Sequence['GetInspectionProfilePredefinedControlAssociatedInspectionProfileNameArgs'] associated_inspection_profile_names: (string) Name of the inspection profile
        :param str attachment: (string) Control attachment
        :param str control_group: (string) Control group
        :param str control_type: (string) Control types. Supported Values: `WEBSOCKET_PREDEFINED`, `WEBSOCKET_CUSTOM`, `CUSTOM`, `PREDEFINED`, `ZSCALER`
        :param str description: (string) Description of the inspection profile.
        :param str id: This field defines the id of the inspection profile.
        :param str name: This field defines the name of the inspection profile.
        :param str paranoia_level: (string) OWASP Predefined Paranoia Level. Range: [1-4], inclusive
        :param str version: (string) The version of the predefined control, the default is: `OWASP_CRS/3.3.0`
        """
        pulumi.set(__self__, "action", action)
        pulumi.set(__self__, "action_value", action_value)
        pulumi.set(__self__, "associated_inspection_profile_names", associated_inspection_profile_names)
        pulumi.set(__self__, "attachment", attachment)
        pulumi.set(__self__, "control_group", control_group)
        pulumi.set(__self__, "control_number", control_number)
        pulumi.set(__self__, "control_type", control_type)
        pulumi.set(__self__, "creation_time", creation_time)
        pulumi.set(__self__, "default_action", default_action)
        pulumi.set(__self__, "default_action_value", default_action_value)
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "modified_by", modified_by)
        pulumi.set(__self__, "modified_time", modified_time)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "paranoia_level", paranoia_level)
        pulumi.set(__self__, "severity", severity)
        pulumi.set(__self__, "version", version)

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

    @property
    @pulumi.getter(name="actionValue")
    def action_value(self) -> str:
        """
        (string) 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")

    @property
    @pulumi.getter(name="associatedInspectionProfileNames")
    def associated_inspection_profile_names(self) -> Sequence['outputs.GetInspectionProfilePredefinedControlAssociatedInspectionProfileNameResult']:
        """
        (string) Name of the inspection profile
        """
        return pulumi.get(self, "associated_inspection_profile_names")

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

    @property
    @pulumi.getter(name="controlGroup")
    def control_group(self) -> str:
        """
        (string) Control group
        """
        return pulumi.get(self, "control_group")

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

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

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

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

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

    @property
    @pulumi.getter
    def description(self) -> str:
        """
        (string) Description of the inspection profile.
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        This field defines the id of the inspection profile.
        """
        return pulumi.get(self, "id")

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

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

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

    @property
    @pulumi.getter(name="paranoiaLevel")
    def paranoia_level(self) -> str:
        """
        (string) OWASP Predefined Paranoia Level. Range: [1-4], inclusive
        """
        return pulumi.get(self, "paranoia_level")

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

    @property
    @pulumi.getter
    def version(self) -> str:
        """
        (string) The version of the predefined control, the default is: `OWASP_CRS/3.3.0`
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GetInspectionProfilePredefinedControlAssociatedInspectionProfileNameResult(dict):
    def __init__(__self__, *,
                 id: str,
                 name: str):
        """
        :param str id: This field defines the id of the inspection profile.
        :param str name: This field defines the name of the inspection profile.
        """
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        This field defines the id of the inspection profile.
        """
        return pulumi.get(self, "id")

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


@pulumi.output_type
class GetInspectionProfileWebSocketControlResult(dict):
    def __init__(__self__, *,
                 action: str,
                 action_value: str,
                 associated_inspection_profile_names: Sequence['outputs.GetInspectionProfileWebSocketControlAssociatedInspectionProfileNameResult'],
                 attachment: str,
                 control_group: str,
                 control_number: str,
                 control_type: str,
                 creation_time: str,
                 default_action: str,
                 default_action_value: str,
                 description: str,
                 id: str,
                 modified_by: str,
                 modified_time: str,
                 name: str,
                 paranoia_level: str,
                 protocol_type: str,
                 severity: str,
                 version: str):
        """
        :param str action: (string) The action of the predefined control. Supported values: `PASS`, `BLOCK` and `REDIRECT`
        :param str action_value: (string) 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 Sequence['GetInspectionProfileWebSocketControlAssociatedInspectionProfileNameArgs'] associated_inspection_profile_names: (string) Name of the inspection profile
        :param str attachment: (string) Control attachment
        :param str control_group: (string) Control group
        :param str control_type: (string) Control types. Supported Values: `WEBSOCKET_PREDEFINED`, `WEBSOCKET_CUSTOM`, `CUSTOM`, `PREDEFINED`, `ZSCALER`
        :param str description: (string) Description of the inspection profile.
        :param str id: This field defines the id of the inspection profile.
        :param str name: This field defines the name of the inspection profile.
        :param str paranoia_level: (string) OWASP Predefined Paranoia Level. Range: [1-4], inclusive
        :param str version: (string) The version of the predefined control, the default is: `OWASP_CRS/3.3.0`
        """
        pulumi.set(__self__, "action", action)
        pulumi.set(__self__, "action_value", action_value)
        pulumi.set(__self__, "associated_inspection_profile_names", associated_inspection_profile_names)
        pulumi.set(__self__, "attachment", attachment)
        pulumi.set(__self__, "control_group", control_group)
        pulumi.set(__self__, "control_number", control_number)
        pulumi.set(__self__, "control_type", control_type)
        pulumi.set(__self__, "creation_time", creation_time)
        pulumi.set(__self__, "default_action", default_action)
        pulumi.set(__self__, "default_action_value", default_action_value)
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "modified_by", modified_by)
        pulumi.set(__self__, "modified_time", modified_time)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "paranoia_level", paranoia_level)
        pulumi.set(__self__, "protocol_type", protocol_type)
        pulumi.set(__self__, "severity", severity)
        pulumi.set(__self__, "version", version)

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

    @property
    @pulumi.getter(name="actionValue")
    def action_value(self) -> str:
        """
        (string) 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")

    @property
    @pulumi.getter(name="associatedInspectionProfileNames")
    def associated_inspection_profile_names(self) -> Sequence['outputs.GetInspectionProfileWebSocketControlAssociatedInspectionProfileNameResult']:
        """
        (string) Name of the inspection profile
        """
        return pulumi.get(self, "associated_inspection_profile_names")

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

    @property
    @pulumi.getter(name="controlGroup")
    def control_group(self) -> str:
        """
        (string) Control group
        """
        return pulumi.get(self, "control_group")

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

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

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

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

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

    @property
    @pulumi.getter
    def description(self) -> str:
        """
        (string) Description of the inspection profile.
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        This field defines the id of the inspection profile.
        """
        return pulumi.get(self, "id")

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

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

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

    @property
    @pulumi.getter(name="paranoiaLevel")
    def paranoia_level(self) -> str:
        """
        (string) OWASP Predefined Paranoia Level. Range: [1-4], inclusive
        """
        return pulumi.get(self, "paranoia_level")

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

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

    @property
    @pulumi.getter
    def version(self) -> str:
        """
        (string) The version of the predefined control, the default is: `OWASP_CRS/3.3.0`
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GetInspectionProfileWebSocketControlAssociatedInspectionProfileNameResult(dict):
    def __init__(__self__, *,
                 id: str,
                 name: str):
        """
        :param str id: This field defines the id of the inspection profile.
        :param str name: This field defines the name of the inspection profile.
        """
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        This field defines the id of the inspection profile.
        """
        return pulumi.get(self, "id")

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


@pulumi.output_type
class GetLSSConfigControllerConfigResult(dict):
    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")

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

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

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

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

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

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

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

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

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

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


@pulumi.output_type
class GetLSSConfigControllerConnectorGroupResult(dict):
    def __init__(__self__, *,
                 id: str):
        """
        :param str id: This field defines the name of the log streaming resource.
        """
        pulumi.set(__self__, "id", id)

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


@pulumi.output_type
class GetLSSConfigControllerPolicyRuleResult(dict):
    def __init__(__self__, *,
                 action: str,
                 action_id: str,
                 bypass_default_rule: bool,
                 conditions: Sequence['outputs.GetLSSConfigControllerPolicyRuleConditionResult'],
                 creation_time: str,
                 custom_msg: str,
                 default_rule: bool,
                 description: str,
                 id: str,
                 isolation_default_rule: bool,
                 lss_default_rule: bool,
                 modified_time: str,
                 modifiedby: str,
                 name: str,
                 operator: str,
                 policy_set_id: str,
                 policy_type: str,
                 priority: str,
                 reauth_default_rule: bool,
                 reauth_idle_timeout: str,
                 reauth_timeout: str,
                 rule_order: str,
                 zpn_cbi_profile_id: str,
                 zpn_inspection_profile_id: str,
                 zpn_inspection_profile_name: str):
        """
        :param str creation_time: (string)
        :param str description: (string)
        :param str id: This field defines the name of the log streaming resource.
        :param str modified_time: (string)
        :param str name: This field defines the name of the log streaming resource.
        """
        pulumi.set(__self__, "action", action)
        pulumi.set(__self__, "action_id", action_id)
        pulumi.set(__self__, "bypass_default_rule", bypass_default_rule)
        pulumi.set(__self__, "conditions", conditions)
        pulumi.set(__self__, "creation_time", creation_time)
        pulumi.set(__self__, "custom_msg", custom_msg)
        pulumi.set(__self__, "default_rule", default_rule)
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "isolation_default_rule", isolation_default_rule)
        pulumi.set(__self__, "lss_default_rule", lss_default_rule)
        pulumi.set(__self__, "modified_time", modified_time)
        pulumi.set(__self__, "modifiedby", modifiedby)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "operator", operator)
        pulumi.set(__self__, "policy_set_id", policy_set_id)
        pulumi.set(__self__, "policy_type", policy_type)
        pulumi.set(__self__, "priority", priority)
        pulumi.set(__self__, "reauth_default_rule", reauth_default_rule)
        pulumi.set(__self__, "reauth_idle_timeout", reauth_idle_timeout)
        pulumi.set(__self__, "reauth_timeout", reauth_timeout)
        pulumi.set(__self__, "rule_order", rule_order)
        pulumi.set(__self__, "zpn_cbi_profile_id", zpn_cbi_profile_id)
        pulumi.set(__self__, "zpn_inspection_profile_id", zpn_inspection_profile_id)
        pulumi.set(__self__, "zpn_inspection_profile_name", zpn_inspection_profile_name)

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

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

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

    @property
    @pulumi.getter
    def conditions(self) -> Sequence['outputs.GetLSSConfigControllerPolicyRuleConditionResult']:
        return pulumi.get(self, "conditions")

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


@pulumi.output_type
class GetLSSConfigControllerPolicyRuleConditionResult(dict):
    def __init__(__self__, *,
                 creation_time: str,
                 id: str,
                 modified_time: str,
                 modifiedby: str,
                 negated: bool,
                 operands: Sequence['outputs.GetLSSConfigControllerPolicyRuleConditionOperandResult'],
                 operator: str):
        """
        :param str creation_time: (string)
        :param str id: This field defines the name of the log streaming resource.
        :param str modified_time: (string)
        """
        pulumi.set(__self__, "creation_time", creation_time)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "modified_time", modified_time)
        pulumi.set(__self__, "modifiedby", modifiedby)
        pulumi.set(__self__, "negated", negated)
        pulumi.set(__self__, "operands", operands)
        pulumi.set(__self__, "operator", operator)

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

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

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

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

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

    @property
    @pulumi.getter
    def operands(self) -> Sequence['outputs.GetLSSConfigControllerPolicyRuleConditionOperandResult']:
        return pulumi.get(self, "operands")

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


@pulumi.output_type
class GetLSSConfigControllerPolicyRuleConditionOperandResult(dict):
    def __init__(__self__, *,
                 creation_time: str,
                 id: str,
                 idp_id: str,
                 lhs: str,
                 modified_time: str,
                 modifiedby: str,
                 name: str,
                 object_type: str,
                 operator: str,
                 rhs: str):
        """
        :param str creation_time: (string)
        :param str id: This field defines the name of the log streaming resource.
        :param str modified_time: (string)
        :param str name: This field defines the name of the log streaming resource.
        """
        pulumi.set(__self__, "creation_time", creation_time)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "idp_id", idp_id)
        pulumi.set(__self__, "lhs", lhs)
        pulumi.set(__self__, "modified_time", modified_time)
        pulumi.set(__self__, "modifiedby", modifiedby)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "object_type", object_type)
        pulumi.set(__self__, "operator", operator)
        pulumi.set(__self__, "rhs", rhs)

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

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

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

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

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

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

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

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

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

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


@pulumi.output_type
class GetMachineGroupMachineResult(dict):
    def __init__(__self__, *,
                 creation_time: str,
                 description: str,
                 fingerprint: str,
                 id: str,
                 issued_cert_id: str,
                 machine_group_id: str,
                 machine_group_name: str,
                 machine_token_id: str,
                 modified_by: str,
                 modified_time: str,
                 name: str,
                 signing_cert: Mapping[str, str],
                 microtenant_id: Optional[str] = None,
                 microtenant_name: Optional[str] = None):
        """
        :param str creation_time: (string)
        :param str description: (string)
        :param str fingerprint: (string)
        :param str id: The ID of the machine group to be exported.
        :param str issued_cert_id: (string)
        :param str machine_group_id: (string)
        :param str machine_group_name: (string)
        :param str machine_token_id: (string)
        :param str modified_by: (string)
        :param str modified_time: (string)
        :param str name: The name of the machine group to be exported.
        :param Mapping[str, str] signing_cert: (string)
        :param str microtenant_id: (string) The ID of the microtenant the resource is to be associated with.
        :param str microtenant_name: (string) The name of the microtenant the resource is to be associated with.
        """
        pulumi.set(__self__, "creation_time", creation_time)
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "fingerprint", fingerprint)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "issued_cert_id", issued_cert_id)
        pulumi.set(__self__, "machine_group_id", machine_group_id)
        pulumi.set(__self__, "machine_group_name", machine_group_name)
        pulumi.set(__self__, "machine_token_id", machine_token_id)
        pulumi.set(__self__, "modified_by", modified_by)
        pulumi.set(__self__, "modified_time", modified_time)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "signing_cert", signing_cert)
        if microtenant_id is not None:
            pulumi.set(__self__, "microtenant_id", microtenant_id)
        if microtenant_name is not None:
            pulumi.set(__self__, "microtenant_name", microtenant_name)

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

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

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

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The ID of the machine group to be exported.
        """
        return pulumi.get(self, "id")

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

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

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

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

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

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

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The name of the machine group to be exported.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter(name="signingCert")
    def signing_cert(self) -> Mapping[str, str]:
        """
        (string)
        """
        return pulumi.get(self, "signing_cert")

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

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


@pulumi.output_type
class GetMicrotenantRoleResult(dict):
    def __init__(__self__, *,
                 custom_role: bool,
                 id: str,
                 name: str):
        """
        :param str name: (Required) Name of the microtenant controller.
        """
        pulumi.set(__self__, "custom_role", custom_role)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "name", name)

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

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

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        (Required) Name of the microtenant controller.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GetMicrotenantUserResult(dict):
    def __init__(__self__, *,
                 comments: str,
                 creation_time: str,
                 customer_id: str,
                 description: str,
                 display_name: str,
                 email: str,
                 enabled: bool,
                 eula: str,
                 force_pwd_change: bool,
                 group_ids: str,
                 id: str,
                 is_enabled: bool,
                 is_locked: bool,
                 language_code: str,
                 local_login_disabled: bool,
                 microtenant_id: str,
                 microtenant_name: str,
                 modified_time: int,
                 modifiedby: int,
                 name: str,
                 password: str,
                 phone_number: bool,
                 pin_session: str,
                 role_id: bool,
                 timezone: str,
                 tmp_password: str,
                 token_id: str,
                 two_factor_auth_enabled: bool,
                 two_factor_auth_type: str,
                 username: str):
        """
        :param str description: (string) Description of the microtenant controller.
        :param bool enabled: (bool) Whether this microtenant resource is enabled or not.
        :param str name: (Required) Name of the microtenant controller.
        """
        pulumi.set(__self__, "comments", comments)
        pulumi.set(__self__, "creation_time", creation_time)
        pulumi.set(__self__, "customer_id", customer_id)
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "display_name", display_name)
        pulumi.set(__self__, "email", email)
        pulumi.set(__self__, "enabled", enabled)
        pulumi.set(__self__, "eula", eula)
        pulumi.set(__self__, "force_pwd_change", force_pwd_change)
        pulumi.set(__self__, "group_ids", group_ids)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "is_enabled", is_enabled)
        pulumi.set(__self__, "is_locked", is_locked)
        pulumi.set(__self__, "language_code", language_code)
        pulumi.set(__self__, "local_login_disabled", local_login_disabled)
        pulumi.set(__self__, "microtenant_id", microtenant_id)
        pulumi.set(__self__, "microtenant_name", microtenant_name)
        pulumi.set(__self__, "modified_time", modified_time)
        pulumi.set(__self__, "modifiedby", modifiedby)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "password", password)
        pulumi.set(__self__, "phone_number", phone_number)
        pulumi.set(__self__, "pin_session", pin_session)
        pulumi.set(__self__, "role_id", role_id)
        pulumi.set(__self__, "timezone", timezone)
        pulumi.set(__self__, "tmp_password", tmp_password)
        pulumi.set(__self__, "token_id", token_id)
        pulumi.set(__self__, "two_factor_auth_enabled", two_factor_auth_enabled)
        pulumi.set(__self__, "two_factor_auth_type", two_factor_auth_type)
        pulumi.set(__self__, "username", username)

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

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

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

    @property
    @pulumi.getter
    def description(self) -> str:
        """
        (string) Description of the microtenant controller.
        """
        return pulumi.get(self, "description")

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

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

    @property
    @pulumi.getter
    def enabled(self) -> bool:
        """
        (bool) Whether this microtenant resource is enabled or not.
        """
        return pulumi.get(self, "enabled")

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

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

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

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

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

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

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

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

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

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

    @property
    @pulumi.getter(name="modifiedTime")
    def modified_time(self) -> int:
        return pulumi.get(self, "modified_time")

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

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        (Required) Name of the microtenant controller.
        """
        return pulumi.get(self, "name")

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

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

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

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

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

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

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

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

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

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


@pulumi.output_type
class GetPolicyTypeRuleResult(dict):
    def __init__(__self__, *,
                 action: str,
                 action_id: str,
                 bypass_default_rule: bool,
                 conditions: Sequence['outputs.GetPolicyTypeRuleConditionResult'],
                 creation_time: str,
                 custom_msg: str,
                 description: str,
                 id: str,
                 isolation_default_rule: bool,
                 modified_by: str,
                 modified_time: str,
                 name: str,
                 operator: str,
                 policy_set_id: str,
                 policy_type: str,
                 priority: str,
                 reauth_default_rule: bool,
                 reauth_idle_timeout: str,
                 reauth_timeout: str,
                 rule_order: str,
                 zpn_cbi_profile_id: str,
                 zpn_inspection_profile_id: str):
        """
        :param str policy_set_id: The ID of the global policy set.
        :param str policy_type: The value for differentiating the policy types.
        """
        pulumi.set(__self__, "action", action)
        pulumi.set(__self__, "action_id", action_id)
        pulumi.set(__self__, "bypass_default_rule", bypass_default_rule)
        pulumi.set(__self__, "conditions", conditions)
        pulumi.set(__self__, "creation_time", creation_time)
        pulumi.set(__self__, "custom_msg", custom_msg)
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "isolation_default_rule", isolation_default_rule)
        pulumi.set(__self__, "modified_by", modified_by)
        pulumi.set(__self__, "modified_time", modified_time)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "operator", operator)
        pulumi.set(__self__, "policy_set_id", policy_set_id)
        pulumi.set(__self__, "policy_type", policy_type)
        pulumi.set(__self__, "priority", priority)
        pulumi.set(__self__, "reauth_default_rule", reauth_default_rule)
        pulumi.set(__self__, "reauth_idle_timeout", reauth_idle_timeout)
        pulumi.set(__self__, "reauth_timeout", reauth_timeout)
        pulumi.set(__self__, "rule_order", rule_order)
        pulumi.set(__self__, "zpn_cbi_profile_id", zpn_cbi_profile_id)
        pulumi.set(__self__, "zpn_inspection_profile_id", zpn_inspection_profile_id)

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

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

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

    @property
    @pulumi.getter
    def conditions(self) -> Sequence['outputs.GetPolicyTypeRuleConditionResult']:
        return pulumi.get(self, "conditions")

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

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

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

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

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

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

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

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

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

    @property
    @pulumi.getter(name="policySetId")
    def policy_set_id(self) -> str:
        """
        The ID of the global policy set.
        """
        return pulumi.get(self, "policy_set_id")

    @property
    @pulumi.getter(name="policyType")
    def policy_type(self) -> str:
        """
        The value for differentiating the policy types.
        """
        return pulumi.get(self, "policy_type")

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

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

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

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

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

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

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


@pulumi.output_type
class GetPolicyTypeRuleConditionResult(dict):
    def __init__(__self__, *,
                 creation_time: str,
                 id: str,
                 modified_by: str,
                 modified_time: str,
                 negated: bool,
                 operands: Sequence['outputs.GetPolicyTypeRuleConditionOperandResult'],
                 operator: str):
        pulumi.set(__self__, "creation_time", creation_time)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "modified_by", modified_by)
        pulumi.set(__self__, "modified_time", modified_time)
        pulumi.set(__self__, "negated", negated)
        pulumi.set(__self__, "operands", operands)
        pulumi.set(__self__, "operator", operator)

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

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

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

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

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

    @property
    @pulumi.getter
    def operands(self) -> Sequence['outputs.GetPolicyTypeRuleConditionOperandResult']:
        return pulumi.get(self, "operands")

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


@pulumi.output_type
class GetPolicyTypeRuleConditionOperandResult(dict):
    def __init__(__self__, *,
                 creation_time: str,
                 id: str,
                 idp_id: str,
                 lhs: str,
                 modified_by: str,
                 modified_time: str,
                 name: str,
                 object_type: str,
                 operator: str,
                 rhs: str):
        pulumi.set(__self__, "creation_time", creation_time)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "idp_id", idp_id)
        pulumi.set(__self__, "lhs", lhs)
        pulumi.set(__self__, "modified_by", modified_by)
        pulumi.set(__self__, "modified_time", modified_time)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "object_type", object_type)
        pulumi.set(__self__, "operator", operator)
        pulumi.set(__self__, "rhs", rhs)

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

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

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

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

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

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

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

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

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

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


@pulumi.output_type
class GetSegmentGroupApplicationResult(dict):
    def __init__(__self__, *,
                 bypass_type: str,
                 config_space: str,
                 creation_time: str,
                 default_idle_timeout: str,
                 default_max_age: str,
                 description: str,
                 domain_name: str,
                 domain_names: Sequence[str],
                 double_encrypt: bool,
                 enabled: bool,
                 health_check_type: str,
                 id: str,
                 ip_anchored: bool,
                 log_features: Sequence[str],
                 modified_by: str,
                 modified_time: str,
                 name: str,
                 passive_health_enabled: bool,
                 server_groups: Sequence['outputs.GetSegmentGroupApplicationServerGroupResult'],
                 tcp_port_ranges: Sequence[str],
                 tcp_ports_ins: Sequence[str],
                 tcp_ports_outs: Sequence[str],
                 udp_port_ranges: Sequence[str]):
        """
        :param str bypass_type: (string)
        :param str config_space: (string)
        :param str creation_time: (string)
        :param str default_idle_timeout: (string)
        :param str default_max_age: (string)
        :param str description: (string)
        :param str domain_name: (string)
        :param Sequence[str] domain_names: (string)
        :param bool double_encrypt: (string)
        :param bool enabled: (bool)
        :param str health_check_type: (string)
        :param str id: The ID of the segment group to be exported.
        :param bool ip_anchored: (bool)
        :param str modified_by: (string)
        :param str modified_time: (string)
        :param str name: The name of the segment group to be exported.
        :param bool passive_health_enabled: (bool)
        :param Sequence['GetSegmentGroupApplicationServerGroupArgs'] server_groups: (Computed)
        :param Sequence[str] tcp_port_ranges: (string)
        :param Sequence[str] tcp_ports_ins: (string)
        :param Sequence[str] udp_port_ranges: (string)
        """
        pulumi.set(__self__, "bypass_type", bypass_type)
        pulumi.set(__self__, "config_space", config_space)
        pulumi.set(__self__, "creation_time", creation_time)
        pulumi.set(__self__, "default_idle_timeout", default_idle_timeout)
        pulumi.set(__self__, "default_max_age", default_max_age)
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "domain_name", domain_name)
        pulumi.set(__self__, "domain_names", domain_names)
        pulumi.set(__self__, "double_encrypt", double_encrypt)
        pulumi.set(__self__, "enabled", enabled)
        pulumi.set(__self__, "health_check_type", health_check_type)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "ip_anchored", ip_anchored)
        pulumi.set(__self__, "log_features", log_features)
        pulumi.set(__self__, "modified_by", modified_by)
        pulumi.set(__self__, "modified_time", modified_time)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "passive_health_enabled", passive_health_enabled)
        pulumi.set(__self__, "server_groups", server_groups)
        pulumi.set(__self__, "tcp_port_ranges", tcp_port_ranges)
        pulumi.set(__self__, "tcp_ports_ins", tcp_ports_ins)
        pulumi.set(__self__, "tcp_ports_outs", tcp_ports_outs)
        pulumi.set(__self__, "udp_port_ranges", udp_port_ranges)

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

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

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

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

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

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

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

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

    @property
    @pulumi.getter(name="doubleEncrypt")
    def double_encrypt(self) -> bool:
        """
        (string)
        """
        return pulumi.get(self, "double_encrypt")

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

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

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The ID of the segment group to be exported.
        """
        return pulumi.get(self, "id")

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

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

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

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

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The name of the segment group to be exported.
        """
        return pulumi.get(self, "name")

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

    @property
    @pulumi.getter(name="serverGroups")
    def server_groups(self) -> Sequence['outputs.GetSegmentGroupApplicationServerGroupResult']:
        """
        (Computed)
        """
        return pulumi.get(self, "server_groups")

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

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

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

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


@pulumi.output_type
class GetSegmentGroupApplicationServerGroupResult(dict):
    def __init__(__self__, *,
                 config_space: str,
                 creation_time: str,
                 description: str,
                 dynamic_discovery: bool,
                 enabled: bool,
                 id: str,
                 modified_by: str,
                 modified_time: str,
                 name: str):
        """
        :param str config_space: (string)
        :param str creation_time: (string)
        :param str description: (string)
        :param bool dynamic_discovery: (bool)
        :param bool enabled: (bool)
        :param str id: The ID of the segment group to be exported.
        :param str modified_by: (string)
        :param str modified_time: (string)
        :param str name: The name of the segment group to be exported.
        """
        pulumi.set(__self__, "config_space", config_space)
        pulumi.set(__self__, "creation_time", creation_time)
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "dynamic_discovery", dynamic_discovery)
        pulumi.set(__self__, "enabled", enabled)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "modified_by", modified_by)
        pulumi.set(__self__, "modified_time", modified_time)
        pulumi.set(__self__, "name", name)

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

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

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

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

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

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The ID of the segment group to be exported.
        """
        return pulumi.get(self, "id")

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

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

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The name of the segment group to be exported.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GetServerGroupAppConnectorGroupResult(dict):
    def __init__(__self__, *,
                 city_country: str,
                 connectors: Sequence['outputs.GetServerGroupAppConnectorGroupConnectorResult'],
                 country_code: str,
                 creation_time: str,
                 description: str,
                 dns_query_type: str,
                 enabled: bool,
                 geolocation_id: str,
                 id: str,
                 latitude: str,
                 location: str,
                 longitude: str,
                 modified_time: str,
                 modifiedby: str,
                 name: str,
                 server_groups: Sequence['outputs.GetServerGroupAppConnectorGroupServerGroupResult'],
                 siem_app_connector_group: bool,
                 upgrade_day: str,
                 upgrade_time_in_secs: str,
                 version_profile_id: str):
        """
        :param str description: (string) This field is the description of the server group.
        :param bool enabled: (bool) This field defines if the server group is enabled or disabled.
        :param str id: The ID of the server group to be exported.
        :param str name: The name of the server group to be exported.
        """
        pulumi.set(__self__, "city_country", city_country)
        pulumi.set(__self__, "connectors", connectors)
        pulumi.set(__self__, "country_code", country_code)
        pulumi.set(__self__, "creation_time", creation_time)
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "dns_query_type", dns_query_type)
        pulumi.set(__self__, "enabled", enabled)
        pulumi.set(__self__, "geolocation_id", geolocation_id)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "latitude", latitude)
        pulumi.set(__self__, "location", location)
        pulumi.set(__self__, "longitude", longitude)
        pulumi.set(__self__, "modified_time", modified_time)
        pulumi.set(__self__, "modifiedby", modifiedby)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "server_groups", server_groups)
        pulumi.set(__self__, "siem_app_connector_group", siem_app_connector_group)
        pulumi.set(__self__, "upgrade_day", upgrade_day)
        pulumi.set(__self__, "upgrade_time_in_secs", upgrade_time_in_secs)
        pulumi.set(__self__, "version_profile_id", version_profile_id)

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

    @property
    @pulumi.getter
    def connectors(self) -> Sequence['outputs.GetServerGroupAppConnectorGroupConnectorResult']:
        return pulumi.get(self, "connectors")

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

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

    @property
    @pulumi.getter
    def description(self) -> str:
        """
        (string) This field is the description of the server group.
        """
        return pulumi.get(self, "description")

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

    @property
    @pulumi.getter
    def enabled(self) -> bool:
        """
        (bool) This field defines if the server group is enabled or disabled.
        """
        return pulumi.get(self, "enabled")

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

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The ID of the server group to be exported.
        """
        return pulumi.get(self, "id")

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

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

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

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

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

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The name of the server group to be exported.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter(name="serverGroups")
    def server_groups(self) -> Sequence['outputs.GetServerGroupAppConnectorGroupServerGroupResult']:
        return pulumi.get(self, "server_groups")

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

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

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

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


@pulumi.output_type
class GetServerGroupAppConnectorGroupConnectorResult(dict):
    def __init__(__self__, *,
                 creation_time: str,
                 description: str,
                 enabled: bool,
                 fingerprint: str,
                 id: str,
                 issued_cert_id: str,
                 modified_time: str,
                 modifiedby: str,
                 upgrade_attempt: str,
                 name: Optional[str] = None):
        """
        :param str description: (string) This field is the description of the server group.
        :param bool enabled: (bool) This field defines if the server group is enabled or disabled.
        :param str id: The ID of the server group to be exported.
        :param str name: The name of the server group to be exported.
        """
        pulumi.set(__self__, "creation_time", creation_time)
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "enabled", enabled)
        pulumi.set(__self__, "fingerprint", fingerprint)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "issued_cert_id", issued_cert_id)
        pulumi.set(__self__, "modified_time", modified_time)
        pulumi.set(__self__, "modifiedby", modifiedby)
        pulumi.set(__self__, "upgrade_attempt", upgrade_attempt)
        if name is not None:
            pulumi.set(__self__, "name", name)

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

    @property
    @pulumi.getter
    def description(self) -> str:
        """
        (string) This field is the description of the server group.
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter
    def enabled(self) -> bool:
        """
        (bool) This field defines if the server group is enabled or disabled.
        """
        return pulumi.get(self, "enabled")

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

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The ID of the server group to be exported.
        """
        return pulumi.get(self, "id")

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

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

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

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

    @property
    @pulumi.getter
    def name(self) -> Optional[str]:
        """
        The name of the server group to be exported.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GetServerGroupAppConnectorGroupServerGroupResult(dict):
    def __init__(__self__, *,
                 config_space: str,
                 creation_time: str,
                 description: str,
                 dynamic_discovery: bool,
                 enabled: bool,
                 id: str,
                 modified_time: str,
                 modifiedby: str,
                 name: Optional[str] = None):
        """
        :param str config_space: (string)
        :param str description: (string) This field is the description of the server group.
        :param bool dynamic_discovery: (bool) This field controls dynamic discovery of the servers.
        :param bool enabled: (bool) This field defines if the server group is enabled or disabled.
        :param str id: The ID of the server group to be exported.
        :param str name: The name of the server group to be exported.
        """
        pulumi.set(__self__, "config_space", config_space)
        pulumi.set(__self__, "creation_time", creation_time)
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "dynamic_discovery", dynamic_discovery)
        pulumi.set(__self__, "enabled", enabled)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "modified_time", modified_time)
        pulumi.set(__self__, "modifiedby", modifiedby)
        if name is not None:
            pulumi.set(__self__, "name", name)

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

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

    @property
    @pulumi.getter
    def description(self) -> str:
        """
        (string) This field is the description of the server group.
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter(name="dynamicDiscovery")
    def dynamic_discovery(self) -> bool:
        """
        (bool) This field controls dynamic discovery of the servers.
        """
        return pulumi.get(self, "dynamic_discovery")

    @property
    @pulumi.getter
    def enabled(self) -> bool:
        """
        (bool) This field defines if the server group is enabled or disabled.
        """
        return pulumi.get(self, "enabled")

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The ID of the server group to be exported.
        """
        return pulumi.get(self, "id")

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

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

    @property
    @pulumi.getter
    def name(self) -> Optional[str]:
        """
        The name of the server group to be exported.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GetServerGroupApplicationResult(dict):
    def __init__(__self__, *,
                 id: str,
                 name: str):
        """
        :param str id: The ID of the server group to be exported.
        :param str name: The name of the server group to be exported.
        """
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The ID of the server group to be exported.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The name of the server group to be exported.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GetServerGroupServerResult(dict):
    def __init__(__self__, *,
                 address: str,
                 app_server_group_ids: Sequence[str],
                 config_space: str,
                 creation_time: str,
                 description: str,
                 enabled: bool,
                 id: str,
                 modified_time: str,
                 modifiedby: str,
                 name: str):
        """
        :param str config_space: (string)
        :param str description: (string) This field is the description of the server group.
        :param bool enabled: (bool) This field defines if the server group is enabled or disabled.
        :param str id: The ID of the server group to be exported.
        :param str name: The name of the server group to be exported.
        """
        pulumi.set(__self__, "address", address)
        pulumi.set(__self__, "app_server_group_ids", app_server_group_ids)
        pulumi.set(__self__, "config_space", config_space)
        pulumi.set(__self__, "creation_time", creation_time)
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "enabled", enabled)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "modified_time", modified_time)
        pulumi.set(__self__, "modifiedby", modifiedby)
        pulumi.set(__self__, "name", name)

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

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

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

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

    @property
    @pulumi.getter
    def description(self) -> str:
        """
        (string) This field is the description of the server group.
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter
    def enabled(self) -> bool:
        """
        (bool) This field defines if the server group is enabled or disabled.
        """
        return pulumi.get(self, "enabled")

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The ID of the server group to be exported.
        """
        return pulumi.get(self, "id")

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

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

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The name of the server group to be exported.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GetServiceEdgeControllerZpnSubModuleUpgradeListResult(dict):
    def __init__(__self__, *,
                 creation_time: str,
                 current_version: str,
                 entity_gid: str,
                 expected_version: str,
                 id: str,
                 modified_by: str,
                 modified_time: str,
                 role: str,
                 upgrade_status: str,
                 upgrade_time: str):
        """
        :param str creation_time: (string)
        :param str current_version: (string)
        :param str expected_version: (string)
        :param str id: The ID of the service edge controllerto be exported.
        :param str modified_by: (string)
        :param str modified_time: (string)
        :param str upgrade_status: (string)
        """
        pulumi.set(__self__, "creation_time", creation_time)
        pulumi.set(__self__, "current_version", current_version)
        pulumi.set(__self__, "entity_gid", entity_gid)
        pulumi.set(__self__, "expected_version", expected_version)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "modified_by", modified_by)
        pulumi.set(__self__, "modified_time", modified_time)
        pulumi.set(__self__, "role", role)
        pulumi.set(__self__, "upgrade_status", upgrade_status)
        pulumi.set(__self__, "upgrade_time", upgrade_time)

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

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

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

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

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The ID of the service edge controllerto be exported.
        """
        return pulumi.get(self, "id")

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

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

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

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

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


@pulumi.output_type
class GetServiceEdgeGroupServiceEdgeResult(dict):
    def __init__(__self__, *,
                 application_start_time: str,
                 control_channel_status: str,
                 creation_time: str,
                 ctrl_broker_name: str,
                 current_version: str,
                 description: str,
                 enabled: bool,
                 enrollment_cert: Mapping[str, Any],
                 expected_upgrade_time: str,
                 expected_version: str,
                 fingerprint: str,
                 id: str,
                 ipacl: str,
                 issued_cert_id: str,
                 last_broker_connect_time: str,
                 last_broker_connect_time_duration: str,
                 last_broker_disconnect_time: str,
                 last_broker_disconnect_time_duration: str,
                 last_upgrade_time: str,
                 latitude: str,
                 listen_ips: str,
                 location: str,
                 longitude: str,
                 modified_time: str,
                 modifiedby: str,
                 name: str,
                 platform: str,
                 previous_version: str,
                 private_ip: str,
                 provisioning_key_id: str,
                 provisioning_key_name: str,
                 public_ip: str,
                 publish_ips: Sequence[str],
                 sarge_version: str,
                 service_edge_group_id: str,
                 service_edge_group_name: str,
                 upgrade_attempt: str,
                 upgrade_status: str,
                 zpn_sub_module_upgrade_lists: Sequence['outputs.GetServiceEdgeGroupServiceEdgeZpnSubModuleUpgradeListResult']):
        """
        :param str application_start_time: (string)
        :param str control_channel_status: (string)
        :param str creation_time: (string)
        :param str ctrl_broker_name: (string)
        :param str current_version: (string)
        :param str description: (string) Description of the Service Edge Group.
        :param bool enabled: (bool) Whether this App Connector Group is enabled or not. Default value: `true`. Supported values: `true`, `false`
        :param Mapping[str, Any] enrollment_cert: (string)
        :param str expected_upgrade_time: (string)
        :param str expected_version: (string)
        :param str id: The ID of the service edge group to be exported.
        :param str issued_cert_id: (string)
        :param str last_broker_connect_time: (string)
        :param str last_broker_connect_time_duration: (string)
        :param str last_broker_disconnect_time: (string)
        :param str last_broker_disconnect_time_duration: (string)
        :param str last_upgrade_time: (string)
        :param str latitude: (string)
        :param str listen_ips: (string)
        :param str location: (string)
        :param str longitude: (string)
        :param str modified_time: (string)
        :param str name: The name of the service edge group to be exported.
        :param str platform: (string)
        :param str previous_version: (string)
        :param str private_ip: (string)
        :param str provisioning_key_id: (string)
        :param str provisioning_key_name: (string)
        :param str public_ip: (string)
        :param Sequence[str] publish_ips: (string)
        :param str sarge_version: (string)
        :param str service_edge_group_id: (string)
        :param str service_edge_group_name: (string)
        :param str upgrade_attempt: (string)
        :param str upgrade_status: (string)
        """
        pulumi.set(__self__, "application_start_time", application_start_time)
        pulumi.set(__self__, "control_channel_status", control_channel_status)
        pulumi.set(__self__, "creation_time", creation_time)
        pulumi.set(__self__, "ctrl_broker_name", ctrl_broker_name)
        pulumi.set(__self__, "current_version", current_version)
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "enabled", enabled)
        pulumi.set(__self__, "enrollment_cert", enrollment_cert)
        pulumi.set(__self__, "expected_upgrade_time", expected_upgrade_time)
        pulumi.set(__self__, "expected_version", expected_version)
        pulumi.set(__self__, "fingerprint", fingerprint)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "ipacl", ipacl)
        pulumi.set(__self__, "issued_cert_id", issued_cert_id)
        pulumi.set(__self__, "last_broker_connect_time", last_broker_connect_time)
        pulumi.set(__self__, "last_broker_connect_time_duration", last_broker_connect_time_duration)
        pulumi.set(__self__, "last_broker_disconnect_time", last_broker_disconnect_time)
        pulumi.set(__self__, "last_broker_disconnect_time_duration", last_broker_disconnect_time_duration)
        pulumi.set(__self__, "last_upgrade_time", last_upgrade_time)
        pulumi.set(__self__, "latitude", latitude)
        pulumi.set(__self__, "listen_ips", listen_ips)
        pulumi.set(__self__, "location", location)
        pulumi.set(__self__, "longitude", longitude)
        pulumi.set(__self__, "modified_time", modified_time)
        pulumi.set(__self__, "modifiedby", modifiedby)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "platform", platform)
        pulumi.set(__self__, "previous_version", previous_version)
        pulumi.set(__self__, "private_ip", private_ip)
        pulumi.set(__self__, "provisioning_key_id", provisioning_key_id)
        pulumi.set(__self__, "provisioning_key_name", provisioning_key_name)
        pulumi.set(__self__, "public_ip", public_ip)
        pulumi.set(__self__, "publish_ips", publish_ips)
        pulumi.set(__self__, "sarge_version", sarge_version)
        pulumi.set(__self__, "service_edge_group_id", service_edge_group_id)
        pulumi.set(__self__, "service_edge_group_name", service_edge_group_name)
        pulumi.set(__self__, "upgrade_attempt", upgrade_attempt)
        pulumi.set(__self__, "upgrade_status", upgrade_status)
        pulumi.set(__self__, "zpn_sub_module_upgrade_lists", zpn_sub_module_upgrade_lists)

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

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

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

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

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

    @property
    @pulumi.getter
    def description(self) -> str:
        """
        (string) Description of the Service Edge Group.
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter
    def enabled(self) -> bool:
        """
        (bool) Whether this App Connector Group is enabled or not. Default value: `true`. Supported values: `true`, `false`
        """
        return pulumi.get(self, "enabled")

    @property
    @pulumi.getter(name="enrollmentCert")
    def enrollment_cert(self) -> Mapping[str, Any]:
        """
        (string)
        """
        return pulumi.get(self, "enrollment_cert")

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

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

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

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The ID of the service edge group to be exported.
        """
        return pulumi.get(self, "id")

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

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

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

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

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

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

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

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

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

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

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

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

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

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The name of the service edge group to be exported.
        """
        return pulumi.get(self, "name")

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

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

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

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

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

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

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

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

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

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

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

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

    @property
    @pulumi.getter(name="zpnSubModuleUpgradeLists")
    def zpn_sub_module_upgrade_lists(self) -> Sequence['outputs.GetServiceEdgeGroupServiceEdgeZpnSubModuleUpgradeListResult']:
        return pulumi.get(self, "zpn_sub_module_upgrade_lists")


@pulumi.output_type
class GetServiceEdgeGroupServiceEdgeZpnSubModuleUpgradeListResult(dict):
    def __init__(__self__, *,
                 creation_time: str,
                 current_version: str,
                 entity_gid: str,
                 expected_version: str,
                 id: str,
                 modified_time: str,
                 modifiedby: str,
                 role: str,
                 upgrade_status: str,
                 upgrade_time: str):
        """
        :param str creation_time: (string)
        :param str current_version: (string)
        :param str expected_version: (string)
        :param str id: The ID of the service edge group to be exported.
        :param str modified_time: (string)
        :param str upgrade_status: (string)
        """
        pulumi.set(__self__, "creation_time", creation_time)
        pulumi.set(__self__, "current_version", current_version)
        pulumi.set(__self__, "entity_gid", entity_gid)
        pulumi.set(__self__, "expected_version", expected_version)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "modified_time", modified_time)
        pulumi.set(__self__, "modifiedby", modifiedby)
        pulumi.set(__self__, "role", role)
        pulumi.set(__self__, "upgrade_status", upgrade_status)
        pulumi.set(__self__, "upgrade_time", upgrade_time)

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

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

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

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

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The ID of the service edge group to be exported.
        """
        return pulumi.get(self, "id")

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

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

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

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

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


@pulumi.output_type
class GetServiceEdgeGroupTrustedNetworkResult(dict):
    def __init__(__self__, *,
                 creation_time: str,
                 domain: str,
                 id: str,
                 master_customer_id: str,
                 modified_time: str,
                 modifiedby: str,
                 name: str,
                 network_id: str,
                 zscaler_cloud: str):
        """
        :param str creation_time: (string)
        :param str domain: (string)
        :param str id: The ID of the service edge group to be exported.
        :param str master_customer_id: (string)
        :param str modified_time: (string)
        :param str name: The name of the service edge group to be exported.
        :param str network_id: (string)
        :param str zscaler_cloud: (string)
        """
        pulumi.set(__self__, "creation_time", creation_time)
        pulumi.set(__self__, "domain", domain)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "master_customer_id", master_customer_id)
        pulumi.set(__self__, "modified_time", modified_time)
        pulumi.set(__self__, "modifiedby", modifiedby)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "network_id", network_id)
        pulumi.set(__self__, "zscaler_cloud", zscaler_cloud)

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

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

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The ID of the service edge group to be exported.
        """
        return pulumi.get(self, "id")

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

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

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

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The name of the service edge group to be exported.
        """
        return pulumi.get(self, "name")

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

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


