// *** 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 GetSystemlldpNetworkpolicy
    {
        /// <summary>
        /// Use this data source to get information on an fortios systemlldp networkpolicy
        /// </summary>
        public static Task<GetSystemlldpNetworkpolicyResult> InvokeAsync(GetSystemlldpNetworkpolicyArgs args, InvokeOptions? options = null)
            => global::Pulumi.Deployment.Instance.InvokeAsync<GetSystemlldpNetworkpolicyResult>("fortios:index/getSystemlldpNetworkpolicy:getSystemlldpNetworkpolicy", args ?? new GetSystemlldpNetworkpolicyArgs(), options.WithDefaults());

        /// <summary>
        /// Use this data source to get information on an fortios systemlldp networkpolicy
        /// </summary>
        public static Output<GetSystemlldpNetworkpolicyResult> Invoke(GetSystemlldpNetworkpolicyInvokeArgs args, InvokeOptions? options = null)
            => global::Pulumi.Deployment.Instance.Invoke<GetSystemlldpNetworkpolicyResult>("fortios:index/getSystemlldpNetworkpolicy:getSystemlldpNetworkpolicy", args ?? new GetSystemlldpNetworkpolicyInvokeArgs(), options.WithDefaults());
    }


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

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


    [OutputType]
    public sealed class GetSystemlldpNetworkpolicyResult
    {
        /// <summary>
        /// Comment.
        /// </summary>
        public readonly string Comment;
        /// <summary>
        /// Guest Voice Signaling. The structure of `guest_voice_signaling` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetSystemlldpNetworkpolicyGuestVoiceSignalingResult> GuestVoiceSignalings;
        /// <summary>
        /// Guest. The structure of `guest` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetSystemlldpNetworkpolicyGuestResult> Guests;
        /// <summary>
        /// The provider-assigned unique ID for this managed resource.
        /// </summary>
        public readonly string Id;
        /// <summary>
        /// LLDP network policy name.
        /// </summary>
        public readonly string Name;
        /// <summary>
        /// Softphone. The structure of `softphone` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetSystemlldpNetworkpolicySoftphoneResult> Softphones;
        /// <summary>
        /// Streaming Video. The structure of `streaming_video` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetSystemlldpNetworkpolicyStreamingVideoResult> StreamingVideos;
        public readonly string? Vdomparam;
        /// <summary>
        /// Video Conferencing. The structure of `video_conferencing` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetSystemlldpNetworkpolicyVideoConferencingResult> VideoConferencings;
        /// <summary>
        /// Video Signaling. The structure of `video_signaling` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetSystemlldpNetworkpolicyVideoSignalingResult> VideoSignalings;
        /// <summary>
        /// Voice signaling. The structure of `voice_signaling` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetSystemlldpNetworkpolicyVoiceSignalingResult> VoiceSignalings;
        /// <summary>
        /// Voice. The structure of `voice` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetSystemlldpNetworkpolicyVoiceResult> Voices;

        [OutputConstructor]
        private GetSystemlldpNetworkpolicyResult(
            string comment,

            ImmutableArray<Outputs.GetSystemlldpNetworkpolicyGuestVoiceSignalingResult> guestVoiceSignalings,

            ImmutableArray<Outputs.GetSystemlldpNetworkpolicyGuestResult> guests,

            string id,

            string name,

            ImmutableArray<Outputs.GetSystemlldpNetworkpolicySoftphoneResult> softphones,

            ImmutableArray<Outputs.GetSystemlldpNetworkpolicyStreamingVideoResult> streamingVideos,

            string? vdomparam,

            ImmutableArray<Outputs.GetSystemlldpNetworkpolicyVideoConferencingResult> videoConferencings,

            ImmutableArray<Outputs.GetSystemlldpNetworkpolicyVideoSignalingResult> videoSignalings,

            ImmutableArray<Outputs.GetSystemlldpNetworkpolicyVoiceSignalingResult> voiceSignalings,

            ImmutableArray<Outputs.GetSystemlldpNetworkpolicyVoiceResult> voices)
        {
            Comment = comment;
            GuestVoiceSignalings = guestVoiceSignalings;
            Guests = guests;
            Id = id;
            Name = name;
            Softphones = softphones;
            StreamingVideos = streamingVideos;
            Vdomparam = vdomparam;
            VideoConferencings = videoConferencings;
            VideoSignalings = videoSignalings;
            VoiceSignalings = voiceSignalings;
            Voices = voices;
        }
    }
}
