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

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

namespace Pulumiverse.Fortios
{
    /// <summary>
    /// Configure FortiClient Enterprise Management Server (EMS) entries. Applies to FortiOS Version `&lt;= 6.2.0`.
    /// 
    /// ## Import
    /// 
    /// EndpointControl ForticlientEms can be imported using any of these accepted formats
    /// 
    /// ```sh
    ///  $ pulumi import fortios:index/endpointcontrolForticlientems:EndpointcontrolForticlientems labelname {{name}}
    /// ```
    /// 
    ///  If you do not want to import arguments of block$ export "FORTIOS_IMPORT_TABLE"="false"
    /// 
    /// ```sh
    ///  $ pulumi import fortios:index/endpointcontrolForticlientems:EndpointcontrolForticlientems labelname {{name}}
    /// ```
    /// 
    ///  $ unset "FORTIOS_IMPORT_TABLE"
    /// </summary>
    [FortiosResourceType("fortios:index/endpointcontrolForticlientems:EndpointcontrolForticlientems")]
    public partial class EndpointcontrolForticlientems : global::Pulumi.CustomResource
    {
        /// <summary>
        /// Firewall address name.
        /// </summary>
        [Output("address")]
        public Output<string> Address { get; private set; } = null!;

        /// <summary>
        /// FortiClient EMS admin password.
        /// </summary>
        [Output("adminPassword")]
        public Output<string?> AdminPassword { get; private set; } = null!;

        /// <summary>
        /// FortiClient EMS admin type. Valid values: `Windows`, `LDAP`.
        /// </summary>
        [Output("adminType")]
        public Output<string> AdminType { get; private set; } = null!;

        /// <summary>
        /// FortiClient EMS admin username.
        /// </summary>
        [Output("adminUsername")]
        public Output<string> AdminUsername { get; private set; } = null!;

        /// <summary>
        /// FortiClient EMS HTTPS access port number. (1 - 65535, default: 443).
        /// </summary>
        [Output("httpsPort")]
        public Output<int> HttpsPort { get; private set; } = null!;

        /// <summary>
        /// FortiClient EMS telemetry listen port number. (1 - 65535, default: 8013).
        /// </summary>
        [Output("listenPort")]
        public Output<int> ListenPort { get; private set; } = null!;

        /// <summary>
        /// FortiClient Enterprise Management Server (EMS) name.
        /// </summary>
        [Output("name")]
        public Output<string> Name { get; private set; } = null!;

        /// <summary>
        /// FortiClient EMS REST API authentication. Valid values: `disable`, `userpass`.
        /// </summary>
        [Output("restApiAuth")]
        public Output<string> RestApiAuth { get; private set; } = null!;

        /// <summary>
        /// FortiClient EMS Serial Number.
        /// </summary>
        [Output("serialNumber")]
        public Output<string> SerialNumber { get; private set; } = null!;

        /// <summary>
        /// FortiClient EMS telemetry upload port number. (1 - 65535, default: 8014).
        /// </summary>
        [Output("uploadPort")]
        public Output<int> UploadPort { 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>
        /// Create a EndpointcontrolForticlientems 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 EndpointcontrolForticlientems(string name, EndpointcontrolForticlientemsArgs args, CustomResourceOptions? options = null)
            : base("fortios:index/endpointcontrolForticlientems:EndpointcontrolForticlientems", name, args ?? new EndpointcontrolForticlientemsArgs(), MakeResourceOptions(options, ""))
        {
        }

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

        private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input<string>? id)
        {
            var defaultOptions = new CustomResourceOptions
            {
                Version = Utilities.Version,
                PluginDownloadURL = "github://api.github.com/pulumiverse/pulumi-fortios",
                AdditionalSecretOutputs =
                {
                    "adminPassword",
                },
            };
            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 EndpointcontrolForticlientems 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 EndpointcontrolForticlientems Get(string name, Input<string> id, EndpointcontrolForticlientemsState? state = null, CustomResourceOptions? options = null)
        {
            return new EndpointcontrolForticlientems(name, id, state, options);
        }
    }

    public sealed class EndpointcontrolForticlientemsArgs : global::Pulumi.ResourceArgs
    {
        /// <summary>
        /// Firewall address name.
        /// </summary>
        [Input("address", required: true)]
        public Input<string> Address { get; set; } = null!;

        [Input("adminPassword")]
        private Input<string>? _adminPassword;

        /// <summary>
        /// FortiClient EMS admin password.
        /// </summary>
        public Input<string>? AdminPassword
        {
            get => _adminPassword;
            set
            {
                var emptySecret = Output.CreateSecret(0);
                _adminPassword = Output.Tuple<Input<string>?, int>(value, emptySecret).Apply(t => t.Item1);
            }
        }

        /// <summary>
        /// FortiClient EMS admin type. Valid values: `Windows`, `LDAP`.
        /// </summary>
        [Input("adminType")]
        public Input<string>? AdminType { get; set; }

        /// <summary>
        /// FortiClient EMS admin username.
        /// </summary>
        [Input("adminUsername", required: true)]
        public Input<string> AdminUsername { get; set; } = null!;

        /// <summary>
        /// FortiClient EMS HTTPS access port number. (1 - 65535, default: 443).
        /// </summary>
        [Input("httpsPort")]
        public Input<int>? HttpsPort { get; set; }

        /// <summary>
        /// FortiClient EMS telemetry listen port number. (1 - 65535, default: 8013).
        /// </summary>
        [Input("listenPort")]
        public Input<int>? ListenPort { get; set; }

        /// <summary>
        /// FortiClient Enterprise Management Server (EMS) name.
        /// </summary>
        [Input("name")]
        public Input<string>? Name { get; set; }

        /// <summary>
        /// FortiClient EMS REST API authentication. Valid values: `disable`, `userpass`.
        /// </summary>
        [Input("restApiAuth")]
        public Input<string>? RestApiAuth { get; set; }

        /// <summary>
        /// FortiClient EMS Serial Number.
        /// </summary>
        [Input("serialNumber", required: true)]
        public Input<string> SerialNumber { get; set; } = null!;

        /// <summary>
        /// FortiClient EMS telemetry upload port number. (1 - 65535, default: 8014).
        /// </summary>
        [Input("uploadPort")]
        public Input<int>? UploadPort { 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; }

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

    public sealed class EndpointcontrolForticlientemsState : global::Pulumi.ResourceArgs
    {
        /// <summary>
        /// Firewall address name.
        /// </summary>
        [Input("address")]
        public Input<string>? Address { get; set; }

        [Input("adminPassword")]
        private Input<string>? _adminPassword;

        /// <summary>
        /// FortiClient EMS admin password.
        /// </summary>
        public Input<string>? AdminPassword
        {
            get => _adminPassword;
            set
            {
                var emptySecret = Output.CreateSecret(0);
                _adminPassword = Output.Tuple<Input<string>?, int>(value, emptySecret).Apply(t => t.Item1);
            }
        }

        /// <summary>
        /// FortiClient EMS admin type. Valid values: `Windows`, `LDAP`.
        /// </summary>
        [Input("adminType")]
        public Input<string>? AdminType { get; set; }

        /// <summary>
        /// FortiClient EMS admin username.
        /// </summary>
        [Input("adminUsername")]
        public Input<string>? AdminUsername { get; set; }

        /// <summary>
        /// FortiClient EMS HTTPS access port number. (1 - 65535, default: 443).
        /// </summary>
        [Input("httpsPort")]
        public Input<int>? HttpsPort { get; set; }

        /// <summary>
        /// FortiClient EMS telemetry listen port number. (1 - 65535, default: 8013).
        /// </summary>
        [Input("listenPort")]
        public Input<int>? ListenPort { get; set; }

        /// <summary>
        /// FortiClient Enterprise Management Server (EMS) name.
        /// </summary>
        [Input("name")]
        public Input<string>? Name { get; set; }

        /// <summary>
        /// FortiClient EMS REST API authentication. Valid values: `disable`, `userpass`.
        /// </summary>
        [Input("restApiAuth")]
        public Input<string>? RestApiAuth { get; set; }

        /// <summary>
        /// FortiClient EMS Serial Number.
        /// </summary>
        [Input("serialNumber")]
        public Input<string>? SerialNumber { get; set; }

        /// <summary>
        /// FortiClient EMS telemetry upload port number. (1 - 65535, default: 8014).
        /// </summary>
        [Input("uploadPort")]
        public Input<int>? UploadPort { 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; }

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