// *** 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 MODEM. Applies to FortiOS Version `7.0.4`.
    /// 
    /// ## Import
    /// 
    /// System Modem can be imported using any of these accepted formats
    /// 
    /// ```sh
    ///  $ pulumi import fortios:index/systemModem:SystemModem labelname SystemModem
    /// ```
    /// 
    ///  If you do not want to import arguments of block$ export "FORTIOS_IMPORT_TABLE"="false"
    /// 
    /// ```sh
    ///  $ pulumi import fortios:index/systemModem:SystemModem labelname SystemModem
    /// ```
    /// 
    ///  $ unset "FORTIOS_IMPORT_TABLE"
    /// </summary>
    [FortiosResourceType("fortios:index/systemModem:SystemModem")]
    public partial class SystemModem : global::Pulumi.CustomResource
    {
        /// <summary>
        /// Dial up/stop MODEM. Valid values: `dial`, `stop`, `none`.
        /// </summary>
        [Output("action")]
        public Output<string> Action { get; private set; } = null!;

        /// <summary>
        /// Enable/disable altmode for installations using PPP in China. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("altmode")]
        public Output<string> Altmode { get; private set; } = null!;

        /// <summary>
        /// Allowed authentication types for ISP 1. Valid values: `pap`, `chap`, `mschap`, `mschapv2`.
        /// </summary>
        [Output("authtype1")]
        public Output<string> Authtype1 { get; private set; } = null!;

        /// <summary>
        /// Allowed authentication types for ISP 2. Valid values: `pap`, `chap`, `mschap`, `mschapv2`.
        /// </summary>
        [Output("authtype2")]
        public Output<string> Authtype2 { get; private set; } = null!;

        /// <summary>
        /// Allowed authentication types for ISP 3. Valid values: `pap`, `chap`, `mschap`, `mschapv2`.
        /// </summary>
        [Output("authtype3")]
        public Output<string> Authtype3 { get; private set; } = null!;

        /// <summary>
        /// Enable/disable auto-dial after a reboot or disconnection. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("autoDial")]
        public Output<string> AutoDial { get; private set; } = null!;

        /// <summary>
        /// Connection completion timeout (30 - 255 sec, default = 90).
        /// </summary>
        [Output("connectTimeout")]
        public Output<int> ConnectTimeout { get; private set; } = null!;

        /// <summary>
        /// Dial command (this is often an ATD or ATDT command).
        /// </summary>
        [Output("dialCmd1")]
        public Output<string> DialCmd1 { get; private set; } = null!;

        /// <summary>
        /// Dial command (this is often an ATD or ATDT command).
        /// </summary>
        [Output("dialCmd2")]
        public Output<string> DialCmd2 { get; private set; } = null!;

        /// <summary>
        /// Dial command (this is often an ATD or ATDT command).
        /// </summary>
        [Output("dialCmd3")]
        public Output<string> DialCmd3 { get; private set; } = null!;

        /// <summary>
        /// Enable/disable to dial the modem when packets are routed to the modem interface. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("dialOnDemand")]
        public Output<string> DialOnDemand { get; private set; } = null!;

        /// <summary>
        /// Distance of learned routes (1 - 255, default = 1).
        /// </summary>
        [Output("distance")]
        public Output<int> Distance { get; private set; } = null!;

        /// <summary>
        /// Do not send CR when connected (ISP1). Valid values: `enable`, `disable`.
        /// </summary>
        [Output("dontSendCr1")]
        public Output<string> DontSendCr1 { get; private set; } = null!;

        /// <summary>
        /// Do not send CR when connected (ISP2). Valid values: `enable`, `disable`.
        /// </summary>
        [Output("dontSendCr2")]
        public Output<string> DontSendCr2 { get; private set; } = null!;

        /// <summary>
        /// Do not send CR when connected (ISP3). Valid values: `enable`, `disable`.
        /// </summary>
        [Output("dontSendCr3")]
        public Output<string> DontSendCr3 { get; private set; } = null!;

        /// <summary>
        /// Extra initialization string to ISP 1.
        /// </summary>
        [Output("extraInit1")]
        public Output<string> ExtraInit1 { get; private set; } = null!;

        /// <summary>
        /// Extra initialization string to ISP 2.
        /// </summary>
        [Output("extraInit2")]
        public Output<string> ExtraInit2 { get; private set; } = null!;

        /// <summary>
        /// Extra initialization string to ISP 3.
        /// </summary>
        [Output("extraInit3")]
        public Output<string> ExtraInit3 { get; private set; } = null!;

        /// <summary>
        /// Hold down timer in seconds (1 - 60 sec).
        /// </summary>
        [Output("holddownTimer")]
        public Output<int> HolddownTimer { get; private set; } = null!;

        /// <summary>
        /// MODEM connection idle time (1 - 9999 min, default = 5).
        /// </summary>
        [Output("idleTimer")]
        public Output<int> IdleTimer { get; private set; } = null!;

        /// <summary>
        /// Name of redundant interface.
        /// </summary>
        [Output("interface")]
        public Output<string> Interface { get; private set; } = null!;

        /// <summary>
        /// Allow connection only to the specified Location Area Code (LAC).
        /// </summary>
        [Output("lockdownLac")]
        public Output<string> LockdownLac { get; private set; } = null!;

        /// <summary>
        /// Set MODEM operation mode to redundant or standalone. Valid values: `standalone`, `redundant`.
        /// </summary>
        [Output("mode")]
        public Output<string> Mode { get; private set; } = null!;

        /// <summary>
        /// AT command to set the Network name/type (AT+COPS=&lt;mode&gt;,[&lt;format&gt;,&lt;oper&gt;[,&lt;AcT&gt;]]).
        /// </summary>
        [Output("networkInit")]
        public Output<string> NetworkInit { get; private set; } = null!;

        /// <summary>
        /// Password to access the specified dialup account.
        /// </summary>
        [Output("passwd1")]
        public Output<string?> Passwd1 { get; private set; } = null!;

        /// <summary>
        /// Password to access the specified dialup account.
        /// </summary>
        [Output("passwd2")]
        public Output<string?> Passwd2 { get; private set; } = null!;

        /// <summary>
        /// Password to access the specified dialup account.
        /// </summary>
        [Output("passwd3")]
        public Output<string?> Passwd3 { get; private set; } = null!;

        /// <summary>
        /// Specify peer MODEM type for phone1. Valid values: `generic`, `actiontec`, `ascend_TNT`.
        /// </summary>
        [Output("peerModem1")]
        public Output<string> PeerModem1 { get; private set; } = null!;

        /// <summary>
        /// Specify peer MODEM type for phone2. Valid values: `generic`, `actiontec`, `ascend_TNT`.
        /// </summary>
        [Output("peerModem2")]
        public Output<string> PeerModem2 { get; private set; } = null!;

        /// <summary>
        /// Specify peer MODEM type for phone3. Valid values: `generic`, `actiontec`, `ascend_TNT`.
        /// </summary>
        [Output("peerModem3")]
        public Output<string> PeerModem3 { get; private set; } = null!;

        /// <summary>
        /// Phone number to connect to the dialup account (must not contain spaces, and should include standard special characters).
        /// </summary>
        [Output("phone1")]
        public Output<string> Phone1 { get; private set; } = null!;

        /// <summary>
        /// Phone number to connect to the dialup account (must not contain spaces, and should include standard special characters).
        /// </summary>
        [Output("phone2")]
        public Output<string> Phone2 { get; private set; } = null!;

        /// <summary>
        /// Phone number to connect to the dialup account (must not contain spaces, and should include standard special characters).
        /// </summary>
        [Output("phone3")]
        public Output<string> Phone3 { get; private set; } = null!;

        /// <summary>
        /// AT command to set the PIN (AT+PIN=&lt;pin&gt;).
        /// </summary>
        [Output("pinInit")]
        public Output<string> PinInit { get; private set; } = null!;

        /// <summary>
        /// Enable/disable PPP echo-request to ISP 1. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("pppEchoRequest1")]
        public Output<string> PppEchoRequest1 { get; private set; } = null!;

        /// <summary>
        /// Enable/disable PPP echo-request to ISP 2. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("pppEchoRequest2")]
        public Output<string> PppEchoRequest2 { get; private set; } = null!;

        /// <summary>
        /// Enable/disable PPP echo-request to ISP 3. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("pppEchoRequest3")]
        public Output<string> PppEchoRequest3 { get; private set; } = null!;

        /// <summary>
        /// Priority of learned routes (0 - 4294967295, default = 0).
        /// </summary>
        [Output("priority")]
        public Output<int> Priority { get; private set; } = null!;

        /// <summary>
        /// Redial limit (1 - 10 attempts, none = redial forever). Valid values: `none`, `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`.
        /// </summary>
        [Output("redial")]
        public Output<string> Redial { get; private set; } = null!;

        /// <summary>
        /// Number of dial attempts before resetting modem (0 = never reset).
        /// </summary>
        [Output("reset")]
        public Output<int> Reset { get; private set; } = null!;

        /// <summary>
        /// Enable/disable Modem support (equivalent to bringing an interface up or down). Valid values: `enable`, `disable`.
        /// </summary>
        [Output("status")]
        public Output<string> Status { get; private set; } = null!;

        /// <summary>
        /// Enable/disable traffic-check. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("trafficCheck")]
        public Output<string> TrafficCheck { get; private set; } = null!;

        /// <summary>
        /// User name to access the specified dialup account.
        /// </summary>
        [Output("username1")]
        public Output<string> Username1 { get; private set; } = null!;

        /// <summary>
        /// User name to access the specified dialup account.
        /// </summary>
        [Output("username2")]
        public Output<string> Username2 { get; private set; } = null!;

        /// <summary>
        /// User name to access the specified dialup account.
        /// </summary>
        [Output("username3")]
        public Output<string> Username3 { 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>
        /// Enter wireless port number, 0 for default, 1 for first port, ... (0 - 4294967295, default = 0)
        /// </summary>
        [Output("wirelessPort")]
        public Output<int> WirelessPort { get; private set; } = null!;


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

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

    public sealed class SystemModemArgs : global::Pulumi.ResourceArgs
    {
        /// <summary>
        /// Dial up/stop MODEM. Valid values: `dial`, `stop`, `none`.
        /// </summary>
        [Input("action")]
        public Input<string>? Action { get; set; }

        /// <summary>
        /// Enable/disable altmode for installations using PPP in China. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("altmode")]
        public Input<string>? Altmode { get; set; }

        /// <summary>
        /// Allowed authentication types for ISP 1. Valid values: `pap`, `chap`, `mschap`, `mschapv2`.
        /// </summary>
        [Input("authtype1")]
        public Input<string>? Authtype1 { get; set; }

        /// <summary>
        /// Allowed authentication types for ISP 2. Valid values: `pap`, `chap`, `mschap`, `mschapv2`.
        /// </summary>
        [Input("authtype2")]
        public Input<string>? Authtype2 { get; set; }

        /// <summary>
        /// Allowed authentication types for ISP 3. Valid values: `pap`, `chap`, `mschap`, `mschapv2`.
        /// </summary>
        [Input("authtype3")]
        public Input<string>? Authtype3 { get; set; }

        /// <summary>
        /// Enable/disable auto-dial after a reboot or disconnection. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("autoDial")]
        public Input<string>? AutoDial { get; set; }

        /// <summary>
        /// Connection completion timeout (30 - 255 sec, default = 90).
        /// </summary>
        [Input("connectTimeout")]
        public Input<int>? ConnectTimeout { get; set; }

        /// <summary>
        /// Dial command (this is often an ATD or ATDT command).
        /// </summary>
        [Input("dialCmd1")]
        public Input<string>? DialCmd1 { get; set; }

        /// <summary>
        /// Dial command (this is often an ATD or ATDT command).
        /// </summary>
        [Input("dialCmd2")]
        public Input<string>? DialCmd2 { get; set; }

        /// <summary>
        /// Dial command (this is often an ATD or ATDT command).
        /// </summary>
        [Input("dialCmd3")]
        public Input<string>? DialCmd3 { get; set; }

        /// <summary>
        /// Enable/disable to dial the modem when packets are routed to the modem interface. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("dialOnDemand")]
        public Input<string>? DialOnDemand { get; set; }

        /// <summary>
        /// Distance of learned routes (1 - 255, default = 1).
        /// </summary>
        [Input("distance")]
        public Input<int>? Distance { get; set; }

        /// <summary>
        /// Do not send CR when connected (ISP1). Valid values: `enable`, `disable`.
        /// </summary>
        [Input("dontSendCr1")]
        public Input<string>? DontSendCr1 { get; set; }

        /// <summary>
        /// Do not send CR when connected (ISP2). Valid values: `enable`, `disable`.
        /// </summary>
        [Input("dontSendCr2")]
        public Input<string>? DontSendCr2 { get; set; }

        /// <summary>
        /// Do not send CR when connected (ISP3). Valid values: `enable`, `disable`.
        /// </summary>
        [Input("dontSendCr3")]
        public Input<string>? DontSendCr3 { get; set; }

        /// <summary>
        /// Extra initialization string to ISP 1.
        /// </summary>
        [Input("extraInit1")]
        public Input<string>? ExtraInit1 { get; set; }

        /// <summary>
        /// Extra initialization string to ISP 2.
        /// </summary>
        [Input("extraInit2")]
        public Input<string>? ExtraInit2 { get; set; }

        /// <summary>
        /// Extra initialization string to ISP 3.
        /// </summary>
        [Input("extraInit3")]
        public Input<string>? ExtraInit3 { get; set; }

        /// <summary>
        /// Hold down timer in seconds (1 - 60 sec).
        /// </summary>
        [Input("holddownTimer")]
        public Input<int>? HolddownTimer { get; set; }

        /// <summary>
        /// MODEM connection idle time (1 - 9999 min, default = 5).
        /// </summary>
        [Input("idleTimer")]
        public Input<int>? IdleTimer { get; set; }

        /// <summary>
        /// Name of redundant interface.
        /// </summary>
        [Input("interface")]
        public Input<string>? Interface { get; set; }

        /// <summary>
        /// Allow connection only to the specified Location Area Code (LAC).
        /// </summary>
        [Input("lockdownLac")]
        public Input<string>? LockdownLac { get; set; }

        /// <summary>
        /// Set MODEM operation mode to redundant or standalone. Valid values: `standalone`, `redundant`.
        /// </summary>
        [Input("mode")]
        public Input<string>? Mode { get; set; }

        /// <summary>
        /// AT command to set the Network name/type (AT+COPS=&lt;mode&gt;,[&lt;format&gt;,&lt;oper&gt;[,&lt;AcT&gt;]]).
        /// </summary>
        [Input("networkInit")]
        public Input<string>? NetworkInit { get; set; }

        /// <summary>
        /// Password to access the specified dialup account.
        /// </summary>
        [Input("passwd1")]
        public Input<string>? Passwd1 { get; set; }

        /// <summary>
        /// Password to access the specified dialup account.
        /// </summary>
        [Input("passwd2")]
        public Input<string>? Passwd2 { get; set; }

        /// <summary>
        /// Password to access the specified dialup account.
        /// </summary>
        [Input("passwd3")]
        public Input<string>? Passwd3 { get; set; }

        /// <summary>
        /// Specify peer MODEM type for phone1. Valid values: `generic`, `actiontec`, `ascend_TNT`.
        /// </summary>
        [Input("peerModem1")]
        public Input<string>? PeerModem1 { get; set; }

        /// <summary>
        /// Specify peer MODEM type for phone2. Valid values: `generic`, `actiontec`, `ascend_TNT`.
        /// </summary>
        [Input("peerModem2")]
        public Input<string>? PeerModem2 { get; set; }

        /// <summary>
        /// Specify peer MODEM type for phone3. Valid values: `generic`, `actiontec`, `ascend_TNT`.
        /// </summary>
        [Input("peerModem3")]
        public Input<string>? PeerModem3 { get; set; }

        /// <summary>
        /// Phone number to connect to the dialup account (must not contain spaces, and should include standard special characters).
        /// </summary>
        [Input("phone1")]
        public Input<string>? Phone1 { get; set; }

        /// <summary>
        /// Phone number to connect to the dialup account (must not contain spaces, and should include standard special characters).
        /// </summary>
        [Input("phone2")]
        public Input<string>? Phone2 { get; set; }

        /// <summary>
        /// Phone number to connect to the dialup account (must not contain spaces, and should include standard special characters).
        /// </summary>
        [Input("phone3")]
        public Input<string>? Phone3 { get; set; }

        /// <summary>
        /// AT command to set the PIN (AT+PIN=&lt;pin&gt;).
        /// </summary>
        [Input("pinInit")]
        public Input<string>? PinInit { get; set; }

        /// <summary>
        /// Enable/disable PPP echo-request to ISP 1. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("pppEchoRequest1")]
        public Input<string>? PppEchoRequest1 { get; set; }

        /// <summary>
        /// Enable/disable PPP echo-request to ISP 2. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("pppEchoRequest2")]
        public Input<string>? PppEchoRequest2 { get; set; }

        /// <summary>
        /// Enable/disable PPP echo-request to ISP 3. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("pppEchoRequest3")]
        public Input<string>? PppEchoRequest3 { get; set; }

        /// <summary>
        /// Priority of learned routes (0 - 4294967295, default = 0).
        /// </summary>
        [Input("priority")]
        public Input<int>? Priority { get; set; }

        /// <summary>
        /// Redial limit (1 - 10 attempts, none = redial forever). Valid values: `none`, `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`.
        /// </summary>
        [Input("redial")]
        public Input<string>? Redial { get; set; }

        /// <summary>
        /// Number of dial attempts before resetting modem (0 = never reset).
        /// </summary>
        [Input("reset")]
        public Input<int>? Reset { get; set; }

        /// <summary>
        /// Enable/disable Modem support (equivalent to bringing an interface up or down). Valid values: `enable`, `disable`.
        /// </summary>
        [Input("status")]
        public Input<string>? Status { get; set; }

        /// <summary>
        /// Enable/disable traffic-check. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("trafficCheck")]
        public Input<string>? TrafficCheck { get; set; }

        /// <summary>
        /// User name to access the specified dialup account.
        /// </summary>
        [Input("username1")]
        public Input<string>? Username1 { get; set; }

        /// <summary>
        /// User name to access the specified dialup account.
        /// </summary>
        [Input("username2")]
        public Input<string>? Username2 { get; set; }

        /// <summary>
        /// User name to access the specified dialup account.
        /// </summary>
        [Input("username3")]
        public Input<string>? Username3 { 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>
        /// Enter wireless port number, 0 for default, 1 for first port, ... (0 - 4294967295, default = 0)
        /// </summary>
        [Input("wirelessPort")]
        public Input<int>? WirelessPort { get; set; }

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

    public sealed class SystemModemState : global::Pulumi.ResourceArgs
    {
        /// <summary>
        /// Dial up/stop MODEM. Valid values: `dial`, `stop`, `none`.
        /// </summary>
        [Input("action")]
        public Input<string>? Action { get; set; }

        /// <summary>
        /// Enable/disable altmode for installations using PPP in China. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("altmode")]
        public Input<string>? Altmode { get; set; }

        /// <summary>
        /// Allowed authentication types for ISP 1. Valid values: `pap`, `chap`, `mschap`, `mschapv2`.
        /// </summary>
        [Input("authtype1")]
        public Input<string>? Authtype1 { get; set; }

        /// <summary>
        /// Allowed authentication types for ISP 2. Valid values: `pap`, `chap`, `mschap`, `mschapv2`.
        /// </summary>
        [Input("authtype2")]
        public Input<string>? Authtype2 { get; set; }

        /// <summary>
        /// Allowed authentication types for ISP 3. Valid values: `pap`, `chap`, `mschap`, `mschapv2`.
        /// </summary>
        [Input("authtype3")]
        public Input<string>? Authtype3 { get; set; }

        /// <summary>
        /// Enable/disable auto-dial after a reboot or disconnection. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("autoDial")]
        public Input<string>? AutoDial { get; set; }

        /// <summary>
        /// Connection completion timeout (30 - 255 sec, default = 90).
        /// </summary>
        [Input("connectTimeout")]
        public Input<int>? ConnectTimeout { get; set; }

        /// <summary>
        /// Dial command (this is often an ATD or ATDT command).
        /// </summary>
        [Input("dialCmd1")]
        public Input<string>? DialCmd1 { get; set; }

        /// <summary>
        /// Dial command (this is often an ATD or ATDT command).
        /// </summary>
        [Input("dialCmd2")]
        public Input<string>? DialCmd2 { get; set; }

        /// <summary>
        /// Dial command (this is often an ATD or ATDT command).
        /// </summary>
        [Input("dialCmd3")]
        public Input<string>? DialCmd3 { get; set; }

        /// <summary>
        /// Enable/disable to dial the modem when packets are routed to the modem interface. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("dialOnDemand")]
        public Input<string>? DialOnDemand { get; set; }

        /// <summary>
        /// Distance of learned routes (1 - 255, default = 1).
        /// </summary>
        [Input("distance")]
        public Input<int>? Distance { get; set; }

        /// <summary>
        /// Do not send CR when connected (ISP1). Valid values: `enable`, `disable`.
        /// </summary>
        [Input("dontSendCr1")]
        public Input<string>? DontSendCr1 { get; set; }

        /// <summary>
        /// Do not send CR when connected (ISP2). Valid values: `enable`, `disable`.
        /// </summary>
        [Input("dontSendCr2")]
        public Input<string>? DontSendCr2 { get; set; }

        /// <summary>
        /// Do not send CR when connected (ISP3). Valid values: `enable`, `disable`.
        /// </summary>
        [Input("dontSendCr3")]
        public Input<string>? DontSendCr3 { get; set; }

        /// <summary>
        /// Extra initialization string to ISP 1.
        /// </summary>
        [Input("extraInit1")]
        public Input<string>? ExtraInit1 { get; set; }

        /// <summary>
        /// Extra initialization string to ISP 2.
        /// </summary>
        [Input("extraInit2")]
        public Input<string>? ExtraInit2 { get; set; }

        /// <summary>
        /// Extra initialization string to ISP 3.
        /// </summary>
        [Input("extraInit3")]
        public Input<string>? ExtraInit3 { get; set; }

        /// <summary>
        /// Hold down timer in seconds (1 - 60 sec).
        /// </summary>
        [Input("holddownTimer")]
        public Input<int>? HolddownTimer { get; set; }

        /// <summary>
        /// MODEM connection idle time (1 - 9999 min, default = 5).
        /// </summary>
        [Input("idleTimer")]
        public Input<int>? IdleTimer { get; set; }

        /// <summary>
        /// Name of redundant interface.
        /// </summary>
        [Input("interface")]
        public Input<string>? Interface { get; set; }

        /// <summary>
        /// Allow connection only to the specified Location Area Code (LAC).
        /// </summary>
        [Input("lockdownLac")]
        public Input<string>? LockdownLac { get; set; }

        /// <summary>
        /// Set MODEM operation mode to redundant or standalone. Valid values: `standalone`, `redundant`.
        /// </summary>
        [Input("mode")]
        public Input<string>? Mode { get; set; }

        /// <summary>
        /// AT command to set the Network name/type (AT+COPS=&lt;mode&gt;,[&lt;format&gt;,&lt;oper&gt;[,&lt;AcT&gt;]]).
        /// </summary>
        [Input("networkInit")]
        public Input<string>? NetworkInit { get; set; }

        /// <summary>
        /// Password to access the specified dialup account.
        /// </summary>
        [Input("passwd1")]
        public Input<string>? Passwd1 { get; set; }

        /// <summary>
        /// Password to access the specified dialup account.
        /// </summary>
        [Input("passwd2")]
        public Input<string>? Passwd2 { get; set; }

        /// <summary>
        /// Password to access the specified dialup account.
        /// </summary>
        [Input("passwd3")]
        public Input<string>? Passwd3 { get; set; }

        /// <summary>
        /// Specify peer MODEM type for phone1. Valid values: `generic`, `actiontec`, `ascend_TNT`.
        /// </summary>
        [Input("peerModem1")]
        public Input<string>? PeerModem1 { get; set; }

        /// <summary>
        /// Specify peer MODEM type for phone2. Valid values: `generic`, `actiontec`, `ascend_TNT`.
        /// </summary>
        [Input("peerModem2")]
        public Input<string>? PeerModem2 { get; set; }

        /// <summary>
        /// Specify peer MODEM type for phone3. Valid values: `generic`, `actiontec`, `ascend_TNT`.
        /// </summary>
        [Input("peerModem3")]
        public Input<string>? PeerModem3 { get; set; }

        /// <summary>
        /// Phone number to connect to the dialup account (must not contain spaces, and should include standard special characters).
        /// </summary>
        [Input("phone1")]
        public Input<string>? Phone1 { get; set; }

        /// <summary>
        /// Phone number to connect to the dialup account (must not contain spaces, and should include standard special characters).
        /// </summary>
        [Input("phone2")]
        public Input<string>? Phone2 { get; set; }

        /// <summary>
        /// Phone number to connect to the dialup account (must not contain spaces, and should include standard special characters).
        /// </summary>
        [Input("phone3")]
        public Input<string>? Phone3 { get; set; }

        /// <summary>
        /// AT command to set the PIN (AT+PIN=&lt;pin&gt;).
        /// </summary>
        [Input("pinInit")]
        public Input<string>? PinInit { get; set; }

        /// <summary>
        /// Enable/disable PPP echo-request to ISP 1. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("pppEchoRequest1")]
        public Input<string>? PppEchoRequest1 { get; set; }

        /// <summary>
        /// Enable/disable PPP echo-request to ISP 2. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("pppEchoRequest2")]
        public Input<string>? PppEchoRequest2 { get; set; }

        /// <summary>
        /// Enable/disable PPP echo-request to ISP 3. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("pppEchoRequest3")]
        public Input<string>? PppEchoRequest3 { get; set; }

        /// <summary>
        /// Priority of learned routes (0 - 4294967295, default = 0).
        /// </summary>
        [Input("priority")]
        public Input<int>? Priority { get; set; }

        /// <summary>
        /// Redial limit (1 - 10 attempts, none = redial forever). Valid values: `none`, `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`.
        /// </summary>
        [Input("redial")]
        public Input<string>? Redial { get; set; }

        /// <summary>
        /// Number of dial attempts before resetting modem (0 = never reset).
        /// </summary>
        [Input("reset")]
        public Input<int>? Reset { get; set; }

        /// <summary>
        /// Enable/disable Modem support (equivalent to bringing an interface up or down). Valid values: `enable`, `disable`.
        /// </summary>
        [Input("status")]
        public Input<string>? Status { get; set; }

        /// <summary>
        /// Enable/disable traffic-check. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("trafficCheck")]
        public Input<string>? TrafficCheck { get; set; }

        /// <summary>
        /// User name to access the specified dialup account.
        /// </summary>
        [Input("username1")]
        public Input<string>? Username1 { get; set; }

        /// <summary>
        /// User name to access the specified dialup account.
        /// </summary>
        [Input("username2")]
        public Input<string>? Username2 { get; set; }

        /// <summary>
        /// User name to access the specified dialup account.
        /// </summary>
        [Input("username3")]
        public Input<string>? Username3 { 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>
        /// Enter wireless port number, 0 for default, 1 for first port, ... (0 - 4294967295, default = 0)
        /// </summary>
        [Input("wirelessPort")]
        public Input<int>? WirelessPort { get; set; }

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