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

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

__all__ = [
    'EventServiceDiscoveryNode',
    'FastHttpAppMonitor',
    'FastHttpAppPoolMember',
    'FastHttpAppVirtualServer',
    'FastHttpAppWafSecurityPolicy',
    'FastHttpsAppMonitor',
    'FastHttpsAppPoolMember',
    'FastHttpsAppTlsClientProfile',
    'FastHttpsAppTlsServerProfile',
    'FastHttpsAppVirtualServer',
    'FastHttpsAppWafSecurityPolicy',
    'FastTcpAppMonitor',
    'FastTcpAppPoolMember',
    'FastTcpAppVirtualServer',
    'FastUdpAppMonitor',
    'FastUdpAppPoolMember',
    'FastUdpAppVirtualServer',
    'WafPolicyFileType',
    'WafPolicyGraphqlProfile',
    'WafPolicyPolicyBuilder',
    'WafPolicySignaturesSetting',
]

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

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

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

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


@pulumi.output_type
class FastHttpAppMonitor(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "monitorAuth":
            suggest = "monitor_auth"
        elif key == "sendString":
            suggest = "send_string"

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

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

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

    def __init__(__self__, *,
                 interval: Optional[int] = None,
                 monitor_auth: Optional[bool] = None,
                 password: Optional[str] = None,
                 response: Optional[str] = None,
                 send_string: Optional[str] = None,
                 username: Optional[str] = None):
        """
        :param int interval: Set the time between health checks,in seconds for FAST-Generated Pool Monitor.
        :param bool monitor_auth: set `true` if the servers require login credentials for web access on FAST-Generated Pool Monitor. default is `false`.
        :param str password: password for web access on FAST-Generated Pool Monitor.
        :param str response: The presence of this string anywhere in the HTTP response implies availability.
        :param str send_string: Specify data to be sent during each health check for FAST-Generated Pool Monitor.
        :param str username: username for web access on FAST-Generated Pool Monitor.
        """
        if interval is not None:
            pulumi.set(__self__, "interval", interval)
        if monitor_auth is not None:
            pulumi.set(__self__, "monitor_auth", monitor_auth)
        if password is not None:
            pulumi.set(__self__, "password", password)
        if response is not None:
            pulumi.set(__self__, "response", response)
        if send_string is not None:
            pulumi.set(__self__, "send_string", send_string)
        if username is not None:
            pulumi.set(__self__, "username", username)

    @property
    @pulumi.getter
    def interval(self) -> Optional[int]:
        """
        Set the time between health checks,in seconds for FAST-Generated Pool Monitor.
        """
        return pulumi.get(self, "interval")

    @property
    @pulumi.getter(name="monitorAuth")
    def monitor_auth(self) -> Optional[bool]:
        """
        set `true` if the servers require login credentials for web access on FAST-Generated Pool Monitor. default is `false`.
        """
        return pulumi.get(self, "monitor_auth")

    @property
    @pulumi.getter
    def password(self) -> Optional[str]:
        """
        password for web access on FAST-Generated Pool Monitor.
        """
        return pulumi.get(self, "password")

    @property
    @pulumi.getter
    def response(self) -> Optional[str]:
        """
        The presence of this string anywhere in the HTTP response implies availability.
        """
        return pulumi.get(self, "response")

    @property
    @pulumi.getter(name="sendString")
    def send_string(self) -> Optional[str]:
        """
        Specify data to be sent during each health check for FAST-Generated Pool Monitor.
        """
        return pulumi.get(self, "send_string")

    @property
    @pulumi.getter
    def username(self) -> Optional[str]:
        """
        username for web access on FAST-Generated Pool Monitor.
        """
        return pulumi.get(self, "username")


@pulumi.output_type
class FastHttpAppPoolMember(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "connectionLimit":
            suggest = "connection_limit"
        elif key == "priorityGroup":
            suggest = "priority_group"
        elif key == "shareNodes":
            suggest = "share_nodes"

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

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

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

    def __init__(__self__, *,
                 addresses: Sequence[str],
                 connection_limit: Optional[int] = None,
                 port: Optional[int] = None,
                 priority_group: Optional[int] = None,
                 share_nodes: Optional[bool] = None):
        """
        :param Sequence[str] addresses: List of server address to be used for FAST-Generated Pool.
        :param int connection_limit: connectionLimit value to be used for FAST-Generated Pool.
        :param int port: port number of serviceport to be used for FAST-Generated Pool.
        :param int priority_group: priorityGroup value to be used for FAST-Generated Pool.
        :param bool share_nodes: shareNodes value to be used for FAST-Generated Pool.
        """
        pulumi.set(__self__, "addresses", addresses)
        if connection_limit is not None:
            pulumi.set(__self__, "connection_limit", connection_limit)
        if port is not None:
            pulumi.set(__self__, "port", port)
        if priority_group is not None:
            pulumi.set(__self__, "priority_group", priority_group)
        if share_nodes is not None:
            pulumi.set(__self__, "share_nodes", share_nodes)

    @property
    @pulumi.getter
    def addresses(self) -> Sequence[str]:
        """
        List of server address to be used for FAST-Generated Pool.
        """
        return pulumi.get(self, "addresses")

    @property
    @pulumi.getter(name="connectionLimit")
    def connection_limit(self) -> Optional[int]:
        """
        connectionLimit value to be used for FAST-Generated Pool.
        """
        return pulumi.get(self, "connection_limit")

    @property
    @pulumi.getter
    def port(self) -> Optional[int]:
        """
        port number of serviceport to be used for FAST-Generated Pool.
        """
        return pulumi.get(self, "port")

    @property
    @pulumi.getter(name="priorityGroup")
    def priority_group(self) -> Optional[int]:
        """
        priorityGroup value to be used for FAST-Generated Pool.
        """
        return pulumi.get(self, "priority_group")

    @property
    @pulumi.getter(name="shareNodes")
    def share_nodes(self) -> Optional[bool]:
        """
        shareNodes value to be used for FAST-Generated Pool.
        """
        return pulumi.get(self, "share_nodes")


@pulumi.output_type
class FastHttpAppVirtualServer(dict):
    def __init__(__self__, *,
                 ip: str,
                 port: int):
        """
        :param str ip: IP4/IPv6 address to be used for virtual server ex: `10.1.1.1`
        :param int port: Port number to used for accessing virtual server/application
        """
        pulumi.set(__self__, "ip", ip)
        pulumi.set(__self__, "port", port)

    @property
    @pulumi.getter
    def ip(self) -> str:
        """
        IP4/IPv6 address to be used for virtual server ex: `10.1.1.1`
        """
        return pulumi.get(self, "ip")

    @property
    @pulumi.getter
    def port(self) -> int:
        """
        Port number to used for accessing virtual server/application
        """
        return pulumi.get(self, "port")


@pulumi.output_type
class FastHttpAppWafSecurityPolicy(dict):
    def __init__(__self__, *,
                 enable: bool):
        """
        :param bool enable: Setting `true` will enable FAST to create WAF Security Policy.
        """
        pulumi.set(__self__, "enable", enable)

    @property
    @pulumi.getter
    def enable(self) -> bool:
        """
        Setting `true` will enable FAST to create WAF Security Policy.
        """
        return pulumi.get(self, "enable")


@pulumi.output_type
class FastHttpsAppMonitor(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "monitorAuth":
            suggest = "monitor_auth"
        elif key == "sendString":
            suggest = "send_string"

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

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

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

    def __init__(__self__, *,
                 interval: Optional[int] = None,
                 monitor_auth: Optional[bool] = None,
                 password: Optional[str] = None,
                 response: Optional[str] = None,
                 send_string: Optional[str] = None,
                 username: Optional[str] = None):
        """
        :param int interval: Set the time between health checks,in seconds for FAST-Generated Pool Monitor.
        :param bool monitor_auth: set `true` if the servers require login credentials for web access on FAST-Generated Pool Monitor. default is `false`.
        :param str password: password for web access on FAST-Generated Pool Monitor.
        :param str response: The presence of this string anywhere in the HTTP response implies availability.
        :param str send_string: Specify data to be sent during each health check for FAST-Generated Pool Monitor.
        :param str username: username for web access on FAST-Generated Pool Monitor.
        """
        if interval is not None:
            pulumi.set(__self__, "interval", interval)
        if monitor_auth is not None:
            pulumi.set(__self__, "monitor_auth", monitor_auth)
        if password is not None:
            pulumi.set(__self__, "password", password)
        if response is not None:
            pulumi.set(__self__, "response", response)
        if send_string is not None:
            pulumi.set(__self__, "send_string", send_string)
        if username is not None:
            pulumi.set(__self__, "username", username)

    @property
    @pulumi.getter
    def interval(self) -> Optional[int]:
        """
        Set the time between health checks,in seconds for FAST-Generated Pool Monitor.
        """
        return pulumi.get(self, "interval")

    @property
    @pulumi.getter(name="monitorAuth")
    def monitor_auth(self) -> Optional[bool]:
        """
        set `true` if the servers require login credentials for web access on FAST-Generated Pool Monitor. default is `false`.
        """
        return pulumi.get(self, "monitor_auth")

    @property
    @pulumi.getter
    def password(self) -> Optional[str]:
        """
        password for web access on FAST-Generated Pool Monitor.
        """
        return pulumi.get(self, "password")

    @property
    @pulumi.getter
    def response(self) -> Optional[str]:
        """
        The presence of this string anywhere in the HTTP response implies availability.
        """
        return pulumi.get(self, "response")

    @property
    @pulumi.getter(name="sendString")
    def send_string(self) -> Optional[str]:
        """
        Specify data to be sent during each health check for FAST-Generated Pool Monitor.
        """
        return pulumi.get(self, "send_string")

    @property
    @pulumi.getter
    def username(self) -> Optional[str]:
        """
        username for web access on FAST-Generated Pool Monitor.
        """
        return pulumi.get(self, "username")


@pulumi.output_type
class FastHttpsAppPoolMember(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "connectionLimit":
            suggest = "connection_limit"
        elif key == "priorityGroup":
            suggest = "priority_group"
        elif key == "shareNodes":
            suggest = "share_nodes"

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

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

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

    def __init__(__self__, *,
                 addresses: Sequence[str],
                 connection_limit: Optional[int] = None,
                 port: Optional[int] = None,
                 priority_group: Optional[int] = None,
                 share_nodes: Optional[bool] = None):
        """
        :param Sequence[str] addresses: List of server address to be used for FAST-Generated Pool.
        :param int connection_limit: connectionLimit value to be used for FAST-Generated Pool.
        :param int port: port number of serviceport to be used for FAST-Generated Pool.
        :param int priority_group: priorityGroup value to be used for FAST-Generated Pool.
        :param bool share_nodes: shareNodes value to be used for FAST-Generated Pool.
        """
        pulumi.set(__self__, "addresses", addresses)
        if connection_limit is not None:
            pulumi.set(__self__, "connection_limit", connection_limit)
        if port is not None:
            pulumi.set(__self__, "port", port)
        if priority_group is not None:
            pulumi.set(__self__, "priority_group", priority_group)
        if share_nodes is not None:
            pulumi.set(__self__, "share_nodes", share_nodes)

    @property
    @pulumi.getter
    def addresses(self) -> Sequence[str]:
        """
        List of server address to be used for FAST-Generated Pool.
        """
        return pulumi.get(self, "addresses")

    @property
    @pulumi.getter(name="connectionLimit")
    def connection_limit(self) -> Optional[int]:
        """
        connectionLimit value to be used for FAST-Generated Pool.
        """
        return pulumi.get(self, "connection_limit")

    @property
    @pulumi.getter
    def port(self) -> Optional[int]:
        """
        port number of serviceport to be used for FAST-Generated Pool.
        """
        return pulumi.get(self, "port")

    @property
    @pulumi.getter(name="priorityGroup")
    def priority_group(self) -> Optional[int]:
        """
        priorityGroup value to be used for FAST-Generated Pool.
        """
        return pulumi.get(self, "priority_group")

    @property
    @pulumi.getter(name="shareNodes")
    def share_nodes(self) -> Optional[bool]:
        """
        shareNodes value to be used for FAST-Generated Pool.
        """
        return pulumi.get(self, "share_nodes")


@pulumi.output_type
class FastHttpsAppTlsClientProfile(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "tlsCertName":
            suggest = "tls_cert_name"
        elif key == "tlsKeyName":
            suggest = "tls_key_name"

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

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

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

    def __init__(__self__, *,
                 tls_cert_name: str,
                 tls_key_name: str):
        """
        :param str tls_cert_name: Name of existing BIG-IP SSL certificate to be used for FAST-Generated TLS Server Profile.
        :param str tls_key_name: Name of existing BIG-IP SSL Key to be used for FAST-Generated TLS Server Profile.
        """
        pulumi.set(__self__, "tls_cert_name", tls_cert_name)
        pulumi.set(__self__, "tls_key_name", tls_key_name)

    @property
    @pulumi.getter(name="tlsCertName")
    def tls_cert_name(self) -> str:
        """
        Name of existing BIG-IP SSL certificate to be used for FAST-Generated TLS Server Profile.
        """
        return pulumi.get(self, "tls_cert_name")

    @property
    @pulumi.getter(name="tlsKeyName")
    def tls_key_name(self) -> str:
        """
        Name of existing BIG-IP SSL Key to be used for FAST-Generated TLS Server Profile.
        """
        return pulumi.get(self, "tls_key_name")


@pulumi.output_type
class FastHttpsAppTlsServerProfile(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "tlsCertName":
            suggest = "tls_cert_name"
        elif key == "tlsKeyName":
            suggest = "tls_key_name"

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

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

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

    def __init__(__self__, *,
                 tls_cert_name: str,
                 tls_key_name: str):
        """
        :param str tls_cert_name: Name of existing BIG-IP SSL certificate to be used for FAST-Generated TLS Server Profile.
        :param str tls_key_name: Name of existing BIG-IP SSL Key to be used for FAST-Generated TLS Server Profile.
        """
        pulumi.set(__self__, "tls_cert_name", tls_cert_name)
        pulumi.set(__self__, "tls_key_name", tls_key_name)

    @property
    @pulumi.getter(name="tlsCertName")
    def tls_cert_name(self) -> str:
        """
        Name of existing BIG-IP SSL certificate to be used for FAST-Generated TLS Server Profile.
        """
        return pulumi.get(self, "tls_cert_name")

    @property
    @pulumi.getter(name="tlsKeyName")
    def tls_key_name(self) -> str:
        """
        Name of existing BIG-IP SSL Key to be used for FAST-Generated TLS Server Profile.
        """
        return pulumi.get(self, "tls_key_name")


@pulumi.output_type
class FastHttpsAppVirtualServer(dict):
    def __init__(__self__, *,
                 ip: str,
                 port: int):
        """
        :param str ip: IP4/IPv6 address to be used for virtual server ex: `10.1.1.1`
        :param int port: Port number to used for accessing virtual server/application
        """
        pulumi.set(__self__, "ip", ip)
        pulumi.set(__self__, "port", port)

    @property
    @pulumi.getter
    def ip(self) -> str:
        """
        IP4/IPv6 address to be used for virtual server ex: `10.1.1.1`
        """
        return pulumi.get(self, "ip")

    @property
    @pulumi.getter
    def port(self) -> int:
        """
        Port number to used for accessing virtual server/application
        """
        return pulumi.get(self, "port")


@pulumi.output_type
class FastHttpsAppWafSecurityPolicy(dict):
    def __init__(__self__, *,
                 enable: bool):
        """
        :param bool enable: Setting `true` will enable FAST to create WAF Security Policy.
        """
        pulumi.set(__self__, "enable", enable)

    @property
    @pulumi.getter
    def enable(self) -> bool:
        """
        Setting `true` will enable FAST to create WAF Security Policy.
        """
        return pulumi.get(self, "enable")


@pulumi.output_type
class FastTcpAppMonitor(dict):
    def __init__(__self__, *,
                 interval: Optional[int] = None):
        """
        :param int interval: Set the time between health checks,in seconds for FAST-Generated Pool Monitor.
        """
        if interval is not None:
            pulumi.set(__self__, "interval", interval)

    @property
    @pulumi.getter
    def interval(self) -> Optional[int]:
        """
        Set the time between health checks,in seconds for FAST-Generated Pool Monitor.
        """
        return pulumi.get(self, "interval")


@pulumi.output_type
class FastTcpAppPoolMember(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "connectionLimit":
            suggest = "connection_limit"
        elif key == "priorityGroup":
            suggest = "priority_group"
        elif key == "shareNodes":
            suggest = "share_nodes"

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

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

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

    def __init__(__self__, *,
                 addresses: Sequence[str],
                 connection_limit: Optional[int] = None,
                 port: Optional[int] = None,
                 priority_group: Optional[int] = None,
                 share_nodes: Optional[bool] = None):
        """
        :param Sequence[str] addresses: List of server address to be used for FAST-Generated Pool.
        :param int connection_limit: connectionLimit value to be used for FAST-Generated Pool.
        :param int port: port number of serviceport to be used for FAST-Generated Pool.
        :param int priority_group: priorityGroup value to be used for FAST-Generated Pool.
        :param bool share_nodes: shareNodes value to be used for FAST-Generated Pool.
        """
        pulumi.set(__self__, "addresses", addresses)
        if connection_limit is not None:
            pulumi.set(__self__, "connection_limit", connection_limit)
        if port is not None:
            pulumi.set(__self__, "port", port)
        if priority_group is not None:
            pulumi.set(__self__, "priority_group", priority_group)
        if share_nodes is not None:
            pulumi.set(__self__, "share_nodes", share_nodes)

    @property
    @pulumi.getter
    def addresses(self) -> Sequence[str]:
        """
        List of server address to be used for FAST-Generated Pool.
        """
        return pulumi.get(self, "addresses")

    @property
    @pulumi.getter(name="connectionLimit")
    def connection_limit(self) -> Optional[int]:
        """
        connectionLimit value to be used for FAST-Generated Pool.
        """
        return pulumi.get(self, "connection_limit")

    @property
    @pulumi.getter
    def port(self) -> Optional[int]:
        """
        port number of serviceport to be used for FAST-Generated Pool.
        """
        return pulumi.get(self, "port")

    @property
    @pulumi.getter(name="priorityGroup")
    def priority_group(self) -> Optional[int]:
        """
        priorityGroup value to be used for FAST-Generated Pool.
        """
        return pulumi.get(self, "priority_group")

    @property
    @pulumi.getter(name="shareNodes")
    def share_nodes(self) -> Optional[bool]:
        """
        shareNodes value to be used for FAST-Generated Pool.
        """
        return pulumi.get(self, "share_nodes")


@pulumi.output_type
class FastTcpAppVirtualServer(dict):
    def __init__(__self__, *,
                 ip: str,
                 port: int):
        """
        :param str ip: IP4/IPv6 address to be used for virtual server ex: `10.1.1.1`
        :param int port: Port number to used for accessing virtual server/application
        """
        pulumi.set(__self__, "ip", ip)
        pulumi.set(__self__, "port", port)

    @property
    @pulumi.getter
    def ip(self) -> str:
        """
        IP4/IPv6 address to be used for virtual server ex: `10.1.1.1`
        """
        return pulumi.get(self, "ip")

    @property
    @pulumi.getter
    def port(self) -> int:
        """
        Port number to used for accessing virtual server/application
        """
        return pulumi.get(self, "port")


@pulumi.output_type
class FastUdpAppMonitor(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "expectedResponse":
            suggest = "expected_response"
        elif key == "sendString":
            suggest = "send_string"

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

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

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

    def __init__(__self__, *,
                 expected_response: Optional[str] = None,
                 interval: Optional[int] = None,
                 send_string: Optional[str] = None):
        """
        :param str expected_response: The presence of this optional string is required in the response, if specified it confirms availability.
        :param int interval: Set the time between health checks,in seconds for FAST-Generated Pool Monitor.
        :param str send_string: Optional data to be sent during each health check.
        """
        if expected_response is not None:
            pulumi.set(__self__, "expected_response", expected_response)
        if interval is not None:
            pulumi.set(__self__, "interval", interval)
        if send_string is not None:
            pulumi.set(__self__, "send_string", send_string)

    @property
    @pulumi.getter(name="expectedResponse")
    def expected_response(self) -> Optional[str]:
        """
        The presence of this optional string is required in the response, if specified it confirms availability.
        """
        return pulumi.get(self, "expected_response")

    @property
    @pulumi.getter
    def interval(self) -> Optional[int]:
        """
        Set the time between health checks,in seconds for FAST-Generated Pool Monitor.
        """
        return pulumi.get(self, "interval")

    @property
    @pulumi.getter(name="sendString")
    def send_string(self) -> Optional[str]:
        """
        Optional data to be sent during each health check.
        """
        return pulumi.get(self, "send_string")


@pulumi.output_type
class FastUdpAppPoolMember(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "connectionLimit":
            suggest = "connection_limit"
        elif key == "priorityGroup":
            suggest = "priority_group"
        elif key == "shareNodes":
            suggest = "share_nodes"

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

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

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

    def __init__(__self__, *,
                 addresses: Sequence[str],
                 connection_limit: Optional[int] = None,
                 port: Optional[int] = None,
                 priority_group: Optional[int] = None,
                 share_nodes: Optional[bool] = None):
        """
        :param Sequence[str] addresses: List of server address to be used for FAST-Generated Pool.
        :param int connection_limit: connectionLimit value to be used for FAST-Generated Pool.
        :param int port: port number of serviceport to be used for FAST-Generated Pool.
        :param int priority_group: priorityGroup value to be used for FAST-Generated Pool.
        :param bool share_nodes: shareNodes value to be used for FAST-Generated Pool.
        """
        pulumi.set(__self__, "addresses", addresses)
        if connection_limit is not None:
            pulumi.set(__self__, "connection_limit", connection_limit)
        if port is not None:
            pulumi.set(__self__, "port", port)
        if priority_group is not None:
            pulumi.set(__self__, "priority_group", priority_group)
        if share_nodes is not None:
            pulumi.set(__self__, "share_nodes", share_nodes)

    @property
    @pulumi.getter
    def addresses(self) -> Sequence[str]:
        """
        List of server address to be used for FAST-Generated Pool.
        """
        return pulumi.get(self, "addresses")

    @property
    @pulumi.getter(name="connectionLimit")
    def connection_limit(self) -> Optional[int]:
        """
        connectionLimit value to be used for FAST-Generated Pool.
        """
        return pulumi.get(self, "connection_limit")

    @property
    @pulumi.getter
    def port(self) -> Optional[int]:
        """
        port number of serviceport to be used for FAST-Generated Pool.
        """
        return pulumi.get(self, "port")

    @property
    @pulumi.getter(name="priorityGroup")
    def priority_group(self) -> Optional[int]:
        """
        priorityGroup value to be used for FAST-Generated Pool.
        """
        return pulumi.get(self, "priority_group")

    @property
    @pulumi.getter(name="shareNodes")
    def share_nodes(self) -> Optional[bool]:
        """
        shareNodes value to be used for FAST-Generated Pool.
        """
        return pulumi.get(self, "share_nodes")


@pulumi.output_type
class FastUdpAppVirtualServer(dict):
    def __init__(__self__, *,
                 ip: str,
                 port: int):
        """
        :param str ip: IP4/IPv6 address to be used for virtual server ex: `10.1.1.1`
        :param int port: Port number to used for accessing virtual server/application
        """
        pulumi.set(__self__, "ip", ip)
        pulumi.set(__self__, "port", port)

    @property
    @pulumi.getter
    def ip(self) -> str:
        """
        IP4/IPv6 address to be used for virtual server ex: `10.1.1.1`
        """
        return pulumi.get(self, "ip")

    @property
    @pulumi.getter
    def port(self) -> int:
        """
        Port number to used for accessing virtual server/application
        """
        return pulumi.get(self, "port")


@pulumi.output_type
class WafPolicyFileType(dict):
    def __init__(__self__, *,
                 name: Optional[str] = None,
                 type: Optional[str] = None):
        """
        :param str name: Specifies the file type name as appearing in the URL extension.
        :param str type: Determines the type of the name attribute. Only when setting the type to `wildcard` will the special wildcard characters in the name be interpreted as such
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if type is not None:
            pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter
    def name(self) -> Optional[str]:
        """
        Specifies the file type name as appearing in the URL extension.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def type(self) -> Optional[str]:
        """
        Determines the type of the name attribute. Only when setting the type to `wildcard` will the special wildcard characters in the name be interpreted as such
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class WafPolicyGraphqlProfile(dict):
    def __init__(__self__, *,
                 name: Optional[str] = None):
        """
        :param str name: The unique user-given name of the policy. Policy names cannot contain spaces or special characters. Allowed characters are a-z, A-Z, 0-9, dot, dash (-), colon (:) and underscore (_).
        """
        if name is not None:
            pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter
    def name(self) -> Optional[str]:
        """
        The unique user-given name of the policy. Policy names cannot contain spaces or special characters. Allowed characters are a-z, A-Z, 0-9, dot, dash (-), colon (:) and underscore (_).
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class WafPolicyPolicyBuilder(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "learningMode":
            suggest = "learning_mode"

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

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

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

    def __init__(__self__, *,
                 learning_mode: Optional[str] = None):
        """
        :param str learning_mode: learning mode setting for policy-builder, possible options: [`automatic`,`disabled`, `manual`]
        """
        if learning_mode is not None:
            pulumi.set(__self__, "learning_mode", learning_mode)

    @property
    @pulumi.getter(name="learningMode")
    def learning_mode(self) -> Optional[str]:
        """
        learning mode setting for policy-builder, possible options: [`automatic`,`disabled`, `manual`]
        """
        return pulumi.get(self, "learning_mode")


@pulumi.output_type
class WafPolicySignaturesSetting(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "placesignaturesInStaging":
            suggest = "placesignatures_in_staging"
        elif key == "signatureStaging":
            suggest = "signature_staging"

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

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

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

    def __init__(__self__, *,
                 placesignatures_in_staging: Optional[bool] = None,
                 signature_staging: Optional[bool] = None):
        if placesignatures_in_staging is not None:
            pulumi.set(__self__, "placesignatures_in_staging", placesignatures_in_staging)
        if signature_staging is not None:
            pulumi.set(__self__, "signature_staging", signature_staging)

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

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


