# 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 sys
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union, overload
if sys.version_info >= (3, 11):
    from typing import NotRequired, TypedDict, TypeAlias
else:
    from typing_extensions import NotRequired, TypedDict, TypeAlias
from .. import _utilities
from . import outputs

__all__ = [
    'DataGroupRecord',
    'NodeFqdn',
    'PolicyRule',
    'PolicyRuleAction',
    'PolicyRuleCondition',
    'ProfileClientSslCertKeyChain',
    'ProfileHttpEnforcement',
    'ProfileHttpHttpStrictTransportSecurity',
    'ProfileRewriteCookieRule',
    'ProfileRewriteRequest',
    'ProfileRewriteResponse',
    'ProfileRewriteUriRulesClient',
    'ProfileRewriteUriRulesServer',
    'SnatOrigin',
    'GetDataGroupRecordResult',
    'GetNodeFqdnResult',
    'GetPolicyRuleResult',
    'GetPolicyRuleActionResult',
    'GetPolicyRuleConditionResult',
]

@pulumi.output_type
class DataGroupRecord(dict):
    def __init__(__self__, *,
                 name: str,
                 data: Optional[str] = None):
        """
        :param str name: , sets the value of the record's `name` attribute, must be of type defined in `type` attribute
        :param str data: , sets the value of the record's `data` attribute, specifying a value here will create a record in the form of `name := data`
        """
        pulumi.set(__self__, "name", name)
        if data is not None:
            pulumi.set(__self__, "data", data)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        , sets the value of the record's `name` attribute, must be of type defined in `type` attribute
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def data(self) -> Optional[str]:
        """
        , sets the value of the record's `data` attribute, specifying a value here will create a record in the form of `name := data`
        """
        return pulumi.get(self, "data")


@pulumi.output_type
class NodeFqdn(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "addressFamily":
            suggest = "address_family"

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

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

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

    def __init__(__self__, *,
                 address_family: Optional[str] = None,
                 autopopulate: Optional[str] = None,
                 downinterval: Optional[int] = None,
                 interval: Optional[str] = None,
                 name: Optional[str] = None):
        """
        :param str address_family: Specifies the node's address family. The default is 'unspecified', or IP-agnostic. This needs to be specified inside the fqdn (fully qualified domain name).
        :param str autopopulate: Specifies whether the node should scale to the IP address set returned by DNS.
        :param int downinterval: Specifies the number of attempts to resolve a domain name. The default is 5.
        :param str interval: Specifies the amount of time before sending the next DNS query. Default is 3600. This needs to be specified inside the fqdn (fully qualified domain name).
        :param str name: Name of the node
        """
        if address_family is not None:
            pulumi.set(__self__, "address_family", address_family)
        if autopopulate is not None:
            pulumi.set(__self__, "autopopulate", autopopulate)
        if downinterval is not None:
            pulumi.set(__self__, "downinterval", downinterval)
        if interval is not None:
            pulumi.set(__self__, "interval", interval)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter(name="addressFamily")
    def address_family(self) -> Optional[str]:
        """
        Specifies the node's address family. The default is 'unspecified', or IP-agnostic. This needs to be specified inside the fqdn (fully qualified domain name).
        """
        return pulumi.get(self, "address_family")

    @property
    @pulumi.getter
    def autopopulate(self) -> Optional[str]:
        """
        Specifies whether the node should scale to the IP address set returned by DNS.
        """
        return pulumi.get(self, "autopopulate")

    @property
    @pulumi.getter
    def downinterval(self) -> Optional[int]:
        """
        Specifies the number of attempts to resolve a domain name. The default is 5.
        """
        return pulumi.get(self, "downinterval")

    @property
    @pulumi.getter
    def interval(self) -> Optional[str]:
        """
        Specifies the amount of time before sending the next DNS query. Default is 3600. This needs to be specified inside the fqdn (fully qualified domain name).
        """
        return pulumi.get(self, "interval")

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


@pulumi.output_type
class PolicyRule(dict):
    def __init__(__self__, *,
                 name: str,
                 actions: Optional[Sequence['outputs.PolicyRuleAction']] = None,
                 conditions: Optional[Sequence['outputs.PolicyRuleCondition']] = None,
                 description: Optional[str] = None):
        """
        :param str name: Name of Rule to be applied in policy.
        :param Sequence['PolicyRuleActionArgs'] actions: Block type. See action block for more details.
        :param Sequence['PolicyRuleConditionArgs'] conditions: Block type. See condition block for more details.
        :param str description: Specifies descriptive text that identifies the irule attached to policy.
        """
        pulumi.set(__self__, "name", name)
        if actions is not None:
            pulumi.set(__self__, "actions", actions)
        if conditions is not None:
            pulumi.set(__self__, "conditions", conditions)
        if description is not None:
            pulumi.set(__self__, "description", description)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        Name of Rule to be applied in policy.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def actions(self) -> Optional[Sequence['outputs.PolicyRuleAction']]:
        """
        Block type. See action block for more details.
        """
        return pulumi.get(self, "actions")

    @property
    @pulumi.getter
    def conditions(self) -> Optional[Sequence['outputs.PolicyRuleCondition']]:
        """
        Block type. See condition block for more details.
        """
        return pulumi.get(self, "conditions")

    @property
    @pulumi.getter
    def description(self) -> Optional[str]:
        """
        Specifies descriptive text that identifies the irule attached to policy.
        """
        return pulumi.get(self, "description")


@pulumi.output_type
class PolicyRuleAction(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "appService":
            suggest = "app_service"
        elif key == "clonePool":
            suggest = "clone_pool"
        elif key == "cookieHash":
            suggest = "cookie_hash"
        elif key == "cookieInsert":
            suggest = "cookie_insert"
        elif key == "cookiePassive":
            suggest = "cookie_passive"
        elif key == "cookieRewrite":
            suggest = "cookie_rewrite"
        elif key == "destinationAddress":
            suggest = "destination_address"
        elif key == "expirySecs":
            suggest = "expiry_secs"
        elif key == "fromProfile":
            suggest = "from_profile"
        elif key == "httpBasicAuth":
            suggest = "http_basic_auth"
        elif key == "httpCookie":
            suggest = "http_cookie"
        elif key == "httpHeader":
            suggest = "http_header"
        elif key == "httpHost":
            suggest = "http_host"
        elif key == "httpReferer":
            suggest = "http_referer"
        elif key == "httpReply":
            suggest = "http_reply"
        elif key == "httpSetCookie":
            suggest = "http_set_cookie"
        elif key == "httpUri":
            suggest = "http_uri"
        elif key == "internalVirtual":
            suggest = "internal_virtual"
        elif key == "ipAddress":
            suggest = "ip_address"
        elif key == "ltmPolicy":
            suggest = "ltm_policy"
        elif key == "queryString":
            suggest = "query_string"
        elif key == "requestAdapt":
            suggest = "request_adapt"
        elif key == "responseAdapt":
            suggest = "response_adapt"
        elif key == "serverSsl":
            suggest = "server_ssl"
        elif key == "setVariable":
            suggest = "set_variable"
        elif key == "sourceAddress":
            suggest = "source_address"
        elif key == "sslClientHello":
            suggest = "ssl_client_hello"
        elif key == "sslServerHandshake":
            suggest = "ssl_server_handshake"
        elif key == "sslServerHello":
            suggest = "ssl_server_hello"
        elif key == "sslSessionId":
            suggest = "ssl_session_id"
        elif key == "tcpNagle":
            suggest = "tcp_nagle"
        elif key == "tmName":
            suggest = "tm_name"
        elif key == "vlanId":
            suggest = "vlan_id"

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

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

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

    def __init__(__self__, *,
                 app_service: Optional[str] = None,
                 application: Optional[str] = None,
                 asm: Optional[bool] = None,
                 avr: Optional[bool] = None,
                 cache: Optional[bool] = None,
                 carp: Optional[bool] = None,
                 category: Optional[str] = None,
                 classify: Optional[bool] = None,
                 clone_pool: Optional[str] = None,
                 code: Optional[int] = None,
                 compress: Optional[bool] = None,
                 connection: Optional[bool] = None,
                 content: Optional[str] = None,
                 cookie_hash: Optional[bool] = None,
                 cookie_insert: Optional[bool] = None,
                 cookie_passive: Optional[bool] = None,
                 cookie_rewrite: Optional[bool] = None,
                 decompress: Optional[bool] = None,
                 defer: Optional[bool] = None,
                 destination_address: Optional[bool] = None,
                 disable: Optional[bool] = None,
                 domain: Optional[str] = None,
                 enable: Optional[bool] = None,
                 expiry: Optional[str] = None,
                 expiry_secs: Optional[int] = None,
                 expression: Optional[str] = None,
                 extension: Optional[str] = None,
                 facility: Optional[str] = None,
                 forward: Optional[bool] = None,
                 from_profile: Optional[str] = None,
                 hash: Optional[bool] = None,
                 host: Optional[str] = None,
                 http: Optional[bool] = None,
                 http_basic_auth: Optional[bool] = None,
                 http_cookie: Optional[bool] = None,
                 http_header: Optional[bool] = None,
                 http_host: Optional[bool] = None,
                 http_referer: Optional[bool] = None,
                 http_reply: Optional[bool] = None,
                 http_set_cookie: Optional[bool] = None,
                 http_uri: Optional[bool] = None,
                 ifile: Optional[str] = None,
                 insert: Optional[bool] = None,
                 internal_virtual: Optional[str] = None,
                 ip_address: Optional[str] = None,
                 key: Optional[str] = None,
                 l7dos: Optional[bool] = None,
                 length: Optional[int] = None,
                 location: Optional[str] = None,
                 log: Optional[bool] = None,
                 ltm_policy: Optional[bool] = None,
                 member: Optional[str] = None,
                 message: Optional[str] = None,
                 netmask: Optional[str] = None,
                 nexthop: Optional[str] = None,
                 node: Optional[str] = None,
                 offset: Optional[int] = None,
                 path: Optional[str] = None,
                 pem: Optional[bool] = None,
                 persist: Optional[bool] = None,
                 pin: Optional[bool] = None,
                 policy: Optional[str] = None,
                 pool: Optional[str] = None,
                 port: Optional[int] = None,
                 priority: Optional[str] = None,
                 profile: Optional[str] = None,
                 protocol: Optional[str] = None,
                 query_string: Optional[str] = None,
                 rateclass: Optional[str] = None,
                 redirect: Optional[bool] = None,
                 remove: Optional[bool] = None,
                 replace: Optional[bool] = None,
                 request: Optional[bool] = None,
                 request_adapt: Optional[bool] = None,
                 reset: Optional[bool] = None,
                 response: Optional[bool] = None,
                 response_adapt: Optional[bool] = None,
                 scheme: Optional[str] = None,
                 script: Optional[str] = None,
                 select: Optional[bool] = None,
                 server_ssl: Optional[bool] = None,
                 set_variable: Optional[bool] = None,
                 shutdown: Optional[bool] = None,
                 snat: Optional[str] = None,
                 snatpool: Optional[str] = None,
                 source_address: Optional[bool] = None,
                 ssl_client_hello: Optional[bool] = None,
                 ssl_server_handshake: Optional[bool] = None,
                 ssl_server_hello: Optional[bool] = None,
                 ssl_session_id: Optional[bool] = None,
                 status: Optional[int] = None,
                 tcl: Optional[bool] = None,
                 tcp_nagle: Optional[bool] = None,
                 text: Optional[str] = None,
                 timeout: Optional[int] = None,
                 tm_name: Optional[str] = None,
                 uie: Optional[bool] = None,
                 universal: Optional[bool] = None,
                 value: Optional[str] = None,
                 virtual: Optional[str] = None,
                 vlan: Optional[str] = None,
                 vlan_id: Optional[int] = None,
                 wam: Optional[bool] = None,
                 write: Optional[bool] = None):
        """
        :param bool connection: This action is set to `true` by default, it needs to be explicitly set to `false` for actions it conflicts with.
        :param bool forward: This action will affect forwarding.
        :param str pool: This action will direct the stream to this pool.
        """
        if app_service is not None:
            pulumi.set(__self__, "app_service", app_service)
        if application is not None:
            pulumi.set(__self__, "application", application)
        if asm is not None:
            pulumi.set(__self__, "asm", asm)
        if avr is not None:
            pulumi.set(__self__, "avr", avr)
        if cache is not None:
            pulumi.set(__self__, "cache", cache)
        if carp is not None:
            pulumi.set(__self__, "carp", carp)
        if category is not None:
            pulumi.set(__self__, "category", category)
        if classify is not None:
            pulumi.set(__self__, "classify", classify)
        if clone_pool is not None:
            pulumi.set(__self__, "clone_pool", clone_pool)
        if code is not None:
            pulumi.set(__self__, "code", code)
        if compress is not None:
            pulumi.set(__self__, "compress", compress)
        if connection is not None:
            pulumi.set(__self__, "connection", connection)
        if content is not None:
            pulumi.set(__self__, "content", content)
        if cookie_hash is not None:
            pulumi.set(__self__, "cookie_hash", cookie_hash)
        if cookie_insert is not None:
            pulumi.set(__self__, "cookie_insert", cookie_insert)
        if cookie_passive is not None:
            pulumi.set(__self__, "cookie_passive", cookie_passive)
        if cookie_rewrite is not None:
            pulumi.set(__self__, "cookie_rewrite", cookie_rewrite)
        if decompress is not None:
            pulumi.set(__self__, "decompress", decompress)
        if defer is not None:
            pulumi.set(__self__, "defer", defer)
        if destination_address is not None:
            pulumi.set(__self__, "destination_address", destination_address)
        if disable is not None:
            pulumi.set(__self__, "disable", disable)
        if domain is not None:
            pulumi.set(__self__, "domain", domain)
        if enable is not None:
            pulumi.set(__self__, "enable", enable)
        if expiry is not None:
            pulumi.set(__self__, "expiry", expiry)
        if expiry_secs is not None:
            pulumi.set(__self__, "expiry_secs", expiry_secs)
        if expression is not None:
            pulumi.set(__self__, "expression", expression)
        if extension is not None:
            pulumi.set(__self__, "extension", extension)
        if facility is not None:
            pulumi.set(__self__, "facility", facility)
        if forward is not None:
            pulumi.set(__self__, "forward", forward)
        if from_profile is not None:
            pulumi.set(__self__, "from_profile", from_profile)
        if hash is not None:
            pulumi.set(__self__, "hash", hash)
        if host is not None:
            pulumi.set(__self__, "host", host)
        if http is not None:
            pulumi.set(__self__, "http", http)
        if http_basic_auth is not None:
            pulumi.set(__self__, "http_basic_auth", http_basic_auth)
        if http_cookie is not None:
            pulumi.set(__self__, "http_cookie", http_cookie)
        if http_header is not None:
            pulumi.set(__self__, "http_header", http_header)
        if http_host is not None:
            pulumi.set(__self__, "http_host", http_host)
        if http_referer is not None:
            pulumi.set(__self__, "http_referer", http_referer)
        if http_reply is not None:
            pulumi.set(__self__, "http_reply", http_reply)
        if http_set_cookie is not None:
            pulumi.set(__self__, "http_set_cookie", http_set_cookie)
        if http_uri is not None:
            pulumi.set(__self__, "http_uri", http_uri)
        if ifile is not None:
            pulumi.set(__self__, "ifile", ifile)
        if insert is not None:
            pulumi.set(__self__, "insert", insert)
        if internal_virtual is not None:
            pulumi.set(__self__, "internal_virtual", internal_virtual)
        if ip_address is not None:
            pulumi.set(__self__, "ip_address", ip_address)
        if key is not None:
            pulumi.set(__self__, "key", key)
        if l7dos is not None:
            pulumi.set(__self__, "l7dos", l7dos)
        if length is not None:
            pulumi.set(__self__, "length", length)
        if location is not None:
            pulumi.set(__self__, "location", location)
        if log is not None:
            pulumi.set(__self__, "log", log)
        if ltm_policy is not None:
            pulumi.set(__self__, "ltm_policy", ltm_policy)
        if member is not None:
            pulumi.set(__self__, "member", member)
        if message is not None:
            pulumi.set(__self__, "message", message)
        if netmask is not None:
            pulumi.set(__self__, "netmask", netmask)
        if nexthop is not None:
            pulumi.set(__self__, "nexthop", nexthop)
        if node is not None:
            pulumi.set(__self__, "node", node)
        if offset is not None:
            pulumi.set(__self__, "offset", offset)
        if path is not None:
            pulumi.set(__self__, "path", path)
        if pem is not None:
            pulumi.set(__self__, "pem", pem)
        if persist is not None:
            pulumi.set(__self__, "persist", persist)
        if pin is not None:
            pulumi.set(__self__, "pin", pin)
        if policy is not None:
            pulumi.set(__self__, "policy", policy)
        if pool is not None:
            pulumi.set(__self__, "pool", pool)
        if port is not None:
            pulumi.set(__self__, "port", port)
        if priority is not None:
            pulumi.set(__self__, "priority", priority)
        if profile is not None:
            pulumi.set(__self__, "profile", profile)
        if protocol is not None:
            pulumi.set(__self__, "protocol", protocol)
        if query_string is not None:
            pulumi.set(__self__, "query_string", query_string)
        if rateclass is not None:
            pulumi.set(__self__, "rateclass", rateclass)
        if redirect is not None:
            pulumi.set(__self__, "redirect", redirect)
        if remove is not None:
            pulumi.set(__self__, "remove", remove)
        if replace is not None:
            pulumi.set(__self__, "replace", replace)
        if request is not None:
            pulumi.set(__self__, "request", request)
        if request_adapt is not None:
            pulumi.set(__self__, "request_adapt", request_adapt)
        if reset is not None:
            pulumi.set(__self__, "reset", reset)
        if response is not None:
            pulumi.set(__self__, "response", response)
        if response_adapt is not None:
            pulumi.set(__self__, "response_adapt", response_adapt)
        if scheme is not None:
            pulumi.set(__self__, "scheme", scheme)
        if script is not None:
            pulumi.set(__self__, "script", script)
        if select is not None:
            pulumi.set(__self__, "select", select)
        if server_ssl is not None:
            pulumi.set(__self__, "server_ssl", server_ssl)
        if set_variable is not None:
            pulumi.set(__self__, "set_variable", set_variable)
        if shutdown is not None:
            pulumi.set(__self__, "shutdown", shutdown)
        if snat is not None:
            pulumi.set(__self__, "snat", snat)
        if snatpool is not None:
            pulumi.set(__self__, "snatpool", snatpool)
        if source_address is not None:
            pulumi.set(__self__, "source_address", source_address)
        if ssl_client_hello is not None:
            pulumi.set(__self__, "ssl_client_hello", ssl_client_hello)
        if ssl_server_handshake is not None:
            pulumi.set(__self__, "ssl_server_handshake", ssl_server_handshake)
        if ssl_server_hello is not None:
            pulumi.set(__self__, "ssl_server_hello", ssl_server_hello)
        if ssl_session_id is not None:
            pulumi.set(__self__, "ssl_session_id", ssl_session_id)
        if status is not None:
            pulumi.set(__self__, "status", status)
        if tcl is not None:
            pulumi.set(__self__, "tcl", tcl)
        if tcp_nagle is not None:
            pulumi.set(__self__, "tcp_nagle", tcp_nagle)
        if text is not None:
            pulumi.set(__self__, "text", text)
        if timeout is not None:
            pulumi.set(__self__, "timeout", timeout)
        if tm_name is not None:
            pulumi.set(__self__, "tm_name", tm_name)
        if uie is not None:
            pulumi.set(__self__, "uie", uie)
        if universal is not None:
            pulumi.set(__self__, "universal", universal)
        if value is not None:
            pulumi.set(__self__, "value", value)
        if virtual is not None:
            pulumi.set(__self__, "virtual", virtual)
        if vlan is not None:
            pulumi.set(__self__, "vlan", vlan)
        if vlan_id is not None:
            pulumi.set(__self__, "vlan_id", vlan_id)
        if wam is not None:
            pulumi.set(__self__, "wam", wam)
        if write is not None:
            pulumi.set(__self__, "write", write)

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

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

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

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

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

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

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

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

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

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

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

    @property
    @pulumi.getter
    def connection(self) -> Optional[bool]:
        """
        This action is set to `true` by default, it needs to be explicitly set to `false` for actions it conflicts with.
        """
        return pulumi.get(self, "connection")

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    @property
    @pulumi.getter
    def forward(self) -> Optional[bool]:
        """
        This action will affect forwarding.
        """
        return pulumi.get(self, "forward")

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    @property
    @pulumi.getter
    def pool(self) -> Optional[str]:
        """
        This action will direct the stream to this pool.
        """
        return pulumi.get(self, "pool")

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


@pulumi.output_type
class PolicyRuleCondition(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "appService":
            suggest = "app_service"
        elif key == "browserType":
            suggest = "browser_type"
        elif key == "browserVersion":
            suggest = "browser_version"
        elif key == "caseInsensitive":
            suggest = "case_insensitive"
        elif key == "caseSensitive":
            suggest = "case_sensitive"
        elif key == "cipherBits":
            suggest = "cipher_bits"
        elif key == "clientAccepted":
            suggest = "client_accepted"
        elif key == "clientSsl":
            suggest = "client_ssl"
        elif key == "commonName":
            suggest = "common_name"
        elif key == "countryCode":
            suggest = "country_code"
        elif key == "countryName":
            suggest = "country_name"
        elif key == "cpuUsage":
            suggest = "cpu_usage"
        elif key == "deviceMake":
            suggest = "device_make"
        elif key == "deviceModel":
            suggest = "device_model"
        elif key == "endsWith":
            suggest = "ends_with"
        elif key == "greaterOrEqual":
            suggest = "greater_or_equal"
        elif key == "httpBasicAuth":
            suggest = "http_basic_auth"
        elif key == "httpCookie":
            suggest = "http_cookie"
        elif key == "httpHeader":
            suggest = "http_header"
        elif key == "httpHost":
            suggest = "http_host"
        elif key == "httpMethod":
            suggest = "http_method"
        elif key == "httpReferer":
            suggest = "http_referer"
        elif key == "httpSetCookie":
            suggest = "http_set_cookie"
        elif key == "httpStatus":
            suggest = "http_status"
        elif key == "httpUri":
            suggest = "http_uri"
        elif key == "httpUserAgent":
            suggest = "http_user_agent"
        elif key == "httpVersion":
            suggest = "http_version"
        elif key == "lessOrEqual":
            suggest = "less_or_equal"
        elif key == "not":
            suggest = "not_"
        elif key == "pathSegment":
            suggest = "path_segment"
        elif key == "queryParameter":
            suggest = "query_parameter"
        elif key == "queryString":
            suggest = "query_string"
        elif key == "regionCode":
            suggest = "region_code"
        elif key == "regionName":
            suggest = "region_name"
        elif key == "routeDomain":
            suggest = "route_domain"
        elif key == "serverName":
            suggest = "server_name"
        elif key == "sslCert":
            suggest = "ssl_cert"
        elif key == "sslClientHello":
            suggest = "ssl_client_hello"
        elif key == "sslExtension":
            suggest = "ssl_extension"
        elif key == "sslServerHandshake":
            suggest = "ssl_server_handshake"
        elif key == "sslServerHello":
            suggest = "ssl_server_hello"
        elif key == "startsWith":
            suggest = "starts_with"
        elif key == "tmName":
            suggest = "tm_name"
        elif key == "unnamedQueryParameter":
            suggest = "unnamed_query_parameter"
        elif key == "userAgentToken":
            suggest = "user_agent_token"
        elif key == "vlanId":
            suggest = "vlan_id"

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

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

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

    def __init__(__self__, *,
                 address: Optional[bool] = None,
                 all: Optional[bool] = None,
                 app_service: Optional[str] = None,
                 browser_type: Optional[bool] = None,
                 browser_version: Optional[bool] = None,
                 case_insensitive: Optional[bool] = None,
                 case_sensitive: Optional[bool] = None,
                 cipher: Optional[bool] = None,
                 cipher_bits: Optional[bool] = None,
                 client_accepted: Optional[bool] = None,
                 client_ssl: Optional[bool] = None,
                 code: Optional[bool] = None,
                 common_name: Optional[bool] = None,
                 contains: Optional[bool] = None,
                 continent: Optional[bool] = None,
                 country_code: Optional[bool] = None,
                 country_name: Optional[bool] = None,
                 cpu_usage: Optional[bool] = None,
                 datagroup: Optional[str] = None,
                 device_make: Optional[bool] = None,
                 device_model: Optional[bool] = None,
                 domain: Optional[bool] = None,
                 ends_with: Optional[bool] = None,
                 equals: Optional[bool] = None,
                 exists: Optional[bool] = None,
                 expiry: Optional[bool] = None,
                 extension: Optional[bool] = None,
                 external: Optional[bool] = None,
                 geoip: Optional[bool] = None,
                 greater: Optional[bool] = None,
                 greater_or_equal: Optional[bool] = None,
                 host: Optional[bool] = None,
                 http_basic_auth: Optional[bool] = None,
                 http_cookie: Optional[bool] = None,
                 http_header: Optional[bool] = None,
                 http_host: Optional[bool] = None,
                 http_method: Optional[bool] = None,
                 http_referer: Optional[bool] = None,
                 http_set_cookie: Optional[bool] = None,
                 http_status: Optional[bool] = None,
                 http_uri: Optional[bool] = None,
                 http_user_agent: Optional[bool] = None,
                 http_version: Optional[bool] = None,
                 index: Optional[int] = None,
                 internal: Optional[bool] = None,
                 isp: Optional[bool] = None,
                 last15secs: Optional[bool] = None,
                 last1min: Optional[bool] = None,
                 last5mins: Optional[bool] = None,
                 less: Optional[bool] = None,
                 less_or_equal: Optional[bool] = None,
                 local: Optional[bool] = None,
                 major: Optional[bool] = None,
                 matches: Optional[bool] = None,
                 minor: Optional[bool] = None,
                 missing: Optional[bool] = None,
                 mss: Optional[bool] = None,
                 not_: Optional[bool] = None,
                 org: Optional[bool] = None,
                 password: Optional[bool] = None,
                 path: Optional[bool] = None,
                 path_segment: Optional[bool] = None,
                 port: Optional[bool] = None,
                 present: Optional[bool] = None,
                 protocol: Optional[bool] = None,
                 query_parameter: Optional[bool] = None,
                 query_string: Optional[bool] = None,
                 region_code: Optional[bool] = None,
                 region_name: Optional[bool] = None,
                 remote: Optional[bool] = None,
                 request: Optional[bool] = None,
                 response: Optional[bool] = None,
                 route_domain: Optional[bool] = None,
                 rtt: Optional[bool] = None,
                 scheme: Optional[bool] = None,
                 server_name: Optional[bool] = None,
                 ssl_cert: Optional[bool] = None,
                 ssl_client_hello: Optional[bool] = None,
                 ssl_extension: Optional[bool] = None,
                 ssl_server_handshake: Optional[bool] = None,
                 ssl_server_hello: Optional[bool] = None,
                 starts_with: Optional[bool] = None,
                 tcp: Optional[bool] = None,
                 text: Optional[bool] = None,
                 tm_name: Optional[str] = None,
                 unnamed_query_parameter: Optional[bool] = None,
                 user_agent_token: Optional[bool] = None,
                 username: Optional[bool] = None,
                 value: Optional[bool] = None,
                 values: Optional[Sequence[str]] = None,
                 version: Optional[bool] = None,
                 vlan: Optional[bool] = None,
                 vlan_id: Optional[bool] = None):
        if address is not None:
            pulumi.set(__self__, "address", address)
        if all is not None:
            pulumi.set(__self__, "all", all)
        if app_service is not None:
            pulumi.set(__self__, "app_service", app_service)
        if browser_type is not None:
            pulumi.set(__self__, "browser_type", browser_type)
        if browser_version is not None:
            pulumi.set(__self__, "browser_version", browser_version)
        if case_insensitive is not None:
            pulumi.set(__self__, "case_insensitive", case_insensitive)
        if case_sensitive is not None:
            pulumi.set(__self__, "case_sensitive", case_sensitive)
        if cipher is not None:
            pulumi.set(__self__, "cipher", cipher)
        if cipher_bits is not None:
            pulumi.set(__self__, "cipher_bits", cipher_bits)
        if client_accepted is not None:
            pulumi.set(__self__, "client_accepted", client_accepted)
        if client_ssl is not None:
            pulumi.set(__self__, "client_ssl", client_ssl)
        if code is not None:
            pulumi.set(__self__, "code", code)
        if common_name is not None:
            pulumi.set(__self__, "common_name", common_name)
        if contains is not None:
            pulumi.set(__self__, "contains", contains)
        if continent is not None:
            pulumi.set(__self__, "continent", continent)
        if country_code is not None:
            pulumi.set(__self__, "country_code", country_code)
        if country_name is not None:
            pulumi.set(__self__, "country_name", country_name)
        if cpu_usage is not None:
            pulumi.set(__self__, "cpu_usage", cpu_usage)
        if datagroup is not None:
            pulumi.set(__self__, "datagroup", datagroup)
        if device_make is not None:
            pulumi.set(__self__, "device_make", device_make)
        if device_model is not None:
            pulumi.set(__self__, "device_model", device_model)
        if domain is not None:
            pulumi.set(__self__, "domain", domain)
        if ends_with is not None:
            pulumi.set(__self__, "ends_with", ends_with)
        if equals is not None:
            pulumi.set(__self__, "equals", equals)
        if exists is not None:
            pulumi.set(__self__, "exists", exists)
        if expiry is not None:
            pulumi.set(__self__, "expiry", expiry)
        if extension is not None:
            pulumi.set(__self__, "extension", extension)
        if external is not None:
            pulumi.set(__self__, "external", external)
        if geoip is not None:
            pulumi.set(__self__, "geoip", geoip)
        if greater is not None:
            pulumi.set(__self__, "greater", greater)
        if greater_or_equal is not None:
            pulumi.set(__self__, "greater_or_equal", greater_or_equal)
        if host is not None:
            pulumi.set(__self__, "host", host)
        if http_basic_auth is not None:
            pulumi.set(__self__, "http_basic_auth", http_basic_auth)
        if http_cookie is not None:
            pulumi.set(__self__, "http_cookie", http_cookie)
        if http_header is not None:
            pulumi.set(__self__, "http_header", http_header)
        if http_host is not None:
            pulumi.set(__self__, "http_host", http_host)
        if http_method is not None:
            pulumi.set(__self__, "http_method", http_method)
        if http_referer is not None:
            pulumi.set(__self__, "http_referer", http_referer)
        if http_set_cookie is not None:
            pulumi.set(__self__, "http_set_cookie", http_set_cookie)
        if http_status is not None:
            pulumi.set(__self__, "http_status", http_status)
        if http_uri is not None:
            pulumi.set(__self__, "http_uri", http_uri)
        if http_user_agent is not None:
            pulumi.set(__self__, "http_user_agent", http_user_agent)
        if http_version is not None:
            pulumi.set(__self__, "http_version", http_version)
        if index is not None:
            pulumi.set(__self__, "index", index)
        if internal is not None:
            pulumi.set(__self__, "internal", internal)
        if isp is not None:
            pulumi.set(__self__, "isp", isp)
        if last15secs is not None:
            pulumi.set(__self__, "last15secs", last15secs)
        if last1min is not None:
            pulumi.set(__self__, "last1min", last1min)
        if last5mins is not None:
            pulumi.set(__self__, "last5mins", last5mins)
        if less is not None:
            pulumi.set(__self__, "less", less)
        if less_or_equal is not None:
            pulumi.set(__self__, "less_or_equal", less_or_equal)
        if local is not None:
            pulumi.set(__self__, "local", local)
        if major is not None:
            pulumi.set(__self__, "major", major)
        if matches is not None:
            pulumi.set(__self__, "matches", matches)
        if minor is not None:
            pulumi.set(__self__, "minor", minor)
        if missing is not None:
            pulumi.set(__self__, "missing", missing)
        if mss is not None:
            pulumi.set(__self__, "mss", mss)
        if not_ is not None:
            pulumi.set(__self__, "not_", not_)
        if org is not None:
            pulumi.set(__self__, "org", org)
        if password is not None:
            pulumi.set(__self__, "password", password)
        if path is not None:
            pulumi.set(__self__, "path", path)
        if path_segment is not None:
            pulumi.set(__self__, "path_segment", path_segment)
        if port is not None:
            pulumi.set(__self__, "port", port)
        if present is not None:
            pulumi.set(__self__, "present", present)
        if protocol is not None:
            pulumi.set(__self__, "protocol", protocol)
        if query_parameter is not None:
            pulumi.set(__self__, "query_parameter", query_parameter)
        if query_string is not None:
            pulumi.set(__self__, "query_string", query_string)
        if region_code is not None:
            pulumi.set(__self__, "region_code", region_code)
        if region_name is not None:
            pulumi.set(__self__, "region_name", region_name)
        if remote is not None:
            pulumi.set(__self__, "remote", remote)
        if request is not None:
            pulumi.set(__self__, "request", request)
        if response is not None:
            pulumi.set(__self__, "response", response)
        if route_domain is not None:
            pulumi.set(__self__, "route_domain", route_domain)
        if rtt is not None:
            pulumi.set(__self__, "rtt", rtt)
        if scheme is not None:
            pulumi.set(__self__, "scheme", scheme)
        if server_name is not None:
            pulumi.set(__self__, "server_name", server_name)
        if ssl_cert is not None:
            pulumi.set(__self__, "ssl_cert", ssl_cert)
        if ssl_client_hello is not None:
            pulumi.set(__self__, "ssl_client_hello", ssl_client_hello)
        if ssl_extension is not None:
            pulumi.set(__self__, "ssl_extension", ssl_extension)
        if ssl_server_handshake is not None:
            pulumi.set(__self__, "ssl_server_handshake", ssl_server_handshake)
        if ssl_server_hello is not None:
            pulumi.set(__self__, "ssl_server_hello", ssl_server_hello)
        if starts_with is not None:
            pulumi.set(__self__, "starts_with", starts_with)
        if tcp is not None:
            pulumi.set(__self__, "tcp", tcp)
        if text is not None:
            pulumi.set(__self__, "text", text)
        if tm_name is not None:
            pulumi.set(__self__, "tm_name", tm_name)
        if unnamed_query_parameter is not None:
            pulumi.set(__self__, "unnamed_query_parameter", unnamed_query_parameter)
        if user_agent_token is not None:
            pulumi.set(__self__, "user_agent_token", user_agent_token)
        if username is not None:
            pulumi.set(__self__, "username", username)
        if value is not None:
            pulumi.set(__self__, "value", value)
        if values is not None:
            pulumi.set(__self__, "values", values)
        if version is not None:
            pulumi.set(__self__, "version", version)
        if vlan is not None:
            pulumi.set(__self__, "vlan", vlan)
        if vlan_id is not None:
            pulumi.set(__self__, "vlan_id", vlan_id)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


@pulumi.output_type
class ProfileClientSslCertKeyChain(dict):
    def __init__(__self__, *,
                 cert: Optional[str] = None,
                 chain: Optional[str] = None,
                 key: Optional[str] = None,
                 name: Optional[str] = None,
                 passphrase: Optional[str] = None):
        """
        :param str cert: Specifies a cert name for use.
        :param str chain: Contains a certificate chain that is relevant to the certificate and key mentioned earlier.This key is optional
        :param str key: Contains a key name
        :param str name: Specifies the name of the profile.Name of Profile should be full path.The full path is the combination of the `partition + profile name`,For example `/Common/test-clientssl-profile`.
        :param str passphrase: Key passphrase
        """
        if cert is not None:
            pulumi.set(__self__, "cert", cert)
        if chain is not None:
            pulumi.set(__self__, "chain", chain)
        if key is not None:
            pulumi.set(__self__, "key", key)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if passphrase is not None:
            pulumi.set(__self__, "passphrase", passphrase)

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

    @property
    @pulumi.getter
    def chain(self) -> Optional[str]:
        """
        Contains a certificate chain that is relevant to the certificate and key mentioned earlier.This key is optional
        """
        return pulumi.get(self, "chain")

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

    @property
    @pulumi.getter
    def name(self) -> Optional[str]:
        """
        Specifies the name of the profile.Name of Profile should be full path.The full path is the combination of the `partition + profile name`,For example `/Common/test-clientssl-profile`.
        """
        return pulumi.get(self, "name")

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


@pulumi.output_type
class ProfileHttpEnforcement(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "knownMethods":
            suggest = "known_methods"
        elif key == "maxHeaderCount":
            suggest = "max_header_count"
        elif key == "maxHeaderSize":
            suggest = "max_header_size"
        elif key == "unknownMethod":
            suggest = "unknown_method"

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

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

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

    def __init__(__self__, *,
                 known_methods: Optional[Sequence[str]] = None,
                 max_header_count: Optional[int] = None,
                 max_header_size: Optional[int] = None,
                 unknown_method: Optional[str] = None):
        """
        :param Sequence[str] known_methods: Specifies which HTTP methods count as being known. Removing RFC-defined methods from this list will cause the HTTP filter to not recognize them. Default value is [CONNECT DELETE GET HEAD LOCK OPTIONS POST PROPFIND PUT TRACE UNLOCK].If no value is specified while creating, then default value will be assigned by BigIP. In order to remove it, [""] list is to be passed. If known_methods is commented (or not passed) during the update call, then no changes would be applied and previous value will persist. In order to put default value , we need to pass [CONNECT DELETE GET HEAD LOCK OPTIONS POST PROPFIND PUT TRACE UNLOCK] explicitly.
        :param int max_header_count: Specifies the maximum number of headers allowed in HTTP request/response. The default is 64 headers.If no value is specified while creating, then default value will be assigned by BigIP. If max_header_count is commented (or not passed) during the update call, then no changes would be applied and previous value will persist. In order to put default value, we need to pass "64" explicitly.
        :param int max_header_size: Specifies the maximum header size. The default value is 32768. If no string is specified while creating, then default value will be assigned by BigIP. If max_header_size is commented (or not passed) during the update call, then no changes would be applied and previous value will persist. In order to put default value, we need to pass "32768" explicitly.
        :param str unknown_method: Specifies whether to allow, reject or switch to pass-through mode when an unknown HTTP method is parsed. Default value is "allow". If no string is specified while creating, then default value will be assigned by BigIP. If unknown_method is commented (or not passed) during the update call, then no changes would be applied and previous value will persist. In order to put default value, we need to pass "allow" explicitly.
        """
        if known_methods is not None:
            pulumi.set(__self__, "known_methods", known_methods)
        if max_header_count is not None:
            pulumi.set(__self__, "max_header_count", max_header_count)
        if max_header_size is not None:
            pulumi.set(__self__, "max_header_size", max_header_size)
        if unknown_method is not None:
            pulumi.set(__self__, "unknown_method", unknown_method)

    @property
    @pulumi.getter(name="knownMethods")
    def known_methods(self) -> Optional[Sequence[str]]:
        """
        Specifies which HTTP methods count as being known. Removing RFC-defined methods from this list will cause the HTTP filter to not recognize them. Default value is [CONNECT DELETE GET HEAD LOCK OPTIONS POST PROPFIND PUT TRACE UNLOCK].If no value is specified while creating, then default value will be assigned by BigIP. In order to remove it, [""] list is to be passed. If known_methods is commented (or not passed) during the update call, then no changes would be applied and previous value will persist. In order to put default value , we need to pass [CONNECT DELETE GET HEAD LOCK OPTIONS POST PROPFIND PUT TRACE UNLOCK] explicitly.
        """
        return pulumi.get(self, "known_methods")

    @property
    @pulumi.getter(name="maxHeaderCount")
    def max_header_count(self) -> Optional[int]:
        """
        Specifies the maximum number of headers allowed in HTTP request/response. The default is 64 headers.If no value is specified while creating, then default value will be assigned by BigIP. If max_header_count is commented (or not passed) during the update call, then no changes would be applied and previous value will persist. In order to put default value, we need to pass "64" explicitly.
        """
        return pulumi.get(self, "max_header_count")

    @property
    @pulumi.getter(name="maxHeaderSize")
    def max_header_size(self) -> Optional[int]:
        """
        Specifies the maximum header size. The default value is 32768. If no string is specified while creating, then default value will be assigned by BigIP. If max_header_size is commented (or not passed) during the update call, then no changes would be applied and previous value will persist. In order to put default value, we need to pass "32768" explicitly.
        """
        return pulumi.get(self, "max_header_size")

    @property
    @pulumi.getter(name="unknownMethod")
    def unknown_method(self) -> Optional[str]:
        """
        Specifies whether to allow, reject or switch to pass-through mode when an unknown HTTP method is parsed. Default value is "allow". If no string is specified while creating, then default value will be assigned by BigIP. If unknown_method is commented (or not passed) during the update call, then no changes would be applied and previous value will persist. In order to put default value, we need to pass "allow" explicitly.
        """
        return pulumi.get(self, "unknown_method")


@pulumi.output_type
class ProfileHttpHttpStrictTransportSecurity(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "includeSubdomains":
            suggest = "include_subdomains"
        elif key == "maximumAge":
            suggest = "maximum_age"

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

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

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

    def __init__(__self__, *,
                 include_subdomains: Optional[str] = None,
                 maximum_age: Optional[int] = None,
                 mode: Optional[str] = None,
                 preload: Optional[str] = None):
        """
        :param str include_subdomains: The Include Subdomains setting applies the HSTS policy to the HSTS host and its subdomains. The default is "enabled". If no string is specified during Create, then default value will be assigned by BigIp. If include_subdomains is commented (or not passed) during the update call, then no changes would be applied and previous value will persist. In order to put default value, we need to pass "enabled" explicitly.
        :param int maximum_age: The Maximum Age value specifies the length of time, in seconds, that HSTS functionality requests that clients only use HTTPS to connect to the current host and any subdomains of the current host's domain name.  The default is 16070400 seconds. If no value is specified during Create, then default value will be assigned by BigIp. If maximum_age is commented (or not passed) during the update call, then no changes would be applied and previous value will persist. In order to put default value , we need to pass 16070400 explicitly.
        :param str mode: The Mode setting enables and disables HSTS functionality within the HTTP profile. The default is "disabled". If no string is specified during Create, then default value will be assigned by BigIp. If mode is commented (or not passed) during the update call, then no changes would be applied and previous value will persist. In order to put default value, we need to pass "disabled" explicitly.
        :param str preload: An HSTS preload list is a list of domains built into a web browser. When you enable the Preload setting, the domain for the web site that this HTTP profile is associated with is submitted for inclusion in the browser's preload list. The default is "disabled". If no string is specified during Create, then default value will be assigned by BigIp. If preload is commented (or not passed) during the update call, then no changes would be applied and previous value will persist. In order to put default value, we need to pass "disabled" explicitly.
        """
        if include_subdomains is not None:
            pulumi.set(__self__, "include_subdomains", include_subdomains)
        if maximum_age is not None:
            pulumi.set(__self__, "maximum_age", maximum_age)
        if mode is not None:
            pulumi.set(__self__, "mode", mode)
        if preload is not None:
            pulumi.set(__self__, "preload", preload)

    @property
    @pulumi.getter(name="includeSubdomains")
    def include_subdomains(self) -> Optional[str]:
        """
        The Include Subdomains setting applies the HSTS policy to the HSTS host and its subdomains. The default is "enabled". If no string is specified during Create, then default value will be assigned by BigIp. If include_subdomains is commented (or not passed) during the update call, then no changes would be applied and previous value will persist. In order to put default value, we need to pass "enabled" explicitly.
        """
        return pulumi.get(self, "include_subdomains")

    @property
    @pulumi.getter(name="maximumAge")
    def maximum_age(self) -> Optional[int]:
        """
        The Maximum Age value specifies the length of time, in seconds, that HSTS functionality requests that clients only use HTTPS to connect to the current host and any subdomains of the current host's domain name.  The default is 16070400 seconds. If no value is specified during Create, then default value will be assigned by BigIp. If maximum_age is commented (or not passed) during the update call, then no changes would be applied and previous value will persist. In order to put default value , we need to pass 16070400 explicitly.
        """
        return pulumi.get(self, "maximum_age")

    @property
    @pulumi.getter
    def mode(self) -> Optional[str]:
        """
        The Mode setting enables and disables HSTS functionality within the HTTP profile. The default is "disabled". If no string is specified during Create, then default value will be assigned by BigIp. If mode is commented (or not passed) during the update call, then no changes would be applied and previous value will persist. In order to put default value, we need to pass "disabled" explicitly.
        """
        return pulumi.get(self, "mode")

    @property
    @pulumi.getter
    def preload(self) -> Optional[str]:
        """
        An HSTS preload list is a list of domains built into a web browser. When you enable the Preload setting, the domain for the web site that this HTTP profile is associated with is submitted for inclusion in the browser's preload list. The default is "disabled". If no string is specified during Create, then default value will be assigned by BigIp. If preload is commented (or not passed) during the update call, then no changes would be applied and previous value will persist. In order to put default value, we need to pass "disabled" explicitly.
        """
        return pulumi.get(self, "preload")


@pulumi.output_type
class ProfileRewriteCookieRule(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "clientDomain":
            suggest = "client_domain"
        elif key == "clientPath":
            suggest = "client_path"
        elif key == "ruleName":
            suggest = "rule_name"
        elif key == "serverDomain":
            suggest = "server_domain"
        elif key == "serverPath":
            suggest = "server_path"

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

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

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

    def __init__(__self__, *,
                 client_domain: str,
                 client_path: str,
                 rule_name: str,
                 server_domain: str,
                 server_path: str):
        """
        :param str rule_name: Name of the cookie rewrite rule.
        """
        pulumi.set(__self__, "client_domain", client_domain)
        pulumi.set(__self__, "client_path", client_path)
        pulumi.set(__self__, "rule_name", rule_name)
        pulumi.set(__self__, "server_domain", server_domain)
        pulumi.set(__self__, "server_path", server_path)

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

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

    @property
    @pulumi.getter(name="ruleName")
    def rule_name(self) -> str:
        """
        Name of the cookie rewrite rule.
        """
        return pulumi.get(self, "rule_name")

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

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


@pulumi.output_type
class ProfileRewriteRequest(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "insertXfwdFor":
            suggest = "insert_xfwd_for"
        elif key == "insertXfwdHost":
            suggest = "insert_xfwd_host"
        elif key == "insertXfwdProtocol":
            suggest = "insert_xfwd_protocol"
        elif key == "rewriteHeaders":
            suggest = "rewrite_headers"

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

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

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

    def __init__(__self__, *,
                 insert_xfwd_for: Optional[str] = None,
                 insert_xfwd_host: Optional[str] = None,
                 insert_xfwd_protocol: Optional[str] = None,
                 rewrite_headers: Optional[str] = None):
        """
        :param str insert_xfwd_for: Enable to add the X-Forwarded For (XFF) header, to specify the originating IP address of the client. Valid choices are: `enabled, disabled`
        :param str insert_xfwd_host: Enable to add the X-Forwarded Host header, to specify the originating host of the client. Valid choices are: `enabled, disabled`
        :param str insert_xfwd_protocol: Enable to add the X-Forwarded Proto header, to specify the originating protocol of the client. Valid choices are: `enabled, disabled`
        :param str rewrite_headers: Enable to rewrite headers in Request settings. Valid choices are: `enabled, disabled`
        """
        if insert_xfwd_for is not None:
            pulumi.set(__self__, "insert_xfwd_for", insert_xfwd_for)
        if insert_xfwd_host is not None:
            pulumi.set(__self__, "insert_xfwd_host", insert_xfwd_host)
        if insert_xfwd_protocol is not None:
            pulumi.set(__self__, "insert_xfwd_protocol", insert_xfwd_protocol)
        if rewrite_headers is not None:
            pulumi.set(__self__, "rewrite_headers", rewrite_headers)

    @property
    @pulumi.getter(name="insertXfwdFor")
    def insert_xfwd_for(self) -> Optional[str]:
        """
        Enable to add the X-Forwarded For (XFF) header, to specify the originating IP address of the client. Valid choices are: `enabled, disabled`
        """
        return pulumi.get(self, "insert_xfwd_for")

    @property
    @pulumi.getter(name="insertXfwdHost")
    def insert_xfwd_host(self) -> Optional[str]:
        """
        Enable to add the X-Forwarded Host header, to specify the originating host of the client. Valid choices are: `enabled, disabled`
        """
        return pulumi.get(self, "insert_xfwd_host")

    @property
    @pulumi.getter(name="insertXfwdProtocol")
    def insert_xfwd_protocol(self) -> Optional[str]:
        """
        Enable to add the X-Forwarded Proto header, to specify the originating protocol of the client. Valid choices are: `enabled, disabled`
        """
        return pulumi.get(self, "insert_xfwd_protocol")

    @property
    @pulumi.getter(name="rewriteHeaders")
    def rewrite_headers(self) -> Optional[str]:
        """
        Enable to rewrite headers in Request settings. Valid choices are: `enabled, disabled`
        """
        return pulumi.get(self, "rewrite_headers")


@pulumi.output_type
class ProfileRewriteResponse(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "rewriteContent":
            suggest = "rewrite_content"
        elif key == "rewriteHeaders":
            suggest = "rewrite_headers"

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

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

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

    def __init__(__self__, *,
                 rewrite_content: Optional[str] = None,
                 rewrite_headers: Optional[str] = None):
        """
        :param str rewrite_content: Enable to rewrite links in content in the response. Valid choices are: `enabled, disabled`
        :param str rewrite_headers: Enable to rewrite headers in the response. Valid choices are: `enabled, disabled`
        """
        if rewrite_content is not None:
            pulumi.set(__self__, "rewrite_content", rewrite_content)
        if rewrite_headers is not None:
            pulumi.set(__self__, "rewrite_headers", rewrite_headers)

    @property
    @pulumi.getter(name="rewriteContent")
    def rewrite_content(self) -> Optional[str]:
        """
        Enable to rewrite links in content in the response. Valid choices are: `enabled, disabled`
        """
        return pulumi.get(self, "rewrite_content")

    @property
    @pulumi.getter(name="rewriteHeaders")
    def rewrite_headers(self) -> Optional[str]:
        """
        Enable to rewrite headers in the response. Valid choices are: `enabled, disabled`
        """
        return pulumi.get(self, "rewrite_headers")


@pulumi.output_type
class ProfileRewriteUriRulesClient(dict):
    def __init__(__self__, *,
                 host: str,
                 scheme: str,
                 path: Optional[str] = None,
                 port: Optional[str] = None):
        """
        :param str host: Host part of the uri, e.g. `www.foo.com`.
        :param str scheme: Scheme part of the uri, e.g. `https`, `ftp`.
        :param str path: Path part of the uri, must always end with `/`. Default value is: `/`
        :param str port: Port part of the uri. Default value is: `none`
        """
        pulumi.set(__self__, "host", host)
        pulumi.set(__self__, "scheme", scheme)
        if path is not None:
            pulumi.set(__self__, "path", path)
        if port is not None:
            pulumi.set(__self__, "port", port)

    @property
    @pulumi.getter
    def host(self) -> str:
        """
        Host part of the uri, e.g. `www.foo.com`.
        """
        return pulumi.get(self, "host")

    @property
    @pulumi.getter
    def scheme(self) -> str:
        """
        Scheme part of the uri, e.g. `https`, `ftp`.
        """
        return pulumi.get(self, "scheme")

    @property
    @pulumi.getter
    def path(self) -> Optional[str]:
        """
        Path part of the uri, must always end with `/`. Default value is: `/`
        """
        return pulumi.get(self, "path")

    @property
    @pulumi.getter
    def port(self) -> Optional[str]:
        """
        Port part of the uri. Default value is: `none`
        """
        return pulumi.get(self, "port")


@pulumi.output_type
class ProfileRewriteUriRulesServer(dict):
    def __init__(__self__, *,
                 host: str,
                 scheme: str,
                 path: Optional[str] = None,
                 port: Optional[str] = None):
        """
        :param str host: Host part of the uri, e.g. `www.foo.com`.
        :param str scheme: Scheme part of the uri, e.g. `https`, `ftp`.
        :param str path: Path part of the uri, must always end with `/`. Default value is: `/`
        :param str port: Port part of the uri. Default value is: `none`
        """
        pulumi.set(__self__, "host", host)
        pulumi.set(__self__, "scheme", scheme)
        if path is not None:
            pulumi.set(__self__, "path", path)
        if port is not None:
            pulumi.set(__self__, "port", port)

    @property
    @pulumi.getter
    def host(self) -> str:
        """
        Host part of the uri, e.g. `www.foo.com`.
        """
        return pulumi.get(self, "host")

    @property
    @pulumi.getter
    def scheme(self) -> str:
        """
        Scheme part of the uri, e.g. `https`, `ftp`.
        """
        return pulumi.get(self, "scheme")

    @property
    @pulumi.getter
    def path(self) -> Optional[str]:
        """
        Path part of the uri, must always end with `/`. Default value is: `/`
        """
        return pulumi.get(self, "path")

    @property
    @pulumi.getter
    def port(self) -> Optional[str]:
        """
        Port part of the uri. Default value is: `none`
        """
        return pulumi.get(self, "port")


@pulumi.output_type
class SnatOrigin(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "appService":
            suggest = "app_service"

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

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

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

    def __init__(__self__, *,
                 app_service: Optional[str] = None,
                 name: Optional[str] = None):
        """
        :param str app_service: app service
        :param str name: Name of the SNAT, name of SNAT should be full path. Full path is the combination of the `partition + SNAT name`,For example `/Common/test-snat`.
        """
        if app_service is not None:
            pulumi.set(__self__, "app_service", app_service)
        if name is not None:
            pulumi.set(__self__, "name", name)

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

    @property
    @pulumi.getter
    def name(self) -> Optional[str]:
        """
        Name of the SNAT, name of SNAT should be full path. Full path is the combination of the `partition + SNAT name`,For example `/Common/test-snat`.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GetDataGroupRecordResult(dict):
    def __init__(__self__, *,
                 name: str,
                 data: Optional[str] = None):
        """
        :param str name: Name of the datagroup
        """
        pulumi.set(__self__, "name", name)
        if data is not None:
            pulumi.set(__self__, "data", data)

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

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


@pulumi.output_type
class GetNodeFqdnResult(dict):
    def __init__(__self__, *,
                 autopopulate: str,
                 downinterval: int,
                 interval: str,
                 address_family: Optional[str] = None,
                 name: Optional[str] = None):
        """
        :param str autopopulate: Specifies if the node should scale to the IP address set returned by DNS.
        :param int downinterval: The number of attempts to resolve a domain name.
        :param str interval: The amount of time before sending the next DNS query.
        :param str address_family: The FQDN node's address family.
        :param str name: Name of the node.
        """
        pulumi.set(__self__, "autopopulate", autopopulate)
        pulumi.set(__self__, "downinterval", downinterval)
        pulumi.set(__self__, "interval", interval)
        if address_family is not None:
            pulumi.set(__self__, "address_family", address_family)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter
    def autopopulate(self) -> str:
        """
        Specifies if the node should scale to the IP address set returned by DNS.
        """
        return pulumi.get(self, "autopopulate")

    @property
    @pulumi.getter
    def downinterval(self) -> int:
        """
        The number of attempts to resolve a domain name.
        """
        return pulumi.get(self, "downinterval")

    @property
    @pulumi.getter
    def interval(self) -> str:
        """
        The amount of time before sending the next DNS query.
        """
        return pulumi.get(self, "interval")

    @property
    @pulumi.getter(name="addressFamily")
    def address_family(self) -> Optional[str]:
        """
        The FQDN node's address family.
        """
        return pulumi.get(self, "address_family")

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


@pulumi.output_type
class GetPolicyRuleResult(dict):
    def __init__(__self__, *,
                 name: str,
                 actions: Optional[Sequence['outputs.GetPolicyRuleActionResult']] = None,
                 conditions: Optional[Sequence['outputs.GetPolicyRuleConditionResult']] = None):
        """
        :param str name: Name of the policy which includes partion ( /partition/policy-name )
        """
        pulumi.set(__self__, "name", name)
        if actions is not None:
            pulumi.set(__self__, "actions", actions)
        if conditions is not None:
            pulumi.set(__self__, "conditions", conditions)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        Name of the policy which includes partion ( /partition/policy-name )
        """
        return pulumi.get(self, "name")

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

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


@pulumi.output_type
class GetPolicyRuleActionResult(dict):
    def __init__(__self__, *,
                 app_service: str,
                 application: str,
                 asm: bool,
                 avr: bool,
                 cache: bool,
                 carp: bool,
                 category: str,
                 classify: bool,
                 clone_pool: str,
                 code: int,
                 compress: bool,
                 connection: bool,
                 content: str,
                 cookie_hash: bool,
                 cookie_insert: bool,
                 cookie_passive: bool,
                 cookie_rewrite: bool,
                 decompress: bool,
                 defer: bool,
                 destination_address: bool,
                 disable: bool,
                 domain: str,
                 enable: bool,
                 expiry: str,
                 expiry_secs: int,
                 expression: str,
                 extension: str,
                 facility: str,
                 from_profile: str,
                 hash: bool,
                 host: str,
                 http: bool,
                 http_basic_auth: bool,
                 http_cookie: bool,
                 http_header: bool,
                 http_referer: bool,
                 http_reply: bool,
                 http_set_cookie: bool,
                 http_uri: bool,
                 ifile: str,
                 insert: bool,
                 internal_virtual: str,
                 ip_address: str,
                 key: str,
                 l7dos: bool,
                 length: int,
                 location: str,
                 log: bool,
                 ltm_policy: bool,
                 member: str,
                 message: str,
                 netmask: str,
                 nexthop: str,
                 node: str,
                 offset: int,
                 path: str,
                 pem: bool,
                 persist: bool,
                 pin: bool,
                 policy: str,
                 pool: str,
                 port: int,
                 priority: str,
                 profile: str,
                 protocol: str,
                 query_string: str,
                 rateclass: str,
                 redirect: bool,
                 remove: bool,
                 replace: bool,
                 request: bool,
                 request_adapt: bool,
                 reset: bool,
                 response: bool,
                 response_adapt: bool,
                 scheme: str,
                 script: str,
                 select: bool,
                 server_ssl: bool,
                 set_variable: bool,
                 shutdown: bool,
                 snat: str,
                 snatpool: str,
                 source_address: bool,
                 ssl_client_hello: bool,
                 ssl_server_handshake: bool,
                 ssl_server_hello: bool,
                 ssl_session_id: bool,
                 status: int,
                 tcl: bool,
                 tcp_nagle: bool,
                 text: str,
                 timeout: int,
                 tm_name: str,
                 uie: bool,
                 universal: bool,
                 value: str,
                 virtual: str,
                 vlan: str,
                 vlan_id: int,
                 wam: bool,
                 write: bool,
                 forward: Optional[bool] = None,
                 http_host: Optional[bool] = None):
        pulumi.set(__self__, "app_service", app_service)
        pulumi.set(__self__, "application", application)
        pulumi.set(__self__, "asm", asm)
        pulumi.set(__self__, "avr", avr)
        pulumi.set(__self__, "cache", cache)
        pulumi.set(__self__, "carp", carp)
        pulumi.set(__self__, "category", category)
        pulumi.set(__self__, "classify", classify)
        pulumi.set(__self__, "clone_pool", clone_pool)
        pulumi.set(__self__, "code", code)
        pulumi.set(__self__, "compress", compress)
        pulumi.set(__self__, "connection", connection)
        pulumi.set(__self__, "content", content)
        pulumi.set(__self__, "cookie_hash", cookie_hash)
        pulumi.set(__self__, "cookie_insert", cookie_insert)
        pulumi.set(__self__, "cookie_passive", cookie_passive)
        pulumi.set(__self__, "cookie_rewrite", cookie_rewrite)
        pulumi.set(__self__, "decompress", decompress)
        pulumi.set(__self__, "defer", defer)
        pulumi.set(__self__, "destination_address", destination_address)
        pulumi.set(__self__, "disable", disable)
        pulumi.set(__self__, "domain", domain)
        pulumi.set(__self__, "enable", enable)
        pulumi.set(__self__, "expiry", expiry)
        pulumi.set(__self__, "expiry_secs", expiry_secs)
        pulumi.set(__self__, "expression", expression)
        pulumi.set(__self__, "extension", extension)
        pulumi.set(__self__, "facility", facility)
        pulumi.set(__self__, "from_profile", from_profile)
        pulumi.set(__self__, "hash", hash)
        pulumi.set(__self__, "host", host)
        pulumi.set(__self__, "http", http)
        pulumi.set(__self__, "http_basic_auth", http_basic_auth)
        pulumi.set(__self__, "http_cookie", http_cookie)
        pulumi.set(__self__, "http_header", http_header)
        pulumi.set(__self__, "http_referer", http_referer)
        pulumi.set(__self__, "http_reply", http_reply)
        pulumi.set(__self__, "http_set_cookie", http_set_cookie)
        pulumi.set(__self__, "http_uri", http_uri)
        pulumi.set(__self__, "ifile", ifile)
        pulumi.set(__self__, "insert", insert)
        pulumi.set(__self__, "internal_virtual", internal_virtual)
        pulumi.set(__self__, "ip_address", ip_address)
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "l7dos", l7dos)
        pulumi.set(__self__, "length", length)
        pulumi.set(__self__, "location", location)
        pulumi.set(__self__, "log", log)
        pulumi.set(__self__, "ltm_policy", ltm_policy)
        pulumi.set(__self__, "member", member)
        pulumi.set(__self__, "message", message)
        pulumi.set(__self__, "netmask", netmask)
        pulumi.set(__self__, "nexthop", nexthop)
        pulumi.set(__self__, "node", node)
        pulumi.set(__self__, "offset", offset)
        pulumi.set(__self__, "path", path)
        pulumi.set(__self__, "pem", pem)
        pulumi.set(__self__, "persist", persist)
        pulumi.set(__self__, "pin", pin)
        pulumi.set(__self__, "policy", policy)
        pulumi.set(__self__, "pool", pool)
        pulumi.set(__self__, "port", port)
        pulumi.set(__self__, "priority", priority)
        pulumi.set(__self__, "profile", profile)
        pulumi.set(__self__, "protocol", protocol)
        pulumi.set(__self__, "query_string", query_string)
        pulumi.set(__self__, "rateclass", rateclass)
        pulumi.set(__self__, "redirect", redirect)
        pulumi.set(__self__, "remove", remove)
        pulumi.set(__self__, "replace", replace)
        pulumi.set(__self__, "request", request)
        pulumi.set(__self__, "request_adapt", request_adapt)
        pulumi.set(__self__, "reset", reset)
        pulumi.set(__self__, "response", response)
        pulumi.set(__self__, "response_adapt", response_adapt)
        pulumi.set(__self__, "scheme", scheme)
        pulumi.set(__self__, "script", script)
        pulumi.set(__self__, "select", select)
        pulumi.set(__self__, "server_ssl", server_ssl)
        pulumi.set(__self__, "set_variable", set_variable)
        pulumi.set(__self__, "shutdown", shutdown)
        pulumi.set(__self__, "snat", snat)
        pulumi.set(__self__, "snatpool", snatpool)
        pulumi.set(__self__, "source_address", source_address)
        pulumi.set(__self__, "ssl_client_hello", ssl_client_hello)
        pulumi.set(__self__, "ssl_server_handshake", ssl_server_handshake)
        pulumi.set(__self__, "ssl_server_hello", ssl_server_hello)
        pulumi.set(__self__, "ssl_session_id", ssl_session_id)
        pulumi.set(__self__, "status", status)
        pulumi.set(__self__, "tcl", tcl)
        pulumi.set(__self__, "tcp_nagle", tcp_nagle)
        pulumi.set(__self__, "text", text)
        pulumi.set(__self__, "timeout", timeout)
        pulumi.set(__self__, "tm_name", tm_name)
        pulumi.set(__self__, "uie", uie)
        pulumi.set(__self__, "universal", universal)
        pulumi.set(__self__, "value", value)
        pulumi.set(__self__, "virtual", virtual)
        pulumi.set(__self__, "vlan", vlan)
        pulumi.set(__self__, "vlan_id", vlan_id)
        pulumi.set(__self__, "wam", wam)
        pulumi.set(__self__, "write", write)
        if forward is not None:
            pulumi.set(__self__, "forward", forward)
        if http_host is not None:
            pulumi.set(__self__, "http_host", http_host)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


@pulumi.output_type
class GetPolicyRuleConditionResult(dict):
    def __init__(__self__, *,
                 address: bool,
                 all: bool,
                 app_service: str,
                 browser_type: bool,
                 browser_version: bool,
                 case_insensitive: bool,
                 case_sensitive: bool,
                 cipher: bool,
                 cipher_bits: bool,
                 client_ssl: bool,
                 code: bool,
                 common_name: bool,
                 contains: bool,
                 continent: bool,
                 country_code: bool,
                 country_name: bool,
                 cpu_usage: bool,
                 datagroup: str,
                 device_make: bool,
                 device_model: bool,
                 domain: bool,
                 ends_with: bool,
                 equals: bool,
                 expiry: bool,
                 extension: bool,
                 external: bool,
                 geoip: bool,
                 greater: bool,
                 greater_or_equal: bool,
                 host: bool,
                 http_basic_auth: bool,
                 http_cookie: bool,
                 http_header: bool,
                 http_host: bool,
                 http_method: bool,
                 http_referer: bool,
                 http_set_cookie: bool,
                 http_status: bool,
                 http_uri: bool,
                 http_user_agent: bool,
                 http_version: bool,
                 index: int,
                 internal: bool,
                 isp: bool,
                 last15secs: bool,
                 last1min: bool,
                 last5mins: bool,
                 less: bool,
                 less_or_equal: bool,
                 local: bool,
                 major: bool,
                 matches: bool,
                 minor: bool,
                 missing: bool,
                 mss: bool,
                 not_: bool,
                 org: bool,
                 password: bool,
                 path: bool,
                 path_segment: bool,
                 port: bool,
                 present: bool,
                 protocol: bool,
                 query_parameter: bool,
                 query_string: bool,
                 region_code: bool,
                 region_name: bool,
                 remote: bool,
                 request: bool,
                 response: bool,
                 route_domain: bool,
                 rtt: bool,
                 scheme: bool,
                 server_name: bool,
                 ssl_cert: bool,
                 ssl_client_hello: bool,
                 ssl_extension: bool,
                 ssl_server_handshake: bool,
                 ssl_server_hello: bool,
                 starts_with: bool,
                 tcp: bool,
                 text: bool,
                 tm_name: str,
                 unnamed_query_parameter: bool,
                 user_agent_token: bool,
                 username: bool,
                 value: bool,
                 values: Sequence[str],
                 version: bool,
                 vlan: bool,
                 vlan_id: bool):
        pulumi.set(__self__, "address", address)
        pulumi.set(__self__, "all", all)
        pulumi.set(__self__, "app_service", app_service)
        pulumi.set(__self__, "browser_type", browser_type)
        pulumi.set(__self__, "browser_version", browser_version)
        pulumi.set(__self__, "case_insensitive", case_insensitive)
        pulumi.set(__self__, "case_sensitive", case_sensitive)
        pulumi.set(__self__, "cipher", cipher)
        pulumi.set(__self__, "cipher_bits", cipher_bits)
        pulumi.set(__self__, "client_ssl", client_ssl)
        pulumi.set(__self__, "code", code)
        pulumi.set(__self__, "common_name", common_name)
        pulumi.set(__self__, "contains", contains)
        pulumi.set(__self__, "continent", continent)
        pulumi.set(__self__, "country_code", country_code)
        pulumi.set(__self__, "country_name", country_name)
        pulumi.set(__self__, "cpu_usage", cpu_usage)
        pulumi.set(__self__, "datagroup", datagroup)
        pulumi.set(__self__, "device_make", device_make)
        pulumi.set(__self__, "device_model", device_model)
        pulumi.set(__self__, "domain", domain)
        pulumi.set(__self__, "ends_with", ends_with)
        pulumi.set(__self__, "equals", equals)
        pulumi.set(__self__, "expiry", expiry)
        pulumi.set(__self__, "extension", extension)
        pulumi.set(__self__, "external", external)
        pulumi.set(__self__, "geoip", geoip)
        pulumi.set(__self__, "greater", greater)
        pulumi.set(__self__, "greater_or_equal", greater_or_equal)
        pulumi.set(__self__, "host", host)
        pulumi.set(__self__, "http_basic_auth", http_basic_auth)
        pulumi.set(__self__, "http_cookie", http_cookie)
        pulumi.set(__self__, "http_header", http_header)
        pulumi.set(__self__, "http_host", http_host)
        pulumi.set(__self__, "http_method", http_method)
        pulumi.set(__self__, "http_referer", http_referer)
        pulumi.set(__self__, "http_set_cookie", http_set_cookie)
        pulumi.set(__self__, "http_status", http_status)
        pulumi.set(__self__, "http_uri", http_uri)
        pulumi.set(__self__, "http_user_agent", http_user_agent)
        pulumi.set(__self__, "http_version", http_version)
        pulumi.set(__self__, "index", index)
        pulumi.set(__self__, "internal", internal)
        pulumi.set(__self__, "isp", isp)
        pulumi.set(__self__, "last15secs", last15secs)
        pulumi.set(__self__, "last1min", last1min)
        pulumi.set(__self__, "last5mins", last5mins)
        pulumi.set(__self__, "less", less)
        pulumi.set(__self__, "less_or_equal", less_or_equal)
        pulumi.set(__self__, "local", local)
        pulumi.set(__self__, "major", major)
        pulumi.set(__self__, "matches", matches)
        pulumi.set(__self__, "minor", minor)
        pulumi.set(__self__, "missing", missing)
        pulumi.set(__self__, "mss", mss)
        pulumi.set(__self__, "not_", not_)
        pulumi.set(__self__, "org", org)
        pulumi.set(__self__, "password", password)
        pulumi.set(__self__, "path", path)
        pulumi.set(__self__, "path_segment", path_segment)
        pulumi.set(__self__, "port", port)
        pulumi.set(__self__, "present", present)
        pulumi.set(__self__, "protocol", protocol)
        pulumi.set(__self__, "query_parameter", query_parameter)
        pulumi.set(__self__, "query_string", query_string)
        pulumi.set(__self__, "region_code", region_code)
        pulumi.set(__self__, "region_name", region_name)
        pulumi.set(__self__, "remote", remote)
        pulumi.set(__self__, "request", request)
        pulumi.set(__self__, "response", response)
        pulumi.set(__self__, "route_domain", route_domain)
        pulumi.set(__self__, "rtt", rtt)
        pulumi.set(__self__, "scheme", scheme)
        pulumi.set(__self__, "server_name", server_name)
        pulumi.set(__self__, "ssl_cert", ssl_cert)
        pulumi.set(__self__, "ssl_client_hello", ssl_client_hello)
        pulumi.set(__self__, "ssl_extension", ssl_extension)
        pulumi.set(__self__, "ssl_server_handshake", ssl_server_handshake)
        pulumi.set(__self__, "ssl_server_hello", ssl_server_hello)
        pulumi.set(__self__, "starts_with", starts_with)
        pulumi.set(__self__, "tcp", tcp)
        pulumi.set(__self__, "text", text)
        pulumi.set(__self__, "tm_name", tm_name)
        pulumi.set(__self__, "unnamed_query_parameter", unnamed_query_parameter)
        pulumi.set(__self__, "user_agent_token", user_agent_token)
        pulumi.set(__self__, "username", username)
        pulumi.set(__self__, "value", value)
        pulumi.set(__self__, "values", values)
        pulumi.set(__self__, "version", version)
        pulumi.set(__self__, "vlan", vlan)
        pulumi.set(__self__, "vlan_id", vlan_id)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


