// *** 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 intrusion detection system (WIDS) profiles.
    /// 
    /// ## Import
    /// 
    /// WirelessController WidsProfile can be imported using any of these accepted formats
    /// 
    /// ```sh
    ///  $ pulumi import fortios:index/wirelesscontrollerWidsprofile:WirelesscontrollerWidsprofile labelname {{name}}
    /// ```
    /// 
    ///  If you do not want to import arguments of block$ export "FORTIOS_IMPORT_TABLE"="false"
    /// 
    /// ```sh
    ///  $ pulumi import fortios:index/wirelesscontrollerWidsprofile:WirelesscontrollerWidsprofile labelname {{name}}
    /// ```
    /// 
    ///  $ unset "FORTIOS_IMPORT_TABLE"
    /// </summary>
    [FortiosResourceType("fortios:index/wirelesscontrollerWidsprofile:WirelesscontrollerWidsprofile")]
    public partial class WirelesscontrollerWidsprofile : global::Pulumi.CustomResource
    {
        /// <summary>
        /// Enable/disable on-wire rogue AP auto-suppression (default = disable). Valid values: `enable`, `disable`.
        /// </summary>
        [Output("apAutoSuppress")]
        public Output<string> ApAutoSuppress { get; private set; } = null!;

        /// <summary>
        /// Optionally turn off scanning for one or more days of the week. Separate the days with a space. By default, no days are set. Valid values: `sunday`, `monday`, `tuesday`, `wednesday`, `thursday`, `friday`, `saturday`.
        /// </summary>
        [Output("apBgscanDisableDay")]
        public Output<string> ApBgscanDisableDay { get; private set; } = null!;

        /// <summary>
        /// End time, using a 24-hour clock in the format of hh:mm, for disabling background scanning (default = 00:00).
        /// </summary>
        [Output("apBgscanDisableEnd")]
        public Output<string> ApBgscanDisableEnd { get; private set; } = null!;

        /// <summary>
        /// Firewall schedules for turning off FortiAP radio background scan. Background scan will be disabled when at least one of the schedules is valid. Separate multiple schedule names with a space. The structure of `ap_bgscan_disable_schedules` block is documented below.
        /// </summary>
        [Output("apBgscanDisableSchedules")]
        public Output<ImmutableArray<Outputs.WirelesscontrollerWidsprofileApBgscanDisableSchedule>> ApBgscanDisableSchedules { get; private set; } = null!;

        /// <summary>
        /// Start time, using a 24-hour clock in the format of hh:mm, for disabling background scanning (default = 00:00).
        /// </summary>
        [Output("apBgscanDisableStart")]
        public Output<string> ApBgscanDisableStart { get; private set; } = null!;

        /// <summary>
        /// Listening time on a scanning channel (10 - 1000 msec, default = 20).
        /// </summary>
        [Output("apBgscanDuration")]
        public Output<int> ApBgscanDuration { get; private set; } = null!;

        /// <summary>
        /// Waiting time for channel inactivity before scanning this channel (0 - 1000 msec, default = 0).
        /// </summary>
        [Output("apBgscanIdle")]
        public Output<int> ApBgscanIdle { get; private set; } = null!;

        /// <summary>
        /// Period of time between scanning two channels (1 - 600 sec, default = 1).
        /// </summary>
        [Output("apBgscanIntv")]
        public Output<int> ApBgscanIntv { get; private set; } = null!;

        /// <summary>
        /// Period of time between background scans (60 - 3600 sec, default = 600).
        /// </summary>
        [Output("apBgscanPeriod")]
        public Output<int> ApBgscanPeriod { get; private set; } = null!;

        /// <summary>
        /// Period of time between background scan reports (15 - 600 sec, default = 30).
        /// </summary>
        [Output("apBgscanReportIntv")]
        public Output<int> ApBgscanReportIntv { get; private set; } = null!;

        /// <summary>
        /// Period of time between foreground scan reports (15 - 600 sec, default = 15).
        /// </summary>
        [Output("apFgscanReportIntv")]
        public Output<int> ApFgscanReportIntv { get; private set; } = null!;

        /// <summary>
        /// Enable/disable rogue AP detection. Valid values: `disable`, `enable`.
        /// </summary>
        [Output("apScan")]
        public Output<string> ApScan { get; private set; } = null!;

        /// <summary>
        /// Enable/disable passive scanning. Enable means do not send probe request on any channels (default = disable). Valid values: `enable`, `disable`.
        /// </summary>
        [Output("apScanPassive")]
        public Output<string> ApScanPassive { get; private set; } = null!;

        /// <summary>
        /// Minimum signal level/threshold in dBm required for the AP to report detected rogue AP (-95 to -20, default = -90).
        /// </summary>
        [Output("apScanThreshold")]
        public Output<string> ApScanThreshold { get; private set; } = null!;

        /// <summary>
        /// Enable/disable asleap attack detection (default = disable). Valid values: `enable`, `disable`.
        /// </summary>
        [Output("asleapAttack")]
        public Output<string> AsleapAttack { get; private set; } = null!;

        /// <summary>
        /// The threshold value for association frame flooding.
        /// </summary>
        [Output("assocFloodThresh")]
        public Output<int> AssocFloodThresh { get; private set; } = null!;

        /// <summary>
        /// Number of seconds after which a station is considered not connected.
        /// </summary>
        [Output("assocFloodTime")]
        public Output<int> AssocFloodTime { get; private set; } = null!;

        /// <summary>
        /// Enable/disable association frame flooding detection (default = disable). Valid values: `enable`, `disable`.
        /// </summary>
        [Output("assocFrameFlood")]
        public Output<string> AssocFrameFlood { get; private set; } = null!;

        /// <summary>
        /// The threshold value for authentication frame flooding.
        /// </summary>
        [Output("authFloodThresh")]
        public Output<int> AuthFloodThresh { get; private set; } = null!;

        /// <summary>
        /// Number of seconds after which a station is considered not connected.
        /// </summary>
        [Output("authFloodTime")]
        public Output<int> AuthFloodTime { get; private set; } = null!;

        /// <summary>
        /// Enable/disable authentication frame flooding detection (default = disable). Valid values: `enable`, `disable`.
        /// </summary>
        [Output("authFrameFlood")]
        public Output<string> AuthFrameFlood { get; private set; } = null!;

        /// <summary>
        /// Comment.
        /// </summary>
        [Output("comment")]
        public Output<string> Comment { get; private set; } = null!;

        /// <summary>
        /// Enable/disable broadcasting de-authentication detection (default = disable). Valid values: `enable`, `disable`.
        /// </summary>
        [Output("deauthBroadcast")]
        public Output<string> DeauthBroadcast { get; private set; } = null!;

        /// <summary>
        /// Threshold value per second to deauth unknown src for DoS attack (0: no limit).
        /// </summary>
        [Output("deauthUnknownSrcThresh")]
        public Output<int> DeauthUnknownSrcThresh { 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>
        /// Enable/disable EAPOL-Failure flooding (to AP) detection (default = disable). Valid values: `enable`, `disable`.
        /// </summary>
        [Output("eapolFailFlood")]
        public Output<string> EapolFailFlood { get; private set; } = null!;

        /// <summary>
        /// The detection interval for EAPOL-Failure flooding (1 - 3600 sec).
        /// </summary>
        [Output("eapolFailIntv")]
        public Output<int> EapolFailIntv { get; private set; } = null!;

        /// <summary>
        /// The threshold value for EAPOL-Failure flooding in specified interval.
        /// </summary>
        [Output("eapolFailThresh")]
        public Output<int> EapolFailThresh { get; private set; } = null!;

        /// <summary>
        /// Enable/disable EAPOL-Logoff flooding (to AP) detection (default = disable). Valid values: `enable`, `disable`.
        /// </summary>
        [Output("eapolLogoffFlood")]
        public Output<string> EapolLogoffFlood { get; private set; } = null!;

        /// <summary>
        /// The detection interval for EAPOL-Logoff flooding (1 - 3600 sec).
        /// </summary>
        [Output("eapolLogoffIntv")]
        public Output<int> EapolLogoffIntv { get; private set; } = null!;

        /// <summary>
        /// The threshold value for EAPOL-Logoff flooding in specified interval.
        /// </summary>
        [Output("eapolLogoffThresh")]
        public Output<int> EapolLogoffThresh { get; private set; } = null!;

        /// <summary>
        /// Enable/disable premature EAPOL-Failure flooding (to STA) detection (default = disable). Valid values: `enable`, `disable`.
        /// </summary>
        [Output("eapolPreFailFlood")]
        public Output<string> EapolPreFailFlood { get; private set; } = null!;

        /// <summary>
        /// The detection interval for premature EAPOL-Failure flooding (1 - 3600 sec).
        /// </summary>
        [Output("eapolPreFailIntv")]
        public Output<int> EapolPreFailIntv { get; private set; } = null!;

        /// <summary>
        /// The threshold value for premature EAPOL-Failure flooding in specified interval.
        /// </summary>
        [Output("eapolPreFailThresh")]
        public Output<int> EapolPreFailThresh { get; private set; } = null!;

        /// <summary>
        /// Enable/disable premature EAPOL-Success flooding (to STA) detection (default = disable). Valid values: `enable`, `disable`.
        /// </summary>
        [Output("eapolPreSuccFlood")]
        public Output<string> EapolPreSuccFlood { get; private set; } = null!;

        /// <summary>
        /// The detection interval for premature EAPOL-Success flooding (1 - 3600 sec).
        /// </summary>
        [Output("eapolPreSuccIntv")]
        public Output<int> EapolPreSuccIntv { get; private set; } = null!;

        /// <summary>
        /// The threshold value for premature EAPOL-Success flooding in specified interval.
        /// </summary>
        [Output("eapolPreSuccThresh")]
        public Output<int> EapolPreSuccThresh { get; private set; } = null!;

        /// <summary>
        /// Enable/disable EAPOL-Start flooding (to AP) detection (default = disable). Valid values: `enable`, `disable`.
        /// </summary>
        [Output("eapolStartFlood")]
        public Output<string> EapolStartFlood { get; private set; } = null!;

        /// <summary>
        /// The detection interval for EAPOL-Start flooding (1 - 3600 sec).
        /// </summary>
        [Output("eapolStartIntv")]
        public Output<int> EapolStartIntv { get; private set; } = null!;

        /// <summary>
        /// The threshold value for EAPOL-Start flooding in specified interval.
        /// </summary>
        [Output("eapolStartThresh")]
        public Output<int> EapolStartThresh { get; private set; } = null!;

        /// <summary>
        /// Enable/disable EAPOL-Success flooding (to AP) detection (default = disable). Valid values: `enable`, `disable`.
        /// </summary>
        [Output("eapolSuccFlood")]
        public Output<string> EapolSuccFlood { get; private set; } = null!;

        /// <summary>
        /// The detection interval for EAPOL-Success flooding (1 - 3600 sec).
        /// </summary>
        [Output("eapolSuccIntv")]
        public Output<int> EapolSuccIntv { get; private set; } = null!;

        /// <summary>
        /// The threshold value for EAPOL-Success flooding in specified interval.
        /// </summary>
        [Output("eapolSuccThresh")]
        public Output<int> EapolSuccThresh { get; private set; } = null!;

        /// <summary>
        /// Enable/disable invalid MAC OUI detection. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("invalidMacOui")]
        public Output<string> InvalidMacOui { get; private set; } = null!;

        /// <summary>
        /// Enable/disable long duration attack detection based on user configured threshold (default = disable). Valid values: `enable`, `disable`.
        /// </summary>
        [Output("longDurationAttack")]
        public Output<string> LongDurationAttack { get; private set; } = null!;

        /// <summary>
        /// Threshold value for long duration attack detection (1000 - 32767 usec, default = 8200).
        /// </summary>
        [Output("longDurationThresh")]
        public Output<int> LongDurationThresh { get; private set; } = null!;

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

        /// <summary>
        /// Enable/disable null SSID probe response detection (default = disable). Valid values: `enable`, `disable`.
        /// </summary>
        [Output("nullSsidProbeResp")]
        public Output<string> NullSsidProbeResp { get; private set; } = null!;

        /// <summary>
        /// Scan WiFi nearby stations (default = disable). Valid values: `disable`, `foreign`, `both`.
        /// </summary>
        [Output("sensorMode")]
        public Output<string> SensorMode { get; private set; } = null!;

        /// <summary>
        /// Enable/disable spoofed de-authentication attack detection (default = disable). Valid values: `enable`, `disable`.
        /// </summary>
        [Output("spoofedDeauth")]
        public Output<string> SpoofedDeauth { 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 weak WEP IV (Initialization Vector) detection (default = disable). Valid values: `enable`, `disable`.
        /// </summary>
        [Output("weakWepIv")]
        public Output<string> WeakWepIv { get; private set; } = null!;

        /// <summary>
        /// Enable/disable wireless bridge detection (default = disable). Valid values: `enable`, `disable`.
        /// </summary>
        [Output("wirelessBridge")]
        public Output<string> WirelessBridge { get; private set; } = null!;


        /// <summary>
        /// Create a WirelesscontrollerWidsprofile 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 WirelesscontrollerWidsprofile(string name, WirelesscontrollerWidsprofileArgs? args = null, CustomResourceOptions? options = null)
            : base("fortios:index/wirelesscontrollerWidsprofile:WirelesscontrollerWidsprofile", name, args ?? new WirelesscontrollerWidsprofileArgs(), MakeResourceOptions(options, ""))
        {
        }

        private WirelesscontrollerWidsprofile(string name, Input<string> id, WirelesscontrollerWidsprofileState? state = null, CustomResourceOptions? options = null)
            : base("fortios:index/wirelesscontrollerWidsprofile:WirelesscontrollerWidsprofile", 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",
            };
            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 WirelesscontrollerWidsprofile 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 WirelesscontrollerWidsprofile Get(string name, Input<string> id, WirelesscontrollerWidsprofileState? state = null, CustomResourceOptions? options = null)
        {
            return new WirelesscontrollerWidsprofile(name, id, state, options);
        }
    }

    public sealed class WirelesscontrollerWidsprofileArgs : global::Pulumi.ResourceArgs
    {
        /// <summary>
        /// Enable/disable on-wire rogue AP auto-suppression (default = disable). Valid values: `enable`, `disable`.
        /// </summary>
        [Input("apAutoSuppress")]
        public Input<string>? ApAutoSuppress { get; set; }

        /// <summary>
        /// Optionally turn off scanning for one or more days of the week. Separate the days with a space. By default, no days are set. Valid values: `sunday`, `monday`, `tuesday`, `wednesday`, `thursday`, `friday`, `saturday`.
        /// </summary>
        [Input("apBgscanDisableDay")]
        public Input<string>? ApBgscanDisableDay { get; set; }

        /// <summary>
        /// End time, using a 24-hour clock in the format of hh:mm, for disabling background scanning (default = 00:00).
        /// </summary>
        [Input("apBgscanDisableEnd")]
        public Input<string>? ApBgscanDisableEnd { get; set; }

        [Input("apBgscanDisableSchedules")]
        private InputList<Inputs.WirelesscontrollerWidsprofileApBgscanDisableScheduleArgs>? _apBgscanDisableSchedules;

        /// <summary>
        /// Firewall schedules for turning off FortiAP radio background scan. Background scan will be disabled when at least one of the schedules is valid. Separate multiple schedule names with a space. The structure of `ap_bgscan_disable_schedules` block is documented below.
        /// </summary>
        public InputList<Inputs.WirelesscontrollerWidsprofileApBgscanDisableScheduleArgs> ApBgscanDisableSchedules
        {
            get => _apBgscanDisableSchedules ?? (_apBgscanDisableSchedules = new InputList<Inputs.WirelesscontrollerWidsprofileApBgscanDisableScheduleArgs>());
            set => _apBgscanDisableSchedules = value;
        }

        /// <summary>
        /// Start time, using a 24-hour clock in the format of hh:mm, for disabling background scanning (default = 00:00).
        /// </summary>
        [Input("apBgscanDisableStart")]
        public Input<string>? ApBgscanDisableStart { get; set; }

        /// <summary>
        /// Listening time on a scanning channel (10 - 1000 msec, default = 20).
        /// </summary>
        [Input("apBgscanDuration")]
        public Input<int>? ApBgscanDuration { get; set; }

        /// <summary>
        /// Waiting time for channel inactivity before scanning this channel (0 - 1000 msec, default = 0).
        /// </summary>
        [Input("apBgscanIdle")]
        public Input<int>? ApBgscanIdle { get; set; }

        /// <summary>
        /// Period of time between scanning two channels (1 - 600 sec, default = 1).
        /// </summary>
        [Input("apBgscanIntv")]
        public Input<int>? ApBgscanIntv { get; set; }

        /// <summary>
        /// Period of time between background scans (60 - 3600 sec, default = 600).
        /// </summary>
        [Input("apBgscanPeriod")]
        public Input<int>? ApBgscanPeriod { get; set; }

        /// <summary>
        /// Period of time between background scan reports (15 - 600 sec, default = 30).
        /// </summary>
        [Input("apBgscanReportIntv")]
        public Input<int>? ApBgscanReportIntv { get; set; }

        /// <summary>
        /// Period of time between foreground scan reports (15 - 600 sec, default = 15).
        /// </summary>
        [Input("apFgscanReportIntv")]
        public Input<int>? ApFgscanReportIntv { get; set; }

        /// <summary>
        /// Enable/disable rogue AP detection. Valid values: `disable`, `enable`.
        /// </summary>
        [Input("apScan")]
        public Input<string>? ApScan { get; set; }

        /// <summary>
        /// Enable/disable passive scanning. Enable means do not send probe request on any channels (default = disable). Valid values: `enable`, `disable`.
        /// </summary>
        [Input("apScanPassive")]
        public Input<string>? ApScanPassive { get; set; }

        /// <summary>
        /// Minimum signal level/threshold in dBm required for the AP to report detected rogue AP (-95 to -20, default = -90).
        /// </summary>
        [Input("apScanThreshold")]
        public Input<string>? ApScanThreshold { get; set; }

        /// <summary>
        /// Enable/disable asleap attack detection (default = disable). Valid values: `enable`, `disable`.
        /// </summary>
        [Input("asleapAttack")]
        public Input<string>? AsleapAttack { get; set; }

        /// <summary>
        /// The threshold value for association frame flooding.
        /// </summary>
        [Input("assocFloodThresh")]
        public Input<int>? AssocFloodThresh { get; set; }

        /// <summary>
        /// Number of seconds after which a station is considered not connected.
        /// </summary>
        [Input("assocFloodTime")]
        public Input<int>? AssocFloodTime { get; set; }

        /// <summary>
        /// Enable/disable association frame flooding detection (default = disable). Valid values: `enable`, `disable`.
        /// </summary>
        [Input("assocFrameFlood")]
        public Input<string>? AssocFrameFlood { get; set; }

        /// <summary>
        /// The threshold value for authentication frame flooding.
        /// </summary>
        [Input("authFloodThresh")]
        public Input<int>? AuthFloodThresh { get; set; }

        /// <summary>
        /// Number of seconds after which a station is considered not connected.
        /// </summary>
        [Input("authFloodTime")]
        public Input<int>? AuthFloodTime { get; set; }

        /// <summary>
        /// Enable/disable authentication frame flooding detection (default = disable). Valid values: `enable`, `disable`.
        /// </summary>
        [Input("authFrameFlood")]
        public Input<string>? AuthFrameFlood { get; set; }

        /// <summary>
        /// Comment.
        /// </summary>
        [Input("comment")]
        public Input<string>? Comment { get; set; }

        /// <summary>
        /// Enable/disable broadcasting de-authentication detection (default = disable). Valid values: `enable`, `disable`.
        /// </summary>
        [Input("deauthBroadcast")]
        public Input<string>? DeauthBroadcast { get; set; }

        /// <summary>
        /// Threshold value per second to deauth unknown src for DoS attack (0: no limit).
        /// </summary>
        [Input("deauthUnknownSrcThresh")]
        public Input<int>? DeauthUnknownSrcThresh { 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>
        /// Enable/disable EAPOL-Failure flooding (to AP) detection (default = disable). Valid values: `enable`, `disable`.
        /// </summary>
        [Input("eapolFailFlood")]
        public Input<string>? EapolFailFlood { get; set; }

        /// <summary>
        /// The detection interval for EAPOL-Failure flooding (1 - 3600 sec).
        /// </summary>
        [Input("eapolFailIntv")]
        public Input<int>? EapolFailIntv { get; set; }

        /// <summary>
        /// The threshold value for EAPOL-Failure flooding in specified interval.
        /// </summary>
        [Input("eapolFailThresh")]
        public Input<int>? EapolFailThresh { get; set; }

        /// <summary>
        /// Enable/disable EAPOL-Logoff flooding (to AP) detection (default = disable). Valid values: `enable`, `disable`.
        /// </summary>
        [Input("eapolLogoffFlood")]
        public Input<string>? EapolLogoffFlood { get; set; }

        /// <summary>
        /// The detection interval for EAPOL-Logoff flooding (1 - 3600 sec).
        /// </summary>
        [Input("eapolLogoffIntv")]
        public Input<int>? EapolLogoffIntv { get; set; }

        /// <summary>
        /// The threshold value for EAPOL-Logoff flooding in specified interval.
        /// </summary>
        [Input("eapolLogoffThresh")]
        public Input<int>? EapolLogoffThresh { get; set; }

        /// <summary>
        /// Enable/disable premature EAPOL-Failure flooding (to STA) detection (default = disable). Valid values: `enable`, `disable`.
        /// </summary>
        [Input("eapolPreFailFlood")]
        public Input<string>? EapolPreFailFlood { get; set; }

        /// <summary>
        /// The detection interval for premature EAPOL-Failure flooding (1 - 3600 sec).
        /// </summary>
        [Input("eapolPreFailIntv")]
        public Input<int>? EapolPreFailIntv { get; set; }

        /// <summary>
        /// The threshold value for premature EAPOL-Failure flooding in specified interval.
        /// </summary>
        [Input("eapolPreFailThresh")]
        public Input<int>? EapolPreFailThresh { get; set; }

        /// <summary>
        /// Enable/disable premature EAPOL-Success flooding (to STA) detection (default = disable). Valid values: `enable`, `disable`.
        /// </summary>
        [Input("eapolPreSuccFlood")]
        public Input<string>? EapolPreSuccFlood { get; set; }

        /// <summary>
        /// The detection interval for premature EAPOL-Success flooding (1 - 3600 sec).
        /// </summary>
        [Input("eapolPreSuccIntv")]
        public Input<int>? EapolPreSuccIntv { get; set; }

        /// <summary>
        /// The threshold value for premature EAPOL-Success flooding in specified interval.
        /// </summary>
        [Input("eapolPreSuccThresh")]
        public Input<int>? EapolPreSuccThresh { get; set; }

        /// <summary>
        /// Enable/disable EAPOL-Start flooding (to AP) detection (default = disable). Valid values: `enable`, `disable`.
        /// </summary>
        [Input("eapolStartFlood")]
        public Input<string>? EapolStartFlood { get; set; }

        /// <summary>
        /// The detection interval for EAPOL-Start flooding (1 - 3600 sec).
        /// </summary>
        [Input("eapolStartIntv")]
        public Input<int>? EapolStartIntv { get; set; }

        /// <summary>
        /// The threshold value for EAPOL-Start flooding in specified interval.
        /// </summary>
        [Input("eapolStartThresh")]
        public Input<int>? EapolStartThresh { get; set; }

        /// <summary>
        /// Enable/disable EAPOL-Success flooding (to AP) detection (default = disable). Valid values: `enable`, `disable`.
        /// </summary>
        [Input("eapolSuccFlood")]
        public Input<string>? EapolSuccFlood { get; set; }

        /// <summary>
        /// The detection interval for EAPOL-Success flooding (1 - 3600 sec).
        /// </summary>
        [Input("eapolSuccIntv")]
        public Input<int>? EapolSuccIntv { get; set; }

        /// <summary>
        /// The threshold value for EAPOL-Success flooding in specified interval.
        /// </summary>
        [Input("eapolSuccThresh")]
        public Input<int>? EapolSuccThresh { get; set; }

        /// <summary>
        /// Enable/disable invalid MAC OUI detection. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("invalidMacOui")]
        public Input<string>? InvalidMacOui { get; set; }

        /// <summary>
        /// Enable/disable long duration attack detection based on user configured threshold (default = disable). Valid values: `enable`, `disable`.
        /// </summary>
        [Input("longDurationAttack")]
        public Input<string>? LongDurationAttack { get; set; }

        /// <summary>
        /// Threshold value for long duration attack detection (1000 - 32767 usec, default = 8200).
        /// </summary>
        [Input("longDurationThresh")]
        public Input<int>? LongDurationThresh { get; set; }

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

        /// <summary>
        /// Enable/disable null SSID probe response detection (default = disable). Valid values: `enable`, `disable`.
        /// </summary>
        [Input("nullSsidProbeResp")]
        public Input<string>? NullSsidProbeResp { get; set; }

        /// <summary>
        /// Scan WiFi nearby stations (default = disable). Valid values: `disable`, `foreign`, `both`.
        /// </summary>
        [Input("sensorMode")]
        public Input<string>? SensorMode { get; set; }

        /// <summary>
        /// Enable/disable spoofed de-authentication attack detection (default = disable). Valid values: `enable`, `disable`.
        /// </summary>
        [Input("spoofedDeauth")]
        public Input<string>? SpoofedDeauth { 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 weak WEP IV (Initialization Vector) detection (default = disable). Valid values: `enable`, `disable`.
        /// </summary>
        [Input("weakWepIv")]
        public Input<string>? WeakWepIv { get; set; }

        /// <summary>
        /// Enable/disable wireless bridge detection (default = disable). Valid values: `enable`, `disable`.
        /// </summary>
        [Input("wirelessBridge")]
        public Input<string>? WirelessBridge { get; set; }

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

    public sealed class WirelesscontrollerWidsprofileState : global::Pulumi.ResourceArgs
    {
        /// <summary>
        /// Enable/disable on-wire rogue AP auto-suppression (default = disable). Valid values: `enable`, `disable`.
        /// </summary>
        [Input("apAutoSuppress")]
        public Input<string>? ApAutoSuppress { get; set; }

        /// <summary>
        /// Optionally turn off scanning for one or more days of the week. Separate the days with a space. By default, no days are set. Valid values: `sunday`, `monday`, `tuesday`, `wednesday`, `thursday`, `friday`, `saturday`.
        /// </summary>
        [Input("apBgscanDisableDay")]
        public Input<string>? ApBgscanDisableDay { get; set; }

        /// <summary>
        /// End time, using a 24-hour clock in the format of hh:mm, for disabling background scanning (default = 00:00).
        /// </summary>
        [Input("apBgscanDisableEnd")]
        public Input<string>? ApBgscanDisableEnd { get; set; }

        [Input("apBgscanDisableSchedules")]
        private InputList<Inputs.WirelesscontrollerWidsprofileApBgscanDisableScheduleGetArgs>? _apBgscanDisableSchedules;

        /// <summary>
        /// Firewall schedules for turning off FortiAP radio background scan. Background scan will be disabled when at least one of the schedules is valid. Separate multiple schedule names with a space. The structure of `ap_bgscan_disable_schedules` block is documented below.
        /// </summary>
        public InputList<Inputs.WirelesscontrollerWidsprofileApBgscanDisableScheduleGetArgs> ApBgscanDisableSchedules
        {
            get => _apBgscanDisableSchedules ?? (_apBgscanDisableSchedules = new InputList<Inputs.WirelesscontrollerWidsprofileApBgscanDisableScheduleGetArgs>());
            set => _apBgscanDisableSchedules = value;
        }

        /// <summary>
        /// Start time, using a 24-hour clock in the format of hh:mm, for disabling background scanning (default = 00:00).
        /// </summary>
        [Input("apBgscanDisableStart")]
        public Input<string>? ApBgscanDisableStart { get; set; }

        /// <summary>
        /// Listening time on a scanning channel (10 - 1000 msec, default = 20).
        /// </summary>
        [Input("apBgscanDuration")]
        public Input<int>? ApBgscanDuration { get; set; }

        /// <summary>
        /// Waiting time for channel inactivity before scanning this channel (0 - 1000 msec, default = 0).
        /// </summary>
        [Input("apBgscanIdle")]
        public Input<int>? ApBgscanIdle { get; set; }

        /// <summary>
        /// Period of time between scanning two channels (1 - 600 sec, default = 1).
        /// </summary>
        [Input("apBgscanIntv")]
        public Input<int>? ApBgscanIntv { get; set; }

        /// <summary>
        /// Period of time between background scans (60 - 3600 sec, default = 600).
        /// </summary>
        [Input("apBgscanPeriod")]
        public Input<int>? ApBgscanPeriod { get; set; }

        /// <summary>
        /// Period of time between background scan reports (15 - 600 sec, default = 30).
        /// </summary>
        [Input("apBgscanReportIntv")]
        public Input<int>? ApBgscanReportIntv { get; set; }

        /// <summary>
        /// Period of time between foreground scan reports (15 - 600 sec, default = 15).
        /// </summary>
        [Input("apFgscanReportIntv")]
        public Input<int>? ApFgscanReportIntv { get; set; }

        /// <summary>
        /// Enable/disable rogue AP detection. Valid values: `disable`, `enable`.
        /// </summary>
        [Input("apScan")]
        public Input<string>? ApScan { get; set; }

        /// <summary>
        /// Enable/disable passive scanning. Enable means do not send probe request on any channels (default = disable). Valid values: `enable`, `disable`.
        /// </summary>
        [Input("apScanPassive")]
        public Input<string>? ApScanPassive { get; set; }

        /// <summary>
        /// Minimum signal level/threshold in dBm required for the AP to report detected rogue AP (-95 to -20, default = -90).
        /// </summary>
        [Input("apScanThreshold")]
        public Input<string>? ApScanThreshold { get; set; }

        /// <summary>
        /// Enable/disable asleap attack detection (default = disable). Valid values: `enable`, `disable`.
        /// </summary>
        [Input("asleapAttack")]
        public Input<string>? AsleapAttack { get; set; }

        /// <summary>
        /// The threshold value for association frame flooding.
        /// </summary>
        [Input("assocFloodThresh")]
        public Input<int>? AssocFloodThresh { get; set; }

        /// <summary>
        /// Number of seconds after which a station is considered not connected.
        /// </summary>
        [Input("assocFloodTime")]
        public Input<int>? AssocFloodTime { get; set; }

        /// <summary>
        /// Enable/disable association frame flooding detection (default = disable). Valid values: `enable`, `disable`.
        /// </summary>
        [Input("assocFrameFlood")]
        public Input<string>? AssocFrameFlood { get; set; }

        /// <summary>
        /// The threshold value for authentication frame flooding.
        /// </summary>
        [Input("authFloodThresh")]
        public Input<int>? AuthFloodThresh { get; set; }

        /// <summary>
        /// Number of seconds after which a station is considered not connected.
        /// </summary>
        [Input("authFloodTime")]
        public Input<int>? AuthFloodTime { get; set; }

        /// <summary>
        /// Enable/disable authentication frame flooding detection (default = disable). Valid values: `enable`, `disable`.
        /// </summary>
        [Input("authFrameFlood")]
        public Input<string>? AuthFrameFlood { get; set; }

        /// <summary>
        /// Comment.
        /// </summary>
        [Input("comment")]
        public Input<string>? Comment { get; set; }

        /// <summary>
        /// Enable/disable broadcasting de-authentication detection (default = disable). Valid values: `enable`, `disable`.
        /// </summary>
        [Input("deauthBroadcast")]
        public Input<string>? DeauthBroadcast { get; set; }

        /// <summary>
        /// Threshold value per second to deauth unknown src for DoS attack (0: no limit).
        /// </summary>
        [Input("deauthUnknownSrcThresh")]
        public Input<int>? DeauthUnknownSrcThresh { 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>
        /// Enable/disable EAPOL-Failure flooding (to AP) detection (default = disable). Valid values: `enable`, `disable`.
        /// </summary>
        [Input("eapolFailFlood")]
        public Input<string>? EapolFailFlood { get; set; }

        /// <summary>
        /// The detection interval for EAPOL-Failure flooding (1 - 3600 sec).
        /// </summary>
        [Input("eapolFailIntv")]
        public Input<int>? EapolFailIntv { get; set; }

        /// <summary>
        /// The threshold value for EAPOL-Failure flooding in specified interval.
        /// </summary>
        [Input("eapolFailThresh")]
        public Input<int>? EapolFailThresh { get; set; }

        /// <summary>
        /// Enable/disable EAPOL-Logoff flooding (to AP) detection (default = disable). Valid values: `enable`, `disable`.
        /// </summary>
        [Input("eapolLogoffFlood")]
        public Input<string>? EapolLogoffFlood { get; set; }

        /// <summary>
        /// The detection interval for EAPOL-Logoff flooding (1 - 3600 sec).
        /// </summary>
        [Input("eapolLogoffIntv")]
        public Input<int>? EapolLogoffIntv { get; set; }

        /// <summary>
        /// The threshold value for EAPOL-Logoff flooding in specified interval.
        /// </summary>
        [Input("eapolLogoffThresh")]
        public Input<int>? EapolLogoffThresh { get; set; }

        /// <summary>
        /// Enable/disable premature EAPOL-Failure flooding (to STA) detection (default = disable). Valid values: `enable`, `disable`.
        /// </summary>
        [Input("eapolPreFailFlood")]
        public Input<string>? EapolPreFailFlood { get; set; }

        /// <summary>
        /// The detection interval for premature EAPOL-Failure flooding (1 - 3600 sec).
        /// </summary>
        [Input("eapolPreFailIntv")]
        public Input<int>? EapolPreFailIntv { get; set; }

        /// <summary>
        /// The threshold value for premature EAPOL-Failure flooding in specified interval.
        /// </summary>
        [Input("eapolPreFailThresh")]
        public Input<int>? EapolPreFailThresh { get; set; }

        /// <summary>
        /// Enable/disable premature EAPOL-Success flooding (to STA) detection (default = disable). Valid values: `enable`, `disable`.
        /// </summary>
        [Input("eapolPreSuccFlood")]
        public Input<string>? EapolPreSuccFlood { get; set; }

        /// <summary>
        /// The detection interval for premature EAPOL-Success flooding (1 - 3600 sec).
        /// </summary>
        [Input("eapolPreSuccIntv")]
        public Input<int>? EapolPreSuccIntv { get; set; }

        /// <summary>
        /// The threshold value for premature EAPOL-Success flooding in specified interval.
        /// </summary>
        [Input("eapolPreSuccThresh")]
        public Input<int>? EapolPreSuccThresh { get; set; }

        /// <summary>
        /// Enable/disable EAPOL-Start flooding (to AP) detection (default = disable). Valid values: `enable`, `disable`.
        /// </summary>
        [Input("eapolStartFlood")]
        public Input<string>? EapolStartFlood { get; set; }

        /// <summary>
        /// The detection interval for EAPOL-Start flooding (1 - 3600 sec).
        /// </summary>
        [Input("eapolStartIntv")]
        public Input<int>? EapolStartIntv { get; set; }

        /// <summary>
        /// The threshold value for EAPOL-Start flooding in specified interval.
        /// </summary>
        [Input("eapolStartThresh")]
        public Input<int>? EapolStartThresh { get; set; }

        /// <summary>
        /// Enable/disable EAPOL-Success flooding (to AP) detection (default = disable). Valid values: `enable`, `disable`.
        /// </summary>
        [Input("eapolSuccFlood")]
        public Input<string>? EapolSuccFlood { get; set; }

        /// <summary>
        /// The detection interval for EAPOL-Success flooding (1 - 3600 sec).
        /// </summary>
        [Input("eapolSuccIntv")]
        public Input<int>? EapolSuccIntv { get; set; }

        /// <summary>
        /// The threshold value for EAPOL-Success flooding in specified interval.
        /// </summary>
        [Input("eapolSuccThresh")]
        public Input<int>? EapolSuccThresh { get; set; }

        /// <summary>
        /// Enable/disable invalid MAC OUI detection. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("invalidMacOui")]
        public Input<string>? InvalidMacOui { get; set; }

        /// <summary>
        /// Enable/disable long duration attack detection based on user configured threshold (default = disable). Valid values: `enable`, `disable`.
        /// </summary>
        [Input("longDurationAttack")]
        public Input<string>? LongDurationAttack { get; set; }

        /// <summary>
        /// Threshold value for long duration attack detection (1000 - 32767 usec, default = 8200).
        /// </summary>
        [Input("longDurationThresh")]
        public Input<int>? LongDurationThresh { get; set; }

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

        /// <summary>
        /// Enable/disable null SSID probe response detection (default = disable). Valid values: `enable`, `disable`.
        /// </summary>
        [Input("nullSsidProbeResp")]
        public Input<string>? NullSsidProbeResp { get; set; }

        /// <summary>
        /// Scan WiFi nearby stations (default = disable). Valid values: `disable`, `foreign`, `both`.
        /// </summary>
        [Input("sensorMode")]
        public Input<string>? SensorMode { get; set; }

        /// <summary>
        /// Enable/disable spoofed de-authentication attack detection (default = disable). Valid values: `enable`, `disable`.
        /// </summary>
        [Input("spoofedDeauth")]
        public Input<string>? SpoofedDeauth { 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 weak WEP IV (Initialization Vector) detection (default = disable). Valid values: `enable`, `disable`.
        /// </summary>
        [Input("weakWepIv")]
        public Input<string>? WeakWepIv { get; set; }

        /// <summary>
        /// Enable/disable wireless bridge detection (default = disable). Valid values: `enable`, `disable`.
        /// </summary>
        [Input("wirelessBridge")]
        public Input<string>? WirelessBridge { get; set; }

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