<filename>sdk/dotnet/Zpa/IdpController/GetIdPController.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.IdpController
{
    public static class GetIdPController
    {
        /// <summary>
        /// Use the **zpa_idp_controller** data source to get information about an Identity Provider created in the Zscaler Private Access cloud. This data source is required when creating:
        /// 
        /// 1. Access policy Rules
        /// 2. Access policy timeout rules
        /// 3. Access policy forwarding rules
        /// 4. Access policy inspection rules
        /// 5. Access policy isolation rules
        /// 
        /// {{% examples %}}
        /// ## Example Usage
        /// {{% example %}}
        /// 
        /// ```csharp
        /// using System.Collections.Generic;
        /// using Pulumi;
        /// using Zpa = Pulumi.Zpa;
        /// 
        /// return await Deployment.RunAsync(() =&gt; 
        /// {
        ///     var example = Zpa.IdpController.GetIdPController.Invoke(new()
        ///     {
        ///         Name = "idp_name",
        ///     });
        /// 
        /// });
        /// ```
        /// 
        /// ```csharp
        /// using System.Collections.Generic;
        /// using Pulumi;
        /// using Zpa = Pulumi.Zpa;
        /// 
        /// return await Deployment.RunAsync(() =&gt; 
        /// {
        ///     var example = Zpa.IdpController.GetIdPController.Invoke(new()
        ///     {
        ///         Id = "1234567890",
        ///     });
        /// 
        /// });
        /// ```
        /// {{% /example %}}
        /// {{% /examples %}}
        /// </summary>
        public static Task<GetIdPControllerResult> InvokeAsync(GetIdPControllerArgs? args = null, InvokeOptions? options = null)
            => global::Pulumi.Deployment.Instance.InvokeAsync<GetIdPControllerResult>("zpa:idpController/getIdPController:getIdPController", args ?? new GetIdPControllerArgs(), options.WithDefaults());

        /// <summary>
        /// Use the **zpa_idp_controller** data source to get information about an Identity Provider created in the Zscaler Private Access cloud. This data source is required when creating:
        /// 
        /// 1. Access policy Rules
        /// 2. Access policy timeout rules
        /// 3. Access policy forwarding rules
        /// 4. Access policy inspection rules
        /// 5. Access policy isolation rules
        /// 
        /// {{% examples %}}
        /// ## Example Usage
        /// {{% example %}}
        /// 
        /// ```csharp
        /// using System.Collections.Generic;
        /// using Pulumi;
        /// using Zpa = Pulumi.Zpa;
        /// 
        /// return await Deployment.RunAsync(() =&gt; 
        /// {
        ///     var example = Zpa.IdpController.GetIdPController.Invoke(new()
        ///     {
        ///         Name = "idp_name",
        ///     });
        /// 
        /// });
        /// ```
        /// 
        /// ```csharp
        /// using System.Collections.Generic;
        /// using Pulumi;
        /// using Zpa = Pulumi.Zpa;
        /// 
        /// return await Deployment.RunAsync(() =&gt; 
        /// {
        ///     var example = Zpa.IdpController.GetIdPController.Invoke(new()
        ///     {
        ///         Id = "1234567890",
        ///     });
        /// 
        /// });
        /// ```
        /// {{% /example %}}
        /// {{% /examples %}}
        /// </summary>
        public static Output<GetIdPControllerResult> Invoke(GetIdPControllerInvokeArgs? args = null, InvokeOptions? options = null)
            => global::Pulumi.Deployment.Instance.Invoke<GetIdPControllerResult>("zpa:idpController/getIdPController:getIdPController", args ?? new GetIdPControllerInvokeArgs(), options.WithDefaults());
    }


    public sealed class GetIdPControllerArgs : global::Pulumi.InvokeArgs
    {
        /// <summary>
        /// The name of the Identity Provider (IdP) to be exported.
        /// </summary>
        [Input("id")]
        public string? Id { get; set; }

        /// <summary>
        /// The name of the Identity Provider (IdP) to be exported.
        /// </summary>
        [Input("name")]
        public string? Name { get; set; }

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

    public sealed class GetIdPControllerInvokeArgs : global::Pulumi.InvokeArgs
    {
        /// <summary>
        /// The name of the Identity Provider (IdP) to be exported.
        /// </summary>
        [Input("id")]
        public Input<string>? Id { get; set; }

        /// <summary>
        /// The name of the Identity Provider (IdP) to be exported.
        /// </summary>
        [Input("name")]
        public Input<string>? Name { get; set; }

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


    [OutputType]
    public sealed class GetIdPControllerResult
    {
        /// <summary>
        /// (Computed)
        /// </summary>
        public readonly ImmutableArray<Outputs.GetIdPControllerAdminMetadataResult> AdminMetadatas;
        public readonly string AdminSpSigningCertId;
        /// <summary>
        /// (string)
        /// </summary>
        public readonly string AutoProvision;
        /// <summary>
        /// (string)
        /// </summary>
        public readonly string CreationTime;
        /// <summary>
        /// (string)
        /// </summary>
        public readonly string Description;
        /// <summary>
        /// (bool)
        /// </summary>
        public readonly bool DisableSamlBasedPolicy;
        /// <summary>
        /// (string)
        /// </summary>
        public readonly ImmutableArray<string> DomainLists;
        /// <summary>
        /// (bool)
        /// </summary>
        public readonly bool EnableScimBasedPolicy;
        /// <summary>
        /// (bool) Default value if null is True
        /// </summary>
        public readonly bool Enabled;
        public readonly string Id;
        /// <summary>
        /// (string)
        /// </summary>
        public readonly string IdpEntityId;
        /// <summary>
        /// (string)
        /// </summary>
        public readonly string LoginNameAttribute;
        /// <summary>
        /// (string)
        /// </summary>
        public readonly string LoginUrl;
        /// <summary>
        /// (string)
        /// </summary>
        public readonly string ModifiedTime;
        public readonly string Modifiedby;
        public readonly string Name;
        /// <summary>
        /// (bool)
        /// </summary>
        public readonly bool ReauthOnUserUpdate;
        /// <summary>
        /// (bool)
        /// </summary>
        public readonly bool RedirectBinding;
        /// <summary>
        /// (bool)
        /// </summary>
        public readonly bool ScimEnabled;
        /// <summary>
        /// (string)
        /// </summary>
        public readonly string ScimServiceProviderEndpoint;
        /// <summary>
        /// (bool)
        /// </summary>
        public readonly bool ScimSharedSecretExists;
        /// <summary>
        /// (string)
        /// </summary>
        public readonly string SignSamlRequest;
        /// <summary>
        /// (string)
        /// </summary>
        public readonly ImmutableArray<string> SsoTypes;
        /// <summary>
        /// (bool)
        /// </summary>
        public readonly bool UseCustomSpMetadata;
        /// <summary>
        /// (Computed)
        /// </summary>
        public readonly ImmutableArray<Outputs.GetIdPControllerUserMetadataResult> UserMetadatas;
        public readonly string UserSpSigningCertId;

        [OutputConstructor]
        private GetIdPControllerResult(
            ImmutableArray<Outputs.GetIdPControllerAdminMetadataResult> adminMetadatas,

            string adminSpSigningCertId,

            string autoProvision,

            string creationTime,

            string description,

            bool disableSamlBasedPolicy,

            ImmutableArray<string> domainLists,

            bool enableScimBasedPolicy,

            bool enabled,

            string id,

            string idpEntityId,

            string loginNameAttribute,

            string loginUrl,

            string modifiedTime,

            string modifiedby,

            string name,

            bool reauthOnUserUpdate,

            bool redirectBinding,

            bool scimEnabled,

            string scimServiceProviderEndpoint,

            bool scimSharedSecretExists,

            string signSamlRequest,

            ImmutableArray<string> ssoTypes,

            bool useCustomSpMetadata,

            ImmutableArray<Outputs.GetIdPControllerUserMetadataResult> userMetadatas,

            string userSpSigningCertId)
        {
            AdminMetadatas = adminMetadatas;
            AdminSpSigningCertId = adminSpSigningCertId;
            AutoProvision = autoProvision;
            CreationTime = creationTime;
            Description = description;
            DisableSamlBasedPolicy = disableSamlBasedPolicy;
            DomainLists = domainLists;
            EnableScimBasedPolicy = enableScimBasedPolicy;
            Enabled = enabled;
            Id = id;
            IdpEntityId = idpEntityId;
            LoginNameAttribute = loginNameAttribute;
            LoginUrl = loginUrl;
            ModifiedTime = modifiedTime;
            Modifiedby = modifiedby;
            Name = name;
            ReauthOnUserUpdate = reauthOnUserUpdate;
            RedirectBinding = redirectBinding;
            ScimEnabled = scimEnabled;
            ScimServiceProviderEndpoint = scimServiceProviderEndpoint;
            ScimSharedSecretExists = scimSharedSecretExists;
            SignSamlRequest = signSamlRequest;
            SsoTypes = ssoTypes;
            UseCustomSpMetadata = useCustomSpMetadata;
            UserMetadatas = userMetadatas;
            UserSpSigningCertId = userSpSigningCertId;
        }
    }
}
