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

    [OutputType]
    public sealed class GetControlPoliciesPolicyResult
    {
        /// <summary>
        /// The action that Cloud Firewall performs on the traffic. Valid values: `accept`, `drop`, `log`.
        /// </summary>
        public readonly string AclAction;
        /// <summary>
        /// The unique ID of the access control policy.
        /// </summary>
        public readonly string AclUuid;
        public readonly string ApplicationId;
        /// <summary>
        /// The application type that the access control policy supports.If `direction` is `in`, the valid value is `ANY`. If `direction` is `out`, `ANY`, `HTTP`, `HTTPS`, `MQTT`, `Memcache`, `MongoDB`, `MySQL`, `RDP`, `Redis`, `SMTP`, `SMTPS`, `SSH`, `SSL`, `VNC`.
        /// </summary>
        public readonly string ApplicationName;
        /// <summary>
        /// The description of the access control policy.
        /// </summary>
        public readonly string Description;
        /// <summary>
        /// The destination port defined in the access control policy.
        /// </summary>
        public readonly string DestPort;
        /// <summary>
        /// The destination port address book defined in the access control policy.
        /// </summary>
        public readonly string DestPortGroup;
        public readonly ImmutableArray<string> DestPortGroupPorts;
        /// <summary>
        /// The destination port type defined in the access control policy. Valid values: `group`, `port`.
        /// </summary>
        public readonly string DestPortType;
        /// <summary>
        /// The destination address defined in the access control policy.
        /// </summary>
        public readonly string Destination;
        public readonly ImmutableArray<string> DestinationGroupCidrs;
        public readonly string DestinationGroupType;
        /// <summary>
        /// The destination address type defined in the access control policy.Valid values: If `direction` is `in`, the valid values are `net`, `group`. If `direction` is `out`, the valid values are `net`, `group`, `domain`, `location`.
        /// </summary>
        public readonly string DestinationType;
        /// <summary>
        /// The direction of traffic to which the access control policy applies. Valid values: `in`, `out`.
        /// </summary>
        public readonly string Direction;
        public readonly string DnsResult;
        public readonly string DnsResultTime;
        public readonly string HitTimes;
        /// <summary>
        /// The ID of the Control Policy.
        /// </summary>
        public readonly string Id;
        public readonly int Order;
        /// <summary>
        /// The protocol type of traffic to which the access control policy applies. Valid values: If `direction` is `in`, the valid value is `ANY`. If `direction` is `out`, the valid values are `ANY`, `TCP`, `UDP`, `ICMP`.
        /// </summary>
        public readonly string Proto;
        /// <summary>
        /// Specifies whether the access control policy is enabled. By default, an access control policy is enabled after it is created. Valid values: `true`, `false`.
        /// </summary>
        public readonly bool Release;
        /// <summary>
        /// The source address defined in the access control policy.
        /// </summary>
        public readonly string Source;
        public readonly ImmutableArray<string> SourceGroupCidrs;
        public readonly string SourceGroupType;
        /// <summary>
        /// The type of the source address book defined in the access control policy. Valid values: If `direction` is to `in`, the valid values are `net`, `group`, `location`. If `direction` is `out`, the valid values are `net`, `group`.
        /// </summary>
        public readonly string SourceType;

        [OutputConstructor]
        private GetControlPoliciesPolicyResult(
            string aclAction,

            string aclUuid,

            string applicationId,

            string applicationName,

            string description,

            string destPort,

            string destPortGroup,

            ImmutableArray<string> destPortGroupPorts,

            string destPortType,

            string destination,

            ImmutableArray<string> destinationGroupCidrs,

            string destinationGroupType,

            string destinationType,

            string direction,

            string dnsResult,

            string dnsResultTime,

            string hitTimes,

            string id,

            int order,

            string proto,

            bool release,

            string source,

            ImmutableArray<string> sourceGroupCidrs,

            string sourceGroupType,

            string sourceType)
        {
            AclAction = aclAction;
            AclUuid = aclUuid;
            ApplicationId = applicationId;
            ApplicationName = applicationName;
            Description = description;
            DestPort = destPort;
            DestPortGroup = destPortGroup;
            DestPortGroupPorts = destPortGroupPorts;
            DestPortType = destPortType;
            Destination = destination;
            DestinationGroupCidrs = destinationGroupCidrs;
            DestinationGroupType = destinationGroupType;
            DestinationType = destinationType;
            Direction = direction;
            DnsResult = dnsResult;
            DnsResultTime = dnsResultTime;
            HitTimes = hitTimes;
            Id = id;
            Order = order;
            Proto = proto;
            Release = release;
            Source = source;
            SourceGroupCidrs = sourceGroupCidrs;
            SourceGroupType = sourceGroupType;
            SourceType = sourceType;
        }
    }
}
