<filename>sdk/dotnet/WirelesscontrollerWtp.cs// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

using System;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Threading.Tasks;
using Pulumi.Serialization;
using Pulumi;

namespace Pulumiverse.Fortios
{
    /// <summary>
    /// Configure Wireless Termination Points (WTPs), that is, FortiAPs or APs to be managed by FortiGate.
    /// 
    /// ## Import
    /// 
    /// WirelessController Wtp can be imported using any of these accepted formats
    /// 
    /// ```sh
    ///  $ pulumi import fortios:index/wirelesscontrollerWtp:WirelesscontrollerWtp labelname {{wtp_id}}
    /// ```
    /// 
    ///  If you do not want to import arguments of block$ export "FORTIOS_IMPORT_TABLE"="false"
    /// 
    /// ```sh
    ///  $ pulumi import fortios:index/wirelesscontrollerWtp:WirelesscontrollerWtp labelname {{wtp_id}}
    /// ```
    /// 
    ///  $ unset "FORTIOS_IMPORT_TABLE"
    /// </summary>
    [FortiosResourceType("fortios:index/wirelesscontrollerWtp:WirelesscontrollerWtp")]
    public partial class WirelesscontrollerWtp : global::Pulumi.CustomResource
    {
        /// <summary>
        /// Configure how the FortiGate operating as a wireless controller discovers and manages this WTP, AP or FortiAP. Valid values: `discovered`, `disable`, `enable`.
        /// </summary>
        [Output("admin")]
        public Output<string> Admin { get; private set; } = null!;

        /// <summary>
        /// Control management access to the managed WTP, FortiAP, or AP. Separate entries with a space.
        /// </summary>
        [Output("allowaccess")]
        public Output<string> Allowaccess { get; private set; } = null!;

        /// <summary>
        /// AP local configuration profile name.
        /// </summary>
        [Output("apcfgProfile")]
        public Output<string> ApcfgProfile { get; private set; } = null!;

        /// <summary>
        /// Bonjour profile name.
        /// </summary>
        [Output("bonjourProfile")]
        public Output<string> BonjourProfile { get; private set; } = null!;

        /// <summary>
        /// WTP latitude coordinate.
        /// </summary>
        [Output("coordinateLatitude")]
        public Output<string> CoordinateLatitude { get; private set; } = null!;

        /// <summary>
        /// WTP longitude coordinate.
        /// </summary>
        [Output("coordinateLongitude")]
        public Output<string> CoordinateLongitude { get; private set; } = null!;

        /// <summary>
        /// Sort sub-tables, please do not set this parameter when configuring static sub-tables. Options: [ false, true, natural, alphabetical ]. false: Default value, do not sort tables; true/natural: sort tables in natural order. For example: [ a10, a2 ] -&gt; [ a2, a10 ]; alphabetical: sort tables in alphabetical order. For example: [ a10, a2 ] -&gt; [ a10, a2 ].
        /// </summary>
        [Output("dynamicSortSubtable")]
        public Output<string?> DynamicSortSubtable { get; private set; } = null!;

        /// <summary>
        /// Firmware version to provision to this FortiAP on bootup (major.minor.build, i.e. 6.2.1234).
        /// </summary>
        [Output("firmwareProvision")]
        public Output<string> FirmwareProvision { get; private set; } = null!;

        /// <summary>
        /// Enable/disable one-time automatic provisioning of the latest firmware version. Valid values: `disable`, `once`.
        /// </summary>
        [Output("firmwareProvisionLatest")]
        public Output<string> FirmwareProvisionLatest { get; private set; } = null!;

        /// <summary>
        /// Enable/disable WTP image download. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("imageDownload")]
        public Output<string> ImageDownload { get; private set; } = null!;

        /// <summary>
        /// Index (0 - 4294967295).
        /// </summary>
        [Output("index")]
        public Output<int> Index { get; private set; } = null!;

        /// <summary>
        /// Method by which IP fragmentation is prevented for CAPWAP tunneled control and data packets (default = tcp-mss-adjust). Valid values: `tcp-mss-adjust`, `icmp-unreachable`.
        /// </summary>
        [Output("ipFragmentPreventing")]
        public Output<string> IpFragmentPreventing { get; private set; } = null!;

        /// <summary>
        /// WTP LAN port mapping. The structure of `lan` block is documented below.
        /// </summary>
        [Output("lan")]
        public Output<Outputs.WirelesscontrollerWtpLan> Lan { get; private set; } = null!;

        /// <summary>
        /// Enable to allow the FortiAPs LEDs to light. Disable to keep the LEDs off. You may want to keep the LEDs off so they are not distracting in low light areas etc. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("ledState")]
        public Output<string> LedState { get; private set; } = null!;

        /// <summary>
        /// Field for describing the physical location of the WTP, AP or FortiAP.
        /// </summary>
        [Output("location")]
        public Output<string> Location { get; private set; } = null!;

        /// <summary>
        /// Set the managed WTP, FortiAP, or AP's administrator password.
        /// </summary>
        [Output("loginPasswd")]
        public Output<string?> LoginPasswd { get; private set; } = null!;

        /// <summary>
        /// Change or reset the administrator password of a managed WTP, FortiAP or AP (yes, default, or no, default = no). Valid values: `yes`, `default`, `no`.
        /// </summary>
        [Output("loginPasswdChange")]
        public Output<string> LoginPasswdChange { get; private set; } = null!;

        /// <summary>
        /// Enable/disable mesh Ethernet bridge when WTP is configured as a mesh branch/leaf AP. Valid values: `default`, `enable`, `disable`.
        /// </summary>
        [Output("meshBridgeEnable")]
        public Output<string> MeshBridgeEnable { get; private set; } = null!;

        /// <summary>
        /// WTP, AP or FortiAP configuration name.
        /// </summary>
        [Output("name")]
        public Output<string> Name { get; private set; } = null!;

        /// <summary>
        /// Enable to override the WTP profile management access configuration. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("overrideAllowaccess")]
        public Output<string> OverrideAllowaccess { get; private set; } = null!;

        /// <summary>
        /// Enable/disable overriding the WTP profile IP fragment prevention setting. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("overrideIpFragment")]
        public Output<string> OverrideIpFragment { get; private set; } = null!;

        /// <summary>
        /// Enable to override the WTP profile LAN port setting. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("overrideLan")]
        public Output<string> OverrideLan { get; private set; } = null!;

        /// <summary>
        /// Enable to override the profile LED state setting for this FortiAP. You must enable this option to use the led-state command to turn off the FortiAP's LEDs. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("overrideLedState")]
        public Output<string> OverrideLedState { get; private set; } = null!;

        /// <summary>
        /// Enable to override the WTP profile login-password (administrator password) setting. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("overrideLoginPasswdChange")]
        public Output<string> OverrideLoginPasswdChange { get; private set; } = null!;

        /// <summary>
        /// Enable/disable overriding the WTP profile split tunneling setting. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("overrideSplitTunnel")]
        public Output<string> OverrideSplitTunnel { get; private set; } = null!;

        /// <summary>
        /// Enable/disable overriding the wan-port-mode in the WTP profile. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("overrideWanPortMode")]
        public Output<string> OverrideWanPortMode { get; private set; } = null!;

        /// <summary>
        /// Configuration options for radio 1. The structure of `radio_1` block is documented below.
        /// </summary>
        [Output("radio1")]
        public Output<Outputs.WirelesscontrollerWtpRadio1> Radio1 { get; private set; } = null!;

        /// <summary>
        /// Configuration options for radio 2. The structure of `radio_2` block is documented below.
        /// </summary>
        [Output("radio2")]
        public Output<Outputs.WirelesscontrollerWtpRadio2> Radio2 { get; private set; } = null!;

        /// <summary>
        /// Configuration options for radio 3. The structure of `radio_3` block is documented below.
        /// </summary>
        [Output("radio3")]
        public Output<Outputs.WirelesscontrollerWtpRadio3> Radio3 { get; private set; } = null!;

        /// <summary>
        /// Configuration options for radio 4. The structure of `radio_4` block is documented below.
        /// </summary>
        [Output("radio4")]
        public Output<Outputs.WirelesscontrollerWtpRadio4> Radio4 { get; private set; } = null!;

        /// <summary>
        /// Region name WTP is associated with.
        /// </summary>
        [Output("region")]
        public Output<string> Region { get; private set; } = null!;

        /// <summary>
        /// Relative horizontal region coordinate (between 0 and 1).
        /// </summary>
        [Output("regionX")]
        public Output<string> RegionX { get; private set; } = null!;

        /// <summary>
        /// Relative vertical region coordinate (between 0 and 1).
        /// </summary>
        [Output("regionY")]
        public Output<string> RegionY { get; private set; } = null!;

        /// <summary>
        /// Enable/disable automatically adding local subnetwork of FortiAP to split-tunneling ACL (default = disable). Valid values: `enable`, `disable`.
        /// </summary>
        [Output("splitTunnelingAclLocalApSubnet")]
        public Output<string> SplitTunnelingAclLocalApSubnet { get; private set; } = null!;

        /// <summary>
        /// Split tunneling ACL path is local/tunnel. Valid values: `tunnel`, `local`.
        /// </summary>
        [Output("splitTunnelingAclPath")]
        public Output<string> SplitTunnelingAclPath { get; private set; } = null!;

        /// <summary>
        /// Split tunneling ACL filter list. The structure of `split_tunneling_acl` block is documented below.
        /// </summary>
        [Output("splitTunnelingAcls")]
        public Output<ImmutableArray<Outputs.WirelesscontrollerWtpSplitTunnelingAcl>> SplitTunnelingAcls { get; private set; } = null!;

        /// <summary>
        /// Downlink tunnel MTU in octets. Set the value to either 0 (by default), 576, or 1500.
        /// </summary>
        [Output("tunMtuDownlink")]
        public Output<int> TunMtuDownlink { get; private set; } = null!;

        /// <summary>
        /// Uplink tunnel maximum transmission unit (MTU) in octets (eight-bit bytes). Set the value to either 0 (by default), 576, or 1500.
        /// </summary>
        [Output("tunMtuUplink")]
        public Output<int> TunMtuUplink { get; private set; } = null!;

        /// <summary>
        /// Universally Unique Identifier (UUID; automatically assigned but can be manually reset).
        /// </summary>
        [Output("uuid")]
        public Output<string> Uuid { get; private set; } = null!;

        /// <summary>
        /// Specifies the vdom to which the resource will be applied when the FortiGate unit is running in VDOM mode. Only one vdom can be specified. If you want to inherit the vdom configuration of the provider, please do not set this parameter.
        /// </summary>
        [Output("vdomparam")]
        public Output<string?> Vdomparam { get; private set; } = null!;

        /// <summary>
        /// Enable/disable using the FortiAP WAN port as a LAN port. Valid values: `wan-lan`, `wan-only`.
        /// </summary>
        [Output("wanPortMode")]
        public Output<string> WanPortMode { get; private set; } = null!;

        /// <summary>
        /// WTP ID.
        /// </summary>
        [Output("wtpId")]
        public Output<string> WtpId { get; private set; } = null!;

        /// <summary>
        /// WTP, AP, or FortiAP operating mode; normal (by default) or remote. A tunnel mode SSID can be assigned to an AP in normal mode but not remote mode, while a local-bridge mode SSID can be assigned to an AP in either normal mode or remote mode. Valid values: `normal`, `remote`.
        /// </summary>
        [Output("wtpMode")]
        public Output<string> WtpMode { get; private set; } = null!;

        /// <summary>
        /// WTP profile name to apply to this WTP, AP or FortiAP.
        /// </summary>
        [Output("wtpProfile")]
        public Output<string> WtpProfile { get; private set; } = null!;


        /// <summary>
        /// Create a WirelesscontrollerWtp resource with the given unique name, arguments, and options.
        /// </summary>
        ///
        /// <param name="name">The unique name of the resource</param>
        /// <param name="args">The arguments used to populate this resource's properties</param>
        /// <param name="options">A bag of options that control this resource's behavior</param>
        public WirelesscontrollerWtp(string name, WirelesscontrollerWtpArgs args, CustomResourceOptions? options = null)
            : base("fortios:index/wirelesscontrollerWtp:WirelesscontrollerWtp", name, args ?? new WirelesscontrollerWtpArgs(), MakeResourceOptions(options, ""))
        {
        }

        private WirelesscontrollerWtp(string name, Input<string> id, WirelesscontrollerWtpState? state = null, CustomResourceOptions? options = null)
            : base("fortios:index/wirelesscontrollerWtp:WirelesscontrollerWtp", name, state, MakeResourceOptions(options, id))
        {
        }

        private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input<string>? id)
        {
            var defaultOptions = new CustomResourceOptions
            {
                Version = Utilities.Version,
                PluginDownloadURL = "github://api.github.com/pulumiverse/pulumi-fortios",
                AdditionalSecretOutputs =
                {
                    "loginPasswd",
                },
            };
            var merged = CustomResourceOptions.Merge(defaultOptions, options);
            // Override the ID if one was specified for consistency with other language SDKs.
            merged.Id = id ?? merged.Id;
            return merged;
        }
        /// <summary>
        /// Get an existing WirelesscontrollerWtp resource's state with the given name, ID, and optional extra
        /// properties used to qualify the lookup.
        /// </summary>
        ///
        /// <param name="name">The unique name of the resulting resource.</param>
        /// <param name="id">The unique provider ID of the resource to lookup.</param>
        /// <param name="state">Any extra arguments used during the lookup.</param>
        /// <param name="options">A bag of options that control this resource's behavior</param>
        public static WirelesscontrollerWtp Get(string name, Input<string> id, WirelesscontrollerWtpState? state = null, CustomResourceOptions? options = null)
        {
            return new WirelesscontrollerWtp(name, id, state, options);
        }
    }

    public sealed class WirelesscontrollerWtpArgs : global::Pulumi.ResourceArgs
    {
        /// <summary>
        /// Configure how the FortiGate operating as a wireless controller discovers and manages this WTP, AP or FortiAP. Valid values: `discovered`, `disable`, `enable`.
        /// </summary>
        [Input("admin")]
        public Input<string>? Admin { get; set; }

        /// <summary>
        /// Control management access to the managed WTP, FortiAP, or AP. Separate entries with a space.
        /// </summary>
        [Input("allowaccess")]
        public Input<string>? Allowaccess { get; set; }

        /// <summary>
        /// AP local configuration profile name.
        /// </summary>
        [Input("apcfgProfile")]
        public Input<string>? ApcfgProfile { get; set; }

        /// <summary>
        /// Bonjour profile name.
        /// </summary>
        [Input("bonjourProfile")]
        public Input<string>? BonjourProfile { get; set; }

        /// <summary>
        /// WTP latitude coordinate.
        /// </summary>
        [Input("coordinateLatitude")]
        public Input<string>? CoordinateLatitude { get; set; }

        /// <summary>
        /// WTP longitude coordinate.
        /// </summary>
        [Input("coordinateLongitude")]
        public Input<string>? CoordinateLongitude { get; set; }

        /// <summary>
        /// Sort sub-tables, please do not set this parameter when configuring static sub-tables. Options: [ false, true, natural, alphabetical ]. false: Default value, do not sort tables; true/natural: sort tables in natural order. For example: [ a10, a2 ] -&gt; [ a2, a10 ]; alphabetical: sort tables in alphabetical order. For example: [ a10, a2 ] -&gt; [ a10, a2 ].
        /// </summary>
        [Input("dynamicSortSubtable")]
        public Input<string>? DynamicSortSubtable { get; set; }

        /// <summary>
        /// Firmware version to provision to this FortiAP on bootup (major.minor.build, i.e. 6.2.1234).
        /// </summary>
        [Input("firmwareProvision")]
        public Input<string>? FirmwareProvision { get; set; }

        /// <summary>
        /// Enable/disable one-time automatic provisioning of the latest firmware version. Valid values: `disable`, `once`.
        /// </summary>
        [Input("firmwareProvisionLatest")]
        public Input<string>? FirmwareProvisionLatest { get; set; }

        /// <summary>
        /// Enable/disable WTP image download. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("imageDownload")]
        public Input<string>? ImageDownload { get; set; }

        /// <summary>
        /// Index (0 - 4294967295).
        /// </summary>
        [Input("index")]
        public Input<int>? Index { get; set; }

        /// <summary>
        /// Method by which IP fragmentation is prevented for CAPWAP tunneled control and data packets (default = tcp-mss-adjust). Valid values: `tcp-mss-adjust`, `icmp-unreachable`.
        /// </summary>
        [Input("ipFragmentPreventing")]
        public Input<string>? IpFragmentPreventing { get; set; }

        /// <summary>
        /// WTP LAN port mapping. The structure of `lan` block is documented below.
        /// </summary>
        [Input("lan")]
        public Input<Inputs.WirelesscontrollerWtpLanArgs>? Lan { get; set; }

        /// <summary>
        /// Enable to allow the FortiAPs LEDs to light. Disable to keep the LEDs off. You may want to keep the LEDs off so they are not distracting in low light areas etc. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("ledState")]
        public Input<string>? LedState { get; set; }

        /// <summary>
        /// Field for describing the physical location of the WTP, AP or FortiAP.
        /// </summary>
        [Input("location")]
        public Input<string>? Location { get; set; }

        [Input("loginPasswd")]
        private Input<string>? _loginPasswd;

        /// <summary>
        /// Set the managed WTP, FortiAP, or AP's administrator password.
        /// </summary>
        public Input<string>? LoginPasswd
        {
            get => _loginPasswd;
            set
            {
                var emptySecret = Output.CreateSecret(0);
                _loginPasswd = Output.Tuple<Input<string>?, int>(value, emptySecret).Apply(t => t.Item1);
            }
        }

        /// <summary>
        /// Change or reset the administrator password of a managed WTP, FortiAP or AP (yes, default, or no, default = no). Valid values: `yes`, `default`, `no`.
        /// </summary>
        [Input("loginPasswdChange")]
        public Input<string>? LoginPasswdChange { get; set; }

        /// <summary>
        /// Enable/disable mesh Ethernet bridge when WTP is configured as a mesh branch/leaf AP. Valid values: `default`, `enable`, `disable`.
        /// </summary>
        [Input("meshBridgeEnable")]
        public Input<string>? MeshBridgeEnable { get; set; }

        /// <summary>
        /// WTP, AP or FortiAP configuration name.
        /// </summary>
        [Input("name")]
        public Input<string>? Name { get; set; }

        /// <summary>
        /// Enable to override the WTP profile management access configuration. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("overrideAllowaccess")]
        public Input<string>? OverrideAllowaccess { get; set; }

        /// <summary>
        /// Enable/disable overriding the WTP profile IP fragment prevention setting. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("overrideIpFragment")]
        public Input<string>? OverrideIpFragment { get; set; }

        /// <summary>
        /// Enable to override the WTP profile LAN port setting. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("overrideLan")]
        public Input<string>? OverrideLan { get; set; }

        /// <summary>
        /// Enable to override the profile LED state setting for this FortiAP. You must enable this option to use the led-state command to turn off the FortiAP's LEDs. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("overrideLedState")]
        public Input<string>? OverrideLedState { get; set; }

        /// <summary>
        /// Enable to override the WTP profile login-password (administrator password) setting. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("overrideLoginPasswdChange")]
        public Input<string>? OverrideLoginPasswdChange { get; set; }

        /// <summary>
        /// Enable/disable overriding the WTP profile split tunneling setting. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("overrideSplitTunnel")]
        public Input<string>? OverrideSplitTunnel { get; set; }

        /// <summary>
        /// Enable/disable overriding the wan-port-mode in the WTP profile. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("overrideWanPortMode")]
        public Input<string>? OverrideWanPortMode { get; set; }

        /// <summary>
        /// Configuration options for radio 1. The structure of `radio_1` block is documented below.
        /// </summary>
        [Input("radio1")]
        public Input<Inputs.WirelesscontrollerWtpRadio1Args>? Radio1 { get; set; }

        /// <summary>
        /// Configuration options for radio 2. The structure of `radio_2` block is documented below.
        /// </summary>
        [Input("radio2")]
        public Input<Inputs.WirelesscontrollerWtpRadio2Args>? Radio2 { get; set; }

        /// <summary>
        /// Configuration options for radio 3. The structure of `radio_3` block is documented below.
        /// </summary>
        [Input("radio3")]
        public Input<Inputs.WirelesscontrollerWtpRadio3Args>? Radio3 { get; set; }

        /// <summary>
        /// Configuration options for radio 4. The structure of `radio_4` block is documented below.
        /// </summary>
        [Input("radio4")]
        public Input<Inputs.WirelesscontrollerWtpRadio4Args>? Radio4 { get; set; }

        /// <summary>
        /// Region name WTP is associated with.
        /// </summary>
        [Input("region")]
        public Input<string>? Region { get; set; }

        /// <summary>
        /// Relative horizontal region coordinate (between 0 and 1).
        /// </summary>
        [Input("regionX")]
        public Input<string>? RegionX { get; set; }

        /// <summary>
        /// Relative vertical region coordinate (between 0 and 1).
        /// </summary>
        [Input("regionY")]
        public Input<string>? RegionY { get; set; }

        /// <summary>
        /// Enable/disable automatically adding local subnetwork of FortiAP to split-tunneling ACL (default = disable). Valid values: `enable`, `disable`.
        /// </summary>
        [Input("splitTunnelingAclLocalApSubnet")]
        public Input<string>? SplitTunnelingAclLocalApSubnet { get; set; }

        /// <summary>
        /// Split tunneling ACL path is local/tunnel. Valid values: `tunnel`, `local`.
        /// </summary>
        [Input("splitTunnelingAclPath")]
        public Input<string>? SplitTunnelingAclPath { get; set; }

        [Input("splitTunnelingAcls")]
        private InputList<Inputs.WirelesscontrollerWtpSplitTunnelingAclArgs>? _splitTunnelingAcls;

        /// <summary>
        /// Split tunneling ACL filter list. The structure of `split_tunneling_acl` block is documented below.
        /// </summary>
        public InputList<Inputs.WirelesscontrollerWtpSplitTunnelingAclArgs> SplitTunnelingAcls
        {
            get => _splitTunnelingAcls ?? (_splitTunnelingAcls = new InputList<Inputs.WirelesscontrollerWtpSplitTunnelingAclArgs>());
            set => _splitTunnelingAcls = value;
        }

        /// <summary>
        /// Downlink tunnel MTU in octets. Set the value to either 0 (by default), 576, or 1500.
        /// </summary>
        [Input("tunMtuDownlink")]
        public Input<int>? TunMtuDownlink { get; set; }

        /// <summary>
        /// Uplink tunnel maximum transmission unit (MTU) in octets (eight-bit bytes). Set the value to either 0 (by default), 576, or 1500.
        /// </summary>
        [Input("tunMtuUplink")]
        public Input<int>? TunMtuUplink { get; set; }

        /// <summary>
        /// Universally Unique Identifier (UUID; automatically assigned but can be manually reset).
        /// </summary>
        [Input("uuid")]
        public Input<string>? Uuid { get; set; }

        /// <summary>
        /// Specifies the vdom to which the resource will be applied when the FortiGate unit is running in VDOM mode. Only one vdom can be specified. If you want to inherit the vdom configuration of the provider, please do not set this parameter.
        /// </summary>
        [Input("vdomparam")]
        public Input<string>? Vdomparam { get; set; }

        /// <summary>
        /// Enable/disable using the FortiAP WAN port as a LAN port. Valid values: `wan-lan`, `wan-only`.
        /// </summary>
        [Input("wanPortMode")]
        public Input<string>? WanPortMode { get; set; }

        /// <summary>
        /// WTP ID.
        /// </summary>
        [Input("wtpId")]
        public Input<string>? WtpId { get; set; }

        /// <summary>
        /// WTP, AP, or FortiAP operating mode; normal (by default) or remote. A tunnel mode SSID can be assigned to an AP in normal mode but not remote mode, while a local-bridge mode SSID can be assigned to an AP in either normal mode or remote mode. Valid values: `normal`, `remote`.
        /// </summary>
        [Input("wtpMode")]
        public Input<string>? WtpMode { get; set; }

        /// <summary>
        /// WTP profile name to apply to this WTP, AP or FortiAP.
        /// </summary>
        [Input("wtpProfile", required: true)]
        public Input<string> WtpProfile { get; set; } = null!;

        public WirelesscontrollerWtpArgs()
        {
        }
        public static new WirelesscontrollerWtpArgs Empty => new WirelesscontrollerWtpArgs();
    }

    public sealed class WirelesscontrollerWtpState : global::Pulumi.ResourceArgs
    {
        /// <summary>
        /// Configure how the FortiGate operating as a wireless controller discovers and manages this WTP, AP or FortiAP. Valid values: `discovered`, `disable`, `enable`.
        /// </summary>
        [Input("admin")]
        public Input<string>? Admin { get; set; }

        /// <summary>
        /// Control management access to the managed WTP, FortiAP, or AP. Separate entries with a space.
        /// </summary>
        [Input("allowaccess")]
        public Input<string>? Allowaccess { get; set; }

        /// <summary>
        /// AP local configuration profile name.
        /// </summary>
        [Input("apcfgProfile")]
        public Input<string>? ApcfgProfile { get; set; }

        /// <summary>
        /// Bonjour profile name.
        /// </summary>
        [Input("bonjourProfile")]
        public Input<string>? BonjourProfile { get; set; }

        /// <summary>
        /// WTP latitude coordinate.
        /// </summary>
        [Input("coordinateLatitude")]
        public Input<string>? CoordinateLatitude { get; set; }

        /// <summary>
        /// WTP longitude coordinate.
        /// </summary>
        [Input("coordinateLongitude")]
        public Input<string>? CoordinateLongitude { get; set; }

        /// <summary>
        /// Sort sub-tables, please do not set this parameter when configuring static sub-tables. Options: [ false, true, natural, alphabetical ]. false: Default value, do not sort tables; true/natural: sort tables in natural order. For example: [ a10, a2 ] -&gt; [ a2, a10 ]; alphabetical: sort tables in alphabetical order. For example: [ a10, a2 ] -&gt; [ a10, a2 ].
        /// </summary>
        [Input("dynamicSortSubtable")]
        public Input<string>? DynamicSortSubtable { get; set; }

        /// <summary>
        /// Firmware version to provision to this FortiAP on bootup (major.minor.build, i.e. 6.2.1234).
        /// </summary>
        [Input("firmwareProvision")]
        public Input<string>? FirmwareProvision { get; set; }

        /// <summary>
        /// Enable/disable one-time automatic provisioning of the latest firmware version. Valid values: `disable`, `once`.
        /// </summary>
        [Input("firmwareProvisionLatest")]
        public Input<string>? FirmwareProvisionLatest { get; set; }

        /// <summary>
        /// Enable/disable WTP image download. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("imageDownload")]
        public Input<string>? ImageDownload { get; set; }

        /// <summary>
        /// Index (0 - 4294967295).
        /// </summary>
        [Input("index")]
        public Input<int>? Index { get; set; }

        /// <summary>
        /// Method by which IP fragmentation is prevented for CAPWAP tunneled control and data packets (default = tcp-mss-adjust). Valid values: `tcp-mss-adjust`, `icmp-unreachable`.
        /// </summary>
        [Input("ipFragmentPreventing")]
        public Input<string>? IpFragmentPreventing { get; set; }

        /// <summary>
        /// WTP LAN port mapping. The structure of `lan` block is documented below.
        /// </summary>
        [Input("lan")]
        public Input<Inputs.WirelesscontrollerWtpLanGetArgs>? Lan { get; set; }

        /// <summary>
        /// Enable to allow the FortiAPs LEDs to light. Disable to keep the LEDs off. You may want to keep the LEDs off so they are not distracting in low light areas etc. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("ledState")]
        public Input<string>? LedState { get; set; }

        /// <summary>
        /// Field for describing the physical location of the WTP, AP or FortiAP.
        /// </summary>
        [Input("location")]
        public Input<string>? Location { get; set; }

        [Input("loginPasswd")]
        private Input<string>? _loginPasswd;

        /// <summary>
        /// Set the managed WTP, FortiAP, or AP's administrator password.
        /// </summary>
        public Input<string>? LoginPasswd
        {
            get => _loginPasswd;
            set
            {
                var emptySecret = Output.CreateSecret(0);
                _loginPasswd = Output.Tuple<Input<string>?, int>(value, emptySecret).Apply(t => t.Item1);
            }
        }

        /// <summary>
        /// Change or reset the administrator password of a managed WTP, FortiAP or AP (yes, default, or no, default = no). Valid values: `yes`, `default`, `no`.
        /// </summary>
        [Input("loginPasswdChange")]
        public Input<string>? LoginPasswdChange { get; set; }

        /// <summary>
        /// Enable/disable mesh Ethernet bridge when WTP is configured as a mesh branch/leaf AP. Valid values: `default`, `enable`, `disable`.
        /// </summary>
        [Input("meshBridgeEnable")]
        public Input<string>? MeshBridgeEnable { get; set; }

        /// <summary>
        /// WTP, AP or FortiAP configuration name.
        /// </summary>
        [Input("name")]
        public Input<string>? Name { get; set; }

        /// <summary>
        /// Enable to override the WTP profile management access configuration. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("overrideAllowaccess")]
        public Input<string>? OverrideAllowaccess { get; set; }

        /// <summary>
        /// Enable/disable overriding the WTP profile IP fragment prevention setting. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("overrideIpFragment")]
        public Input<string>? OverrideIpFragment { get; set; }

        /// <summary>
        /// Enable to override the WTP profile LAN port setting. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("overrideLan")]
        public Input<string>? OverrideLan { get; set; }

        /// <summary>
        /// Enable to override the profile LED state setting for this FortiAP. You must enable this option to use the led-state command to turn off the FortiAP's LEDs. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("overrideLedState")]
        public Input<string>? OverrideLedState { get; set; }

        /// <summary>
        /// Enable to override the WTP profile login-password (administrator password) setting. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("overrideLoginPasswdChange")]
        public Input<string>? OverrideLoginPasswdChange { get; set; }

        /// <summary>
        /// Enable/disable overriding the WTP profile split tunneling setting. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("overrideSplitTunnel")]
        public Input<string>? OverrideSplitTunnel { get; set; }

        /// <summary>
        /// Enable/disable overriding the wan-port-mode in the WTP profile. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("overrideWanPortMode")]
        public Input<string>? OverrideWanPortMode { get; set; }

        /// <summary>
        /// Configuration options for radio 1. The structure of `radio_1` block is documented below.
        /// </summary>
        [Input("radio1")]
        public Input<Inputs.WirelesscontrollerWtpRadio1GetArgs>? Radio1 { get; set; }

        /// <summary>
        /// Configuration options for radio 2. The structure of `radio_2` block is documented below.
        /// </summary>
        [Input("radio2")]
        public Input<Inputs.WirelesscontrollerWtpRadio2GetArgs>? Radio2 { get; set; }

        /// <summary>
        /// Configuration options for radio 3. The structure of `radio_3` block is documented below.
        /// </summary>
        [Input("radio3")]
        public Input<Inputs.WirelesscontrollerWtpRadio3GetArgs>? Radio3 { get; set; }

        /// <summary>
        /// Configuration options for radio 4. The structure of `radio_4` block is documented below.
        /// </summary>
        [Input("radio4")]
        public Input<Inputs.WirelesscontrollerWtpRadio4GetArgs>? Radio4 { get; set; }

        /// <summary>
        /// Region name WTP is associated with.
        /// </summary>
        [Input("region")]
        public Input<string>? Region { get; set; }

        /// <summary>
        /// Relative horizontal region coordinate (between 0 and 1).
        /// </summary>
        [Input("regionX")]
        public Input<string>? RegionX { get; set; }

        /// <summary>
        /// Relative vertical region coordinate (between 0 and 1).
        /// </summary>
        [Input("regionY")]
        public Input<string>? RegionY { get; set; }

        /// <summary>
        /// Enable/disable automatically adding local subnetwork of FortiAP to split-tunneling ACL (default = disable). Valid values: `enable`, `disable`.
        /// </summary>
        [Input("splitTunnelingAclLocalApSubnet")]
        public Input<string>? SplitTunnelingAclLocalApSubnet { get; set; }

        /// <summary>
        /// Split tunneling ACL path is local/tunnel. Valid values: `tunnel`, `local`.
        /// </summary>
        [Input("splitTunnelingAclPath")]
        public Input<string>? SplitTunnelingAclPath { get; set; }

        [Input("splitTunnelingAcls")]
        private InputList<Inputs.WirelesscontrollerWtpSplitTunnelingAclGetArgs>? _splitTunnelingAcls;

        /// <summary>
        /// Split tunneling ACL filter list. The structure of `split_tunneling_acl` block is documented below.
        /// </summary>
        public InputList<Inputs.WirelesscontrollerWtpSplitTunnelingAclGetArgs> SplitTunnelingAcls
        {
            get => _splitTunnelingAcls ?? (_splitTunnelingAcls = new InputList<Inputs.WirelesscontrollerWtpSplitTunnelingAclGetArgs>());
            set => _splitTunnelingAcls = value;
        }

        /// <summary>
        /// Downlink tunnel MTU in octets. Set the value to either 0 (by default), 576, or 1500.
        /// </summary>
        [Input("tunMtuDownlink")]
        public Input<int>? TunMtuDownlink { get; set; }

        /// <summary>
        /// Uplink tunnel maximum transmission unit (MTU) in octets (eight-bit bytes). Set the value to either 0 (by default), 576, or 1500.
        /// </summary>
        [Input("tunMtuUplink")]
        public Input<int>? TunMtuUplink { get; set; }

        /// <summary>
        /// Universally Unique Identifier (UUID; automatically assigned but can be manually reset).
        /// </summary>
        [Input("uuid")]
        public Input<string>? Uuid { get; set; }

        /// <summary>
        /// Specifies the vdom to which the resource will be applied when the FortiGate unit is running in VDOM mode. Only one vdom can be specified. If you want to inherit the vdom configuration of the provider, please do not set this parameter.
        /// </summary>
        [Input("vdomparam")]
        public Input<string>? Vdomparam { get; set; }

        /// <summary>
        /// Enable/disable using the FortiAP WAN port as a LAN port. Valid values: `wan-lan`, `wan-only`.
        /// </summary>
        [Input("wanPortMode")]
        public Input<string>? WanPortMode { get; set; }

        /// <summary>
        /// WTP ID.
        /// </summary>
        [Input("wtpId")]
        public Input<string>? WtpId { get; set; }

        /// <summary>
        /// WTP, AP, or FortiAP operating mode; normal (by default) or remote. A tunnel mode SSID can be assigned to an AP in normal mode but not remote mode, while a local-bridge mode SSID can be assigned to an AP in either normal mode or remote mode. Valid values: `normal`, `remote`.
        /// </summary>
        [Input("wtpMode")]
        public Input<string>? WtpMode { get; set; }

        /// <summary>
        /// WTP profile name to apply to this WTP, AP or FortiAP.
        /// </summary>
        [Input("wtpProfile")]
        public Input<string>? WtpProfile { get; set; }

        public WirelesscontrollerWtpState()
        {
        }
        public static new WirelesscontrollerWtpState Empty => new WirelesscontrollerWtpState();
    }
}
