<filename>sdk/dotnet/Zpa/Inspection/GetInspectionPredefinedControls.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 zscaler.PulumiPackage.Zpa.Inspection
{
    public static class GetInspectionPredefinedControls
    {
        /// <summary>
        /// Use the **zpa_inspection_predefined_controls** data source to get information about an OWASP predefined control and prefedined control version. This data source is required when creating an inspection profile.
        /// 
        /// {{% examples %}}
        /// ## Example Usage
        /// {{% example %}}
        /// 
        /// ```csharp
        /// using System.Collections.Generic;
        /// using Pulumi;
        /// using Zpa = Pulumi.Zpa;
        /// 
        /// return await Deployment.RunAsync(() =&gt; 
        /// {
        ///     var example = Zpa.Inspection.GetInspectionPredefinedControls.Invoke(new()
        ///     {
        ///         Name = "Failed to parse request body",
        ///         Version = "OWASP_CRS/3.3.0",
        ///     });
        /// 
        ///     return new Dictionary&lt;string, object?&gt;
        ///     {
        ///         ["zpaInspectionPredefinedControls"] = example.Apply(getInspectionPredefinedControlsResult =&gt; getInspectionPredefinedControlsResult),
        ///     };
        /// });
        /// ```
        /// {{% /example %}}
        /// {{% /examples %}}
        /// </summary>
        public static Task<GetInspectionPredefinedControlsResult> InvokeAsync(GetInspectionPredefinedControlsArgs? args = null, InvokeOptions? options = null)
            => global::Pulumi.Deployment.Instance.InvokeAsync<GetInspectionPredefinedControlsResult>("zpa:Inspection/getInspectionPredefinedControls:getInspectionPredefinedControls", args ?? new GetInspectionPredefinedControlsArgs(), options.WithDefaults());

        /// <summary>
        /// Use the **zpa_inspection_predefined_controls** data source to get information about an OWASP predefined control and prefedined control version. This data source is required when creating an inspection profile.
        /// 
        /// {{% examples %}}
        /// ## Example Usage
        /// {{% example %}}
        /// 
        /// ```csharp
        /// using System.Collections.Generic;
        /// using Pulumi;
        /// using Zpa = Pulumi.Zpa;
        /// 
        /// return await Deployment.RunAsync(() =&gt; 
        /// {
        ///     var example = Zpa.Inspection.GetInspectionPredefinedControls.Invoke(new()
        ///     {
        ///         Name = "Failed to parse request body",
        ///         Version = "OWASP_CRS/3.3.0",
        ///     });
        /// 
        ///     return new Dictionary&lt;string, object?&gt;
        ///     {
        ///         ["zpaInspectionPredefinedControls"] = example.Apply(getInspectionPredefinedControlsResult =&gt; getInspectionPredefinedControlsResult),
        ///     };
        /// });
        /// ```
        /// {{% /example %}}
        /// {{% /examples %}}
        /// </summary>
        public static Output<GetInspectionPredefinedControlsResult> Invoke(GetInspectionPredefinedControlsInvokeArgs? args = null, InvokeOptions? options = null)
            => global::Pulumi.Deployment.Instance.Invoke<GetInspectionPredefinedControlsResult>("zpa:Inspection/getInspectionPredefinedControls:getInspectionPredefinedControls", args ?? new GetInspectionPredefinedControlsInvokeArgs(), options.WithDefaults());
    }


    public sealed class GetInspectionPredefinedControlsArgs : global::Pulumi.InvokeArgs
    {
        /// <summary>
        /// (Computed)
        /// </summary>
        [Input("id")]
        public string? Id { get; set; }

        /// <summary>
        /// The name of the predefined control.
        /// </summary>
        [Input("name")]
        public string? Name { get; set; }

        /// <summary>
        /// The version of the predefined control, the default is: `OWASP_CRS/3.3.0`
        /// </summary>
        [Input("version")]
        public string? Version { get; set; }

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

    public sealed class GetInspectionPredefinedControlsInvokeArgs : global::Pulumi.InvokeArgs
    {
        /// <summary>
        /// (Computed)
        /// </summary>
        [Input("id")]
        public Input<string>? Id { get; set; }

        /// <summary>
        /// The name of the predefined control.
        /// </summary>
        [Input("name")]
        public Input<string>? Name { get; set; }

        /// <summary>
        /// The version of the predefined control, the default is: `OWASP_CRS/3.3.0`
        /// </summary>
        [Input("version")]
        public Input<string>? Version { get; set; }

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


    [OutputType]
    public sealed class GetInspectionPredefinedControlsResult
    {
        /// <summary>
        /// (Computed)
        /// </summary>
        public readonly string Action;
        /// <summary>
        /// (Computed)
        /// </summary>
        public readonly string ActionValue;
        /// <summary>
        /// (Computed)
        /// </summary>
        public readonly ImmutableArray<Outputs.GetInspectionPredefinedControlsAssociatedInspectionProfileNameResult> AssociatedInspectionProfileNames;
        /// <summary>
        /// (Computed)
        /// </summary>
        public readonly string Attachment;
        /// <summary>
        /// (Computed)
        /// </summary>
        public readonly string ControlGroup;
        /// <summary>
        /// (Computed)
        /// </summary>
        public readonly string ControlNumber;
        /// <summary>
        /// (Computed)
        /// </summary>
        public readonly string ControlType;
        /// <summary>
        /// (Computed)
        /// </summary>
        public readonly string CreationTime;
        /// <summary>
        /// (Computed)
        /// </summary>
        public readonly string DefaultAction;
        /// <summary>
        /// (Computed)
        /// </summary>
        public readonly string DefaultActionValue;
        /// <summary>
        /// (Computed)
        /// </summary>
        public readonly string Description;
        /// <summary>
        /// (Computed)
        /// </summary>
        public readonly string Id;
        /// <summary>
        /// (Computed)
        /// </summary>
        public readonly string ModifiedTime;
        public readonly string Modifiedby;
        /// <summary>
        /// (Computed)
        /// </summary>
        public readonly string Name;
        /// <summary>
        /// (Computed)
        /// </summary>
        public readonly string ParanoiaLevel;
        /// <summary>
        /// (Computed)
        /// </summary>
        public readonly string ProtocolType;
        /// <summary>
        /// (Computed)
        /// </summary>
        public readonly string Severity;
        public readonly string? Version;

        [OutputConstructor]
        private GetInspectionPredefinedControlsResult(
            string action,

            string actionValue,

            ImmutableArray<Outputs.GetInspectionPredefinedControlsAssociatedInspectionProfileNameResult> associatedInspectionProfileNames,

            string attachment,

            string controlGroup,

            string controlNumber,

            string controlType,

            string creationTime,

            string defaultAction,

            string defaultActionValue,

            string description,

            string id,

            string modifiedTime,

            string modifiedby,

            string name,

            string paranoiaLevel,

            string protocolType,

            string severity,

            string? version)
        {
            Action = action;
            ActionValue = actionValue;
            AssociatedInspectionProfileNames = associatedInspectionProfileNames;
            Attachment = attachment;
            ControlGroup = controlGroup;
            ControlNumber = controlNumber;
            ControlType = controlType;
            CreationTime = creationTime;
            DefaultAction = defaultAction;
            DefaultActionValue = defaultActionValue;
            Description = description;
            Id = id;
            ModifiedTime = modifiedTime;
            Modifiedby = modifiedby;
            Name = name;
            ParanoiaLevel = paranoiaLevel;
            ProtocolType = protocolType;
            Severity = severity;
            Version = version;
        }
    }
}
