<reponame>pulumiverse/pulumi-fortios// *** 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 FortiSwitch devices that are managed by this FortiGate.
    /// 
    /// ## Import
    /// 
    /// SwitchController ManagedSwitch can be imported using any of these accepted formats
    /// 
    /// ```sh
    ///  $ pulumi import fortios:index/switchcontrollerManagedswitch:SwitchcontrollerManagedswitch labelname {{switch_id}}
    /// ```
    /// 
    ///  If you do not want to import arguments of block$ export "FORTIOS_IMPORT_TABLE"="false"
    /// 
    /// ```sh
    ///  $ pulumi import fortios:index/switchcontrollerManagedswitch:SwitchcontrollerManagedswitch labelname {{switch_id}}
    /// ```
    /// 
    ///  $ unset "FORTIOS_IMPORT_TABLE"
    /// </summary>
    [FortiosResourceType("fortios:index/switchcontrollerManagedswitch:SwitchcontrollerManagedswitch")]
    public partial class SwitchcontrollerManagedswitch : global::Pulumi.CustomResource
    {
        /// <summary>
        /// FortiSwitch access profile.
        /// </summary>
        [Output("accessProfile")]
        public Output<string> AccessProfile { get; private set; } = null!;

        /// <summary>
        /// Configuration method to edit FortiSwitch commands to be pushed to this FortiSwitch device upon rebooting the FortiGate switch controller or the FortiSwitch. The structure of `custom_command` block is documented below.
        /// </summary>
        [Output("customCommands")]
        public Output<ImmutableArray<Outputs.SwitchcontrollerManagedswitchCustomCommand>> CustomCommands { get; private set; } = null!;

        /// <summary>
        /// Delayed restart triggered for this FortiSwitch.
        /// </summary>
        [Output("delayedRestartTrigger")]
        public Output<int> DelayedRestartTrigger { get; private set; } = null!;

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

        /// <summary>
        /// DHCP snooping server access list. Valid values: `global`, `enable`, `disable`.
        /// </summary>
        [Output("dhcpServerAccessList")]
        public Output<string> DhcpServerAccessList { get; private set; } = null!;

        /// <summary>
        /// Directly connected FortiSwitch.
        /// </summary>
        [Output("directlyConnected")]
        public Output<int> DirectlyConnected { get; private set; } = null!;

        /// <summary>
        /// List of features this FortiSwitch supports (not configurable) that is sent to the FortiGate device for subsequent configuration initiated by the FortiGate device.
        /// </summary>
        [Output("dynamicCapability")]
        public Output<int> DynamicCapability { 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>
        /// Dynamically discovered FortiSwitch.
        /// </summary>
        [Output("dynamicallyDiscovered")]
        public Output<int> DynamicallyDiscovered { get; private set; } = null!;

        /// <summary>
        /// Enable/disable provisioning of firmware to FortiSwitches on join connection. Valid values: `enable`, `disable`.
        /// </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>
        /// Firmware version to provision to this FortiSwitch on bootup (major.minor.build, i.e. 6.2.1234).
        /// </summary>
        [Output("firmwareProvisionVersion")]
        public Output<string> FirmwareProvisionVersion { get; private set; } = null!;

        /// <summary>
        /// Flow-tracking netflow ipfix switch identity in hex format(00000000-FFFFFFFF default=0).
        /// </summary>
        [Output("flowIdentity")]
        public Output<string> FlowIdentity { get; private set; } = null!;

        /// <summary>
        /// FortiSwitch WAN1 admin status; enable to authorize the FortiSwitch as a managed switch. Valid values: `discovered`, `disable`, `enable`.
        /// </summary>
        [Output("fswWan1Admin")]
        public Output<string> FswWan1Admin { get; private set; } = null!;

        /// <summary>
        /// Fortiswitch WAN1 peer port.
        /// </summary>
        [Output("fswWan1Peer")]
        public Output<string> FswWan1Peer { get; private set; } = null!;

        /// <summary>
        /// FortiSwitch WAN2 admin status; enable to authorize the FortiSwitch as a managed switch. Valid values: `discovered`, `disable`, `enable`.
        /// </summary>
        [Output("fswWan2Admin")]
        public Output<string> FswWan2Admin { get; private set; } = null!;

        /// <summary>
        /// FortiSwitch WAN2 peer port.
        /// </summary>
        [Output("fswWan2Peer")]
        public Output<string> FswWan2Peer { get; private set; } = null!;

        /// <summary>
        /// Configure FortiSwitch IGMP snooping global settings. The structure of `igmp_snooping` block is documented below.
        /// </summary>
        [Output("igmpSnooping")]
        public Output<Outputs.SwitchcontrollerManagedswitchIgmpSnooping> IgmpSnooping { get; private set; } = null!;

        /// <summary>
        /// IP source guard. The structure of `ip_source_guard` block is documented below.
        /// </summary>
        [Output("ipSourceGuards")]
        public Output<ImmutableArray<Outputs.SwitchcontrollerManagedswitchIpSourceGuard>> IpSourceGuards { get; private set; } = null!;

        /// <summary>
        /// Layer 3 management discovered.
        /// </summary>
        [Output("l3Discovered")]
        public Output<int> L3Discovered { get; private set; } = null!;

        /// <summary>
        /// FortiSwitch maximum allowed trunk members.
        /// </summary>
        [Output("maxAllowedTrunkMembers")]
        public Output<int> MaxAllowedTrunkMembers { get; private set; } = null!;

        /// <summary>
        /// Enable/disable MCLAG IGMP-snooping awareness. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("mclagIgmpSnoopingAware")]
        public Output<string> MclagIgmpSnoopingAware { get; private set; } = null!;

        /// <summary>
        /// Configuration method to edit FortiSwitch packet mirror. The structure of `mirror` block is documented below.
        /// </summary>
        [Output("mirrors")]
        public Output<ImmutableArray<Outputs.SwitchcontrollerManagedswitchMirror>> Mirrors { get; private set; } = null!;

        /// <summary>
        /// Configuration method to edit FortiSwitch 802.1X global settings. The structure of `n802_1x_settings` block is documented below.
        /// </summary>
        [Output("n8021xSettings")]
        public Output<Outputs.SwitchcontrollerManagedswitchN8021xSettings> N8021xSettings { get; private set; } = null!;

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

        /// <summary>
        /// Enable/disable overriding the global SNMP communities. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("overrideSnmpCommunity")]
        public Output<string> OverrideSnmpCommunity { get; private set; } = null!;

        /// <summary>
        /// Enable/disable overriding the global SNMP system information. Valid values: `disable`, `enable`.
        /// </summary>
        [Output("overrideSnmpSysinfo")]
        public Output<string> OverrideSnmpSysinfo { get; private set; } = null!;

        /// <summary>
        /// Enable/disable overriding the global SNMP trap threshold values. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("overrideSnmpTrapThreshold")]
        public Output<string> OverrideSnmpTrapThreshold { get; private set; } = null!;

        /// <summary>
        /// Enable/disable overriding the global SNMP users. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("overrideSnmpUser")]
        public Output<string> OverrideSnmpUser { get; private set; } = null!;

        /// <summary>
        /// VDOM which owner of port belongs to.
        /// </summary>
        [Output("ownerVdom")]
        public Output<string> OwnerVdom { get; private set; } = null!;

        /// <summary>
        /// PoE detection type for FortiSwitch.
        /// </summary>
        [Output("poeDetectionType")]
        public Output<int> PoeDetectionType { get; private set; } = null!;

        /// <summary>
        /// Enable/disable PoE LLDP detection. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("poeLldpDetection")]
        public Output<string> PoeLldpDetection { get; private set; } = null!;

        /// <summary>
        /// Enable/disable PoE pre-standard detection. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("poePreStandardDetection")]
        public Output<string> PoePreStandardDetection { get; private set; } = null!;

        /// <summary>
        /// Managed-switch port list. The structure of `ports` block is documented below.
        /// </summary>
        [Output("ports")]
        public Output<ImmutableArray<Outputs.SwitchcontrollerManagedswitchPort>> Ports { get; private set; } = null!;

        /// <summary>
        /// Pre-provisioned managed switch.
        /// </summary>
        [Output("preProvisioned")]
        public Output<int> PreProvisioned { get; private set; } = null!;

        /// <summary>
        /// Set QoS drop-policy. Valid values: `taildrop`, `random-early-detection`.
        /// </summary>
        [Output("qosDropPolicy")]
        public Output<string> QosDropPolicy { get; private set; } = null!;

        /// <summary>
        /// Set QoS RED/WRED drop probability.
        /// </summary>
        [Output("qosRedProbability")]
        public Output<int> QosRedProbability { get; private set; } = null!;

        /// <summary>
        /// Configure logging by FortiSwitch device to a remote syslog server. The structure of `remote_log` block is documented below.
        /// </summary>
        [Output("remoteLogs")]
        public Output<ImmutableArray<Outputs.SwitchcontrollerManagedswitchRemoteLog>> RemoteLogs { get; private set; } = null!;

        /// <summary>
        /// Configuration method to edit Simple Network Management Protocol (SNMP) communities. The structure of `snmp_community` block is documented below.
        /// </summary>
        [Output("snmpCommunities")]
        public Output<ImmutableArray<Outputs.SwitchcontrollerManagedswitchSnmpCommunity>> SnmpCommunities { get; private set; } = null!;

        /// <summary>
        /// Configuration method to edit Simple Network Management Protocol (SNMP) system info. The structure of `snmp_sysinfo` block is documented below.
        /// </summary>
        [Output("snmpSysinfo")]
        public Output<Outputs.SwitchcontrollerManagedswitchSnmpSysinfo> SnmpSysinfo { get; private set; } = null!;

        /// <summary>
        /// Configuration method to edit Simple Network Management Protocol (SNMP) trap threshold values. The structure of `snmp_trap_threshold` block is documented below.
        /// </summary>
        [Output("snmpTrapThreshold")]
        public Output<Outputs.SwitchcontrollerManagedswitchSnmpTrapThreshold> SnmpTrapThreshold { get; private set; } = null!;

        /// <summary>
        /// Configuration method to edit Simple Network Management Protocol (SNMP) users. The structure of `snmp_user` block is documented below.
        /// </summary>
        [Output("snmpUsers")]
        public Output<ImmutableArray<Outputs.SwitchcontrollerManagedswitchSnmpUser>> SnmpUsers { get; private set; } = null!;

        /// <summary>
        /// Staged image version for FortiSwitch.
        /// </summary>
        [Output("stagedImageVersion")]
        public Output<string> StagedImageVersion { get; private set; } = null!;

        /// <summary>
        /// Configuration method to edit FortiSwitch Static and Sticky MAC. The structure of `static_mac` block is documented below.
        /// </summary>
        [Output("staticMacs")]
        public Output<ImmutableArray<Outputs.SwitchcontrollerManagedswitchStaticMac>> StaticMacs { get; private set; } = null!;

        /// <summary>
        /// Configuration method to edit FortiSwitch storm control for measuring traffic activity using data rates to prevent traffic disruption. The structure of `storm_control` block is documented below.
        /// </summary>
        [Output("stormControl")]
        public Output<Outputs.SwitchcontrollerManagedswitchStormControl> StormControl { get; private set; } = null!;

        /// <summary>
        /// Configuration method to edit Spanning Tree Protocol (STP) instances. The structure of `stp_instance` block is documented below.
        /// </summary>
        [Output("stpInstances")]
        public Output<ImmutableArray<Outputs.SwitchcontrollerManagedswitchStpInstance>> StpInstances { get; private set; } = null!;

        /// <summary>
        /// Configuration method to edit Spanning Tree Protocol (STP) settings used to prevent bridge loops. The structure of `stp_settings` block is documented below.
        /// </summary>
        [Output("stpSettings")]
        public Output<Outputs.SwitchcontrollerManagedswitchStpSettings> StpSettings { get; private set; } = null!;

        /// <summary>
        /// User definable label/tag.
        /// </summary>
        [Output("switchDeviceTag")]
        public Output<string> SwitchDeviceTag { get; private set; } = null!;

        /// <summary>
        /// DHCP option43 key.
        /// </summary>
        [Output("switchDhcpOpt43Key")]
        public Output<string> SwitchDhcpOpt43Key { get; private set; } = null!;

        /// <summary>
        /// Managed-switch id.
        /// </summary>
        [Output("switchId")]
        public Output<string> SwitchId { get; private set; } = null!;

        /// <summary>
        /// Configuration method to edit FortiSwitch logging settings (logs are transferred to and inserted into the FortiGate event log). The structure of `switch_log` block is documented below.
        /// </summary>
        [Output("switchLog")]
        public Output<Outputs.SwitchcontrollerManagedswitchSwitchLog> SwitchLog { get; private set; } = null!;

        /// <summary>
        /// FortiSwitch profile.
        /// </summary>
        [Output("switchProfile")]
        public Output<string> SwitchProfile { get; private set; } = null!;

        /// <summary>
        /// Configure spanning tree protocol (STP). The structure of `switch_stp_settings` block is documented below.
        /// </summary>
        [Output("switchStpSettings")]
        public Output<Outputs.SwitchcontrollerManagedswitchSwitchStpSettings> SwitchStpSettings { get; private set; } = null!;

        /// <summary>
        /// TDR supported.
        /// </summary>
        [Output("tdrSupported")]
        public Output<string> TdrSupported { get; private set; } = null!;

        /// <summary>
        /// Indication of switch type, physical or virtual. Valid values: `virtual`, `physical`.
        /// </summary>
        [Output("type")]
        public Output<string> Type { 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>
        /// FortiSwitch version.
        /// </summary>
        [Output("version")]
        public Output<int> Version { get; private set; } = null!;


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

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

    public sealed class SwitchcontrollerManagedswitchArgs : global::Pulumi.ResourceArgs
    {
        /// <summary>
        /// FortiSwitch access profile.
        /// </summary>
        [Input("accessProfile")]
        public Input<string>? AccessProfile { get; set; }

        [Input("customCommands")]
        private InputList<Inputs.SwitchcontrollerManagedswitchCustomCommandArgs>? _customCommands;

        /// <summary>
        /// Configuration method to edit FortiSwitch commands to be pushed to this FortiSwitch device upon rebooting the FortiGate switch controller or the FortiSwitch. The structure of `custom_command` block is documented below.
        /// </summary>
        public InputList<Inputs.SwitchcontrollerManagedswitchCustomCommandArgs> CustomCommands
        {
            get => _customCommands ?? (_customCommands = new InputList<Inputs.SwitchcontrollerManagedswitchCustomCommandArgs>());
            set => _customCommands = value;
        }

        /// <summary>
        /// Delayed restart triggered for this FortiSwitch.
        /// </summary>
        [Input("delayedRestartTrigger")]
        public Input<int>? DelayedRestartTrigger { get; set; }

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

        /// <summary>
        /// DHCP snooping server access list. Valid values: `global`, `enable`, `disable`.
        /// </summary>
        [Input("dhcpServerAccessList")]
        public Input<string>? DhcpServerAccessList { get; set; }

        /// <summary>
        /// Directly connected FortiSwitch.
        /// </summary>
        [Input("directlyConnected")]
        public Input<int>? DirectlyConnected { get; set; }

        /// <summary>
        /// List of features this FortiSwitch supports (not configurable) that is sent to the FortiGate device for subsequent configuration initiated by the FortiGate device.
        /// </summary>
        [Input("dynamicCapability")]
        public Input<int>? DynamicCapability { 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>
        /// Dynamically discovered FortiSwitch.
        /// </summary>
        [Input("dynamicallyDiscovered")]
        public Input<int>? DynamicallyDiscovered { get; set; }

        /// <summary>
        /// Enable/disable provisioning of firmware to FortiSwitches on join connection. Valid values: `enable`, `disable`.
        /// </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>
        /// Firmware version to provision to this FortiSwitch on bootup (major.minor.build, i.e. 6.2.1234).
        /// </summary>
        [Input("firmwareProvisionVersion")]
        public Input<string>? FirmwareProvisionVersion { get; set; }

        /// <summary>
        /// Flow-tracking netflow ipfix switch identity in hex format(00000000-FFFFFFFF default=0).
        /// </summary>
        [Input("flowIdentity")]
        public Input<string>? FlowIdentity { get; set; }

        /// <summary>
        /// FortiSwitch WAN1 admin status; enable to authorize the FortiSwitch as a managed switch. Valid values: `discovered`, `disable`, `enable`.
        /// </summary>
        [Input("fswWan1Admin")]
        public Input<string>? FswWan1Admin { get; set; }

        /// <summary>
        /// Fortiswitch WAN1 peer port.
        /// </summary>
        [Input("fswWan1Peer", required: true)]
        public Input<string> FswWan1Peer { get; set; } = null!;

        /// <summary>
        /// FortiSwitch WAN2 admin status; enable to authorize the FortiSwitch as a managed switch. Valid values: `discovered`, `disable`, `enable`.
        /// </summary>
        [Input("fswWan2Admin")]
        public Input<string>? FswWan2Admin { get; set; }

        /// <summary>
        /// FortiSwitch WAN2 peer port.
        /// </summary>
        [Input("fswWan2Peer")]
        public Input<string>? FswWan2Peer { get; set; }

        /// <summary>
        /// Configure FortiSwitch IGMP snooping global settings. The structure of `igmp_snooping` block is documented below.
        /// </summary>
        [Input("igmpSnooping")]
        public Input<Inputs.SwitchcontrollerManagedswitchIgmpSnoopingArgs>? IgmpSnooping { get; set; }

        [Input("ipSourceGuards")]
        private InputList<Inputs.SwitchcontrollerManagedswitchIpSourceGuardArgs>? _ipSourceGuards;

        /// <summary>
        /// IP source guard. The structure of `ip_source_guard` block is documented below.
        /// </summary>
        public InputList<Inputs.SwitchcontrollerManagedswitchIpSourceGuardArgs> IpSourceGuards
        {
            get => _ipSourceGuards ?? (_ipSourceGuards = new InputList<Inputs.SwitchcontrollerManagedswitchIpSourceGuardArgs>());
            set => _ipSourceGuards = value;
        }

        /// <summary>
        /// Layer 3 management discovered.
        /// </summary>
        [Input("l3Discovered")]
        public Input<int>? L3Discovered { get; set; }

        /// <summary>
        /// FortiSwitch maximum allowed trunk members.
        /// </summary>
        [Input("maxAllowedTrunkMembers")]
        public Input<int>? MaxAllowedTrunkMembers { get; set; }

        /// <summary>
        /// Enable/disable MCLAG IGMP-snooping awareness. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("mclagIgmpSnoopingAware")]
        public Input<string>? MclagIgmpSnoopingAware { get; set; }

        [Input("mirrors")]
        private InputList<Inputs.SwitchcontrollerManagedswitchMirrorArgs>? _mirrors;

        /// <summary>
        /// Configuration method to edit FortiSwitch packet mirror. The structure of `mirror` block is documented below.
        /// </summary>
        public InputList<Inputs.SwitchcontrollerManagedswitchMirrorArgs> Mirrors
        {
            get => _mirrors ?? (_mirrors = new InputList<Inputs.SwitchcontrollerManagedswitchMirrorArgs>());
            set => _mirrors = value;
        }

        /// <summary>
        /// Configuration method to edit FortiSwitch 802.1X global settings. The structure of `n802_1x_settings` block is documented below.
        /// </summary>
        [Input("n8021xSettings")]
        public Input<Inputs.SwitchcontrollerManagedswitchN8021xSettingsArgs>? N8021xSettings { get; set; }

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

        /// <summary>
        /// Enable/disable overriding the global SNMP communities. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("overrideSnmpCommunity")]
        public Input<string>? OverrideSnmpCommunity { get; set; }

        /// <summary>
        /// Enable/disable overriding the global SNMP system information. Valid values: `disable`, `enable`.
        /// </summary>
        [Input("overrideSnmpSysinfo")]
        public Input<string>? OverrideSnmpSysinfo { get; set; }

        /// <summary>
        /// Enable/disable overriding the global SNMP trap threshold values. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("overrideSnmpTrapThreshold")]
        public Input<string>? OverrideSnmpTrapThreshold { get; set; }

        /// <summary>
        /// Enable/disable overriding the global SNMP users. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("overrideSnmpUser")]
        public Input<string>? OverrideSnmpUser { get; set; }

        /// <summary>
        /// VDOM which owner of port belongs to.
        /// </summary>
        [Input("ownerVdom")]
        public Input<string>? OwnerVdom { get; set; }

        /// <summary>
        /// PoE detection type for FortiSwitch.
        /// </summary>
        [Input("poeDetectionType")]
        public Input<int>? PoeDetectionType { get; set; }

        /// <summary>
        /// Enable/disable PoE LLDP detection. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("poeLldpDetection")]
        public Input<string>? PoeLldpDetection { get; set; }

        /// <summary>
        /// Enable/disable PoE pre-standard detection. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("poePreStandardDetection")]
        public Input<string>? PoePreStandardDetection { get; set; }

        [Input("ports")]
        private InputList<Inputs.SwitchcontrollerManagedswitchPortArgs>? _ports;

        /// <summary>
        /// Managed-switch port list. The structure of `ports` block is documented below.
        /// </summary>
        public InputList<Inputs.SwitchcontrollerManagedswitchPortArgs> Ports
        {
            get => _ports ?? (_ports = new InputList<Inputs.SwitchcontrollerManagedswitchPortArgs>());
            set => _ports = value;
        }

        /// <summary>
        /// Pre-provisioned managed switch.
        /// </summary>
        [Input("preProvisioned")]
        public Input<int>? PreProvisioned { get; set; }

        /// <summary>
        /// Set QoS drop-policy. Valid values: `taildrop`, `random-early-detection`.
        /// </summary>
        [Input("qosDropPolicy")]
        public Input<string>? QosDropPolicy { get; set; }

        /// <summary>
        /// Set QoS RED/WRED drop probability.
        /// </summary>
        [Input("qosRedProbability")]
        public Input<int>? QosRedProbability { get; set; }

        [Input("remoteLogs")]
        private InputList<Inputs.SwitchcontrollerManagedswitchRemoteLogArgs>? _remoteLogs;

        /// <summary>
        /// Configure logging by FortiSwitch device to a remote syslog server. The structure of `remote_log` block is documented below.
        /// </summary>
        public InputList<Inputs.SwitchcontrollerManagedswitchRemoteLogArgs> RemoteLogs
        {
            get => _remoteLogs ?? (_remoteLogs = new InputList<Inputs.SwitchcontrollerManagedswitchRemoteLogArgs>());
            set => _remoteLogs = value;
        }

        [Input("snmpCommunities")]
        private InputList<Inputs.SwitchcontrollerManagedswitchSnmpCommunityArgs>? _snmpCommunities;

        /// <summary>
        /// Configuration method to edit Simple Network Management Protocol (SNMP) communities. The structure of `snmp_community` block is documented below.
        /// </summary>
        public InputList<Inputs.SwitchcontrollerManagedswitchSnmpCommunityArgs> SnmpCommunities
        {
            get => _snmpCommunities ?? (_snmpCommunities = new InputList<Inputs.SwitchcontrollerManagedswitchSnmpCommunityArgs>());
            set => _snmpCommunities = value;
        }

        /// <summary>
        /// Configuration method to edit Simple Network Management Protocol (SNMP) system info. The structure of `snmp_sysinfo` block is documented below.
        /// </summary>
        [Input("snmpSysinfo")]
        public Input<Inputs.SwitchcontrollerManagedswitchSnmpSysinfoArgs>? SnmpSysinfo { get; set; }

        /// <summary>
        /// Configuration method to edit Simple Network Management Protocol (SNMP) trap threshold values. The structure of `snmp_trap_threshold` block is documented below.
        /// </summary>
        [Input("snmpTrapThreshold")]
        public Input<Inputs.SwitchcontrollerManagedswitchSnmpTrapThresholdArgs>? SnmpTrapThreshold { get; set; }

        [Input("snmpUsers")]
        private InputList<Inputs.SwitchcontrollerManagedswitchSnmpUserArgs>? _snmpUsers;

        /// <summary>
        /// Configuration method to edit Simple Network Management Protocol (SNMP) users. The structure of `snmp_user` block is documented below.
        /// </summary>
        public InputList<Inputs.SwitchcontrollerManagedswitchSnmpUserArgs> SnmpUsers
        {
            get => _snmpUsers ?? (_snmpUsers = new InputList<Inputs.SwitchcontrollerManagedswitchSnmpUserArgs>());
            set => _snmpUsers = value;
        }

        /// <summary>
        /// Staged image version for FortiSwitch.
        /// </summary>
        [Input("stagedImageVersion")]
        public Input<string>? StagedImageVersion { get; set; }

        [Input("staticMacs")]
        private InputList<Inputs.SwitchcontrollerManagedswitchStaticMacArgs>? _staticMacs;

        /// <summary>
        /// Configuration method to edit FortiSwitch Static and Sticky MAC. The structure of `static_mac` block is documented below.
        /// </summary>
        public InputList<Inputs.SwitchcontrollerManagedswitchStaticMacArgs> StaticMacs
        {
            get => _staticMacs ?? (_staticMacs = new InputList<Inputs.SwitchcontrollerManagedswitchStaticMacArgs>());
            set => _staticMacs = value;
        }

        /// <summary>
        /// Configuration method to edit FortiSwitch storm control for measuring traffic activity using data rates to prevent traffic disruption. The structure of `storm_control` block is documented below.
        /// </summary>
        [Input("stormControl")]
        public Input<Inputs.SwitchcontrollerManagedswitchStormControlArgs>? StormControl { get; set; }

        [Input("stpInstances")]
        private InputList<Inputs.SwitchcontrollerManagedswitchStpInstanceArgs>? _stpInstances;

        /// <summary>
        /// Configuration method to edit Spanning Tree Protocol (STP) instances. The structure of `stp_instance` block is documented below.
        /// </summary>
        public InputList<Inputs.SwitchcontrollerManagedswitchStpInstanceArgs> StpInstances
        {
            get => _stpInstances ?? (_stpInstances = new InputList<Inputs.SwitchcontrollerManagedswitchStpInstanceArgs>());
            set => _stpInstances = value;
        }

        /// <summary>
        /// Configuration method to edit Spanning Tree Protocol (STP) settings used to prevent bridge loops. The structure of `stp_settings` block is documented below.
        /// </summary>
        [Input("stpSettings")]
        public Input<Inputs.SwitchcontrollerManagedswitchStpSettingsArgs>? StpSettings { get; set; }

        /// <summary>
        /// User definable label/tag.
        /// </summary>
        [Input("switchDeviceTag")]
        public Input<string>? SwitchDeviceTag { get; set; }

        /// <summary>
        /// DHCP option43 key.
        /// </summary>
        [Input("switchDhcpOpt43Key")]
        public Input<string>? SwitchDhcpOpt43Key { get; set; }

        /// <summary>
        /// Managed-switch id.
        /// </summary>
        [Input("switchId", required: true)]
        public Input<string> SwitchId { get; set; } = null!;

        /// <summary>
        /// Configuration method to edit FortiSwitch logging settings (logs are transferred to and inserted into the FortiGate event log). The structure of `switch_log` block is documented below.
        /// </summary>
        [Input("switchLog")]
        public Input<Inputs.SwitchcontrollerManagedswitchSwitchLogArgs>? SwitchLog { get; set; }

        /// <summary>
        /// FortiSwitch profile.
        /// </summary>
        [Input("switchProfile")]
        public Input<string>? SwitchProfile { get; set; }

        /// <summary>
        /// Configure spanning tree protocol (STP). The structure of `switch_stp_settings` block is documented below.
        /// </summary>
        [Input("switchStpSettings")]
        public Input<Inputs.SwitchcontrollerManagedswitchSwitchStpSettingsArgs>? SwitchStpSettings { get; set; }

        /// <summary>
        /// TDR supported.
        /// </summary>
        [Input("tdrSupported")]
        public Input<string>? TdrSupported { get; set; }

        /// <summary>
        /// Indication of switch type, physical or virtual. Valid values: `virtual`, `physical`.
        /// </summary>
        [Input("type")]
        public Input<string>? Type { 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>
        /// FortiSwitch version.
        /// </summary>
        [Input("version")]
        public Input<int>? Version { get; set; }

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

    public sealed class SwitchcontrollerManagedswitchState : global::Pulumi.ResourceArgs
    {
        /// <summary>
        /// FortiSwitch access profile.
        /// </summary>
        [Input("accessProfile")]
        public Input<string>? AccessProfile { get; set; }

        [Input("customCommands")]
        private InputList<Inputs.SwitchcontrollerManagedswitchCustomCommandGetArgs>? _customCommands;

        /// <summary>
        /// Configuration method to edit FortiSwitch commands to be pushed to this FortiSwitch device upon rebooting the FortiGate switch controller or the FortiSwitch. The structure of `custom_command` block is documented below.
        /// </summary>
        public InputList<Inputs.SwitchcontrollerManagedswitchCustomCommandGetArgs> CustomCommands
        {
            get => _customCommands ?? (_customCommands = new InputList<Inputs.SwitchcontrollerManagedswitchCustomCommandGetArgs>());
            set => _customCommands = value;
        }

        /// <summary>
        /// Delayed restart triggered for this FortiSwitch.
        /// </summary>
        [Input("delayedRestartTrigger")]
        public Input<int>? DelayedRestartTrigger { get; set; }

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

        /// <summary>
        /// DHCP snooping server access list. Valid values: `global`, `enable`, `disable`.
        /// </summary>
        [Input("dhcpServerAccessList")]
        public Input<string>? DhcpServerAccessList { get; set; }

        /// <summary>
        /// Directly connected FortiSwitch.
        /// </summary>
        [Input("directlyConnected")]
        public Input<int>? DirectlyConnected { get; set; }

        /// <summary>
        /// List of features this FortiSwitch supports (not configurable) that is sent to the FortiGate device for subsequent configuration initiated by the FortiGate device.
        /// </summary>
        [Input("dynamicCapability")]
        public Input<int>? DynamicCapability { 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>
        /// Dynamically discovered FortiSwitch.
        /// </summary>
        [Input("dynamicallyDiscovered")]
        public Input<int>? DynamicallyDiscovered { get; set; }

        /// <summary>
        /// Enable/disable provisioning of firmware to FortiSwitches on join connection. Valid values: `enable`, `disable`.
        /// </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>
        /// Firmware version to provision to this FortiSwitch on bootup (major.minor.build, i.e. 6.2.1234).
        /// </summary>
        [Input("firmwareProvisionVersion")]
        public Input<string>? FirmwareProvisionVersion { get; set; }

        /// <summary>
        /// Flow-tracking netflow ipfix switch identity in hex format(00000000-FFFFFFFF default=0).
        /// </summary>
        [Input("flowIdentity")]
        public Input<string>? FlowIdentity { get; set; }

        /// <summary>
        /// FortiSwitch WAN1 admin status; enable to authorize the FortiSwitch as a managed switch. Valid values: `discovered`, `disable`, `enable`.
        /// </summary>
        [Input("fswWan1Admin")]
        public Input<string>? FswWan1Admin { get; set; }

        /// <summary>
        /// Fortiswitch WAN1 peer port.
        /// </summary>
        [Input("fswWan1Peer")]
        public Input<string>? FswWan1Peer { get; set; }

        /// <summary>
        /// FortiSwitch WAN2 admin status; enable to authorize the FortiSwitch as a managed switch. Valid values: `discovered`, `disable`, `enable`.
        /// </summary>
        [Input("fswWan2Admin")]
        public Input<string>? FswWan2Admin { get; set; }

        /// <summary>
        /// FortiSwitch WAN2 peer port.
        /// </summary>
        [Input("fswWan2Peer")]
        public Input<string>? FswWan2Peer { get; set; }

        /// <summary>
        /// Configure FortiSwitch IGMP snooping global settings. The structure of `igmp_snooping` block is documented below.
        /// </summary>
        [Input("igmpSnooping")]
        public Input<Inputs.SwitchcontrollerManagedswitchIgmpSnoopingGetArgs>? IgmpSnooping { get; set; }

        [Input("ipSourceGuards")]
        private InputList<Inputs.SwitchcontrollerManagedswitchIpSourceGuardGetArgs>? _ipSourceGuards;

        /// <summary>
        /// IP source guard. The structure of `ip_source_guard` block is documented below.
        /// </summary>
        public InputList<Inputs.SwitchcontrollerManagedswitchIpSourceGuardGetArgs> IpSourceGuards
        {
            get => _ipSourceGuards ?? (_ipSourceGuards = new InputList<Inputs.SwitchcontrollerManagedswitchIpSourceGuardGetArgs>());
            set => _ipSourceGuards = value;
        }

        /// <summary>
        /// Layer 3 management discovered.
        /// </summary>
        [Input("l3Discovered")]
        public Input<int>? L3Discovered { get; set; }

        /// <summary>
        /// FortiSwitch maximum allowed trunk members.
        /// </summary>
        [Input("maxAllowedTrunkMembers")]
        public Input<int>? MaxAllowedTrunkMembers { get; set; }

        /// <summary>
        /// Enable/disable MCLAG IGMP-snooping awareness. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("mclagIgmpSnoopingAware")]
        public Input<string>? MclagIgmpSnoopingAware { get; set; }

        [Input("mirrors")]
        private InputList<Inputs.SwitchcontrollerManagedswitchMirrorGetArgs>? _mirrors;

        /// <summary>
        /// Configuration method to edit FortiSwitch packet mirror. The structure of `mirror` block is documented below.
        /// </summary>
        public InputList<Inputs.SwitchcontrollerManagedswitchMirrorGetArgs> Mirrors
        {
            get => _mirrors ?? (_mirrors = new InputList<Inputs.SwitchcontrollerManagedswitchMirrorGetArgs>());
            set => _mirrors = value;
        }

        /// <summary>
        /// Configuration method to edit FortiSwitch 802.1X global settings. The structure of `n802_1x_settings` block is documented below.
        /// </summary>
        [Input("n8021xSettings")]
        public Input<Inputs.SwitchcontrollerManagedswitchN8021xSettingsGetArgs>? N8021xSettings { get; set; }

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

        /// <summary>
        /// Enable/disable overriding the global SNMP communities. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("overrideSnmpCommunity")]
        public Input<string>? OverrideSnmpCommunity { get; set; }

        /// <summary>
        /// Enable/disable overriding the global SNMP system information. Valid values: `disable`, `enable`.
        /// </summary>
        [Input("overrideSnmpSysinfo")]
        public Input<string>? OverrideSnmpSysinfo { get; set; }

        /// <summary>
        /// Enable/disable overriding the global SNMP trap threshold values. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("overrideSnmpTrapThreshold")]
        public Input<string>? OverrideSnmpTrapThreshold { get; set; }

        /// <summary>
        /// Enable/disable overriding the global SNMP users. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("overrideSnmpUser")]
        public Input<string>? OverrideSnmpUser { get; set; }

        /// <summary>
        /// VDOM which owner of port belongs to.
        /// </summary>
        [Input("ownerVdom")]
        public Input<string>? OwnerVdom { get; set; }

        /// <summary>
        /// PoE detection type for FortiSwitch.
        /// </summary>
        [Input("poeDetectionType")]
        public Input<int>? PoeDetectionType { get; set; }

        /// <summary>
        /// Enable/disable PoE LLDP detection. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("poeLldpDetection")]
        public Input<string>? PoeLldpDetection { get; set; }

        /// <summary>
        /// Enable/disable PoE pre-standard detection. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("poePreStandardDetection")]
        public Input<string>? PoePreStandardDetection { get; set; }

        [Input("ports")]
        private InputList<Inputs.SwitchcontrollerManagedswitchPortGetArgs>? _ports;

        /// <summary>
        /// Managed-switch port list. The structure of `ports` block is documented below.
        /// </summary>
        public InputList<Inputs.SwitchcontrollerManagedswitchPortGetArgs> Ports
        {
            get => _ports ?? (_ports = new InputList<Inputs.SwitchcontrollerManagedswitchPortGetArgs>());
            set => _ports = value;
        }

        /// <summary>
        /// Pre-provisioned managed switch.
        /// </summary>
        [Input("preProvisioned")]
        public Input<int>? PreProvisioned { get; set; }

        /// <summary>
        /// Set QoS drop-policy. Valid values: `taildrop`, `random-early-detection`.
        /// </summary>
        [Input("qosDropPolicy")]
        public Input<string>? QosDropPolicy { get; set; }

        /// <summary>
        /// Set QoS RED/WRED drop probability.
        /// </summary>
        [Input("qosRedProbability")]
        public Input<int>? QosRedProbability { get; set; }

        [Input("remoteLogs")]
        private InputList<Inputs.SwitchcontrollerManagedswitchRemoteLogGetArgs>? _remoteLogs;

        /// <summary>
        /// Configure logging by FortiSwitch device to a remote syslog server. The structure of `remote_log` block is documented below.
        /// </summary>
        public InputList<Inputs.SwitchcontrollerManagedswitchRemoteLogGetArgs> RemoteLogs
        {
            get => _remoteLogs ?? (_remoteLogs = new InputList<Inputs.SwitchcontrollerManagedswitchRemoteLogGetArgs>());
            set => _remoteLogs = value;
        }

        [Input("snmpCommunities")]
        private InputList<Inputs.SwitchcontrollerManagedswitchSnmpCommunityGetArgs>? _snmpCommunities;

        /// <summary>
        /// Configuration method to edit Simple Network Management Protocol (SNMP) communities. The structure of `snmp_community` block is documented below.
        /// </summary>
        public InputList<Inputs.SwitchcontrollerManagedswitchSnmpCommunityGetArgs> SnmpCommunities
        {
            get => _snmpCommunities ?? (_snmpCommunities = new InputList<Inputs.SwitchcontrollerManagedswitchSnmpCommunityGetArgs>());
            set => _snmpCommunities = value;
        }

        /// <summary>
        /// Configuration method to edit Simple Network Management Protocol (SNMP) system info. The structure of `snmp_sysinfo` block is documented below.
        /// </summary>
        [Input("snmpSysinfo")]
        public Input<Inputs.SwitchcontrollerManagedswitchSnmpSysinfoGetArgs>? SnmpSysinfo { get; set; }

        /// <summary>
        /// Configuration method to edit Simple Network Management Protocol (SNMP) trap threshold values. The structure of `snmp_trap_threshold` block is documented below.
        /// </summary>
        [Input("snmpTrapThreshold")]
        public Input<Inputs.SwitchcontrollerManagedswitchSnmpTrapThresholdGetArgs>? SnmpTrapThreshold { get; set; }

        [Input("snmpUsers")]
        private InputList<Inputs.SwitchcontrollerManagedswitchSnmpUserGetArgs>? _snmpUsers;

        /// <summary>
        /// Configuration method to edit Simple Network Management Protocol (SNMP) users. The structure of `snmp_user` block is documented below.
        /// </summary>
        public InputList<Inputs.SwitchcontrollerManagedswitchSnmpUserGetArgs> SnmpUsers
        {
            get => _snmpUsers ?? (_snmpUsers = new InputList<Inputs.SwitchcontrollerManagedswitchSnmpUserGetArgs>());
            set => _snmpUsers = value;
        }

        /// <summary>
        /// Staged image version for FortiSwitch.
        /// </summary>
        [Input("stagedImageVersion")]
        public Input<string>? StagedImageVersion { get; set; }

        [Input("staticMacs")]
        private InputList<Inputs.SwitchcontrollerManagedswitchStaticMacGetArgs>? _staticMacs;

        /// <summary>
        /// Configuration method to edit FortiSwitch Static and Sticky MAC. The structure of `static_mac` block is documented below.
        /// </summary>
        public InputList<Inputs.SwitchcontrollerManagedswitchStaticMacGetArgs> StaticMacs
        {
            get => _staticMacs ?? (_staticMacs = new InputList<Inputs.SwitchcontrollerManagedswitchStaticMacGetArgs>());
            set => _staticMacs = value;
        }

        /// <summary>
        /// Configuration method to edit FortiSwitch storm control for measuring traffic activity using data rates to prevent traffic disruption. The structure of `storm_control` block is documented below.
        /// </summary>
        [Input("stormControl")]
        public Input<Inputs.SwitchcontrollerManagedswitchStormControlGetArgs>? StormControl { get; set; }

        [Input("stpInstances")]
        private InputList<Inputs.SwitchcontrollerManagedswitchStpInstanceGetArgs>? _stpInstances;

        /// <summary>
        /// Configuration method to edit Spanning Tree Protocol (STP) instances. The structure of `stp_instance` block is documented below.
        /// </summary>
        public InputList<Inputs.SwitchcontrollerManagedswitchStpInstanceGetArgs> StpInstances
        {
            get => _stpInstances ?? (_stpInstances = new InputList<Inputs.SwitchcontrollerManagedswitchStpInstanceGetArgs>());
            set => _stpInstances = value;
        }

        /// <summary>
        /// Configuration method to edit Spanning Tree Protocol (STP) settings used to prevent bridge loops. The structure of `stp_settings` block is documented below.
        /// </summary>
        [Input("stpSettings")]
        public Input<Inputs.SwitchcontrollerManagedswitchStpSettingsGetArgs>? StpSettings { get; set; }

        /// <summary>
        /// User definable label/tag.
        /// </summary>
        [Input("switchDeviceTag")]
        public Input<string>? SwitchDeviceTag { get; set; }

        /// <summary>
        /// DHCP option43 key.
        /// </summary>
        [Input("switchDhcpOpt43Key")]
        public Input<string>? SwitchDhcpOpt43Key { get; set; }

        /// <summary>
        /// Managed-switch id.
        /// </summary>
        [Input("switchId")]
        public Input<string>? SwitchId { get; set; }

        /// <summary>
        /// Configuration method to edit FortiSwitch logging settings (logs are transferred to and inserted into the FortiGate event log). The structure of `switch_log` block is documented below.
        /// </summary>
        [Input("switchLog")]
        public Input<Inputs.SwitchcontrollerManagedswitchSwitchLogGetArgs>? SwitchLog { get; set; }

        /// <summary>
        /// FortiSwitch profile.
        /// </summary>
        [Input("switchProfile")]
        public Input<string>? SwitchProfile { get; set; }

        /// <summary>
        /// Configure spanning tree protocol (STP). The structure of `switch_stp_settings` block is documented below.
        /// </summary>
        [Input("switchStpSettings")]
        public Input<Inputs.SwitchcontrollerManagedswitchSwitchStpSettingsGetArgs>? SwitchStpSettings { get; set; }

        /// <summary>
        /// TDR supported.
        /// </summary>
        [Input("tdrSupported")]
        public Input<string>? TdrSupported { get; set; }

        /// <summary>
        /// Indication of switch type, physical or virtual. Valid values: `virtual`, `physical`.
        /// </summary>
        [Input("type")]
        public Input<string>? Type { 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>
        /// FortiSwitch version.
        /// </summary>
        [Input("version")]
        public Input<int>? Version { get; set; }

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