<gh_stars>0// *** 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 GetFirewallPolicylist
    {
        /// <summary>
        /// Provides a list of `fortios.FirewallPolicy`.
        /// 
        /// {{% examples %}}
        /// ## Example Usage
        /// {{% example %}}
        /// 
        /// ```csharp
        /// using System.Collections.Generic;
        /// using System.Linq;
        /// using Pulumi;
        /// using Fortios = Pulumi.Fortios;
        /// 
        /// return await Deployment.RunAsync(() =&gt; 
        /// {
        ///     var sample1 = Fortios.GetFirewallPolicylist.Invoke();
        /// 
        ///     var sample2 = Fortios.GetFirewallPolicylist.Invoke(new()
        ///     {
        ///         Filter = "schedule==always&amp;action==accept,action==deny",
        ///     });
        /// 
        ///     return new Dictionary&lt;string, object?&gt;
        ///     {
        ///         ["output1"] = sample1,
        ///         ["sample2Output"] = sample2.Apply(getFirewallPolicylistResult =&gt; getFirewallPolicylistResult.Policyidlists),
        ///     };
        /// });
        /// ```
        /// {{% /example %}}
        /// {{% /examples %}}
        /// </summary>
        public static Task<GetFirewallPolicylistResult> InvokeAsync(GetFirewallPolicylistArgs? args = null, InvokeOptions? options = null)
            => global::Pulumi.Deployment.Instance.InvokeAsync<GetFirewallPolicylistResult>("fortios:index/getFirewallPolicylist:getFirewallPolicylist", args ?? new GetFirewallPolicylistArgs(), options.WithDefaults());

        /// <summary>
        /// Provides a list of `fortios.FirewallPolicy`.
        /// 
        /// {{% examples %}}
        /// ## Example Usage
        /// {{% example %}}
        /// 
        /// ```csharp
        /// using System.Collections.Generic;
        /// using System.Linq;
        /// using Pulumi;
        /// using Fortios = Pulumi.Fortios;
        /// 
        /// return await Deployment.RunAsync(() =&gt; 
        /// {
        ///     var sample1 = Fortios.GetFirewallPolicylist.Invoke();
        /// 
        ///     var sample2 = Fortios.GetFirewallPolicylist.Invoke(new()
        ///     {
        ///         Filter = "schedule==always&amp;action==accept,action==deny",
        ///     });
        /// 
        ///     return new Dictionary&lt;string, object?&gt;
        ///     {
        ///         ["output1"] = sample1,
        ///         ["sample2Output"] = sample2.Apply(getFirewallPolicylistResult =&gt; getFirewallPolicylistResult.Policyidlists),
        ///     };
        /// });
        /// ```
        /// {{% /example %}}
        /// {{% /examples %}}
        /// </summary>
        public static Output<GetFirewallPolicylistResult> Invoke(GetFirewallPolicylistInvokeArgs? args = null, InvokeOptions? options = null)
            => global::Pulumi.Deployment.Instance.Invoke<GetFirewallPolicylistResult>("fortios:index/getFirewallPolicylist:getFirewallPolicylist", args ?? new GetFirewallPolicylistInvokeArgs(), options.WithDefaults());
    }


    public sealed class GetFirewallPolicylistArgs : global::Pulumi.InvokeArgs
    {
        /// <summary>
        /// A filter used to scope the list. See Filter results of datasource.
        /// </summary>
        [Input("filter")]
        public string? Filter { get; set; }

        /// <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 GetFirewallPolicylistArgs()
        {
        }
        public static new GetFirewallPolicylistArgs Empty => new GetFirewallPolicylistArgs();
    }

    public sealed class GetFirewallPolicylistInvokeArgs : global::Pulumi.InvokeArgs
    {
        /// <summary>
        /// A filter used to scope the list. See Filter results of datasource.
        /// </summary>
        [Input("filter")]
        public Input<string>? Filter { get; set; }

        /// <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 GetFirewallPolicylistInvokeArgs()
        {
        }
        public static new GetFirewallPolicylistInvokeArgs Empty => new GetFirewallPolicylistInvokeArgs();
    }


    [OutputType]
    public sealed class GetFirewallPolicylistResult
    {
        public readonly string? Filter;
        /// <summary>
        /// The provider-assigned unique ID for this managed resource.
        /// </summary>
        public readonly string Id;
        /// <summary>
        /// A list of the `fortios.FirewallPolicy`.
        /// </summary>
        public readonly ImmutableArray<int> Policyidlists;
        public readonly string? Vdomparam;

        [OutputConstructor]
        private GetFirewallPolicylistResult(
            string? filter,

            string id,

            ImmutableArray<int> policyidlists,

            string? vdomparam)
        {
            Filter = filter;
            Id = id;
            Policyidlists = policyidlists;
            Vdomparam = vdomparam;
        }
    }
}
