<filename>sdk/dotnet/GetSystemsnmpUser.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 GetSystemsnmpUser
    {
        /// <summary>
        /// Use this data source to get information on an fortios systemsnmp user
        /// </summary>
        public static Task<GetSystemsnmpUserResult> InvokeAsync(GetSystemsnmpUserArgs args, InvokeOptions? options = null)
            => global::Pulumi.Deployment.Instance.InvokeAsync<GetSystemsnmpUserResult>("fortios:index/getSystemsnmpUser:getSystemsnmpUser", args ?? new GetSystemsnmpUserArgs(), options.WithDefaults());

        /// <summary>
        /// Use this data source to get information on an fortios systemsnmp user
        /// </summary>
        public static Output<GetSystemsnmpUserResult> Invoke(GetSystemsnmpUserInvokeArgs args, InvokeOptions? options = null)
            => global::Pulumi.Deployment.Instance.Invoke<GetSystemsnmpUserResult>("fortios:index/getSystemsnmpUser:getSystemsnmpUser", args ?? new GetSystemsnmpUserInvokeArgs(), options.WithDefaults());
    }


    public sealed class GetSystemsnmpUserArgs : global::Pulumi.InvokeArgs
    {
        /// <summary>
        /// Specify the name of the desired systemsnmp user.
        /// </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 GetSystemsnmpUserArgs()
        {
        }
        public static new GetSystemsnmpUserArgs Empty => new GetSystemsnmpUserArgs();
    }

    public sealed class GetSystemsnmpUserInvokeArgs : global::Pulumi.InvokeArgs
    {
        /// <summary>
        /// Specify the name of the desired systemsnmp user.
        /// </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 GetSystemsnmpUserInvokeArgs()
        {
        }
        public static new GetSystemsnmpUserInvokeArgs Empty => new GetSystemsnmpUserInvokeArgs();
    }


    [OutputType]
    public sealed class GetSystemsnmpUserResult
    {
        /// <summary>
        /// Authentication protocol.
        /// </summary>
        public readonly string AuthProto;
        /// <summary>
        /// Password for authentication protocol.
        /// </summary>
        public readonly string AuthPwd;
        /// <summary>
        /// SNMP notifications (traps) to send.
        /// </summary>
        public readonly string Events;
        /// <summary>
        /// Enable/disable direct management of HA cluster members.
        /// </summary>
        public readonly string HaDirect;
        /// <summary>
        /// The provider-assigned unique ID for this managed resource.
        /// </summary>
        public readonly string Id;
        /// <summary>
        /// SNMP access control MIB view.
        /// </summary>
        public readonly string MibView;
        /// <summary>
        /// VDOM name
        /// </summary>
        public readonly string Name;
        /// <summary>
        /// SNMP managers to send notifications (traps) to.
        /// </summary>
        public readonly string NotifyHosts;
        /// <summary>
        /// IPv6 SNMP managers to send notifications (traps) to.
        /// </summary>
        public readonly string NotifyHosts6;
        /// <summary>
        /// Privacy (encryption) protocol.
        /// </summary>
        public readonly string PrivProto;
        /// <summary>
        /// Password for privacy (encryption) protocol.
        /// </summary>
        public readonly string PrivPwd;
        /// <summary>
        /// Enable/disable SNMP queries for this user.
        /// </summary>
        public readonly string Queries;
        /// <summary>
        /// SNMPv3 query port (default = 161).
        /// </summary>
        public readonly int QueryPort;
        /// <summary>
        /// Security level for message authentication and encryption.
        /// </summary>
        public readonly string SecurityLevel;
        /// <summary>
        /// Source IP for SNMP trap.
        /// </summary>
        public readonly string SourceIp;
        /// <summary>
        /// Source IPv6 for SNMP trap.
        /// </summary>
        public readonly string SourceIpv6;
        /// <summary>
        /// Enable/disable this SNMP user.
        /// </summary>
        public readonly string Status;
        /// <summary>
        /// SNMPv3 local trap port (default = 162).
        /// </summary>
        public readonly int TrapLport;
        /// <summary>
        /// SNMPv3 trap remote port (default = 162).
        /// </summary>
        public readonly int TrapRport;
        /// <summary>
        /// Enable/disable traps for this SNMP user.
        /// </summary>
        public readonly string TrapStatus;
        public readonly string? Vdomparam;
        /// <summary>
        /// SNMP access control VDOMs. The structure of `vdoms` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetSystemsnmpUserVdomResult> Vdoms;

        [OutputConstructor]
        private GetSystemsnmpUserResult(
            string authProto,

            string authPwd,

            string events,

            string haDirect,

            string id,

            string mibView,

            string name,

            string notifyHosts,

            string notifyHosts6,

            string privProto,

            string privPwd,

            string queries,

            int queryPort,

            string securityLevel,

            string sourceIp,

            string sourceIpv6,

            string status,

            int trapLport,

            int trapRport,

            string trapStatus,

            string? vdomparam,

            ImmutableArray<Outputs.GetSystemsnmpUserVdomResult> vdoms)
        {
            AuthProto = authProto;
            AuthPwd = authPwd;
            Events = events;
            HaDirect = haDirect;
            Id = id;
            MibView = mibView;
            Name = name;
            NotifyHosts = notifyHosts;
            NotifyHosts6 = notifyHosts6;
            PrivProto = privProto;
            PrivPwd = privPwd;
            Queries = queries;
            QueryPort = queryPort;
            SecurityLevel = securityLevel;
            SourceIp = sourceIp;
            SourceIpv6 = sourceIpv6;
            Status = status;
            TrapLport = trapLport;
            TrapRport = trapRport;
            TrapStatus = trapStatus;
            Vdomparam = vdomparam;
            Vdoms = vdoms;
        }
    }
}
