# coding=utf-8
# *** WARNING: this file was generated by pulumi-language-python. ***
# *** Do not edit by hand unless you're certain you know what you are doing! ***

import builtins as _builtins
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
from ._inputs import *

__all__ = ['GuestAccessArgs', 'GuestAccess']

@pulumi.input_type
class GuestAccessArgs:
    def __init__(__self__, *,
                 allowed_subnet: Optional[pulumi.Input[_builtins.str]] = None,
                 auth: Optional[pulumi.Input[_builtins.str]] = None,
                 auth_url: Optional[pulumi.Input[_builtins.str]] = None,
                 authorize: Optional[pulumi.Input['GuestAccessAuthorizeArgs']] = None,
                 custom_ip: Optional[pulumi.Input[_builtins.str]] = None,
                 ec_enabled: Optional[pulumi.Input[_builtins.bool]] = None,
                 expire: Optional[pulumi.Input[_builtins.int]] = None,
                 expire_number: Optional[pulumi.Input[_builtins.int]] = None,
                 expire_unit: Optional[pulumi.Input[_builtins.int]] = None,
                 facebook: Optional[pulumi.Input['GuestAccessFacebookArgs']] = None,
                 facebook_wifi: Optional[pulumi.Input['GuestAccessFacebookWifiArgs']] = None,
                 google: Optional[pulumi.Input['GuestAccessGoogleArgs']] = None,
                 ippay: Optional[pulumi.Input['GuestAccessIppayArgs']] = None,
                 merchant_warrior: Optional[pulumi.Input['GuestAccessMerchantWarriorArgs']] = None,
                 password: Optional[pulumi.Input[_builtins.str]] = None,
                 payment_gateway: Optional[pulumi.Input[_builtins.str]] = None,
                 paypal: Optional[pulumi.Input['GuestAccessPaypalArgs']] = None,
                 portal_customization: Optional[pulumi.Input['GuestAccessPortalCustomizationArgs']] = None,
                 portal_enabled: Optional[pulumi.Input[_builtins.bool]] = None,
                 portal_hostname: Optional[pulumi.Input[_builtins.str]] = None,
                 portal_use_hostname: Optional[pulumi.Input[_builtins.bool]] = None,
                 quickpay: Optional[pulumi.Input['GuestAccessQuickpayArgs']] = None,
                 radius: Optional[pulumi.Input['GuestAccessRadiusArgs']] = None,
                 redirect: Optional[pulumi.Input['GuestAccessRedirectArgs']] = None,
                 restricted_dns_servers: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 restricted_subnet: Optional[pulumi.Input[_builtins.str]] = None,
                 site: Optional[pulumi.Input[_builtins.str]] = None,
                 stripe: Optional[pulumi.Input['GuestAccessStripeArgs']] = None,
                 template_engine: Optional[pulumi.Input[_builtins.str]] = None,
                 voucher_customized: Optional[pulumi.Input[_builtins.bool]] = None,
                 voucher_enabled: Optional[pulumi.Input[_builtins.bool]] = None,
                 wechat: Optional[pulumi.Input['GuestAccessWechatArgs']] = None):
        """
        The set of arguments for constructing a GuestAccess resource.
        :param pulumi.Input[_builtins.str] allowed_subnet: Subnet allowed for guest access.
        :param pulumi.Input[_builtins.str] auth: Authentication method for guest access. Valid values are:
        :param pulumi.Input[_builtins.str] auth_url: URL for authentication. Must be a valid URL including the protocol.
        :param pulumi.Input['GuestAccessAuthorizeArgs'] authorize: Authorize.net payment settings.
        :param pulumi.Input[_builtins.str] custom_ip: Custom IP address. Must be a valid IPv4 address (e.g., `192.168.1.1`).
        :param pulumi.Input[_builtins.bool] ec_enabled: Enable enterprise controller functionality.
        :param pulumi.Input[_builtins.int] expire: Expiration time for guest access.
        :param pulumi.Input[_builtins.int] expire_number: Number value for the expiration time.
        :param pulumi.Input[_builtins.int] expire_unit: Unit for the expiration time. Valid values are:
               * `1` - Minute
               * `60` - Hour
               * `1440` - Day
               * `10080` - Week
        :param pulumi.Input['GuestAccessFacebookArgs'] facebook: Facebook authentication settings.
        :param pulumi.Input['GuestAccessFacebookWifiArgs'] facebook_wifi: - Facebook auth entication
        :param pulumi.Input['GuestAccessGoogleArgs'] google: Google authentication settings.
        :param pulumi.Input['GuestAccessIppayArgs'] ippay: IPpay Payments settings.
        :param pulumi.Input['GuestAccessMerchantWarriorArgs'] merchant_warrior: MerchantWarrior payment settings.
        :param pulumi.Input[_builtins.str] password: Password for guest access.
        :param pulumi.Input[_builtins.str] payment_gateway: Payment gateway. Valid values are:
               * `paypal` - PayPal
               * `stripe` - Stripe
               * `authorize` - Authorize.net
               * `quickpay` - QuickPay
               * `merchantwarrior` - Merchant Warrior
               * `ippay` - IP Payments
        :param pulumi.Input['GuestAccessPaypalArgs'] paypal: PayPal payment settings.
        :param pulumi.Input['GuestAccessPortalCustomizationArgs'] portal_customization: Portal customization settings.
        :param pulumi.Input[_builtins.bool] portal_enabled: Enable the guest portal.
        :param pulumi.Input[_builtins.str] portal_hostname: Hostname to use for the captive portal.
        :param pulumi.Input[_builtins.bool] portal_use_hostname: Use a custom hostname for the portal.
        :param pulumi.Input['GuestAccessQuickpayArgs'] quickpay: QuickPay payment settings.
        :param pulumi.Input['GuestAccessRadiusArgs'] radius: RADIUS authentication settings.
        :param pulumi.Input['GuestAccessRedirectArgs'] redirect: Redirect after authentication settings.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] restricted_dns_servers: List of restricted DNS servers for guest networks. Each value must be a valid IPv4 address.
        :param pulumi.Input[_builtins.str] restricted_subnet: Subnet for restricted guest access.
        :param pulumi.Input[_builtins.str] site: The name of the UniFi site where this resource should be applied. If not specified, the default site will be used.
        :param pulumi.Input['GuestAccessStripeArgs'] stripe: Stripe payment settings.
        :param pulumi.Input[_builtins.str] template_engine: Template engine for the portal. Valid values are: `jsp`, `angular`.
        :param pulumi.Input[_builtins.bool] voucher_customized: Whether vouchers are customized.
        :param pulumi.Input[_builtins.bool] voucher_enabled: Enable voucher-based authentication for guest access.
        :param pulumi.Input['GuestAccessWechatArgs'] wechat: WeChat authentication settings.
        """
        if allowed_subnet is not None:
            pulumi.set(__self__, "allowed_subnet", allowed_subnet)
        if auth is not None:
            pulumi.set(__self__, "auth", auth)
        if auth_url is not None:
            pulumi.set(__self__, "auth_url", auth_url)
        if authorize is not None:
            pulumi.set(__self__, "authorize", authorize)
        if custom_ip is not None:
            pulumi.set(__self__, "custom_ip", custom_ip)
        if ec_enabled is not None:
            pulumi.set(__self__, "ec_enabled", ec_enabled)
        if expire is not None:
            pulumi.set(__self__, "expire", expire)
        if expire_number is not None:
            pulumi.set(__self__, "expire_number", expire_number)
        if expire_unit is not None:
            pulumi.set(__self__, "expire_unit", expire_unit)
        if facebook is not None:
            pulumi.set(__self__, "facebook", facebook)
        if facebook_wifi is not None:
            pulumi.set(__self__, "facebook_wifi", facebook_wifi)
        if google is not None:
            pulumi.set(__self__, "google", google)
        if ippay is not None:
            pulumi.set(__self__, "ippay", ippay)
        if merchant_warrior is not None:
            pulumi.set(__self__, "merchant_warrior", merchant_warrior)
        if password is not None:
            pulumi.set(__self__, "password", password)
        if payment_gateway is not None:
            pulumi.set(__self__, "payment_gateway", payment_gateway)
        if paypal is not None:
            pulumi.set(__self__, "paypal", paypal)
        if portal_customization is not None:
            pulumi.set(__self__, "portal_customization", portal_customization)
        if portal_enabled is not None:
            pulumi.set(__self__, "portal_enabled", portal_enabled)
        if portal_hostname is not None:
            pulumi.set(__self__, "portal_hostname", portal_hostname)
        if portal_use_hostname is not None:
            pulumi.set(__self__, "portal_use_hostname", portal_use_hostname)
        if quickpay is not None:
            pulumi.set(__self__, "quickpay", quickpay)
        if radius is not None:
            pulumi.set(__self__, "radius", radius)
        if redirect is not None:
            pulumi.set(__self__, "redirect", redirect)
        if restricted_dns_servers is not None:
            pulumi.set(__self__, "restricted_dns_servers", restricted_dns_servers)
        if restricted_subnet is not None:
            pulumi.set(__self__, "restricted_subnet", restricted_subnet)
        if site is not None:
            pulumi.set(__self__, "site", site)
        if stripe is not None:
            pulumi.set(__self__, "stripe", stripe)
        if template_engine is not None:
            pulumi.set(__self__, "template_engine", template_engine)
        if voucher_customized is not None:
            pulumi.set(__self__, "voucher_customized", voucher_customized)
        if voucher_enabled is not None:
            pulumi.set(__self__, "voucher_enabled", voucher_enabled)
        if wechat is not None:
            pulumi.set(__self__, "wechat", wechat)

    @_builtins.property
    @pulumi.getter(name="allowedSubnet")
    def allowed_subnet(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Subnet allowed for guest access.
        """
        return pulumi.get(self, "allowed_subnet")

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

    @_builtins.property
    @pulumi.getter
    def auth(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Authentication method for guest access. Valid values are:
        """
        return pulumi.get(self, "auth")

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

    @_builtins.property
    @pulumi.getter(name="authUrl")
    def auth_url(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        URL for authentication. Must be a valid URL including the protocol.
        """
        return pulumi.get(self, "auth_url")

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

    @_builtins.property
    @pulumi.getter
    def authorize(self) -> Optional[pulumi.Input['GuestAccessAuthorizeArgs']]:
        """
        Authorize.net payment settings.
        """
        return pulumi.get(self, "authorize")

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

    @_builtins.property
    @pulumi.getter(name="customIp")
    def custom_ip(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Custom IP address. Must be a valid IPv4 address (e.g., `192.168.1.1`).
        """
        return pulumi.get(self, "custom_ip")

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

    @_builtins.property
    @pulumi.getter(name="ecEnabled")
    def ec_enabled(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Enable enterprise controller functionality.
        """
        return pulumi.get(self, "ec_enabled")

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

    @_builtins.property
    @pulumi.getter
    def expire(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Expiration time for guest access.
        """
        return pulumi.get(self, "expire")

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

    @_builtins.property
    @pulumi.getter(name="expireNumber")
    def expire_number(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Number value for the expiration time.
        """
        return pulumi.get(self, "expire_number")

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

    @_builtins.property
    @pulumi.getter(name="expireUnit")
    def expire_unit(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Unit for the expiration time. Valid values are:
        * `1` - Minute
        * `60` - Hour
        * `1440` - Day
        * `10080` - Week
        """
        return pulumi.get(self, "expire_unit")

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

    @_builtins.property
    @pulumi.getter
    def facebook(self) -> Optional[pulumi.Input['GuestAccessFacebookArgs']]:
        """
        Facebook authentication settings.
        """
        return pulumi.get(self, "facebook")

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

    @_builtins.property
    @pulumi.getter(name="facebookWifi")
    def facebook_wifi(self) -> Optional[pulumi.Input['GuestAccessFacebookWifiArgs']]:
        """
        - Facebook auth entication
        """
        return pulumi.get(self, "facebook_wifi")

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

    @_builtins.property
    @pulumi.getter
    def google(self) -> Optional[pulumi.Input['GuestAccessGoogleArgs']]:
        """
        Google authentication settings.
        """
        return pulumi.get(self, "google")

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

    @_builtins.property
    @pulumi.getter
    def ippay(self) -> Optional[pulumi.Input['GuestAccessIppayArgs']]:
        """
        IPpay Payments settings.
        """
        return pulumi.get(self, "ippay")

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

    @_builtins.property
    @pulumi.getter(name="merchantWarrior")
    def merchant_warrior(self) -> Optional[pulumi.Input['GuestAccessMerchantWarriorArgs']]:
        """
        MerchantWarrior payment settings.
        """
        return pulumi.get(self, "merchant_warrior")

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

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

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

    @_builtins.property
    @pulumi.getter(name="paymentGateway")
    def payment_gateway(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Payment gateway. Valid values are:
        * `paypal` - PayPal
        * `stripe` - Stripe
        * `authorize` - Authorize.net
        * `quickpay` - QuickPay
        * `merchantwarrior` - Merchant Warrior
        * `ippay` - IP Payments
        """
        return pulumi.get(self, "payment_gateway")

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

    @_builtins.property
    @pulumi.getter
    def paypal(self) -> Optional[pulumi.Input['GuestAccessPaypalArgs']]:
        """
        PayPal payment settings.
        """
        return pulumi.get(self, "paypal")

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

    @_builtins.property
    @pulumi.getter(name="portalCustomization")
    def portal_customization(self) -> Optional[pulumi.Input['GuestAccessPortalCustomizationArgs']]:
        """
        Portal customization settings.
        """
        return pulumi.get(self, "portal_customization")

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

    @_builtins.property
    @pulumi.getter(name="portalEnabled")
    def portal_enabled(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Enable the guest portal.
        """
        return pulumi.get(self, "portal_enabled")

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

    @_builtins.property
    @pulumi.getter(name="portalHostname")
    def portal_hostname(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Hostname to use for the captive portal.
        """
        return pulumi.get(self, "portal_hostname")

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

    @_builtins.property
    @pulumi.getter(name="portalUseHostname")
    def portal_use_hostname(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Use a custom hostname for the portal.
        """
        return pulumi.get(self, "portal_use_hostname")

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

    @_builtins.property
    @pulumi.getter
    def quickpay(self) -> Optional[pulumi.Input['GuestAccessQuickpayArgs']]:
        """
        QuickPay payment settings.
        """
        return pulumi.get(self, "quickpay")

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

    @_builtins.property
    @pulumi.getter
    def radius(self) -> Optional[pulumi.Input['GuestAccessRadiusArgs']]:
        """
        RADIUS authentication settings.
        """
        return pulumi.get(self, "radius")

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

    @_builtins.property
    @pulumi.getter
    def redirect(self) -> Optional[pulumi.Input['GuestAccessRedirectArgs']]:
        """
        Redirect after authentication settings.
        """
        return pulumi.get(self, "redirect")

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

    @_builtins.property
    @pulumi.getter(name="restrictedDnsServers")
    def restricted_dns_servers(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        List of restricted DNS servers for guest networks. Each value must be a valid IPv4 address.
        """
        return pulumi.get(self, "restricted_dns_servers")

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

    @_builtins.property
    @pulumi.getter(name="restrictedSubnet")
    def restricted_subnet(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Subnet for restricted guest access.
        """
        return pulumi.get(self, "restricted_subnet")

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

    @_builtins.property
    @pulumi.getter
    def site(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The name of the UniFi site where this resource should be applied. If not specified, the default site will be used.
        """
        return pulumi.get(self, "site")

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

    @_builtins.property
    @pulumi.getter
    def stripe(self) -> Optional[pulumi.Input['GuestAccessStripeArgs']]:
        """
        Stripe payment settings.
        """
        return pulumi.get(self, "stripe")

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

    @_builtins.property
    @pulumi.getter(name="templateEngine")
    def template_engine(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Template engine for the portal. Valid values are: `jsp`, `angular`.
        """
        return pulumi.get(self, "template_engine")

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

    @_builtins.property
    @pulumi.getter(name="voucherCustomized")
    def voucher_customized(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Whether vouchers are customized.
        """
        return pulumi.get(self, "voucher_customized")

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

    @_builtins.property
    @pulumi.getter(name="voucherEnabled")
    def voucher_enabled(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Enable voucher-based authentication for guest access.
        """
        return pulumi.get(self, "voucher_enabled")

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

    @_builtins.property
    @pulumi.getter
    def wechat(self) -> Optional[pulumi.Input['GuestAccessWechatArgs']]:
        """
        WeChat authentication settings.
        """
        return pulumi.get(self, "wechat")

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


@pulumi.input_type
class _GuestAccessState:
    def __init__(__self__, *,
                 allowed_subnet: Optional[pulumi.Input[_builtins.str]] = None,
                 auth: Optional[pulumi.Input[_builtins.str]] = None,
                 auth_url: Optional[pulumi.Input[_builtins.str]] = None,
                 authorize: Optional[pulumi.Input['GuestAccessAuthorizeArgs']] = None,
                 custom_ip: Optional[pulumi.Input[_builtins.str]] = None,
                 ec_enabled: Optional[pulumi.Input[_builtins.bool]] = None,
                 expire: Optional[pulumi.Input[_builtins.int]] = None,
                 expire_number: Optional[pulumi.Input[_builtins.int]] = None,
                 expire_unit: Optional[pulumi.Input[_builtins.int]] = None,
                 facebook: Optional[pulumi.Input['GuestAccessFacebookArgs']] = None,
                 facebook_enabled: Optional[pulumi.Input[_builtins.bool]] = None,
                 facebook_wifi: Optional[pulumi.Input['GuestAccessFacebookWifiArgs']] = None,
                 google: Optional[pulumi.Input['GuestAccessGoogleArgs']] = None,
                 google_enabled: Optional[pulumi.Input[_builtins.bool]] = None,
                 ippay: Optional[pulumi.Input['GuestAccessIppayArgs']] = None,
                 merchant_warrior: Optional[pulumi.Input['GuestAccessMerchantWarriorArgs']] = None,
                 password: Optional[pulumi.Input[_builtins.str]] = None,
                 password_enabled: Optional[pulumi.Input[_builtins.bool]] = None,
                 payment_enabled: Optional[pulumi.Input[_builtins.bool]] = None,
                 payment_gateway: Optional[pulumi.Input[_builtins.str]] = None,
                 paypal: Optional[pulumi.Input['GuestAccessPaypalArgs']] = None,
                 portal_customization: Optional[pulumi.Input['GuestAccessPortalCustomizationArgs']] = None,
                 portal_enabled: Optional[pulumi.Input[_builtins.bool]] = None,
                 portal_hostname: Optional[pulumi.Input[_builtins.str]] = None,
                 portal_use_hostname: Optional[pulumi.Input[_builtins.bool]] = None,
                 quickpay: Optional[pulumi.Input['GuestAccessQuickpayArgs']] = None,
                 radius: Optional[pulumi.Input['GuestAccessRadiusArgs']] = None,
                 radius_enabled: Optional[pulumi.Input[_builtins.bool]] = None,
                 redirect: Optional[pulumi.Input['GuestAccessRedirectArgs']] = None,
                 redirect_enabled: Optional[pulumi.Input[_builtins.bool]] = None,
                 restricted_dns_enabled: Optional[pulumi.Input[_builtins.bool]] = None,
                 restricted_dns_servers: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 restricted_subnet: Optional[pulumi.Input[_builtins.str]] = None,
                 site: Optional[pulumi.Input[_builtins.str]] = None,
                 stripe: Optional[pulumi.Input['GuestAccessStripeArgs']] = None,
                 template_engine: Optional[pulumi.Input[_builtins.str]] = None,
                 voucher_customized: Optional[pulumi.Input[_builtins.bool]] = None,
                 voucher_enabled: Optional[pulumi.Input[_builtins.bool]] = None,
                 wechat: Optional[pulumi.Input['GuestAccessWechatArgs']] = None,
                 wechat_enabled: Optional[pulumi.Input[_builtins.bool]] = None):
        """
        Input properties used for looking up and filtering GuestAccess resources.
        :param pulumi.Input[_builtins.str] allowed_subnet: Subnet allowed for guest access.
        :param pulumi.Input[_builtins.str] auth: Authentication method for guest access. Valid values are:
        :param pulumi.Input[_builtins.str] auth_url: URL for authentication. Must be a valid URL including the protocol.
        :param pulumi.Input['GuestAccessAuthorizeArgs'] authorize: Authorize.net payment settings.
        :param pulumi.Input[_builtins.str] custom_ip: Custom IP address. Must be a valid IPv4 address (e.g., `192.168.1.1`).
        :param pulumi.Input[_builtins.bool] ec_enabled: Enable enterprise controller functionality.
        :param pulumi.Input[_builtins.int] expire: Expiration time for guest access.
        :param pulumi.Input[_builtins.int] expire_number: Number value for the expiration time.
        :param pulumi.Input[_builtins.int] expire_unit: Unit for the expiration time. Valid values are:
               * `1` - Minute
               * `60` - Hour
               * `1440` - Day
               * `10080` - Week
        :param pulumi.Input['GuestAccessFacebookArgs'] facebook: Facebook authentication settings.
        :param pulumi.Input[_builtins.bool] facebook_enabled: Whether Facebook authentication for guest access is enabled.
        :param pulumi.Input['GuestAccessFacebookWifiArgs'] facebook_wifi: - Facebook auth entication
        :param pulumi.Input['GuestAccessGoogleArgs'] google: Google authentication settings.
        :param pulumi.Input[_builtins.bool] google_enabled: Whether Google authentication for guest access is enabled.
        :param pulumi.Input['GuestAccessIppayArgs'] ippay: IPpay Payments settings.
        :param pulumi.Input['GuestAccessMerchantWarriorArgs'] merchant_warrior: MerchantWarrior payment settings.
        :param pulumi.Input[_builtins.str] password: Password for guest access.
        :param pulumi.Input[_builtins.bool] password_enabled: Enable password authentication for guest access.
        :param pulumi.Input[_builtins.bool] payment_enabled: Enable payment for guest access.
        :param pulumi.Input[_builtins.str] payment_gateway: Payment gateway. Valid values are:
               * `paypal` - PayPal
               * `stripe` - Stripe
               * `authorize` - Authorize.net
               * `quickpay` - QuickPay
               * `merchantwarrior` - Merchant Warrior
               * `ippay` - IP Payments
        :param pulumi.Input['GuestAccessPaypalArgs'] paypal: PayPal payment settings.
        :param pulumi.Input['GuestAccessPortalCustomizationArgs'] portal_customization: Portal customization settings.
        :param pulumi.Input[_builtins.bool] portal_enabled: Enable the guest portal.
        :param pulumi.Input[_builtins.str] portal_hostname: Hostname to use for the captive portal.
        :param pulumi.Input[_builtins.bool] portal_use_hostname: Use a custom hostname for the portal.
        :param pulumi.Input['GuestAccessQuickpayArgs'] quickpay: QuickPay payment settings.
        :param pulumi.Input['GuestAccessRadiusArgs'] radius: RADIUS authentication settings.
        :param pulumi.Input[_builtins.bool] radius_enabled: Whether RADIUS authentication for guest access is enabled.
        :param pulumi.Input['GuestAccessRedirectArgs'] redirect: Redirect after authentication settings.
        :param pulumi.Input[_builtins.bool] redirect_enabled: Whether redirect after authentication is enabled.
        :param pulumi.Input[_builtins.bool] restricted_dns_enabled: Whether restricted DNS servers for guest networks are enabled.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] restricted_dns_servers: List of restricted DNS servers for guest networks. Each value must be a valid IPv4 address.
        :param pulumi.Input[_builtins.str] restricted_subnet: Subnet for restricted guest access.
        :param pulumi.Input[_builtins.str] site: The name of the UniFi site where this resource should be applied. If not specified, the default site will be used.
        :param pulumi.Input['GuestAccessStripeArgs'] stripe: Stripe payment settings.
        :param pulumi.Input[_builtins.str] template_engine: Template engine for the portal. Valid values are: `jsp`, `angular`.
        :param pulumi.Input[_builtins.bool] voucher_customized: Whether vouchers are customized.
        :param pulumi.Input[_builtins.bool] voucher_enabled: Enable voucher-based authentication for guest access.
        :param pulumi.Input['GuestAccessWechatArgs'] wechat: WeChat authentication settings.
        :param pulumi.Input[_builtins.bool] wechat_enabled: Whether WeChat authentication for guest access is enabled.
        """
        if allowed_subnet is not None:
            pulumi.set(__self__, "allowed_subnet", allowed_subnet)
        if auth is not None:
            pulumi.set(__self__, "auth", auth)
        if auth_url is not None:
            pulumi.set(__self__, "auth_url", auth_url)
        if authorize is not None:
            pulumi.set(__self__, "authorize", authorize)
        if custom_ip is not None:
            pulumi.set(__self__, "custom_ip", custom_ip)
        if ec_enabled is not None:
            pulumi.set(__self__, "ec_enabled", ec_enabled)
        if expire is not None:
            pulumi.set(__self__, "expire", expire)
        if expire_number is not None:
            pulumi.set(__self__, "expire_number", expire_number)
        if expire_unit is not None:
            pulumi.set(__self__, "expire_unit", expire_unit)
        if facebook is not None:
            pulumi.set(__self__, "facebook", facebook)
        if facebook_enabled is not None:
            pulumi.set(__self__, "facebook_enabled", facebook_enabled)
        if facebook_wifi is not None:
            pulumi.set(__self__, "facebook_wifi", facebook_wifi)
        if google is not None:
            pulumi.set(__self__, "google", google)
        if google_enabled is not None:
            pulumi.set(__self__, "google_enabled", google_enabled)
        if ippay is not None:
            pulumi.set(__self__, "ippay", ippay)
        if merchant_warrior is not None:
            pulumi.set(__self__, "merchant_warrior", merchant_warrior)
        if password is not None:
            pulumi.set(__self__, "password", password)
        if password_enabled is not None:
            pulumi.set(__self__, "password_enabled", password_enabled)
        if payment_enabled is not None:
            pulumi.set(__self__, "payment_enabled", payment_enabled)
        if payment_gateway is not None:
            pulumi.set(__self__, "payment_gateway", payment_gateway)
        if paypal is not None:
            pulumi.set(__self__, "paypal", paypal)
        if portal_customization is not None:
            pulumi.set(__self__, "portal_customization", portal_customization)
        if portal_enabled is not None:
            pulumi.set(__self__, "portal_enabled", portal_enabled)
        if portal_hostname is not None:
            pulumi.set(__self__, "portal_hostname", portal_hostname)
        if portal_use_hostname is not None:
            pulumi.set(__self__, "portal_use_hostname", portal_use_hostname)
        if quickpay is not None:
            pulumi.set(__self__, "quickpay", quickpay)
        if radius is not None:
            pulumi.set(__self__, "radius", radius)
        if radius_enabled is not None:
            pulumi.set(__self__, "radius_enabled", radius_enabled)
        if redirect is not None:
            pulumi.set(__self__, "redirect", redirect)
        if redirect_enabled is not None:
            pulumi.set(__self__, "redirect_enabled", redirect_enabled)
        if restricted_dns_enabled is not None:
            pulumi.set(__self__, "restricted_dns_enabled", restricted_dns_enabled)
        if restricted_dns_servers is not None:
            pulumi.set(__self__, "restricted_dns_servers", restricted_dns_servers)
        if restricted_subnet is not None:
            pulumi.set(__self__, "restricted_subnet", restricted_subnet)
        if site is not None:
            pulumi.set(__self__, "site", site)
        if stripe is not None:
            pulumi.set(__self__, "stripe", stripe)
        if template_engine is not None:
            pulumi.set(__self__, "template_engine", template_engine)
        if voucher_customized is not None:
            pulumi.set(__self__, "voucher_customized", voucher_customized)
        if voucher_enabled is not None:
            pulumi.set(__self__, "voucher_enabled", voucher_enabled)
        if wechat is not None:
            pulumi.set(__self__, "wechat", wechat)
        if wechat_enabled is not None:
            pulumi.set(__self__, "wechat_enabled", wechat_enabled)

    @_builtins.property
    @pulumi.getter(name="allowedSubnet")
    def allowed_subnet(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Subnet allowed for guest access.
        """
        return pulumi.get(self, "allowed_subnet")

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

    @_builtins.property
    @pulumi.getter
    def auth(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Authentication method for guest access. Valid values are:
        """
        return pulumi.get(self, "auth")

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

    @_builtins.property
    @pulumi.getter(name="authUrl")
    def auth_url(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        URL for authentication. Must be a valid URL including the protocol.
        """
        return pulumi.get(self, "auth_url")

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

    @_builtins.property
    @pulumi.getter
    def authorize(self) -> Optional[pulumi.Input['GuestAccessAuthorizeArgs']]:
        """
        Authorize.net payment settings.
        """
        return pulumi.get(self, "authorize")

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

    @_builtins.property
    @pulumi.getter(name="customIp")
    def custom_ip(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Custom IP address. Must be a valid IPv4 address (e.g., `192.168.1.1`).
        """
        return pulumi.get(self, "custom_ip")

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

    @_builtins.property
    @pulumi.getter(name="ecEnabled")
    def ec_enabled(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Enable enterprise controller functionality.
        """
        return pulumi.get(self, "ec_enabled")

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

    @_builtins.property
    @pulumi.getter
    def expire(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Expiration time for guest access.
        """
        return pulumi.get(self, "expire")

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

    @_builtins.property
    @pulumi.getter(name="expireNumber")
    def expire_number(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Number value for the expiration time.
        """
        return pulumi.get(self, "expire_number")

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

    @_builtins.property
    @pulumi.getter(name="expireUnit")
    def expire_unit(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Unit for the expiration time. Valid values are:
        * `1` - Minute
        * `60` - Hour
        * `1440` - Day
        * `10080` - Week
        """
        return pulumi.get(self, "expire_unit")

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

    @_builtins.property
    @pulumi.getter
    def facebook(self) -> Optional[pulumi.Input['GuestAccessFacebookArgs']]:
        """
        Facebook authentication settings.
        """
        return pulumi.get(self, "facebook")

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

    @_builtins.property
    @pulumi.getter(name="facebookEnabled")
    def facebook_enabled(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Whether Facebook authentication for guest access is enabled.
        """
        return pulumi.get(self, "facebook_enabled")

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

    @_builtins.property
    @pulumi.getter(name="facebookWifi")
    def facebook_wifi(self) -> Optional[pulumi.Input['GuestAccessFacebookWifiArgs']]:
        """
        - Facebook auth entication
        """
        return pulumi.get(self, "facebook_wifi")

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

    @_builtins.property
    @pulumi.getter
    def google(self) -> Optional[pulumi.Input['GuestAccessGoogleArgs']]:
        """
        Google authentication settings.
        """
        return pulumi.get(self, "google")

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

    @_builtins.property
    @pulumi.getter(name="googleEnabled")
    def google_enabled(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Whether Google authentication for guest access is enabled.
        """
        return pulumi.get(self, "google_enabled")

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

    @_builtins.property
    @pulumi.getter
    def ippay(self) -> Optional[pulumi.Input['GuestAccessIppayArgs']]:
        """
        IPpay Payments settings.
        """
        return pulumi.get(self, "ippay")

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

    @_builtins.property
    @pulumi.getter(name="merchantWarrior")
    def merchant_warrior(self) -> Optional[pulumi.Input['GuestAccessMerchantWarriorArgs']]:
        """
        MerchantWarrior payment settings.
        """
        return pulumi.get(self, "merchant_warrior")

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

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

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

    @_builtins.property
    @pulumi.getter(name="passwordEnabled")
    def password_enabled(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Enable password authentication for guest access.
        """
        return pulumi.get(self, "password_enabled")

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

    @_builtins.property
    @pulumi.getter(name="paymentEnabled")
    def payment_enabled(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Enable payment for guest access.
        """
        return pulumi.get(self, "payment_enabled")

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

    @_builtins.property
    @pulumi.getter(name="paymentGateway")
    def payment_gateway(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Payment gateway. Valid values are:
        * `paypal` - PayPal
        * `stripe` - Stripe
        * `authorize` - Authorize.net
        * `quickpay` - QuickPay
        * `merchantwarrior` - Merchant Warrior
        * `ippay` - IP Payments
        """
        return pulumi.get(self, "payment_gateway")

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

    @_builtins.property
    @pulumi.getter
    def paypal(self) -> Optional[pulumi.Input['GuestAccessPaypalArgs']]:
        """
        PayPal payment settings.
        """
        return pulumi.get(self, "paypal")

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

    @_builtins.property
    @pulumi.getter(name="portalCustomization")
    def portal_customization(self) -> Optional[pulumi.Input['GuestAccessPortalCustomizationArgs']]:
        """
        Portal customization settings.
        """
        return pulumi.get(self, "portal_customization")

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

    @_builtins.property
    @pulumi.getter(name="portalEnabled")
    def portal_enabled(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Enable the guest portal.
        """
        return pulumi.get(self, "portal_enabled")

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

    @_builtins.property
    @pulumi.getter(name="portalHostname")
    def portal_hostname(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Hostname to use for the captive portal.
        """
        return pulumi.get(self, "portal_hostname")

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

    @_builtins.property
    @pulumi.getter(name="portalUseHostname")
    def portal_use_hostname(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Use a custom hostname for the portal.
        """
        return pulumi.get(self, "portal_use_hostname")

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

    @_builtins.property
    @pulumi.getter
    def quickpay(self) -> Optional[pulumi.Input['GuestAccessQuickpayArgs']]:
        """
        QuickPay payment settings.
        """
        return pulumi.get(self, "quickpay")

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

    @_builtins.property
    @pulumi.getter
    def radius(self) -> Optional[pulumi.Input['GuestAccessRadiusArgs']]:
        """
        RADIUS authentication settings.
        """
        return pulumi.get(self, "radius")

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

    @_builtins.property
    @pulumi.getter(name="radiusEnabled")
    def radius_enabled(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Whether RADIUS authentication for guest access is enabled.
        """
        return pulumi.get(self, "radius_enabled")

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

    @_builtins.property
    @pulumi.getter
    def redirect(self) -> Optional[pulumi.Input['GuestAccessRedirectArgs']]:
        """
        Redirect after authentication settings.
        """
        return pulumi.get(self, "redirect")

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

    @_builtins.property
    @pulumi.getter(name="redirectEnabled")
    def redirect_enabled(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Whether redirect after authentication is enabled.
        """
        return pulumi.get(self, "redirect_enabled")

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

    @_builtins.property
    @pulumi.getter(name="restrictedDnsEnabled")
    def restricted_dns_enabled(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Whether restricted DNS servers for guest networks are enabled.
        """
        return pulumi.get(self, "restricted_dns_enabled")

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

    @_builtins.property
    @pulumi.getter(name="restrictedDnsServers")
    def restricted_dns_servers(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        List of restricted DNS servers for guest networks. Each value must be a valid IPv4 address.
        """
        return pulumi.get(self, "restricted_dns_servers")

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

    @_builtins.property
    @pulumi.getter(name="restrictedSubnet")
    def restricted_subnet(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Subnet for restricted guest access.
        """
        return pulumi.get(self, "restricted_subnet")

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

    @_builtins.property
    @pulumi.getter
    def site(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The name of the UniFi site where this resource should be applied. If not specified, the default site will be used.
        """
        return pulumi.get(self, "site")

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

    @_builtins.property
    @pulumi.getter
    def stripe(self) -> Optional[pulumi.Input['GuestAccessStripeArgs']]:
        """
        Stripe payment settings.
        """
        return pulumi.get(self, "stripe")

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

    @_builtins.property
    @pulumi.getter(name="templateEngine")
    def template_engine(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Template engine for the portal. Valid values are: `jsp`, `angular`.
        """
        return pulumi.get(self, "template_engine")

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

    @_builtins.property
    @pulumi.getter(name="voucherCustomized")
    def voucher_customized(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Whether vouchers are customized.
        """
        return pulumi.get(self, "voucher_customized")

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

    @_builtins.property
    @pulumi.getter(name="voucherEnabled")
    def voucher_enabled(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Enable voucher-based authentication for guest access.
        """
        return pulumi.get(self, "voucher_enabled")

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

    @_builtins.property
    @pulumi.getter
    def wechat(self) -> Optional[pulumi.Input['GuestAccessWechatArgs']]:
        """
        WeChat authentication settings.
        """
        return pulumi.get(self, "wechat")

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

    @_builtins.property
    @pulumi.getter(name="wechatEnabled")
    def wechat_enabled(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Whether WeChat authentication for guest access is enabled.
        """
        return pulumi.get(self, "wechat_enabled")

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


@pulumi.type_token("unifi:setting/guestAccess:GuestAccess")
class GuestAccess(pulumi.CustomResource):
    @overload
    def __init__(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 allowed_subnet: Optional[pulumi.Input[_builtins.str]] = None,
                 auth: Optional[pulumi.Input[_builtins.str]] = None,
                 auth_url: Optional[pulumi.Input[_builtins.str]] = None,
                 authorize: Optional[pulumi.Input[Union['GuestAccessAuthorizeArgs', 'GuestAccessAuthorizeArgsDict']]] = None,
                 custom_ip: Optional[pulumi.Input[_builtins.str]] = None,
                 ec_enabled: Optional[pulumi.Input[_builtins.bool]] = None,
                 expire: Optional[pulumi.Input[_builtins.int]] = None,
                 expire_number: Optional[pulumi.Input[_builtins.int]] = None,
                 expire_unit: Optional[pulumi.Input[_builtins.int]] = None,
                 facebook: Optional[pulumi.Input[Union['GuestAccessFacebookArgs', 'GuestAccessFacebookArgsDict']]] = None,
                 facebook_wifi: Optional[pulumi.Input[Union['GuestAccessFacebookWifiArgs', 'GuestAccessFacebookWifiArgsDict']]] = None,
                 google: Optional[pulumi.Input[Union['GuestAccessGoogleArgs', 'GuestAccessGoogleArgsDict']]] = None,
                 ippay: Optional[pulumi.Input[Union['GuestAccessIppayArgs', 'GuestAccessIppayArgsDict']]] = None,
                 merchant_warrior: Optional[pulumi.Input[Union['GuestAccessMerchantWarriorArgs', 'GuestAccessMerchantWarriorArgsDict']]] = None,
                 password: Optional[pulumi.Input[_builtins.str]] = None,
                 payment_gateway: Optional[pulumi.Input[_builtins.str]] = None,
                 paypal: Optional[pulumi.Input[Union['GuestAccessPaypalArgs', 'GuestAccessPaypalArgsDict']]] = None,
                 portal_customization: Optional[pulumi.Input[Union['GuestAccessPortalCustomizationArgs', 'GuestAccessPortalCustomizationArgsDict']]] = None,
                 portal_enabled: Optional[pulumi.Input[_builtins.bool]] = None,
                 portal_hostname: Optional[pulumi.Input[_builtins.str]] = None,
                 portal_use_hostname: Optional[pulumi.Input[_builtins.bool]] = None,
                 quickpay: Optional[pulumi.Input[Union['GuestAccessQuickpayArgs', 'GuestAccessQuickpayArgsDict']]] = None,
                 radius: Optional[pulumi.Input[Union['GuestAccessRadiusArgs', 'GuestAccessRadiusArgsDict']]] = None,
                 redirect: Optional[pulumi.Input[Union['GuestAccessRedirectArgs', 'GuestAccessRedirectArgsDict']]] = None,
                 restricted_dns_servers: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 restricted_subnet: Optional[pulumi.Input[_builtins.str]] = None,
                 site: Optional[pulumi.Input[_builtins.str]] = None,
                 stripe: Optional[pulumi.Input[Union['GuestAccessStripeArgs', 'GuestAccessStripeArgsDict']]] = None,
                 template_engine: Optional[pulumi.Input[_builtins.str]] = None,
                 voucher_customized: Optional[pulumi.Input[_builtins.bool]] = None,
                 voucher_enabled: Optional[pulumi.Input[_builtins.bool]] = None,
                 wechat: Optional[pulumi.Input[Union['GuestAccessWechatArgs', 'GuestAccessWechatArgsDict']]] = None,
                 __props__=None):
        """
        The `setting.GuestAccess` resource manages the guest access settings in the UniFi controller.

        This resource allows you to configure all aspects of guest network access including authentication methods, portal customization, and payment options.

        ## Example Usage

        ```python
        import pulumi
        import pulumiverse_unifi as unifi

        # Configure guest access settings for your UniFi network
        # This example demonstrates a comprehensive guest portal setup with various authentication options
        logo = unifi.port.AlFile("logo", file_path="logo.png")
        guest_portal = unifi.setting.GuestAccess("guest_portal",
            auth="hotspot",
            portal_enabled=True,
            portal_use_hostname=True,
            portal_hostname="guest.example.com",
            template_engine="angular",
            expire=1440,
            expire_number=1,
            expire_unit=1440,
            ec_enabled=True,
            password="guest-access-password",
            google={
                "client_id": "your-google-client-id",
                "client_secret": "your-google-client-secret",
                "domain": "example.com",
                "scope_email": True,
            },
            payment_gateway="paypal",
            paypal={
                "username": "business@example.com",
                "password": "paypal-api-password",
                "signature": "paypal-api-signature",
                "use_sandbox": True,
            },
            redirect={
                "url": "https://example.com/welcome",
                "use_https": True,
                "to_https": True,
            },
            restricted_dns_servers=[
                "1.1.1.1",
                "8.8.8.8",
            ],
            portal_customization={
                "customized": True,
                "title": "Welcome to Our Guest Network",
                "welcome_text": "Thanks for visiting our location. Please enjoy our complimentary WiFi.",
                "welcome_text_enabled": True,
                "welcome_text_position": "top",
                "bg_color": "#f5f5f5",
                "text_color": "#333333",
                "link_color": "#0078d4",
                "box_color": "#ffffff",
                "box_text_color": "#333333",
                "box_link_color": "#0078d4",
                "box_opacity": 90,
                "box_radius": 5,
                "logo_file_id": logo.id,
                "button_color": "#0078d4",
                "button_text_color": "#ffffff",
                "button_text": "Connect",
                "tos_enabled": True,
                "tos": "By using this service, you agree to our terms and conditions. Unauthorized use is prohibited.",
                "languages": ["PL"],
            })
        ```

        :param str resource_name: The name of the resource.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[_builtins.str] allowed_subnet: Subnet allowed for guest access.
        :param pulumi.Input[_builtins.str] auth: Authentication method for guest access. Valid values are:
        :param pulumi.Input[_builtins.str] auth_url: URL for authentication. Must be a valid URL including the protocol.
        :param pulumi.Input[Union['GuestAccessAuthorizeArgs', 'GuestAccessAuthorizeArgsDict']] authorize: Authorize.net payment settings.
        :param pulumi.Input[_builtins.str] custom_ip: Custom IP address. Must be a valid IPv4 address (e.g., `192.168.1.1`).
        :param pulumi.Input[_builtins.bool] ec_enabled: Enable enterprise controller functionality.
        :param pulumi.Input[_builtins.int] expire: Expiration time for guest access.
        :param pulumi.Input[_builtins.int] expire_number: Number value for the expiration time.
        :param pulumi.Input[_builtins.int] expire_unit: Unit for the expiration time. Valid values are:
               * `1` - Minute
               * `60` - Hour
               * `1440` - Day
               * `10080` - Week
        :param pulumi.Input[Union['GuestAccessFacebookArgs', 'GuestAccessFacebookArgsDict']] facebook: Facebook authentication settings.
        :param pulumi.Input[Union['GuestAccessFacebookWifiArgs', 'GuestAccessFacebookWifiArgsDict']] facebook_wifi: - Facebook auth entication
        :param pulumi.Input[Union['GuestAccessGoogleArgs', 'GuestAccessGoogleArgsDict']] google: Google authentication settings.
        :param pulumi.Input[Union['GuestAccessIppayArgs', 'GuestAccessIppayArgsDict']] ippay: IPpay Payments settings.
        :param pulumi.Input[Union['GuestAccessMerchantWarriorArgs', 'GuestAccessMerchantWarriorArgsDict']] merchant_warrior: MerchantWarrior payment settings.
        :param pulumi.Input[_builtins.str] password: Password for guest access.
        :param pulumi.Input[_builtins.str] payment_gateway: Payment gateway. Valid values are:
               * `paypal` - PayPal
               * `stripe` - Stripe
               * `authorize` - Authorize.net
               * `quickpay` - QuickPay
               * `merchantwarrior` - Merchant Warrior
               * `ippay` - IP Payments
        :param pulumi.Input[Union['GuestAccessPaypalArgs', 'GuestAccessPaypalArgsDict']] paypal: PayPal payment settings.
        :param pulumi.Input[Union['GuestAccessPortalCustomizationArgs', 'GuestAccessPortalCustomizationArgsDict']] portal_customization: Portal customization settings.
        :param pulumi.Input[_builtins.bool] portal_enabled: Enable the guest portal.
        :param pulumi.Input[_builtins.str] portal_hostname: Hostname to use for the captive portal.
        :param pulumi.Input[_builtins.bool] portal_use_hostname: Use a custom hostname for the portal.
        :param pulumi.Input[Union['GuestAccessQuickpayArgs', 'GuestAccessQuickpayArgsDict']] quickpay: QuickPay payment settings.
        :param pulumi.Input[Union['GuestAccessRadiusArgs', 'GuestAccessRadiusArgsDict']] radius: RADIUS authentication settings.
        :param pulumi.Input[Union['GuestAccessRedirectArgs', 'GuestAccessRedirectArgsDict']] redirect: Redirect after authentication settings.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] restricted_dns_servers: List of restricted DNS servers for guest networks. Each value must be a valid IPv4 address.
        :param pulumi.Input[_builtins.str] restricted_subnet: Subnet for restricted guest access.
        :param pulumi.Input[_builtins.str] site: The name of the UniFi site where this resource should be applied. If not specified, the default site will be used.
        :param pulumi.Input[Union['GuestAccessStripeArgs', 'GuestAccessStripeArgsDict']] stripe: Stripe payment settings.
        :param pulumi.Input[_builtins.str] template_engine: Template engine for the portal. Valid values are: `jsp`, `angular`.
        :param pulumi.Input[_builtins.bool] voucher_customized: Whether vouchers are customized.
        :param pulumi.Input[_builtins.bool] voucher_enabled: Enable voucher-based authentication for guest access.
        :param pulumi.Input[Union['GuestAccessWechatArgs', 'GuestAccessWechatArgsDict']] wechat: WeChat authentication settings.
        """
        ...
    @overload
    def __init__(__self__,
                 resource_name: str,
                 args: Optional[GuestAccessArgs] = None,
                 opts: Optional[pulumi.ResourceOptions] = None):
        """
        The `setting.GuestAccess` resource manages the guest access settings in the UniFi controller.

        This resource allows you to configure all aspects of guest network access including authentication methods, portal customization, and payment options.

        ## Example Usage

        ```python
        import pulumi
        import pulumiverse_unifi as unifi

        # Configure guest access settings for your UniFi network
        # This example demonstrates a comprehensive guest portal setup with various authentication options
        logo = unifi.port.AlFile("logo", file_path="logo.png")
        guest_portal = unifi.setting.GuestAccess("guest_portal",
            auth="hotspot",
            portal_enabled=True,
            portal_use_hostname=True,
            portal_hostname="guest.example.com",
            template_engine="angular",
            expire=1440,
            expire_number=1,
            expire_unit=1440,
            ec_enabled=True,
            password="guest-access-password",
            google={
                "client_id": "your-google-client-id",
                "client_secret": "your-google-client-secret",
                "domain": "example.com",
                "scope_email": True,
            },
            payment_gateway="paypal",
            paypal={
                "username": "business@example.com",
                "password": "paypal-api-password",
                "signature": "paypal-api-signature",
                "use_sandbox": True,
            },
            redirect={
                "url": "https://example.com/welcome",
                "use_https": True,
                "to_https": True,
            },
            restricted_dns_servers=[
                "1.1.1.1",
                "8.8.8.8",
            ],
            portal_customization={
                "customized": True,
                "title": "Welcome to Our Guest Network",
                "welcome_text": "Thanks for visiting our location. Please enjoy our complimentary WiFi.",
                "welcome_text_enabled": True,
                "welcome_text_position": "top",
                "bg_color": "#f5f5f5",
                "text_color": "#333333",
                "link_color": "#0078d4",
                "box_color": "#ffffff",
                "box_text_color": "#333333",
                "box_link_color": "#0078d4",
                "box_opacity": 90,
                "box_radius": 5,
                "logo_file_id": logo.id,
                "button_color": "#0078d4",
                "button_text_color": "#ffffff",
                "button_text": "Connect",
                "tos_enabled": True,
                "tos": "By using this service, you agree to our terms and conditions. Unauthorized use is prohibited.",
                "languages": ["PL"],
            })
        ```

        :param str resource_name: The name of the resource.
        :param GuestAccessArgs args: The arguments to use to populate this resource's properties.
        :param pulumi.ResourceOptions opts: Options for the resource.
        """
        ...
    def __init__(__self__, resource_name: str, *args, **kwargs):
        resource_args, opts = _utilities.get_resource_args_opts(GuestAccessArgs, pulumi.ResourceOptions, *args, **kwargs)
        if resource_args is not None:
            __self__._internal_init(resource_name, opts, **resource_args.__dict__)
        else:
            __self__._internal_init(resource_name, *args, **kwargs)

    def _internal_init(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 allowed_subnet: Optional[pulumi.Input[_builtins.str]] = None,
                 auth: Optional[pulumi.Input[_builtins.str]] = None,
                 auth_url: Optional[pulumi.Input[_builtins.str]] = None,
                 authorize: Optional[pulumi.Input[Union['GuestAccessAuthorizeArgs', 'GuestAccessAuthorizeArgsDict']]] = None,
                 custom_ip: Optional[pulumi.Input[_builtins.str]] = None,
                 ec_enabled: Optional[pulumi.Input[_builtins.bool]] = None,
                 expire: Optional[pulumi.Input[_builtins.int]] = None,
                 expire_number: Optional[pulumi.Input[_builtins.int]] = None,
                 expire_unit: Optional[pulumi.Input[_builtins.int]] = None,
                 facebook: Optional[pulumi.Input[Union['GuestAccessFacebookArgs', 'GuestAccessFacebookArgsDict']]] = None,
                 facebook_wifi: Optional[pulumi.Input[Union['GuestAccessFacebookWifiArgs', 'GuestAccessFacebookWifiArgsDict']]] = None,
                 google: Optional[pulumi.Input[Union['GuestAccessGoogleArgs', 'GuestAccessGoogleArgsDict']]] = None,
                 ippay: Optional[pulumi.Input[Union['GuestAccessIppayArgs', 'GuestAccessIppayArgsDict']]] = None,
                 merchant_warrior: Optional[pulumi.Input[Union['GuestAccessMerchantWarriorArgs', 'GuestAccessMerchantWarriorArgsDict']]] = None,
                 password: Optional[pulumi.Input[_builtins.str]] = None,
                 payment_gateway: Optional[pulumi.Input[_builtins.str]] = None,
                 paypal: Optional[pulumi.Input[Union['GuestAccessPaypalArgs', 'GuestAccessPaypalArgsDict']]] = None,
                 portal_customization: Optional[pulumi.Input[Union['GuestAccessPortalCustomizationArgs', 'GuestAccessPortalCustomizationArgsDict']]] = None,
                 portal_enabled: Optional[pulumi.Input[_builtins.bool]] = None,
                 portal_hostname: Optional[pulumi.Input[_builtins.str]] = None,
                 portal_use_hostname: Optional[pulumi.Input[_builtins.bool]] = None,
                 quickpay: Optional[pulumi.Input[Union['GuestAccessQuickpayArgs', 'GuestAccessQuickpayArgsDict']]] = None,
                 radius: Optional[pulumi.Input[Union['GuestAccessRadiusArgs', 'GuestAccessRadiusArgsDict']]] = None,
                 redirect: Optional[pulumi.Input[Union['GuestAccessRedirectArgs', 'GuestAccessRedirectArgsDict']]] = None,
                 restricted_dns_servers: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 restricted_subnet: Optional[pulumi.Input[_builtins.str]] = None,
                 site: Optional[pulumi.Input[_builtins.str]] = None,
                 stripe: Optional[pulumi.Input[Union['GuestAccessStripeArgs', 'GuestAccessStripeArgsDict']]] = None,
                 template_engine: Optional[pulumi.Input[_builtins.str]] = None,
                 voucher_customized: Optional[pulumi.Input[_builtins.bool]] = None,
                 voucher_enabled: Optional[pulumi.Input[_builtins.bool]] = None,
                 wechat: Optional[pulumi.Input[Union['GuestAccessWechatArgs', 'GuestAccessWechatArgsDict']]] = None,
                 __props__=None):
        opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
        if not isinstance(opts, pulumi.ResourceOptions):
            raise TypeError('Expected resource options to be a ResourceOptions instance')
        if opts.id is None:
            if __props__ is not None:
                raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
            __props__ = GuestAccessArgs.__new__(GuestAccessArgs)

            __props__.__dict__["allowed_subnet"] = allowed_subnet
            __props__.__dict__["auth"] = auth
            __props__.__dict__["auth_url"] = auth_url
            __props__.__dict__["authorize"] = authorize
            __props__.__dict__["custom_ip"] = custom_ip
            __props__.__dict__["ec_enabled"] = ec_enabled
            __props__.__dict__["expire"] = expire
            __props__.__dict__["expire_number"] = expire_number
            __props__.__dict__["expire_unit"] = expire_unit
            __props__.__dict__["facebook"] = facebook
            __props__.__dict__["facebook_wifi"] = facebook_wifi
            __props__.__dict__["google"] = google
            __props__.__dict__["ippay"] = ippay
            __props__.__dict__["merchant_warrior"] = merchant_warrior
            __props__.__dict__["password"] = None if password is None else pulumi.Output.secret(password)
            __props__.__dict__["payment_gateway"] = payment_gateway
            __props__.__dict__["paypal"] = paypal
            __props__.__dict__["portal_customization"] = portal_customization
            __props__.__dict__["portal_enabled"] = portal_enabled
            __props__.__dict__["portal_hostname"] = portal_hostname
            __props__.__dict__["portal_use_hostname"] = portal_use_hostname
            __props__.__dict__["quickpay"] = quickpay
            __props__.__dict__["radius"] = radius
            __props__.__dict__["redirect"] = redirect
            __props__.__dict__["restricted_dns_servers"] = restricted_dns_servers
            __props__.__dict__["restricted_subnet"] = restricted_subnet
            __props__.__dict__["site"] = site
            __props__.__dict__["stripe"] = stripe
            __props__.__dict__["template_engine"] = template_engine
            __props__.__dict__["voucher_customized"] = voucher_customized
            __props__.__dict__["voucher_enabled"] = voucher_enabled
            __props__.__dict__["wechat"] = wechat
            __props__.__dict__["facebook_enabled"] = None
            __props__.__dict__["google_enabled"] = None
            __props__.__dict__["password_enabled"] = None
            __props__.__dict__["payment_enabled"] = None
            __props__.__dict__["radius_enabled"] = None
            __props__.__dict__["redirect_enabled"] = None
            __props__.__dict__["restricted_dns_enabled"] = None
            __props__.__dict__["wechat_enabled"] = None
        secret_opts = pulumi.ResourceOptions(additional_secret_outputs=["password"])
        opts = pulumi.ResourceOptions.merge(opts, secret_opts)
        super(GuestAccess, __self__).__init__(
            'unifi:setting/guestAccess:GuestAccess',
            resource_name,
            __props__,
            opts)

    @staticmethod
    def get(resource_name: str,
            id: pulumi.Input[str],
            opts: Optional[pulumi.ResourceOptions] = None,
            allowed_subnet: Optional[pulumi.Input[_builtins.str]] = None,
            auth: Optional[pulumi.Input[_builtins.str]] = None,
            auth_url: Optional[pulumi.Input[_builtins.str]] = None,
            authorize: Optional[pulumi.Input[Union['GuestAccessAuthorizeArgs', 'GuestAccessAuthorizeArgsDict']]] = None,
            custom_ip: Optional[pulumi.Input[_builtins.str]] = None,
            ec_enabled: Optional[pulumi.Input[_builtins.bool]] = None,
            expire: Optional[pulumi.Input[_builtins.int]] = None,
            expire_number: Optional[pulumi.Input[_builtins.int]] = None,
            expire_unit: Optional[pulumi.Input[_builtins.int]] = None,
            facebook: Optional[pulumi.Input[Union['GuestAccessFacebookArgs', 'GuestAccessFacebookArgsDict']]] = None,
            facebook_enabled: Optional[pulumi.Input[_builtins.bool]] = None,
            facebook_wifi: Optional[pulumi.Input[Union['GuestAccessFacebookWifiArgs', 'GuestAccessFacebookWifiArgsDict']]] = None,
            google: Optional[pulumi.Input[Union['GuestAccessGoogleArgs', 'GuestAccessGoogleArgsDict']]] = None,
            google_enabled: Optional[pulumi.Input[_builtins.bool]] = None,
            ippay: Optional[pulumi.Input[Union['GuestAccessIppayArgs', 'GuestAccessIppayArgsDict']]] = None,
            merchant_warrior: Optional[pulumi.Input[Union['GuestAccessMerchantWarriorArgs', 'GuestAccessMerchantWarriorArgsDict']]] = None,
            password: Optional[pulumi.Input[_builtins.str]] = None,
            password_enabled: Optional[pulumi.Input[_builtins.bool]] = None,
            payment_enabled: Optional[pulumi.Input[_builtins.bool]] = None,
            payment_gateway: Optional[pulumi.Input[_builtins.str]] = None,
            paypal: Optional[pulumi.Input[Union['GuestAccessPaypalArgs', 'GuestAccessPaypalArgsDict']]] = None,
            portal_customization: Optional[pulumi.Input[Union['GuestAccessPortalCustomizationArgs', 'GuestAccessPortalCustomizationArgsDict']]] = None,
            portal_enabled: Optional[pulumi.Input[_builtins.bool]] = None,
            portal_hostname: Optional[pulumi.Input[_builtins.str]] = None,
            portal_use_hostname: Optional[pulumi.Input[_builtins.bool]] = None,
            quickpay: Optional[pulumi.Input[Union['GuestAccessQuickpayArgs', 'GuestAccessQuickpayArgsDict']]] = None,
            radius: Optional[pulumi.Input[Union['GuestAccessRadiusArgs', 'GuestAccessRadiusArgsDict']]] = None,
            radius_enabled: Optional[pulumi.Input[_builtins.bool]] = None,
            redirect: Optional[pulumi.Input[Union['GuestAccessRedirectArgs', 'GuestAccessRedirectArgsDict']]] = None,
            redirect_enabled: Optional[pulumi.Input[_builtins.bool]] = None,
            restricted_dns_enabled: Optional[pulumi.Input[_builtins.bool]] = None,
            restricted_dns_servers: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
            restricted_subnet: Optional[pulumi.Input[_builtins.str]] = None,
            site: Optional[pulumi.Input[_builtins.str]] = None,
            stripe: Optional[pulumi.Input[Union['GuestAccessStripeArgs', 'GuestAccessStripeArgsDict']]] = None,
            template_engine: Optional[pulumi.Input[_builtins.str]] = None,
            voucher_customized: Optional[pulumi.Input[_builtins.bool]] = None,
            voucher_enabled: Optional[pulumi.Input[_builtins.bool]] = None,
            wechat: Optional[pulumi.Input[Union['GuestAccessWechatArgs', 'GuestAccessWechatArgsDict']]] = None,
            wechat_enabled: Optional[pulumi.Input[_builtins.bool]] = None) -> 'GuestAccess':
        """
        Get an existing GuestAccess resource's state with the given name, id, and optional extra
        properties used to qualify the lookup.

        :param str resource_name: The unique name of the resulting resource.
        :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[_builtins.str] allowed_subnet: Subnet allowed for guest access.
        :param pulumi.Input[_builtins.str] auth: Authentication method for guest access. Valid values are:
        :param pulumi.Input[_builtins.str] auth_url: URL for authentication. Must be a valid URL including the protocol.
        :param pulumi.Input[Union['GuestAccessAuthorizeArgs', 'GuestAccessAuthorizeArgsDict']] authorize: Authorize.net payment settings.
        :param pulumi.Input[_builtins.str] custom_ip: Custom IP address. Must be a valid IPv4 address (e.g., `192.168.1.1`).
        :param pulumi.Input[_builtins.bool] ec_enabled: Enable enterprise controller functionality.
        :param pulumi.Input[_builtins.int] expire: Expiration time for guest access.
        :param pulumi.Input[_builtins.int] expire_number: Number value for the expiration time.
        :param pulumi.Input[_builtins.int] expire_unit: Unit for the expiration time. Valid values are:
               * `1` - Minute
               * `60` - Hour
               * `1440` - Day
               * `10080` - Week
        :param pulumi.Input[Union['GuestAccessFacebookArgs', 'GuestAccessFacebookArgsDict']] facebook: Facebook authentication settings.
        :param pulumi.Input[_builtins.bool] facebook_enabled: Whether Facebook authentication for guest access is enabled.
        :param pulumi.Input[Union['GuestAccessFacebookWifiArgs', 'GuestAccessFacebookWifiArgsDict']] facebook_wifi: - Facebook auth entication
        :param pulumi.Input[Union['GuestAccessGoogleArgs', 'GuestAccessGoogleArgsDict']] google: Google authentication settings.
        :param pulumi.Input[_builtins.bool] google_enabled: Whether Google authentication for guest access is enabled.
        :param pulumi.Input[Union['GuestAccessIppayArgs', 'GuestAccessIppayArgsDict']] ippay: IPpay Payments settings.
        :param pulumi.Input[Union['GuestAccessMerchantWarriorArgs', 'GuestAccessMerchantWarriorArgsDict']] merchant_warrior: MerchantWarrior payment settings.
        :param pulumi.Input[_builtins.str] password: Password for guest access.
        :param pulumi.Input[_builtins.bool] password_enabled: Enable password authentication for guest access.
        :param pulumi.Input[_builtins.bool] payment_enabled: Enable payment for guest access.
        :param pulumi.Input[_builtins.str] payment_gateway: Payment gateway. Valid values are:
               * `paypal` - PayPal
               * `stripe` - Stripe
               * `authorize` - Authorize.net
               * `quickpay` - QuickPay
               * `merchantwarrior` - Merchant Warrior
               * `ippay` - IP Payments
        :param pulumi.Input[Union['GuestAccessPaypalArgs', 'GuestAccessPaypalArgsDict']] paypal: PayPal payment settings.
        :param pulumi.Input[Union['GuestAccessPortalCustomizationArgs', 'GuestAccessPortalCustomizationArgsDict']] portal_customization: Portal customization settings.
        :param pulumi.Input[_builtins.bool] portal_enabled: Enable the guest portal.
        :param pulumi.Input[_builtins.str] portal_hostname: Hostname to use for the captive portal.
        :param pulumi.Input[_builtins.bool] portal_use_hostname: Use a custom hostname for the portal.
        :param pulumi.Input[Union['GuestAccessQuickpayArgs', 'GuestAccessQuickpayArgsDict']] quickpay: QuickPay payment settings.
        :param pulumi.Input[Union['GuestAccessRadiusArgs', 'GuestAccessRadiusArgsDict']] radius: RADIUS authentication settings.
        :param pulumi.Input[_builtins.bool] radius_enabled: Whether RADIUS authentication for guest access is enabled.
        :param pulumi.Input[Union['GuestAccessRedirectArgs', 'GuestAccessRedirectArgsDict']] redirect: Redirect after authentication settings.
        :param pulumi.Input[_builtins.bool] redirect_enabled: Whether redirect after authentication is enabled.
        :param pulumi.Input[_builtins.bool] restricted_dns_enabled: Whether restricted DNS servers for guest networks are enabled.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] restricted_dns_servers: List of restricted DNS servers for guest networks. Each value must be a valid IPv4 address.
        :param pulumi.Input[_builtins.str] restricted_subnet: Subnet for restricted guest access.
        :param pulumi.Input[_builtins.str] site: The name of the UniFi site where this resource should be applied. If not specified, the default site will be used.
        :param pulumi.Input[Union['GuestAccessStripeArgs', 'GuestAccessStripeArgsDict']] stripe: Stripe payment settings.
        :param pulumi.Input[_builtins.str] template_engine: Template engine for the portal. Valid values are: `jsp`, `angular`.
        :param pulumi.Input[_builtins.bool] voucher_customized: Whether vouchers are customized.
        :param pulumi.Input[_builtins.bool] voucher_enabled: Enable voucher-based authentication for guest access.
        :param pulumi.Input[Union['GuestAccessWechatArgs', 'GuestAccessWechatArgsDict']] wechat: WeChat authentication settings.
        :param pulumi.Input[_builtins.bool] wechat_enabled: Whether WeChat authentication for guest access is enabled.
        """
        opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))

        __props__ = _GuestAccessState.__new__(_GuestAccessState)

        __props__.__dict__["allowed_subnet"] = allowed_subnet
        __props__.__dict__["auth"] = auth
        __props__.__dict__["auth_url"] = auth_url
        __props__.__dict__["authorize"] = authorize
        __props__.__dict__["custom_ip"] = custom_ip
        __props__.__dict__["ec_enabled"] = ec_enabled
        __props__.__dict__["expire"] = expire
        __props__.__dict__["expire_number"] = expire_number
        __props__.__dict__["expire_unit"] = expire_unit
        __props__.__dict__["facebook"] = facebook
        __props__.__dict__["facebook_enabled"] = facebook_enabled
        __props__.__dict__["facebook_wifi"] = facebook_wifi
        __props__.__dict__["google"] = google
        __props__.__dict__["google_enabled"] = google_enabled
        __props__.__dict__["ippay"] = ippay
        __props__.__dict__["merchant_warrior"] = merchant_warrior
        __props__.__dict__["password"] = password
        __props__.__dict__["password_enabled"] = password_enabled
        __props__.__dict__["payment_enabled"] = payment_enabled
        __props__.__dict__["payment_gateway"] = payment_gateway
        __props__.__dict__["paypal"] = paypal
        __props__.__dict__["portal_customization"] = portal_customization
        __props__.__dict__["portal_enabled"] = portal_enabled
        __props__.__dict__["portal_hostname"] = portal_hostname
        __props__.__dict__["portal_use_hostname"] = portal_use_hostname
        __props__.__dict__["quickpay"] = quickpay
        __props__.__dict__["radius"] = radius
        __props__.__dict__["radius_enabled"] = radius_enabled
        __props__.__dict__["redirect"] = redirect
        __props__.__dict__["redirect_enabled"] = redirect_enabled
        __props__.__dict__["restricted_dns_enabled"] = restricted_dns_enabled
        __props__.__dict__["restricted_dns_servers"] = restricted_dns_servers
        __props__.__dict__["restricted_subnet"] = restricted_subnet
        __props__.__dict__["site"] = site
        __props__.__dict__["stripe"] = stripe
        __props__.__dict__["template_engine"] = template_engine
        __props__.__dict__["voucher_customized"] = voucher_customized
        __props__.__dict__["voucher_enabled"] = voucher_enabled
        __props__.__dict__["wechat"] = wechat
        __props__.__dict__["wechat_enabled"] = wechat_enabled
        return GuestAccess(resource_name, opts=opts, __props__=__props__)

    @_builtins.property
    @pulumi.getter(name="allowedSubnet")
    def allowed_subnet(self) -> pulumi.Output[_builtins.str]:
        """
        Subnet allowed for guest access.
        """
        return pulumi.get(self, "allowed_subnet")

    @_builtins.property
    @pulumi.getter
    def auth(self) -> pulumi.Output[_builtins.str]:
        """
        Authentication method for guest access. Valid values are:
        """
        return pulumi.get(self, "auth")

    @_builtins.property
    @pulumi.getter(name="authUrl")
    def auth_url(self) -> pulumi.Output[_builtins.str]:
        """
        URL for authentication. Must be a valid URL including the protocol.
        """
        return pulumi.get(self, "auth_url")

    @_builtins.property
    @pulumi.getter
    def authorize(self) -> pulumi.Output[Optional['outputs.GuestAccessAuthorize']]:
        """
        Authorize.net payment settings.
        """
        return pulumi.get(self, "authorize")

    @_builtins.property
    @pulumi.getter(name="customIp")
    def custom_ip(self) -> pulumi.Output[Optional[_builtins.str]]:
        """
        Custom IP address. Must be a valid IPv4 address (e.g., `192.168.1.1`).
        """
        return pulumi.get(self, "custom_ip")

    @_builtins.property
    @pulumi.getter(name="ecEnabled")
    def ec_enabled(self) -> pulumi.Output[_builtins.bool]:
        """
        Enable enterprise controller functionality.
        """
        return pulumi.get(self, "ec_enabled")

    @_builtins.property
    @pulumi.getter
    def expire(self) -> pulumi.Output[_builtins.int]:
        """
        Expiration time for guest access.
        """
        return pulumi.get(self, "expire")

    @_builtins.property
    @pulumi.getter(name="expireNumber")
    def expire_number(self) -> pulumi.Output[_builtins.int]:
        """
        Number value for the expiration time.
        """
        return pulumi.get(self, "expire_number")

    @_builtins.property
    @pulumi.getter(name="expireUnit")
    def expire_unit(self) -> pulumi.Output[_builtins.int]:
        """
        Unit for the expiration time. Valid values are:
        * `1` - Minute
        * `60` - Hour
        * `1440` - Day
        * `10080` - Week
        """
        return pulumi.get(self, "expire_unit")

    @_builtins.property
    @pulumi.getter
    def facebook(self) -> pulumi.Output[Optional['outputs.GuestAccessFacebook']]:
        """
        Facebook authentication settings.
        """
        return pulumi.get(self, "facebook")

    @_builtins.property
    @pulumi.getter(name="facebookEnabled")
    def facebook_enabled(self) -> pulumi.Output[_builtins.bool]:
        """
        Whether Facebook authentication for guest access is enabled.
        """
        return pulumi.get(self, "facebook_enabled")

    @_builtins.property
    @pulumi.getter(name="facebookWifi")
    def facebook_wifi(self) -> pulumi.Output[Optional['outputs.GuestAccessFacebookWifi']]:
        """
        - Facebook auth entication
        """
        return pulumi.get(self, "facebook_wifi")

    @_builtins.property
    @pulumi.getter
    def google(self) -> pulumi.Output[Optional['outputs.GuestAccessGoogle']]:
        """
        Google authentication settings.
        """
        return pulumi.get(self, "google")

    @_builtins.property
    @pulumi.getter(name="googleEnabled")
    def google_enabled(self) -> pulumi.Output[_builtins.bool]:
        """
        Whether Google authentication for guest access is enabled.
        """
        return pulumi.get(self, "google_enabled")

    @_builtins.property
    @pulumi.getter
    def ippay(self) -> pulumi.Output[Optional['outputs.GuestAccessIppay']]:
        """
        IPpay Payments settings.
        """
        return pulumi.get(self, "ippay")

    @_builtins.property
    @pulumi.getter(name="merchantWarrior")
    def merchant_warrior(self) -> pulumi.Output[Optional['outputs.GuestAccessMerchantWarrior']]:
        """
        MerchantWarrior payment settings.
        """
        return pulumi.get(self, "merchant_warrior")

    @_builtins.property
    @pulumi.getter
    def password(self) -> pulumi.Output[Optional[_builtins.str]]:
        """
        Password for guest access.
        """
        return pulumi.get(self, "password")

    @_builtins.property
    @pulumi.getter(name="passwordEnabled")
    def password_enabled(self) -> pulumi.Output[_builtins.bool]:
        """
        Enable password authentication for guest access.
        """
        return pulumi.get(self, "password_enabled")

    @_builtins.property
    @pulumi.getter(name="paymentEnabled")
    def payment_enabled(self) -> pulumi.Output[_builtins.bool]:
        """
        Enable payment for guest access.
        """
        return pulumi.get(self, "payment_enabled")

    @_builtins.property
    @pulumi.getter(name="paymentGateway")
    def payment_gateway(self) -> pulumi.Output[Optional[_builtins.str]]:
        """
        Payment gateway. Valid values are:
        * `paypal` - PayPal
        * `stripe` - Stripe
        * `authorize` - Authorize.net
        * `quickpay` - QuickPay
        * `merchantwarrior` - Merchant Warrior
        * `ippay` - IP Payments
        """
        return pulumi.get(self, "payment_gateway")

    @_builtins.property
    @pulumi.getter
    def paypal(self) -> pulumi.Output[Optional['outputs.GuestAccessPaypal']]:
        """
        PayPal payment settings.
        """
        return pulumi.get(self, "paypal")

    @_builtins.property
    @pulumi.getter(name="portalCustomization")
    def portal_customization(self) -> pulumi.Output['outputs.GuestAccessPortalCustomization']:
        """
        Portal customization settings.
        """
        return pulumi.get(self, "portal_customization")

    @_builtins.property
    @pulumi.getter(name="portalEnabled")
    def portal_enabled(self) -> pulumi.Output[_builtins.bool]:
        """
        Enable the guest portal.
        """
        return pulumi.get(self, "portal_enabled")

    @_builtins.property
    @pulumi.getter(name="portalHostname")
    def portal_hostname(self) -> pulumi.Output[_builtins.str]:
        """
        Hostname to use for the captive portal.
        """
        return pulumi.get(self, "portal_hostname")

    @_builtins.property
    @pulumi.getter(name="portalUseHostname")
    def portal_use_hostname(self) -> pulumi.Output[_builtins.bool]:
        """
        Use a custom hostname for the portal.
        """
        return pulumi.get(self, "portal_use_hostname")

    @_builtins.property
    @pulumi.getter
    def quickpay(self) -> pulumi.Output[Optional['outputs.GuestAccessQuickpay']]:
        """
        QuickPay payment settings.
        """
        return pulumi.get(self, "quickpay")

    @_builtins.property
    @pulumi.getter
    def radius(self) -> pulumi.Output[Optional['outputs.GuestAccessRadius']]:
        """
        RADIUS authentication settings.
        """
        return pulumi.get(self, "radius")

    @_builtins.property
    @pulumi.getter(name="radiusEnabled")
    def radius_enabled(self) -> pulumi.Output[_builtins.bool]:
        """
        Whether RADIUS authentication for guest access is enabled.
        """
        return pulumi.get(self, "radius_enabled")

    @_builtins.property
    @pulumi.getter
    def redirect(self) -> pulumi.Output[Optional['outputs.GuestAccessRedirect']]:
        """
        Redirect after authentication settings.
        """
        return pulumi.get(self, "redirect")

    @_builtins.property
    @pulumi.getter(name="redirectEnabled")
    def redirect_enabled(self) -> pulumi.Output[_builtins.bool]:
        """
        Whether redirect after authentication is enabled.
        """
        return pulumi.get(self, "redirect_enabled")

    @_builtins.property
    @pulumi.getter(name="restrictedDnsEnabled")
    def restricted_dns_enabled(self) -> pulumi.Output[_builtins.bool]:
        """
        Whether restricted DNS servers for guest networks are enabled.
        """
        return pulumi.get(self, "restricted_dns_enabled")

    @_builtins.property
    @pulumi.getter(name="restrictedDnsServers")
    def restricted_dns_servers(self) -> pulumi.Output[Sequence[_builtins.str]]:
        """
        List of restricted DNS servers for guest networks. Each value must be a valid IPv4 address.
        """
        return pulumi.get(self, "restricted_dns_servers")

    @_builtins.property
    @pulumi.getter(name="restrictedSubnet")
    def restricted_subnet(self) -> pulumi.Output[_builtins.str]:
        """
        Subnet for restricted guest access.
        """
        return pulumi.get(self, "restricted_subnet")

    @_builtins.property
    @pulumi.getter
    def site(self) -> pulumi.Output[_builtins.str]:
        """
        The name of the UniFi site where this resource should be applied. If not specified, the default site will be used.
        """
        return pulumi.get(self, "site")

    @_builtins.property
    @pulumi.getter
    def stripe(self) -> pulumi.Output[Optional['outputs.GuestAccessStripe']]:
        """
        Stripe payment settings.
        """
        return pulumi.get(self, "stripe")

    @_builtins.property
    @pulumi.getter(name="templateEngine")
    def template_engine(self) -> pulumi.Output[_builtins.str]:
        """
        Template engine for the portal. Valid values are: `jsp`, `angular`.
        """
        return pulumi.get(self, "template_engine")

    @_builtins.property
    @pulumi.getter(name="voucherCustomized")
    def voucher_customized(self) -> pulumi.Output[_builtins.bool]:
        """
        Whether vouchers are customized.
        """
        return pulumi.get(self, "voucher_customized")

    @_builtins.property
    @pulumi.getter(name="voucherEnabled")
    def voucher_enabled(self) -> pulumi.Output[_builtins.bool]:
        """
        Enable voucher-based authentication for guest access.
        """
        return pulumi.get(self, "voucher_enabled")

    @_builtins.property
    @pulumi.getter
    def wechat(self) -> pulumi.Output[Optional['outputs.GuestAccessWechat']]:
        """
        WeChat authentication settings.
        """
        return pulumi.get(self, "wechat")

    @_builtins.property
    @pulumi.getter(name="wechatEnabled")
    def wechat_enabled(self) -> pulumi.Output[_builtins.bool]:
        """
        Whether WeChat authentication for guest access is enabled.
        """
        return pulumi.get(self, "wechat_enabled")

