// *** 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 TencentCloudIAC.PulumiPackage.Tencentcloud.Teo.Outputs
{

    [OutputType]
    public sealed class SecurityPolicyConfigRateLimitConfigUserRule
    {
        /// <summary>
        /// Valid values: `monitor`, `drop`.
        /// </summary>
        public readonly string Action;
        /// <summary>
        /// Conditions of the rule.
        /// </summary>
        public readonly ImmutableArray<Outputs.SecurityPolicyConfigRateLimitConfigUserRuleCondition> Conditions;
        /// <summary>
        /// Filter words.
        /// </summary>
        public readonly ImmutableArray<string> FreqFields;
        /// <summary>
        /// Period of the rate limit. Valid values: 10, 20, 30, 40, 50, 60 (in seconds).
        /// </summary>
        public readonly int Period;
        /// <summary>
        /// Punish time, Valid value range: 0-2 days.
        /// </summary>
        public readonly int PunishTime;
        /// <summary>
        /// Time unit of the punish time. Valid values: `second`, `minutes`, `hour`.
        /// </summary>
        public readonly string PunishTimeUnit;
        public readonly int? RuleId;
        /// <summary>
        /// Rule Name.
        /// </summary>
        public readonly string RuleName;
        /// <summary>
        /// Priority of the rule. Valid value range: 1-100.
        /// </summary>
        public readonly int RulePriority;
        /// <summary>
        /// Status of the rule. Valid values: `on`, `off`, `hour`.
        /// </summary>
        public readonly string? RuleStatus;
        /// <summary>
        /// Threshold of the rate limit. Valid value range: 0-4294967294.
        /// </summary>
        public readonly int Threshold;
        public readonly string? UpdateTime;

        [OutputConstructor]
        private SecurityPolicyConfigRateLimitConfigUserRule(
            string action,

            ImmutableArray<Outputs.SecurityPolicyConfigRateLimitConfigUserRuleCondition> conditions,

            ImmutableArray<string> freqFields,

            int period,

            int punishTime,

            string punishTimeUnit,

            int? ruleId,

            string ruleName,

            int rulePriority,

            string? ruleStatus,

            int threshold,

            string? updateTime)
        {
            Action = action;
            Conditions = conditions;
            FreqFields = freqFields;
            Period = period;
            PunishTime = punishTime;
            PunishTimeUnit = punishTimeUnit;
            RuleId = ruleId;
            RuleName = ruleName;
            RulePriority = rulePriority;
            RuleStatus = ruleStatus;
            Threshold = threshold;
            UpdateTime = updateTime;
        }
    }
}
