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

    [OutputType]
    public sealed class DomainRuleCach
    {
        /// <summary>
        /// Cache expiration time setting, the unit is second, the maximum can be set to 365 days.
        /// </summary>
        public readonly int CacheTime;
        /// <summary>
        /// Advanced cache expiration configuration. When it is turned on, it will compare the max-age value returned by the origin site with the cache expiration time set in CacheRules, and take the minimum value to cache at the node. Valid values are `on` and `off`. Default value is `off`.
        /// </summary>
        public readonly string? CompareMaxAge;
        /// <summary>
        /// Follow the source station configuration switch. Valid values are `on` and `off`.
        /// </summary>
        public readonly string? FollowOriginSwitch;
        /// <summary>
        /// Specify whether to enable heuristic cache, only available while `follow_origin_switch` enabled, values: `on`, `off` (Default).
        /// </summary>
        public readonly string? HeuristicCacheSwitch;
        /// <summary>
        /// Specify heuristic cache time in second, only available while `follow_origin_switch` and `heuristic_cache_switch` enabled.
        /// </summary>
        public readonly int? HeuristicCacheTime;
        /// <summary>
        /// Force caching. After opening, the no-store and no-cache resources returned by the origin site will also be cached in accordance with the CacheRules rules. Valid values are `on` and `off`. Default value is `off`.
        /// </summary>
        public readonly string? IgnoreCacheControl;
        /// <summary>
        /// Ignore the Set-Cookie header of the origin site. Valid values are `on` and `off`. Default value is `off`. This parameter is for white-list customer.
        /// </summary>
        public readonly string? IgnoreSetCookie;
        /// <summary>
        /// Cache configuration switch. Valid values are `on` and `off`.
        /// </summary>
        public readonly string? NoCacheSwitch;
        /// <summary>
        /// Always check back to origin. Valid values are `on` and `off`. Default value is `off`.
        /// </summary>
        public readonly string? ReValidate;
        /// <summary>
        /// Matching content under the corresponding type of CacheType: `all`: fill *, `file`: fill in the suffix name, such as jpg, txt, `directory`: fill in the path, such as /xxx/test, `path`: fill in the absolute path, such as /xxx/test.html, `index`: fill /.
        /// </summary>
        public readonly ImmutableArray<string> RulePaths;
        /// <summary>
        /// Rule type. The following types are supported: `all`: all documents take effect, `file`: the specified file suffix takes effect, `directory`: the specified path takes effect, `path`: specify the absolute path to take effect, `index`: home page.
        /// </summary>
        public readonly string? RuleType;
        /// <summary>
        /// Cache configuration switch. Valid values are `on` and `off`.
        /// </summary>
        public readonly string? Switch;

        [OutputConstructor]
        private DomainRuleCach(
            int cacheTime,

            string? compareMaxAge,

            string? followOriginSwitch,

            string? heuristicCacheSwitch,

            int? heuristicCacheTime,

            string? ignoreCacheControl,

            string? ignoreSetCookie,

            string? noCacheSwitch,

            string? reValidate,

            ImmutableArray<string> rulePaths,

            string? ruleType,

            string? @switch)
        {
            CacheTime = cacheTime;
            CompareMaxAge = compareMaxAge;
            FollowOriginSwitch = followOriginSwitch;
            HeuristicCacheSwitch = heuristicCacheSwitch;
            HeuristicCacheTime = heuristicCacheTime;
            IgnoreCacheControl = ignoreCacheControl;
            IgnoreSetCookie = ignoreSetCookie;
            NoCacheSwitch = noCacheSwitch;
            ReValidate = reValidate;
            RulePaths = rulePaths;
            RuleType = ruleType;
            Switch = @switch;
        }
    }
}
