// *** 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.Cfg.Outputs
{

    [OutputType]
    public sealed class GetRulesRuleResult
    {
        public readonly string AccountId;
        public readonly string CompliancePackId;
        /// <summary>
        /// The information about the compliance evaluations based on the rule.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetRulesRuleComplianceResult> Compliances;
        public readonly string ConfigRuleArn;
        public readonly string ConfigRuleId;
        /// <summary>
        /// Field `config_rule_state` has been deprecated from provider version 1.124.1. New field `status` instead.
        /// </summary>
        public readonly string ConfigRuleState;
        /// <summary>
        /// (Available in 1.124.1+) A list of trigger types of config rule.
        /// </summary>
        public readonly string ConfigRuleTriggerTypes;
        public readonly string Description;
        /// <summary>
        /// Event source of the Config Rule.
        /// </summary>
        public readonly string EventSource;
        /// <summary>
        /// (Available in 1.124.1+) The scope of exclude of resource ids.
        /// </summary>
        public readonly string ExcludeResourceIdsScope;
        /// <summary>
        /// The ID of the Config Rule.
        /// * `account_id`- The ID of the Alicloud account.
        /// * `config_rule_arn`- The ARN of the Config Rule.
        /// * `config_rule_id`- The ID of the Config Rule.
        /// * `config_rule_state`- The state of the Config Rule.
        /// * `description`- The description of the Config Rule.
        /// * `input_parameters`- The input parameters of the Config Rule.
        /// * `modified_timestamp`- the timestamp of the Config Rule modified.
        /// * `risk_level`- The risk level of the Config Rule.
        /// * `rule_name`- The name of the Config Rule.
        /// </summary>
        public readonly string Id;
        public readonly ImmutableDictionary<string, object> InputParameters;
        /// <summary>
        /// (Available in 1.124.1+) The frequency of maximum execution.
        /// </summary>
        public readonly string MaximumExecutionFrequency;
        public readonly string ModifiedTimestamp;
        /// <summary>
        /// (Available in 1.124.1+) The scope of region ids.
        /// </summary>
        public readonly string RegionIdsScope;
        /// <summary>
        /// (Available in 1.124.1+) The scope of resource group ids.
        /// </summary>
        public readonly string ResourceGroupIdsScope;
        /// <summary>
        /// (Available in 1.124.1+) The scope of resource types.
        /// </summary>
        public readonly ImmutableArray<string> ResourceTypesScopes;
        /// <summary>
        /// The risk level of Config Rule. Valid values: `1`: Critical ,`2`: Warning , `3`: Info.
        /// </summary>
        public readonly int RiskLevel;
        /// <summary>
        /// The name of config rule.
        /// </summary>
        public readonly string RuleName;
        /// <summary>
        /// The types of the resources to be evaluated against the rule.
        /// </summary>
        public readonly ImmutableArray<string> ScopeComplianceResourceTypes;
        /// <summary>
        /// Rule trigger mechanism.
        /// </summary>
        public readonly string SourceDetailMessageType;
        public readonly string SourceIdentifier;
        /// <summary>
        /// Rule execution cycle. 
        /// * `source_identifier`- The identifier of the managed rule or the arn of the custom function.
        /// * `source_owner`- The source owner of the Config Rule.
        /// </summary>
        public readonly string SourceMaximumExecutionFrequency;
        public readonly string SourceOwner;
        /// <summary>
        /// The status of the config rule, valid values: `ACTIVE`, `DELETING`, `EVALUATING` and `INACTIVE`.
        /// </summary>
        public readonly string Status;
        /// <summary>
        /// (Available in 1.124.1+) The scope of tag key.
        /// </summary>
        public readonly string TagKeyScope;
        /// <summary>
        /// (Available in 1.124.1+) The scope of tag value.
        /// </summary>
        public readonly string TagValueScope;

        [OutputConstructor]
        private GetRulesRuleResult(
            string accountId,

            string compliancePackId,

            ImmutableArray<Outputs.GetRulesRuleComplianceResult> compliances,

            string configRuleArn,

            string configRuleId,

            string configRuleState,

            string configRuleTriggerTypes,

            string description,

            string eventSource,

            string excludeResourceIdsScope,

            string id,

            ImmutableDictionary<string, object> inputParameters,

            string maximumExecutionFrequency,

            string modifiedTimestamp,

            string regionIdsScope,

            string resourceGroupIdsScope,

            ImmutableArray<string> resourceTypesScopes,

            int riskLevel,

            string ruleName,

            ImmutableArray<string> scopeComplianceResourceTypes,

            string sourceDetailMessageType,

            string sourceIdentifier,

            string sourceMaximumExecutionFrequency,

            string sourceOwner,

            string status,

            string tagKeyScope,

            string tagValueScope)
        {
            AccountId = accountId;
            CompliancePackId = compliancePackId;
            Compliances = compliances;
            ConfigRuleArn = configRuleArn;
            ConfigRuleId = configRuleId;
            ConfigRuleState = configRuleState;
            ConfigRuleTriggerTypes = configRuleTriggerTypes;
            Description = description;
            EventSource = eventSource;
            ExcludeResourceIdsScope = excludeResourceIdsScope;
            Id = id;
            InputParameters = inputParameters;
            MaximumExecutionFrequency = maximumExecutionFrequency;
            ModifiedTimestamp = modifiedTimestamp;
            RegionIdsScope = regionIdsScope;
            ResourceGroupIdsScope = resourceGroupIdsScope;
            ResourceTypesScopes = resourceTypesScopes;
            RiskLevel = riskLevel;
            RuleName = ruleName;
            ScopeComplianceResourceTypes = scopeComplianceResourceTypes;
            SourceDetailMessageType = sourceDetailMessageType;
            SourceIdentifier = sourceIdentifier;
            SourceMaximumExecutionFrequency = sourceMaximumExecutionFrequency;
            SourceOwner = sourceOwner;
            Status = status;
            TagKeyScope = tagKeyScope;
            TagValueScope = tagValueScope;
        }
    }
}
