<reponame>zscaler/pulumi-zpa// *** 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.ServiceEdge
{
    public static class GetServiceEdgeGroup
    {
        /// <summary>
        /// Use the **zpa_service_edge_group** data source to get information about a service edge group in the Zscaler Private Access cloud. This data source can then be referenced in an App Connector Group. This data source can then be referenced in the following resources:
        /// 
        /// * Create a server group
        /// * Provisioning Key
        /// * Access policy rule
        /// 
        /// {{% examples %}}
        /// ## Example Usage
        /// {{% example %}}
        /// 
        /// ```csharp
        /// using System.Collections.Generic;
        /// using Pulumi;
        /// using Zpa = Pulumi.Zpa;
        /// 
        /// return await Deployment.RunAsync(() =&gt; 
        /// {
        ///     var foo = Zpa.ServiceEdge.GetServiceEdgeGroup.Invoke(new()
        ///     {
        ///         Name = "DataCenter",
        ///     });
        /// 
        /// });
        /// ```
        /// 
        /// ```csharp
        /// using System.Collections.Generic;
        /// using Pulumi;
        /// using Zpa = Pulumi.Zpa;
        /// 
        /// return await Deployment.RunAsync(() =&gt; 
        /// {
        ///     var foo = Zpa.ServiceEdge.GetServiceEdgeGroup.Invoke(new()
        ///     {
        ///         Id = "123456789",
        ///     });
        /// 
        /// });
        /// ```
        /// {{% /example %}}
        /// {{% /examples %}}
        /// </summary>
        public static Task<GetServiceEdgeGroupResult> InvokeAsync(GetServiceEdgeGroupArgs? args = null, InvokeOptions? options = null)
            => global::Pulumi.Deployment.Instance.InvokeAsync<GetServiceEdgeGroupResult>("zpa:ServiceEdge/getServiceEdgeGroup:getServiceEdgeGroup", args ?? new GetServiceEdgeGroupArgs(), options.WithDefaults());

        /// <summary>
        /// Use the **zpa_service_edge_group** data source to get information about a service edge group in the Zscaler Private Access cloud. This data source can then be referenced in an App Connector Group. This data source can then be referenced in the following resources:
        /// 
        /// * Create a server group
        /// * Provisioning Key
        /// * Access policy rule
        /// 
        /// {{% examples %}}
        /// ## Example Usage
        /// {{% example %}}
        /// 
        /// ```csharp
        /// using System.Collections.Generic;
        /// using Pulumi;
        /// using Zpa = Pulumi.Zpa;
        /// 
        /// return await Deployment.RunAsync(() =&gt; 
        /// {
        ///     var foo = Zpa.ServiceEdge.GetServiceEdgeGroup.Invoke(new()
        ///     {
        ///         Name = "DataCenter",
        ///     });
        /// 
        /// });
        /// ```
        /// 
        /// ```csharp
        /// using System.Collections.Generic;
        /// using Pulumi;
        /// using Zpa = Pulumi.Zpa;
        /// 
        /// return await Deployment.RunAsync(() =&gt; 
        /// {
        ///     var foo = Zpa.ServiceEdge.GetServiceEdgeGroup.Invoke(new()
        ///     {
        ///         Id = "123456789",
        ///     });
        /// 
        /// });
        /// ```
        /// {{% /example %}}
        /// {{% /examples %}}
        /// </summary>
        public static Output<GetServiceEdgeGroupResult> Invoke(GetServiceEdgeGroupInvokeArgs? args = null, InvokeOptions? options = null)
            => global::Pulumi.Deployment.Instance.Invoke<GetServiceEdgeGroupResult>("zpa:ServiceEdge/getServiceEdgeGroup:getServiceEdgeGroup", args ?? new GetServiceEdgeGroupInvokeArgs(), options.WithDefaults());
    }


    public sealed class GetServiceEdgeGroupArgs : global::Pulumi.InvokeArgs
    {
        /// <summary>
        /// The ID of the service edge group to be exported.
        /// </summary>
        [Input("id")]
        public string? Id { get; set; }

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

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

    public sealed class GetServiceEdgeGroupInvokeArgs : global::Pulumi.InvokeArgs
    {
        /// <summary>
        /// The ID of the service edge group to be exported.
        /// </summary>
        [Input("id")]
        public Input<string>? Id { get; set; }

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

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


    [OutputType]
    public sealed class GetServiceEdgeGroupResult
    {
        /// <summary>
        /// (string) Whether Double Encryption is enabled or disabled for the app.
        /// </summary>
        public readonly string CityCountry;
        /// <summary>
        /// (string)
        /// </summary>
        public readonly string CountryCode;
        /// <summary>
        /// (string)
        /// </summary>
        public readonly string CreationTime;
        /// <summary>
        /// (string) Description of the Service Edge Group.
        /// </summary>
        public readonly string Description;
        /// <summary>
        /// (bool) Whether this App Connector Group is enabled or not. Default value: `true`. Supported values: `true`, `false`
        /// </summary>
        public readonly bool Enabled;
        /// <summary>
        /// (string)
        /// </summary>
        public readonly string GeoLocationId;
        /// <summary>
        /// (string)
        /// </summary>
        public readonly string Id;
        /// <summary>
        /// (string)
        /// </summary>
        public readonly string IsPublic;
        /// <summary>
        /// (string)
        /// </summary>
        public readonly string Latitude;
        /// <summary>
        /// (string)
        /// </summary>
        public readonly string Location;
        /// <summary>
        /// (string)
        /// </summary>
        public readonly string Longitude;
        /// <summary>
        /// (string)
        /// </summary>
        public readonly string ModifiedTime;
        public readonly string Modifiedby;
        /// <summary>
        /// (string)
        /// </summary>
        public readonly string Name;
        /// <summary>
        /// (bool) Whether the default version profile of the App Connector Group is applied or overridden. Default: `false` Supported values: `true`, `false`
        /// </summary>
        public readonly bool OverrideVersionProfile;
        /// <summary>
        /// (string)
        /// </summary>
        public readonly ImmutableArray<Outputs.GetServiceEdgeGroupServiceEdgeResult> ServiceEdges;
        /// <summary>
        /// (string)
        /// </summary>
        public readonly ImmutableArray<Outputs.GetServiceEdgeGroupTrustedNetworkResult> TrustedNetworks;
        /// <summary>
        /// (string) App Connectors in this group will attempt to update to a newer version of the software during this specified day
        /// </summary>
        public readonly string UpgradeDay;
        /// <summary>
        /// (string) App Connectors in this group will attempt to update to a newer version of the software during this specified time. Default value: `66600`. Integer in seconds (i.e., `-66600`). The integer should be greater than or equal to `0` and less than `86400`, in `15` minute intervals
        /// </summary>
        public readonly string UpgradeTimeInSecs;
        /// <summary>
        /// (String) ID of the version profile.
        /// Exported values are:
        /// </summary>
        public readonly string VersionProfileId;
        /// <summary>
        /// (String)
        /// Exported values are:
        /// </summary>
        public readonly string VersionProfileName;
        /// <summary>
        /// (string)
        /// Exported values are:
        /// </summary>
        public readonly string VersionProfileVisibilityScope;

        [OutputConstructor]
        private GetServiceEdgeGroupResult(
            string cityCountry,

            string countryCode,

            string creationTime,

            string description,

            bool enabled,

            string geoLocationId,

            string id,

            string isPublic,

            string latitude,

            string location,

            string longitude,

            string modifiedTime,

            string modifiedby,

            string name,

            bool overrideVersionProfile,

            ImmutableArray<Outputs.GetServiceEdgeGroupServiceEdgeResult> serviceEdges,

            ImmutableArray<Outputs.GetServiceEdgeGroupTrustedNetworkResult> trustedNetworks,

            string upgradeDay,

            string upgradeTimeInSecs,

            string versionProfileId,

            string versionProfileName,

            string versionProfileVisibilityScope)
        {
            CityCountry = cityCountry;
            CountryCode = countryCode;
            CreationTime = creationTime;
            Description = description;
            Enabled = enabled;
            GeoLocationId = geoLocationId;
            Id = id;
            IsPublic = isPublic;
            Latitude = latitude;
            Location = location;
            Longitude = longitude;
            ModifiedTime = modifiedTime;
            Modifiedby = modifiedby;
            Name = name;
            OverrideVersionProfile = overrideVersionProfile;
            ServiceEdges = serviceEdges;
            TrustedNetworks = trustedNetworks;
            UpgradeDay = upgradeDay;
            UpgradeTimeInSecs = upgradeTimeInSecs;
            VersionProfileId = versionProfileId;
            VersionProfileName = versionProfileName;
            VersionProfileVisibilityScope = versionProfileVisibilityScope;
        }
    }
}
