// *** 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;

namespace Pulumi.AliCloud.Ecs
{
    /// <summary>
    /// Provides a ECS auto provisioning group resource which is a solution that uses preemptive instances and pay_as_you_go instances to rapidly deploy clusters.
    /// 
    /// &gt; **NOTE:** Available in 1.79.0+
    /// 
    /// ## Example Usage
    /// 
    /// ```csharp
    /// using System.Collections.Generic;
    /// using Pulumi;
    /// using AliCloud = Pulumi.AliCloud;
    /// 
    /// return await Deployment.RunAsync(() =&gt; 
    /// {
    ///     var config = new Config();
    ///     var name = config.Get("name") ?? "auto_provisioning_group";
    ///     var defaultZones = AliCloud.GetZones.Invoke(new()
    ///     {
    ///         AvailableDiskCategory = "cloud_efficiency",
    ///         AvailableResourceCreation = "VSwitch",
    ///     });
    /// 
    ///     var defaultNetwork = new AliCloud.Vpc.Network("defaultNetwork", new()
    ///     {
    ///         VpcName = name,
    ///         CidrBlock = "172.16.0.0/16",
    ///     });
    /// 
    ///     var defaultSwitch = new AliCloud.Vpc.Switch("defaultSwitch", new()
    ///     {
    ///         VpcId = defaultNetwork.Id,
    ///         CidrBlock = "172.16.0.0/24",
    ///         ZoneId = defaultZones.Apply(getZonesResult =&gt; getZonesResult.Zones[0]?.Id),
    ///         VswitchName = name,
    ///     });
    /// 
    ///     var defaultSecurityGroup = new AliCloud.Ecs.SecurityGroup("defaultSecurityGroup", new()
    ///     {
    ///         VpcId = defaultNetwork.Id,
    ///     });
    /// 
    ///     var defaultImages = AliCloud.Ecs.GetImages.Invoke(new()
    ///     {
    ///         NameRegex = "^ubuntu_18.*64",
    ///         MostRecent = true,
    ///         Owners = "system",
    ///     });
    /// 
    ///     var template = new AliCloud.Ecs.EcsLaunchTemplate("template", new()
    ///     {
    ///         ImageId = defaultImages.Apply(getImagesResult =&gt; getImagesResult.Images[0]?.Id),
    ///         InstanceType = "ecs.n1.tiny",
    ///         SecurityGroupId = defaultSecurityGroup.Id,
    ///     });
    /// 
    ///     var defaultAutoProvisioningGroup = new AliCloud.Ecs.AutoProvisioningGroup("defaultAutoProvisioningGroup", new()
    ///     {
    ///         LaunchTemplateId = template.Id,
    ///         TotalTargetCapacity = "4",
    ///         PayAsYouGoTargetCapacity = "1",
    ///         SpotTargetCapacity = "2",
    ///         LaunchTemplateConfigs = new[]
    ///         {
    ///             new AliCloud.Ecs.Inputs.AutoProvisioningGroupLaunchTemplateConfigArgs
    ///             {
    ///                 InstanceType = "ecs.n1.small",
    ///                 VswitchId = defaultSwitch.Id,
    ///                 WeightedCapacity = "2",
    ///                 MaxPrice = "2",
    ///             },
    ///         },
    ///     });
    /// 
    /// });
    /// ```
    /// ## Block config
    /// 
    /// The config mapping supports the following:
    /// * `instance_type` - (Optional) The instance type of the Nth extended configurations of the launch template.
    /// * `max_price` - (Required) The maximum price of the instance type specified in the Nth extended configurations of the launch template.
    /// * `vswitch_id` - (Required) The ID of the VSwitch in the Nth extended configurations of the launch template.
    /// * `weighted_capacity` - (Required) The weight of the instance type specified in the Nth extended configurations of the launch template.
    /// * `priority` - (Optional) The priority of the instance type specified in the Nth extended configurations of the launch template. A value of 0 indicates the highest priority.
    /// 
    /// ## Import
    /// 
    /// ECS auto provisioning group can be imported using the id, e.g.
    /// 
    /// ```sh
    ///  $ pulumi import alicloud:ecs/autoProvisioningGroup:AutoProvisioningGroup example asg-abc123456
    /// ```
    /// </summary>
    [AliCloudResourceType("alicloud:ecs/autoProvisioningGroup:AutoProvisioningGroup")]
    public partial class AutoProvisioningGroup : global::Pulumi.CustomResource
    {
        /// <summary>
        /// The name of the auto provisioning group to be created. It must be 2 to 128 characters in length. It must start with a letter but cannot start with http:// or https://. It can contain letters, digits, colons (:), underscores (_), and hyphens (-)
        /// </summary>
        [Output("autoProvisioningGroupName")]
        public Output<string> AutoProvisioningGroupName { get; private set; } = null!;

        /// <summary>
        /// The type of the auto provisioning group. Valid values:`request` and `maintain`,Default value: `maintain`.
        /// </summary>
        [Output("autoProvisioningGroupType")]
        public Output<string?> AutoProvisioningGroupType { get; private set; } = null!;

        /// <summary>
        /// The type of supplemental instances. When the total value of `PayAsYouGoTargetCapacity` and `SpotTargetCapacity` is smaller than the value of TotalTargetCapacity, the auto provisioning group will create instances of the specified type to meet the capacity requirements. Valid values:`PayAsYouGo`: Pay-as-you-go instances; `Spot`: Preemptible instances, Default value: `Spot`.
        /// </summary>
        [Output("defaultTargetCapacityType")]
        public Output<string?> DefaultTargetCapacityType { get; private set; } = null!;

        /// <summary>
        /// The description of the auto provisioning group.
        /// </summary>
        [Output("description")]
        public Output<string?> Description { get; private set; } = null!;

        /// <summary>
        /// The shutdown policy for excess preemptible instances followed when the capacity of the auto provisioning group exceeds the target capacity. Valid values: `no-termination` and `termination`,Default value: `no-termination`.
        /// </summary>
        [Output("excessCapacityTerminationPolicy")]
        public Output<string?> ExcessCapacityTerminationPolicy { get; private set; } = null!;

        /// <summary>
        /// DataDisk mappings to attach to ecs instance. See Block config below for details.
        /// </summary>
        [Output("launchTemplateConfigs")]
        public Output<ImmutableArray<Outputs.AutoProvisioningGroupLaunchTemplateConfig>> LaunchTemplateConfigs { get; private set; } = null!;

        /// <summary>
        /// The ID of the instance launch template associated with the auto provisioning group.
        /// </summary>
        [Output("launchTemplateId")]
        public Output<string> LaunchTemplateId { get; private set; } = null!;

        /// <summary>
        /// The version of the instance launch template associated with the auto provisioning group.
        /// </summary>
        [Output("launchTemplateVersion")]
        public Output<string> LaunchTemplateVersion { get; private set; } = null!;

        /// <summary>
        /// The global maximum price for preemptible instances in the auto provisioning group. If both the `MaxSpotPrice` and `LaunchTemplateConfig.N.MaxPrice` parameters are specified, the maximum price is the lower value of the two.
        /// </summary>
        [Output("maxSpotPrice")]
        public Output<double> MaxSpotPrice { get; private set; } = null!;

        /// <summary>
        /// The scale-out policy for pay-as-you-go instances. Valid values: `lowest-price` and `prioritized`,Default value: `lowest-price`.
        /// </summary>
        [Output("payAsYouGoAllocationStrategy")]
        public Output<string?> PayAsYouGoAllocationStrategy { get; private set; } = null!;

        /// <summary>
        /// The target capacity of pay-as-you-go instances in the auto provisioning group.
        /// </summary>
        [Output("payAsYouGoTargetCapacity")]
        public Output<string?> PayAsYouGoTargetCapacity { get; private set; } = null!;

        /// <summary>
        /// The scale-out policy for preemptible instances. Valid values:`lowest-price` and `diversified`,Default value: `lowest-price`.
        /// </summary>
        [Output("spotAllocationStrategy")]
        public Output<string?> SpotAllocationStrategy { get; private set; } = null!;

        /// <summary>
        /// The default behavior after preemptible instances are shut down. Valid values: `stop` and `terminate`,Default value: `stop`.
        /// </summary>
        [Output("spotInstanceInterruptionBehavior")]
        public Output<string?> SpotInstanceInterruptionBehavior { get; private set; } = null!;

        /// <summary>
        /// This parameter takes effect when the `SpotAllocationStrategy` parameter is set to `lowest-price`. The auto provisioning group selects instance types of the lowest cost to create instances.
        /// </summary>
        [Output("spotInstancePoolsToUseCount")]
        public Output<int> SpotInstancePoolsToUseCount { get; private set; } = null!;

        /// <summary>
        /// The target capacity of preemptible instances in the auto provisioning group.
        /// </summary>
        [Output("spotTargetCapacity")]
        public Output<string?> SpotTargetCapacity { get; private set; } = null!;

        /// <summary>
        /// Specifies whether to release instances of the auto provisioning group. Valid values:`false` and `true`, default value: `false`.
        /// </summary>
        [Output("terminateInstances")]
        public Output<bool?> TerminateInstances { get; private set; } = null!;

        /// <summary>
        /// The shutdown policy for preemptible instances when the auto provisioning group expires. Valid values: `false` and `true`, default value: `false`.
        /// </summary>
        [Output("terminateInstancesWithExpiration")]
        public Output<bool?> TerminateInstancesWithExpiration { get; private set; } = null!;

        /// <summary>
        /// The total target capacity of the auto provisioning group. The target capacity consists of the following three parts:PayAsYouGoTargetCapacity,SpotTargetCapacity and the supplemental capacity besides PayAsYouGoTargetCapacity and SpotTargetCapacity.
        /// </summary>
        [Output("totalTargetCapacity")]
        public Output<string> TotalTargetCapacity { get; private set; } = null!;

        /// <summary>
        /// The time when the auto provisioning group is started. The period of time between this point in time and the point in time specified by the `valid_until` parameter is the effective time period of the auto provisioning group.By default, an auto provisioning group is immediately started after creation.
        /// </summary>
        [Output("validFrom")]
        public Output<string> ValidFrom { get; private set; } = null!;

        /// <summary>
        /// The time when the auto provisioning group expires. The period of time between this point in time and the point in time specified by the `valid_from` parameter is the effective time period of the auto provisioning group.By default, an auto provisioning group never expires.
        /// </summary>
        [Output("validUntil")]
        public Output<string> ValidUntil { get; private set; } = null!;


        /// <summary>
        /// Create a AutoProvisioningGroup resource with the given unique name, arguments, and options.
        /// </summary>
        ///
        /// <param name="name">The unique name of the resource</param>
        /// <param name="args">The arguments used to populate this resource's properties</param>
        /// <param name="options">A bag of options that control this resource's behavior</param>
        public AutoProvisioningGroup(string name, AutoProvisioningGroupArgs args, CustomResourceOptions? options = null)
            : base("alicloud:ecs/autoProvisioningGroup:AutoProvisioningGroup", name, args ?? new AutoProvisioningGroupArgs(), MakeResourceOptions(options, ""))
        {
        }

        private AutoProvisioningGroup(string name, Input<string> id, AutoProvisioningGroupState? state = null, CustomResourceOptions? options = null)
            : base("alicloud:ecs/autoProvisioningGroup:AutoProvisioningGroup", name, state, MakeResourceOptions(options, id))
        {
        }

        private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input<string>? id)
        {
            var defaultOptions = new CustomResourceOptions
            {
                Version = Utilities.Version,
                PluginDownloadURL = "github://api.github.com/rhysmdnz/pulumi-alicloud",
            };
            var merged = CustomResourceOptions.Merge(defaultOptions, options);
            // Override the ID if one was specified for consistency with other language SDKs.
            merged.Id = id ?? merged.Id;
            return merged;
        }
        /// <summary>
        /// Get an existing AutoProvisioningGroup resource's state with the given name, ID, and optional extra
        /// properties used to qualify the lookup.
        /// </summary>
        ///
        /// <param name="name">The unique name of the resulting resource.</param>
        /// <param name="id">The unique provider ID of the resource to lookup.</param>
        /// <param name="state">Any extra arguments used during the lookup.</param>
        /// <param name="options">A bag of options that control this resource's behavior</param>
        public static AutoProvisioningGroup Get(string name, Input<string> id, AutoProvisioningGroupState? state = null, CustomResourceOptions? options = null)
        {
            return new AutoProvisioningGroup(name, id, state, options);
        }
    }

    public sealed class AutoProvisioningGroupArgs : global::Pulumi.ResourceArgs
    {
        /// <summary>
        /// The name of the auto provisioning group to be created. It must be 2 to 128 characters in length. It must start with a letter but cannot start with http:// or https://. It can contain letters, digits, colons (:), underscores (_), and hyphens (-)
        /// </summary>
        [Input("autoProvisioningGroupName")]
        public Input<string>? AutoProvisioningGroupName { get; set; }

        /// <summary>
        /// The type of the auto provisioning group. Valid values:`request` and `maintain`,Default value: `maintain`.
        /// </summary>
        [Input("autoProvisioningGroupType")]
        public Input<string>? AutoProvisioningGroupType { get; set; }

        /// <summary>
        /// The type of supplemental instances. When the total value of `PayAsYouGoTargetCapacity` and `SpotTargetCapacity` is smaller than the value of TotalTargetCapacity, the auto provisioning group will create instances of the specified type to meet the capacity requirements. Valid values:`PayAsYouGo`: Pay-as-you-go instances; `Spot`: Preemptible instances, Default value: `Spot`.
        /// </summary>
        [Input("defaultTargetCapacityType")]
        public Input<string>? DefaultTargetCapacityType { get; set; }

        /// <summary>
        /// The description of the auto provisioning group.
        /// </summary>
        [Input("description")]
        public Input<string>? Description { get; set; }

        /// <summary>
        /// The shutdown policy for excess preemptible instances followed when the capacity of the auto provisioning group exceeds the target capacity. Valid values: `no-termination` and `termination`,Default value: `no-termination`.
        /// </summary>
        [Input("excessCapacityTerminationPolicy")]
        public Input<string>? ExcessCapacityTerminationPolicy { get; set; }

        [Input("launchTemplateConfigs", required: true)]
        private InputList<Inputs.AutoProvisioningGroupLaunchTemplateConfigArgs>? _launchTemplateConfigs;

        /// <summary>
        /// DataDisk mappings to attach to ecs instance. See Block config below for details.
        /// </summary>
        public InputList<Inputs.AutoProvisioningGroupLaunchTemplateConfigArgs> LaunchTemplateConfigs
        {
            get => _launchTemplateConfigs ?? (_launchTemplateConfigs = new InputList<Inputs.AutoProvisioningGroupLaunchTemplateConfigArgs>());
            set => _launchTemplateConfigs = value;
        }

        /// <summary>
        /// The ID of the instance launch template associated with the auto provisioning group.
        /// </summary>
        [Input("launchTemplateId", required: true)]
        public Input<string> LaunchTemplateId { get; set; } = null!;

        /// <summary>
        /// The version of the instance launch template associated with the auto provisioning group.
        /// </summary>
        [Input("launchTemplateVersion")]
        public Input<string>? LaunchTemplateVersion { get; set; }

        /// <summary>
        /// The global maximum price for preemptible instances in the auto provisioning group. If both the `MaxSpotPrice` and `LaunchTemplateConfig.N.MaxPrice` parameters are specified, the maximum price is the lower value of the two.
        /// </summary>
        [Input("maxSpotPrice")]
        public Input<double>? MaxSpotPrice { get; set; }

        /// <summary>
        /// The scale-out policy for pay-as-you-go instances. Valid values: `lowest-price` and `prioritized`,Default value: `lowest-price`.
        /// </summary>
        [Input("payAsYouGoAllocationStrategy")]
        public Input<string>? PayAsYouGoAllocationStrategy { get; set; }

        /// <summary>
        /// The target capacity of pay-as-you-go instances in the auto provisioning group.
        /// </summary>
        [Input("payAsYouGoTargetCapacity")]
        public Input<string>? PayAsYouGoTargetCapacity { get; set; }

        /// <summary>
        /// The scale-out policy for preemptible instances. Valid values:`lowest-price` and `diversified`,Default value: `lowest-price`.
        /// </summary>
        [Input("spotAllocationStrategy")]
        public Input<string>? SpotAllocationStrategy { get; set; }

        /// <summary>
        /// The default behavior after preemptible instances are shut down. Valid values: `stop` and `terminate`,Default value: `stop`.
        /// </summary>
        [Input("spotInstanceInterruptionBehavior")]
        public Input<string>? SpotInstanceInterruptionBehavior { get; set; }

        /// <summary>
        /// This parameter takes effect when the `SpotAllocationStrategy` parameter is set to `lowest-price`. The auto provisioning group selects instance types of the lowest cost to create instances.
        /// </summary>
        [Input("spotInstancePoolsToUseCount")]
        public Input<int>? SpotInstancePoolsToUseCount { get; set; }

        /// <summary>
        /// The target capacity of preemptible instances in the auto provisioning group.
        /// </summary>
        [Input("spotTargetCapacity")]
        public Input<string>? SpotTargetCapacity { get; set; }

        /// <summary>
        /// Specifies whether to release instances of the auto provisioning group. Valid values:`false` and `true`, default value: `false`.
        /// </summary>
        [Input("terminateInstances")]
        public Input<bool>? TerminateInstances { get; set; }

        /// <summary>
        /// The shutdown policy for preemptible instances when the auto provisioning group expires. Valid values: `false` and `true`, default value: `false`.
        /// </summary>
        [Input("terminateInstancesWithExpiration")]
        public Input<bool>? TerminateInstancesWithExpiration { get; set; }

        /// <summary>
        /// The total target capacity of the auto provisioning group. The target capacity consists of the following three parts:PayAsYouGoTargetCapacity,SpotTargetCapacity and the supplemental capacity besides PayAsYouGoTargetCapacity and SpotTargetCapacity.
        /// </summary>
        [Input("totalTargetCapacity", required: true)]
        public Input<string> TotalTargetCapacity { get; set; } = null!;

        /// <summary>
        /// The time when the auto provisioning group is started. The period of time between this point in time and the point in time specified by the `valid_until` parameter is the effective time period of the auto provisioning group.By default, an auto provisioning group is immediately started after creation.
        /// </summary>
        [Input("validFrom")]
        public Input<string>? ValidFrom { get; set; }

        /// <summary>
        /// The time when the auto provisioning group expires. The period of time between this point in time and the point in time specified by the `valid_from` parameter is the effective time period of the auto provisioning group.By default, an auto provisioning group never expires.
        /// </summary>
        [Input("validUntil")]
        public Input<string>? ValidUntil { get; set; }

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

    public sealed class AutoProvisioningGroupState : global::Pulumi.ResourceArgs
    {
        /// <summary>
        /// The name of the auto provisioning group to be created. It must be 2 to 128 characters in length. It must start with a letter but cannot start with http:// or https://. It can contain letters, digits, colons (:), underscores (_), and hyphens (-)
        /// </summary>
        [Input("autoProvisioningGroupName")]
        public Input<string>? AutoProvisioningGroupName { get; set; }

        /// <summary>
        /// The type of the auto provisioning group. Valid values:`request` and `maintain`,Default value: `maintain`.
        /// </summary>
        [Input("autoProvisioningGroupType")]
        public Input<string>? AutoProvisioningGroupType { get; set; }

        /// <summary>
        /// The type of supplemental instances. When the total value of `PayAsYouGoTargetCapacity` and `SpotTargetCapacity` is smaller than the value of TotalTargetCapacity, the auto provisioning group will create instances of the specified type to meet the capacity requirements. Valid values:`PayAsYouGo`: Pay-as-you-go instances; `Spot`: Preemptible instances, Default value: `Spot`.
        /// </summary>
        [Input("defaultTargetCapacityType")]
        public Input<string>? DefaultTargetCapacityType { get; set; }

        /// <summary>
        /// The description of the auto provisioning group.
        /// </summary>
        [Input("description")]
        public Input<string>? Description { get; set; }

        /// <summary>
        /// The shutdown policy for excess preemptible instances followed when the capacity of the auto provisioning group exceeds the target capacity. Valid values: `no-termination` and `termination`,Default value: `no-termination`.
        /// </summary>
        [Input("excessCapacityTerminationPolicy")]
        public Input<string>? ExcessCapacityTerminationPolicy { get; set; }

        [Input("launchTemplateConfigs")]
        private InputList<Inputs.AutoProvisioningGroupLaunchTemplateConfigGetArgs>? _launchTemplateConfigs;

        /// <summary>
        /// DataDisk mappings to attach to ecs instance. See Block config below for details.
        /// </summary>
        public InputList<Inputs.AutoProvisioningGroupLaunchTemplateConfigGetArgs> LaunchTemplateConfigs
        {
            get => _launchTemplateConfigs ?? (_launchTemplateConfigs = new InputList<Inputs.AutoProvisioningGroupLaunchTemplateConfigGetArgs>());
            set => _launchTemplateConfigs = value;
        }

        /// <summary>
        /// The ID of the instance launch template associated with the auto provisioning group.
        /// </summary>
        [Input("launchTemplateId")]
        public Input<string>? LaunchTemplateId { get; set; }

        /// <summary>
        /// The version of the instance launch template associated with the auto provisioning group.
        /// </summary>
        [Input("launchTemplateVersion")]
        public Input<string>? LaunchTemplateVersion { get; set; }

        /// <summary>
        /// The global maximum price for preemptible instances in the auto provisioning group. If both the `MaxSpotPrice` and `LaunchTemplateConfig.N.MaxPrice` parameters are specified, the maximum price is the lower value of the two.
        /// </summary>
        [Input("maxSpotPrice")]
        public Input<double>? MaxSpotPrice { get; set; }

        /// <summary>
        /// The scale-out policy for pay-as-you-go instances. Valid values: `lowest-price` and `prioritized`,Default value: `lowest-price`.
        /// </summary>
        [Input("payAsYouGoAllocationStrategy")]
        public Input<string>? PayAsYouGoAllocationStrategy { get; set; }

        /// <summary>
        /// The target capacity of pay-as-you-go instances in the auto provisioning group.
        /// </summary>
        [Input("payAsYouGoTargetCapacity")]
        public Input<string>? PayAsYouGoTargetCapacity { get; set; }

        /// <summary>
        /// The scale-out policy for preemptible instances. Valid values:`lowest-price` and `diversified`,Default value: `lowest-price`.
        /// </summary>
        [Input("spotAllocationStrategy")]
        public Input<string>? SpotAllocationStrategy { get; set; }

        /// <summary>
        /// The default behavior after preemptible instances are shut down. Valid values: `stop` and `terminate`,Default value: `stop`.
        /// </summary>
        [Input("spotInstanceInterruptionBehavior")]
        public Input<string>? SpotInstanceInterruptionBehavior { get; set; }

        /// <summary>
        /// This parameter takes effect when the `SpotAllocationStrategy` parameter is set to `lowest-price`. The auto provisioning group selects instance types of the lowest cost to create instances.
        /// </summary>
        [Input("spotInstancePoolsToUseCount")]
        public Input<int>? SpotInstancePoolsToUseCount { get; set; }

        /// <summary>
        /// The target capacity of preemptible instances in the auto provisioning group.
        /// </summary>
        [Input("spotTargetCapacity")]
        public Input<string>? SpotTargetCapacity { get; set; }

        /// <summary>
        /// Specifies whether to release instances of the auto provisioning group. Valid values:`false` and `true`, default value: `false`.
        /// </summary>
        [Input("terminateInstances")]
        public Input<bool>? TerminateInstances { get; set; }

        /// <summary>
        /// The shutdown policy for preemptible instances when the auto provisioning group expires. Valid values: `false` and `true`, default value: `false`.
        /// </summary>
        [Input("terminateInstancesWithExpiration")]
        public Input<bool>? TerminateInstancesWithExpiration { get; set; }

        /// <summary>
        /// The total target capacity of the auto provisioning group. The target capacity consists of the following three parts:PayAsYouGoTargetCapacity,SpotTargetCapacity and the supplemental capacity besides PayAsYouGoTargetCapacity and SpotTargetCapacity.
        /// </summary>
        [Input("totalTargetCapacity")]
        public Input<string>? TotalTargetCapacity { get; set; }

        /// <summary>
        /// The time when the auto provisioning group is started. The period of time between this point in time and the point in time specified by the `valid_until` parameter is the effective time period of the auto provisioning group.By default, an auto provisioning group is immediately started after creation.
        /// </summary>
        [Input("validFrom")]
        public Input<string>? ValidFrom { get; set; }

        /// <summary>
        /// The time when the auto provisioning group expires. The period of time between this point in time and the point in time specified by the `valid_from` parameter is the effective time period of the auto provisioning group.By default, an auto provisioning group never expires.
        /// </summary>
        [Input("validUntil")]
        public Input<string>? ValidUntil { get; set; }

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