<filename>sdk/dotnet/GetSystemAdmin.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
{
    public static class GetSystemAdmin
    {
        /// <summary>
        /// Use this data source to get information on an fortios system admin
        /// </summary>
        public static Task<GetSystemAdminResult> InvokeAsync(GetSystemAdminArgs args, InvokeOptions? options = null)
            => global::Pulumi.Deployment.Instance.InvokeAsync<GetSystemAdminResult>("fortios:index/getSystemAdmin:getSystemAdmin", args ?? new GetSystemAdminArgs(), options.WithDefaults());

        /// <summary>
        /// Use this data source to get information on an fortios system admin
        /// </summary>
        public static Output<GetSystemAdminResult> Invoke(GetSystemAdminInvokeArgs args, InvokeOptions? options = null)
            => global::Pulumi.Deployment.Instance.Invoke<GetSystemAdminResult>("fortios:index/getSystemAdmin:getSystemAdmin", args ?? new GetSystemAdminInvokeArgs(), options.WithDefaults());
    }


    public sealed class GetSystemAdminArgs : global::Pulumi.InvokeArgs
    {
        /// <summary>
        /// Specify the name of the desired system admin.
        /// </summary>
        [Input("name", required: true)]
        public string Name { get; set; } = null!;

        /// <summary>
        /// Specifies the vdom to which the data source 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 string? Vdomparam { get; set; }

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

    public sealed class GetSystemAdminInvokeArgs : global::Pulumi.InvokeArgs
    {
        /// <summary>
        /// Specify the name of the desired system admin.
        /// </summary>
        [Input("name", required: true)]
        public Input<string> Name { get; set; } = null!;

        /// <summary>
        /// Specifies the vdom to which the data source 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 GetSystemAdminInvokeArgs()
        {
        }
        public static new GetSystemAdminInvokeArgs Empty => new GetSystemAdminInvokeArgs();
    }


    [OutputType]
    public sealed class GetSystemAdminResult
    {
        /// <summary>
        /// Access profile for this administrator. Access profiles control administrator access to FortiGate features.
        /// </summary>
        public readonly string Accprofile;
        /// <summary>
        /// Enable to use the name of an access profile provided by the remote authentication server to control the FortiGate features that this administrator can access.
        /// </summary>
        public readonly string AccprofileOverride;
        /// <summary>
        /// Enable/disable allow admin session to be removed by privileged admin users.
        /// </summary>
        public readonly string AllowRemoveAdminSession;
        /// <summary>
        /// Comment.
        /// </summary>
        public readonly string Comments;
        /// <summary>
        /// This administrator's email address.
        /// </summary>
        public readonly string EmailTo;
        /// <summary>
        /// Enable/disable force password change on next login.
        /// </summary>
        public readonly string ForcePasswordChange;
        /// <summary>
        /// This administrator's FortiToken serial number.
        /// </summary>
        public readonly string Fortitoken;
        /// <summary>
        /// Enable/disable guest authentication.
        /// </summary>
        public readonly string GuestAuth;
        /// <summary>
        /// Guest management portal language.
        /// </summary>
        public readonly string GuestLang;
        /// <summary>
        /// Select guest user groups. The structure of `guest_usergroups` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetSystemAdminGuestUsergroupResult> GuestUsergroups;
        /// <summary>
        /// GUI dashboards. The structure of `gui_dashboard` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetSystemAdminGuiDashboardResult> GuiDashboards;
        /// <summary>
        /// Favorite GUI menu IDs for the global VDOM. The structure of `gui_global_menu_favorites` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetSystemAdminGuiGlobalMenuFavoriteResult> GuiGlobalMenuFavorites;
        /// <summary>
        /// Acknowledgement of new features. The structure of `gui_new_feature_acknowledge` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetSystemAdminGuiNewFeatureAcknowledgeResult> GuiNewFeatureAcknowledges;
        /// <summary>
        /// Favorite GUI menu IDs for VDOMs. The structure of `gui_vdom_menu_favorites` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetSystemAdminGuiVdomMenuFavoriteResult> GuiVdomMenuFavorites;
        /// <summary>
        /// Admin user hidden attribute.
        /// </summary>
        public readonly int Hidden;
        /// <summary>
        /// history0
        /// </summary>
        public readonly string History0;
        /// <summary>
        /// history1
        /// </summary>
        public readonly string History1;
        /// <summary>
        /// The provider-assigned unique ID for this managed resource.
        /// </summary>
        public readonly string Id;
        /// <summary>
        /// Any IPv6 address from which the administrator can connect to the FortiGate unit. Default allows access from any IPv6 address.
        /// </summary>
        public readonly string Ip6Trusthost1;
        /// <summary>
        /// Any IPv6 address from which the administrator can connect to the FortiGate unit. Default allows access from any IPv6 address.
        /// </summary>
        public readonly string Ip6Trusthost10;
        /// <summary>
        /// Any IPv6 address from which the administrator can connect to the FortiGate unit. Default allows access from any IPv6 address.
        /// </summary>
        public readonly string Ip6Trusthost2;
        /// <summary>
        /// Any IPv6 address from which the administrator can connect to the FortiGate unit. Default allows access from any IPv6 address.
        /// </summary>
        public readonly string Ip6Trusthost3;
        /// <summary>
        /// Any IPv6 address from which the administrator can connect to the FortiGate unit. Default allows access from any IPv6 address.
        /// </summary>
        public readonly string Ip6Trusthost4;
        /// <summary>
        /// Any IPv6 address from which the administrator can connect to the FortiGate unit. Default allows access from any IPv6 address.
        /// </summary>
        public readonly string Ip6Trusthost5;
        /// <summary>
        /// Any IPv6 address from which the administrator can connect to the FortiGate unit. Default allows access from any IPv6 address.
        /// </summary>
        public readonly string Ip6Trusthost6;
        /// <summary>
        /// Any IPv6 address from which the administrator can connect to the FortiGate unit. Default allows access from any IPv6 address.
        /// </summary>
        public readonly string Ip6Trusthost7;
        /// <summary>
        /// Any IPv6 address from which the administrator can connect to the FortiGate unit. Default allows access from any IPv6 address.
        /// </summary>
        public readonly string Ip6Trusthost8;
        /// <summary>
        /// Any IPv6 address from which the administrator can connect to the FortiGate unit. Default allows access from any IPv6 address.
        /// </summary>
        public readonly string Ip6Trusthost9;
        /// <summary>
        /// Record user login time. The structure of `login_time` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetSystemAdminLoginTimeResult> LoginTimes;
        /// <summary>
        /// Select guest user groups.
        /// </summary>
        public readonly string Name;
        /// <summary>
        /// Admin user password.
        /// </summary>
        public readonly string Password;
        /// <summary>
        /// Password expire time.
        /// </summary>
        public readonly string PasswordExpire;
        /// <summary>
        /// Set to enable peer certificate authentication (for HTTPS admin access).
        /// </summary>
        public readonly string PeerAuth;
        /// <summary>
        /// Name of peer group defined under config user group which has PKI members. Used for peer certificate authentication (for HTTPS admin access).
        /// </summary>
        public readonly string PeerGroup;
        /// <summary>
        /// Enable to use the names of VDOMs provided by the remote authentication server to control the VDOMs that this administrator can access.
        /// </summary>
        public readonly string RadiusVdomOverride;
        /// <summary>
        /// Enable/disable authentication using a remote RADIUS, LDAP, or TACACS+ server.
        /// </summary>
        public readonly string RemoteAuth;
        /// <summary>
        /// User group name used for remote auth.
        /// </summary>
        public readonly string RemoteGroup;
        /// <summary>
        /// Firewall schedule used to restrict when the administrator can log in. No schedule means no restrictions.
        /// </summary>
        public readonly string Schedule;
        /// <summary>
        /// Custom SMS server to send SMS messages to.
        /// </summary>
        public readonly string SmsCustomServer;
        /// <summary>
        /// Phone number on which the administrator receives SMS messages.
        /// </summary>
        public readonly string SmsPhone;
        /// <summary>
        /// Send SMS messages using the FortiGuard SMS server or a custom server.
        /// </summary>
        public readonly string SmsServer;
        /// <summary>
        /// Select the certificate to be used by the FortiGate for authentication with an SSH client.
        /// </summary>
        public readonly string SshCertificate;
        /// <summary>
        /// Public key of an SSH client. The client is authenticated without being asked for credentials. Create the public-private key pair in the SSH client application.
        /// </summary>
        public readonly string SshPublicKey1;
        /// <summary>
        /// Public key of an SSH client. The client is authenticated without being asked for credentials. Create the public-private key pair in the SSH client application.
        /// </summary>
        public readonly string SshPublicKey2;
        /// <summary>
        /// Public key of an SSH client. The client is authenticated without being asked for credentials. Create the public-private key pair in the SSH client application.
        /// </summary>
        public readonly string SshPublicKey3;
        /// <summary>
        /// Any IPv4 address or subnet address and netmask from which the administrator can connect to the FortiGate unit. Default allows access from any IPv4 address.
        /// </summary>
        public readonly string Trusthost1;
        /// <summary>
        /// Any IPv4 address or subnet address and netmask from which the administrator can connect to the FortiGate unit. Default allows access from any IPv4 address.
        /// </summary>
        public readonly string Trusthost10;
        /// <summary>
        /// Any IPv4 address or subnet address and netmask from which the administrator can connect to the FortiGate unit. Default allows access from any IPv4 address.
        /// </summary>
        public readonly string Trusthost2;
        /// <summary>
        /// Any IPv4 address or subnet address and netmask from which the administrator can connect to the FortiGate unit. Default allows access from any IPv4 address.
        /// </summary>
        public readonly string Trusthost3;
        /// <summary>
        /// Any IPv4 address or subnet address and netmask from which the administrator can connect to the FortiGate unit. Default allows access from any IPv4 address.
        /// </summary>
        public readonly string Trusthost4;
        /// <summary>
        /// Any IPv4 address or subnet address and netmask from which the administrator can connect to the FortiGate unit. Default allows access from any IPv4 address.
        /// </summary>
        public readonly string Trusthost5;
        /// <summary>
        /// Any IPv4 address or subnet address and netmask from which the administrator can connect to the FortiGate unit. Default allows access from any IPv4 address.
        /// </summary>
        public readonly string Trusthost6;
        /// <summary>
        /// Any IPv4 address or subnet address and netmask from which the administrator can connect to the FortiGate unit. Default allows access from any IPv4 address.
        /// </summary>
        public readonly string Trusthost7;
        /// <summary>
        /// Any IPv4 address or subnet address and netmask from which the administrator can connect to the FortiGate unit. Default allows access from any IPv4 address.
        /// </summary>
        public readonly string Trusthost8;
        /// <summary>
        /// Any IPv4 address or subnet address and netmask from which the administrator can connect to the FortiGate unit. Default allows access from any IPv4 address.
        /// </summary>
        public readonly string Trusthost9;
        /// <summary>
        /// Enable/disable two-factor authentication.
        /// </summary>
        public readonly string TwoFactor;
        /// <summary>
        /// Authentication method by FortiToken Cloud.
        /// </summary>
        public readonly string TwoFactorAuthentication;
        /// <summary>
        /// Notification method for user activation by FortiToken Cloud.
        /// </summary>
        public readonly string TwoFactorNotification;
        /// <summary>
        /// Enable to use the names of VDOMs provided by the remote authentication server to control the VDOMs that this administrator can access.
        /// </summary>
        public readonly string VdomOverride;
        public readonly string? Vdomparam;
        /// <summary>
        /// Virtual domain(s) that the administrator can access. The structure of `vdom` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetSystemAdminVdomResult> Vdoms;
        /// <summary>
        /// Enable/disable wildcard RADIUS authentication.
        /// </summary>
        public readonly string Wildcard;

        [OutputConstructor]
        private GetSystemAdminResult(
            string accprofile,

            string accprofileOverride,

            string allowRemoveAdminSession,

            string comments,

            string emailTo,

            string forcePasswordChange,

            string fortitoken,

            string guestAuth,

            string guestLang,

            ImmutableArray<Outputs.GetSystemAdminGuestUsergroupResult> guestUsergroups,

            ImmutableArray<Outputs.GetSystemAdminGuiDashboardResult> guiDashboards,

            ImmutableArray<Outputs.GetSystemAdminGuiGlobalMenuFavoriteResult> guiGlobalMenuFavorites,

            ImmutableArray<Outputs.GetSystemAdminGuiNewFeatureAcknowledgeResult> guiNewFeatureAcknowledges,

            ImmutableArray<Outputs.GetSystemAdminGuiVdomMenuFavoriteResult> guiVdomMenuFavorites,

            int hidden,

            string history0,

            string history1,

            string id,

            string ip6Trusthost1,

            string ip6Trusthost10,

            string ip6Trusthost2,

            string ip6Trusthost3,

            string ip6Trusthost4,

            string ip6Trusthost5,

            string ip6Trusthost6,

            string ip6Trusthost7,

            string ip6Trusthost8,

            string ip6Trusthost9,

            ImmutableArray<Outputs.GetSystemAdminLoginTimeResult> loginTimes,

            string name,

            string password,

            string passwordExpire,

            string peerAuth,

            string peerGroup,

            string radiusVdomOverride,

            string remoteAuth,

            string remoteGroup,

            string schedule,

            string smsCustomServer,

            string smsPhone,

            string smsServer,

            string sshCertificate,

            string sshPublicKey1,

            string sshPublicKey2,

            string sshPublicKey3,

            string trusthost1,

            string trusthost10,

            string trusthost2,

            string trusthost3,

            string trusthost4,

            string trusthost5,

            string trusthost6,

            string trusthost7,

            string trusthost8,

            string trusthost9,

            string twoFactor,

            string twoFactorAuthentication,

            string twoFactorNotification,

            string vdomOverride,

            string? vdomparam,

            ImmutableArray<Outputs.GetSystemAdminVdomResult> vdoms,

            string wildcard)
        {
            Accprofile = accprofile;
            AccprofileOverride = accprofileOverride;
            AllowRemoveAdminSession = allowRemoveAdminSession;
            Comments = comments;
            EmailTo = emailTo;
            ForcePasswordChange = forcePasswordChange;
            Fortitoken = fortitoken;
            GuestAuth = guestAuth;
            GuestLang = guestLang;
            GuestUsergroups = guestUsergroups;
            GuiDashboards = guiDashboards;
            GuiGlobalMenuFavorites = guiGlobalMenuFavorites;
            GuiNewFeatureAcknowledges = guiNewFeatureAcknowledges;
            GuiVdomMenuFavorites = guiVdomMenuFavorites;
            Hidden = hidden;
            History0 = history0;
            History1 = history1;
            Id = id;
            Ip6Trusthost1 = ip6Trusthost1;
            Ip6Trusthost10 = ip6Trusthost10;
            Ip6Trusthost2 = ip6Trusthost2;
            Ip6Trusthost3 = ip6Trusthost3;
            Ip6Trusthost4 = ip6Trusthost4;
            Ip6Trusthost5 = ip6Trusthost5;
            Ip6Trusthost6 = ip6Trusthost6;
            Ip6Trusthost7 = ip6Trusthost7;
            Ip6Trusthost8 = ip6Trusthost8;
            Ip6Trusthost9 = ip6Trusthost9;
            LoginTimes = loginTimes;
            Name = name;
            Password = password;
            PasswordExpire = passwordExpire;
            PeerAuth = peerAuth;
            PeerGroup = peerGroup;
            RadiusVdomOverride = radiusVdomOverride;
            RemoteAuth = remoteAuth;
            RemoteGroup = remoteGroup;
            Schedule = schedule;
            SmsCustomServer = smsCustomServer;
            SmsPhone = smsPhone;
            SmsServer = smsServer;
            SshCertificate = sshCertificate;
            SshPublicKey1 = sshPublicKey1;
            SshPublicKey2 = sshPublicKey2;
            SshPublicKey3 = sshPublicKey3;
            Trusthost1 = trusthost1;
            Trusthost10 = trusthost10;
            Trusthost2 = trusthost2;
            Trusthost3 = trusthost3;
            Trusthost4 = trusthost4;
            Trusthost5 = trusthost5;
            Trusthost6 = trusthost6;
            Trusthost7 = trusthost7;
            Trusthost8 = trusthost8;
            Trusthost9 = trusthost9;
            TwoFactor = twoFactor;
            TwoFactorAuthentication = twoFactorAuthentication;
            TwoFactorNotification = twoFactorNotification;
            VdomOverride = vdomOverride;
            Vdomparam = vdomparam;
            Vdoms = vdoms;
            Wildcard = wildcard;
        }
    }
}
