<filename>sdk/dotnet/SystemAdminProfiles.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>
    /// Provides a resource to configure access profiles of FortiOS.
    /// 
    /// !&gt; **Warning:** The resource will be deprecated and replaced by new resource `fortios.SystemAccprofile`, we recommend that you use the new resource.
    /// 
    /// ## Example Usage
    /// 
    /// ```csharp
    /// using System.Collections.Generic;
    /// using System.Linq;
    /// using Pulumi;
    /// using Fortios = Pulumiverse.Fortios;
    /// 
    /// return await Deployment.RunAsync(() =&gt; 
    /// {
    ///     var test1 = new Fortios.SystemAdminProfiles("test1", new()
    ///     {
    ///         AdmintimeoutOverride = "disable",
    ///         Authgrp = "none",
    ///         Comments = "test",
    ///         Ftviewgrp = "read",
    ///         Fwgrp = "none",
    ///         Loggrp = "none",
    ///         Netgrp = "none",
    ///         Scope = "vdom",
    ///         Secfabgrp = "read-write",
    ///         Sysgrp = "read",
    ///         Utmgrp = "none",
    ///         Vpngrp = "none",
    ///         Wanoptgrp = "none",
    ///         Wifi = "none",
    ///     });
    /// 
    /// });
    /// ```
    /// </summary>
    [FortiosResourceType("fortios:index/systemAdminProfiles:SystemAdminProfiles")]
    public partial class SystemAdminProfiles : global::Pulumi.CustomResource
    {
        /// <summary>
        /// Enable/disable overriding the global administrator idle timeout.
        /// </summary>
        [Output("admintimeoutOverride")]
        public Output<string> AdmintimeoutOverride { get; private set; } = null!;

        /// <summary>
        /// Administrator access to Users and Devices.
        /// </summary>
        [Output("authgrp")]
        public Output<string> Authgrp { get; private set; } = null!;

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

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

        /// <summary>
        /// Administrator access to the Firewall configuration.
        /// </summary>
        [Output("fwgrp")]
        public Output<string> Fwgrp { get; private set; } = null!;

        /// <summary>
        /// Administrator access to Logging and Reporting including viewing log messages.
        /// </summary>
        [Output("loggrp")]
        public Output<string> Loggrp { get; private set; } = null!;

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

        /// <summary>
        /// Network Configuration.
        /// </summary>
        [Output("netgrp")]
        public Output<string> Netgrp { get; private set; } = null!;

        /// <summary>
        /// Scope of admin access.
        /// </summary>
        [Output("scope")]
        public Output<string> Scope { get; private set; } = null!;

        /// <summary>
        /// Security Fabric.
        /// </summary>
        [Output("secfabgrp")]
        public Output<string> Secfabgrp { get; private set; } = null!;

        /// <summary>
        /// System Configuration.
        /// </summary>
        [Output("sysgrp")]
        public Output<string> Sysgrp { get; private set; } = null!;

        /// <summary>
        /// Administrator access to Security Profiles.
        /// </summary>
        [Output("utmgrp")]
        public Output<string> Utmgrp { get; private set; } = null!;

        /// <summary>
        /// Administrator access to IPsec, SSL, PPTP, and L2TP VPN.
        /// </summary>
        [Output("vpngrp")]
        public Output<string> Vpngrp { get; private set; } = null!;

        /// <summary>
        /// Administrator access to WAN Opt &amp; Cache.
        /// </summary>
        [Output("wanoptgrp")]
        public Output<string> Wanoptgrp { get; private set; } = null!;

        /// <summary>
        /// Administrator access to the WiFi controller and Switch controller.
        /// </summary>
        [Output("wifi")]
        public Output<string> Wifi { get; private set; } = null!;


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

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

    public sealed class SystemAdminProfilesArgs : global::Pulumi.ResourceArgs
    {
        /// <summary>
        /// Enable/disable overriding the global administrator idle timeout.
        /// </summary>
        [Input("admintimeoutOverride")]
        public Input<string>? AdmintimeoutOverride { get; set; }

        /// <summary>
        /// Administrator access to Users and Devices.
        /// </summary>
        [Input("authgrp")]
        public Input<string>? Authgrp { get; set; }

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

        /// <summary>
        /// FortiView.
        /// </summary>
        [Input("ftviewgrp")]
        public Input<string>? Ftviewgrp { get; set; }

        /// <summary>
        /// Administrator access to the Firewall configuration.
        /// </summary>
        [Input("fwgrp")]
        public Input<string>? Fwgrp { get; set; }

        /// <summary>
        /// Administrator access to Logging and Reporting including viewing log messages.
        /// </summary>
        [Input("loggrp")]
        public Input<string>? Loggrp { get; set; }

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

        /// <summary>
        /// Network Configuration.
        /// </summary>
        [Input("netgrp")]
        public Input<string>? Netgrp { get; set; }

        /// <summary>
        /// Scope of admin access.
        /// </summary>
        [Input("scope")]
        public Input<string>? Scope { get; set; }

        /// <summary>
        /// Security Fabric.
        /// </summary>
        [Input("secfabgrp")]
        public Input<string>? Secfabgrp { get; set; }

        /// <summary>
        /// System Configuration.
        /// </summary>
        [Input("sysgrp")]
        public Input<string>? Sysgrp { get; set; }

        /// <summary>
        /// Administrator access to Security Profiles.
        /// </summary>
        [Input("utmgrp")]
        public Input<string>? Utmgrp { get; set; }

        /// <summary>
        /// Administrator access to IPsec, SSL, PPTP, and L2TP VPN.
        /// </summary>
        [Input("vpngrp")]
        public Input<string>? Vpngrp { get; set; }

        /// <summary>
        /// Administrator access to WAN Opt &amp; Cache.
        /// </summary>
        [Input("wanoptgrp")]
        public Input<string>? Wanoptgrp { get; set; }

        /// <summary>
        /// Administrator access to the WiFi controller and Switch controller.
        /// </summary>
        [Input("wifi")]
        public Input<string>? Wifi { get; set; }

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

    public sealed class SystemAdminProfilesState : global::Pulumi.ResourceArgs
    {
        /// <summary>
        /// Enable/disable overriding the global administrator idle timeout.
        /// </summary>
        [Input("admintimeoutOverride")]
        public Input<string>? AdmintimeoutOverride { get; set; }

        /// <summary>
        /// Administrator access to Users and Devices.
        /// </summary>
        [Input("authgrp")]
        public Input<string>? Authgrp { get; set; }

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

        /// <summary>
        /// FortiView.
        /// </summary>
        [Input("ftviewgrp")]
        public Input<string>? Ftviewgrp { get; set; }

        /// <summary>
        /// Administrator access to the Firewall configuration.
        /// </summary>
        [Input("fwgrp")]
        public Input<string>? Fwgrp { get; set; }

        /// <summary>
        /// Administrator access to Logging and Reporting including viewing log messages.
        /// </summary>
        [Input("loggrp")]
        public Input<string>? Loggrp { get; set; }

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

        /// <summary>
        /// Network Configuration.
        /// </summary>
        [Input("netgrp")]
        public Input<string>? Netgrp { get; set; }

        /// <summary>
        /// Scope of admin access.
        /// </summary>
        [Input("scope")]
        public Input<string>? Scope { get; set; }

        /// <summary>
        /// Security Fabric.
        /// </summary>
        [Input("secfabgrp")]
        public Input<string>? Secfabgrp { get; set; }

        /// <summary>
        /// System Configuration.
        /// </summary>
        [Input("sysgrp")]
        public Input<string>? Sysgrp { get; set; }

        /// <summary>
        /// Administrator access to Security Profiles.
        /// </summary>
        [Input("utmgrp")]
        public Input<string>? Utmgrp { get; set; }

        /// <summary>
        /// Administrator access to IPsec, SSL, PPTP, and L2TP VPN.
        /// </summary>
        [Input("vpngrp")]
        public Input<string>? Vpngrp { get; set; }

        /// <summary>
        /// Administrator access to WAN Opt &amp; Cache.
        /// </summary>
        [Input("wanoptgrp")]
        public Input<string>? Wanoptgrp { get; set; }

        /// <summary>
        /// Administrator access to the WiFi controller and Switch controller.
        /// </summary>
        [Input("wifi")]
        public Input<string>? Wifi { get; set; }

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