// *** 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 Pulumiverse.Fortios
{
    public static class GetFirewallPolicy
    {
        /// <summary>
        /// Use this data source to get information on an fortios firewall policy
        /// </summary>
        public static Task<GetFirewallPolicyResult> InvokeAsync(GetFirewallPolicyArgs args, InvokeOptions? options = null)
            => global::Pulumi.Deployment.Instance.InvokeAsync<GetFirewallPolicyResult>("fortios:index/getFirewallPolicy:getFirewallPolicy", args ?? new GetFirewallPolicyArgs(), options.WithDefaults());

        /// <summary>
        /// Use this data source to get information on an fortios firewall policy
        /// </summary>
        public static Output<GetFirewallPolicyResult> Invoke(GetFirewallPolicyInvokeArgs args, InvokeOptions? options = null)
            => global::Pulumi.Deployment.Instance.Invoke<GetFirewallPolicyResult>("fortios:index/getFirewallPolicy:getFirewallPolicy", args ?? new GetFirewallPolicyInvokeArgs(), options.WithDefaults());
    }


    public sealed class GetFirewallPolicyArgs : global::Pulumi.InvokeArgs
    {
        /// <summary>
        /// Specify the policyid of the desired firewall policy.
        /// </summary>
        [Input("policyid", required: true)]
        public int Policyid { get; set; }

        /// <summary>
        /// Specifies the vdom to which the data source will be applied when the FortiGate unit is running in VDOM mode. Only one vdom can be specified. If you want to inherit the vdom configuration of the provider, please do not set this parameter.
        /// </summary>
        [Input("vdomparam")]
        public string? Vdomparam { get; set; }

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

    public sealed class GetFirewallPolicyInvokeArgs : global::Pulumi.InvokeArgs
    {
        /// <summary>
        /// Specify the policyid of the desired firewall policy.
        /// </summary>
        [Input("policyid", required: true)]
        public Input<int> Policyid { get; set; } = null!;

        /// <summary>
        /// Specifies the vdom to which the data source will be applied when the FortiGate unit is running in VDOM mode. Only one vdom can be specified. If you want to inherit the vdom configuration of the provider, please do not set this parameter.
        /// </summary>
        [Input("vdomparam")]
        public Input<string>? Vdomparam { get; set; }

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


    [OutputType]
    public sealed class GetFirewallPolicyResult
    {
        /// <summary>
        /// Policy action (allow/deny/ipsec).
        /// </summary>
        public readonly string Action;
        /// <summary>
        /// Enable/disable anti-replay check.
        /// </summary>
        public readonly string AntiReplay;
        /// <summary>
        /// Application category ID list. The structure of `app_category` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetFirewallPolicyAppCategoryResult> AppCategories;
        /// <summary>
        /// Application group names. The structure of `app_group` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetFirewallPolicyAppGroupResult> AppGroups;
        /// <summary>
        /// Name of an existing Application list.
        /// </summary>
        public readonly string ApplicationList;
        /// <summary>
        /// Application ID list. The structure of `application` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetFirewallPolicyApplicationResult> Applications;
        /// <summary>
        /// HTTPS server certificate for policy authentication.
        /// </summary>
        public readonly string AuthCert;
        /// <summary>
        /// Enable/disable authentication-based routing.
        /// </summary>
        public readonly string AuthPath;
        /// <summary>
        /// HTTP-to-HTTPS redirect address for firewall authentication.
        /// </summary>
        public readonly string AuthRedirectAddr;
        /// <summary>
        /// Enable/disable policy traffic ASIC offloading.
        /// </summary>
        public readonly string AutoAsicOffload;
        /// <summary>
        /// Name of an existing Antivirus profile.
        /// </summary>
        public readonly string AvProfile;
        /// <summary>
        /// Enable/disable block notification.
        /// </summary>
        public readonly string BlockNotification;
        /// <summary>
        /// Enable to exempt some users from the captive portal.
        /// </summary>
        public readonly string CaptivePortalExempt;
        /// <summary>
        /// Enable/disable capture packets.
        /// </summary>
        public readonly string CapturePacket;
        /// <summary>
        /// Name of an existing CIFS profile.
        /// </summary>
        public readonly string CifsProfile;
        /// <summary>
        /// Comment.
        /// </summary>
        public readonly string Comments;
        /// <summary>
        /// Custom fields to append to log messages for this policy. The structure of `custom_log_fields` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetFirewallPolicyCustomLogFieldResult> CustomLogFields;
        /// <summary>
        /// Decrypted traffic mirror.
        /// </summary>
        public readonly string DecryptedTrafficMirror;
        /// <summary>
        /// Enable TCP NPU session delay to guarantee packet order of 3-way handshake.
        /// </summary>
        public readonly string DelayTcpNpuSession;
        /// <summary>
        /// Names of devices or device groups that can be matched by the policy. The structure of `devices` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetFirewallPolicyDeviceResult> Devices;
        /// <summary>
        /// Enable to copy packet's DiffServ values from session's original direction to its reply direction.
        /// </summary>
        public readonly string DiffservCopy;
        /// <summary>
        /// Enable to change packet's DiffServ values to the specified diffservcode-forward value.
        /// </summary>
        public readonly string DiffservForward;
        /// <summary>
        /// Enable to change packet's reverse (reply) DiffServ values to the specified diffservcode-rev value.
        /// </summary>
        public readonly string DiffservReverse;
        /// <summary>
        /// Change packet's DiffServ to this value.
        /// </summary>
        public readonly string DiffservcodeForward;
        /// <summary>
        /// Change packet's reverse (reply) DiffServ to this value.
        /// </summary>
        public readonly string DiffservcodeRev;
        /// <summary>
        /// Enable/disable user authentication disclaimer.
        /// </summary>
        public readonly string Disclaimer;
        /// <summary>
        /// Name of an existing DLP profile.
        /// </summary>
        public readonly string DlpProfile;
        /// <summary>
        /// Name of an existing DLP sensor.
        /// </summary>
        public readonly string DlpSensor;
        /// <summary>
        /// Name of an existing DNS filter profile.
        /// </summary>
        public readonly string DnsfilterProfile;
        /// <summary>
        /// Enable DSRI to ignore HTTP server responses.
        /// </summary>
        public readonly string Dsri;
        /// <summary>
        /// When enabled dstaddr6 specifies what the destination address must NOT be.
        /// </summary>
        public readonly string Dstaddr6Negate;
        /// <summary>
        /// Destination IPv6 address name and address group names. The structure of `dstaddr6` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetFirewallPolicyDstaddr6Result> Dstaddr6s;
        /// <summary>
        /// When enabled dstaddr specifies what the destination address must NOT be.
        /// </summary>
        public readonly string DstaddrNegate;
        /// <summary>
        /// Destination address and address group names. The structure of `dstaddr` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetFirewallPolicyDstaddrResult> Dstaddrs;
        /// <summary>
        /// Outgoing (egress) interface. The structure of `dstintf` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetFirewallPolicyDstintfResult> Dstintfs;
        /// <summary>
        /// Enable/disable dynamic RADIUS defined traffic shaping.
        /// </summary>
        public readonly string DynamicShaping;
        /// <summary>
        /// Enable/disable email collection.
        /// </summary>
        public readonly string EmailCollect;
        /// <summary>
        /// Name of an existing email filter profile.
        /// </summary>
        public readonly string EmailfilterProfile;
        /// <summary>
        /// Enable/disable Forward Error Correction on traffic matching this policy on a FEC device.
        /// </summary>
        public readonly string Fec;
        /// <summary>
        /// Name of an existing file-filter profile.
        /// </summary>
        public readonly string FileFilterProfile;
        /// <summary>
        /// How to handle sessions if the configuration of this firewall policy changes.
        /// </summary>
        public readonly string FirewallSessionDirty;
        /// <summary>
        /// Enable to prevent source NAT from changing a session's source port.
        /// </summary>
        public readonly string Fixedport;
        /// <summary>
        /// Enable/disable Fortinet Single Sign-On.
        /// </summary>
        public readonly string Fsso;
        /// <summary>
        /// FSSO agent to use for NTLM authentication.
        /// </summary>
        public readonly string FssoAgentForNtlm;
        /// <summary>
        /// Names of FSSO groups. The structure of `fsso_groups` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetFirewallPolicyFssoGroupResult> FssoGroups;
        /// <summary>
        /// Enable/disable recognition of anycast IP addresses using the geography IP database.
        /// </summary>
        public readonly string GeoipAnycast;
        /// <summary>
        /// Match geography address based either on its physical location or registered location.
        /// </summary>
        public readonly string GeoipMatch;
        /// <summary>
        /// Label for the policy that appears when the GUI is in Global View mode.
        /// </summary>
        public readonly string GlobalLabel;
        /// <summary>
        /// Names of user groups that can authenticate with this policy. The structure of `groups` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetFirewallPolicyGroupResult> Groups;
        /// <summary>
        /// Redirect HTTP(S) traffic to matching transparent web proxy policy.
        /// </summary>
        public readonly string HttpPolicyRedirect;
        /// <summary>
        /// Name of an existing ICAP profile.
        /// </summary>
        public readonly string IcapProfile;
        /// <summary>
        /// The provider-assigned unique ID for this managed resource.
        /// </summary>
        public readonly string Id;
        /// <summary>
        /// Name of identity-based routing rule.
        /// </summary>
        public readonly string IdentityBasedRoute;
        /// <summary>
        /// Policy-based IPsec VPN: only traffic from the remote network can initiate a VPN.
        /// </summary>
        public readonly string Inbound;
        /// <summary>
        /// Policy inspection mode (Flow/proxy). Default is Flow mode.
        /// </summary>
        public readonly string InspectionMode;
        /// <summary>
        /// Enable/disable use of Internet Services for this policy. If enabled, destination address and service are not used.
        /// </summary>
        public readonly string InternetService;
        /// <summary>
        /// Enable/disable use of IPv6 Internet Services for this policy. If enabled, destination address and service are not used.
        /// </summary>
        public readonly string InternetService6;
        /// <summary>
        /// Custom Internet Service6 group name. The structure of `internet_service6_custom_group` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetFirewallPolicyInternetService6CustomGroupResult> InternetService6CustomGroups;
        /// <summary>
        /// Custom IPv6 Internet Service name. The structure of `internet_service6_custom` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetFirewallPolicyInternetService6CustomResult> InternetService6Customs;
        /// <summary>
        /// Internet Service group name. The structure of `internet_service6_group` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetFirewallPolicyInternetService6GroupResult> InternetService6Groups;
        /// <summary>
        /// IPv6 Internet Service name. The structure of `internet_service6_name` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetFirewallPolicyInternetService6NameResult> InternetService6Names;
        /// <summary>
        /// When enabled internet-service6 specifies what the service must NOT be.
        /// </summary>
        public readonly string InternetService6Negate;
        /// <summary>
        /// Enable/disable use of IPv6 Internet Services in source for this policy. If enabled, source address is not used.
        /// </summary>
        public readonly string InternetService6Src;
        /// <summary>
        /// Custom Internet Service6 source group name. The structure of `internet_service6_src_custom_group` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetFirewallPolicyInternetService6SrcCustomGroupResult> InternetService6SrcCustomGroups;
        /// <summary>
        /// Custom IPv6 Internet Service source name. The structure of `internet_service6_src_custom` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetFirewallPolicyInternetService6SrcCustomResult> InternetService6SrcCustoms;
        /// <summary>
        /// Internet Service6 source group name. The structure of `internet_service6_src_group` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetFirewallPolicyInternetService6SrcGroupResult> InternetService6SrcGroups;
        /// <summary>
        /// IPv6 Internet Service source name. The structure of `internet_service6_src_name` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetFirewallPolicyInternetService6SrcNameResult> InternetService6SrcNames;
        /// <summary>
        /// When enabled internet-service6-src specifies what the service must NOT be.
        /// </summary>
        public readonly string InternetService6SrcNegate;
        /// <summary>
        /// Custom Internet Service group name. The structure of `internet_service_custom_group` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetFirewallPolicyInternetServiceCustomGroupResult> InternetServiceCustomGroups;
        /// <summary>
        /// Custom Internet Service name. The structure of `internet_service_custom` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetFirewallPolicyInternetServiceCustomResult> InternetServiceCustoms;
        /// <summary>
        /// Internet Service group name. The structure of `internet_service_group` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetFirewallPolicyInternetServiceGroupResult> InternetServiceGroups;
        /// <summary>
        /// Internet Service ID. The structure of `internet_service_id` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetFirewallPolicyInternetServiceIdResult> InternetServiceIds;
        /// <summary>
        /// Internet Service name. The structure of `internet_service_name` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetFirewallPolicyInternetServiceNameResult> InternetServiceNames;
        /// <summary>
        /// When enabled internet-service specifies what the service must NOT be.
        /// </summary>
        public readonly string InternetServiceNegate;
        /// <summary>
        /// Enable/disable use of Internet Services in source for this policy. If enabled, source address is not used.
        /// </summary>
        public readonly string InternetServiceSrc;
        /// <summary>
        /// Custom Internet Service source group name. The structure of `internet_service_src_custom_group` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetFirewallPolicyInternetServiceSrcCustomGroupResult> InternetServiceSrcCustomGroups;
        /// <summary>
        /// Custom Internet Service source name. The structure of `internet_service_src_custom` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetFirewallPolicyInternetServiceSrcCustomResult> InternetServiceSrcCustoms;
        /// <summary>
        /// Internet Service source group name. The structure of `internet_service_src_group` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetFirewallPolicyInternetServiceSrcGroupResult> InternetServiceSrcGroups;
        /// <summary>
        /// Internet Service source ID. The structure of `internet_service_src_id` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetFirewallPolicyInternetServiceSrcIdResult> InternetServiceSrcIds;
        /// <summary>
        /// Internet Service source name. The structure of `internet_service_src_name` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetFirewallPolicyInternetServiceSrcNameResult> InternetServiceSrcNames;
        /// <summary>
        /// When enabled internet-service-src specifies what the service must NOT be.
        /// </summary>
        public readonly string InternetServiceSrcNegate;
        /// <summary>
        /// Enable to use IP Pools for source NAT.
        /// </summary>
        public readonly string Ippool;
        /// <summary>
        /// Name of an existing IPS sensor.
        /// </summary>
        public readonly string IpsSensor;
        /// <summary>
        /// Label for the policy that appears when the GUI is in Section View mode.
        /// </summary>
        public readonly string Label;
        /// <summary>
        /// Enable to allow everything, but log all of the meaningful data for security information gathering. A learning report will be generated.
        /// </summary>
        public readonly string LearningMode;
        /// <summary>
        /// Enable or disable logging. Log all sessions or security profile sessions.
        /// </summary>
        public readonly string Logtraffic;
        /// <summary>
        /// Record logs when a session starts.
        /// </summary>
        public readonly string LogtrafficStart;
        /// <summary>
        /// Enable to match packets that have had their destination addresses changed by a VIP.
        /// </summary>
        public readonly string MatchVip;
        /// <summary>
        /// Enable/disable matching of only those packets that have had their destination addresses changed by a VIP.
        /// </summary>
        public readonly string MatchVipOnly;
        /// <summary>
        /// Mirror Interface name.
        /// </summary>
        public readonly string Name;
        /// <summary>
        /// Enable/disable source NAT.
        /// </summary>
        public readonly string Nat;
        /// <summary>
        /// Enable/disable NAT46.
        /// </summary>
        public readonly string Nat46;
        /// <summary>
        /// Enable/disable NAT64.
        /// </summary>
        public readonly string Nat64;
        /// <summary>
        /// Policy-based IPsec VPN: apply destination NAT to inbound traffic.
        /// </summary>
        public readonly string Natinbound;
        /// <summary>
        /// Policy-based IPsec VPN: source NAT IP address for outgoing traffic.
        /// </summary>
        public readonly string Natip;
        /// <summary>
        /// Policy-based IPsec VPN: apply source NAT to outbound traffic.
        /// </summary>
        public readonly string Natoutbound;
        /// <summary>
        /// Dynamic Network Service name. The structure of `network_service_dynamic` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetFirewallPolicyNetworkServiceDynamicResult> NetworkServiceDynamics;
        /// <summary>
        /// Dynamic Network Service source name. The structure of `network_service_src_dynamic` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetFirewallPolicyNetworkServiceSrcDynamicResult> NetworkServiceSrcDynamics;
        /// <summary>
        /// Enable/disable UTM Network Processor acceleration.
        /// </summary>
        public readonly string NpAcceleration;
        /// <summary>
        /// Enable/disable NTLM authentication.
        /// </summary>
        public readonly string Ntlm;
        /// <summary>
        /// HTTP-User-Agent value of supported browsers. The structure of `ntlm_enabled_browsers` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetFirewallPolicyNtlmEnabledBrowserResult> NtlmEnabledBrowsers;
        /// <summary>
        /// Enable/disable NTLM guest user access.
        /// </summary>
        public readonly string NtlmGuest;
        /// <summary>
        /// Policy-based IPsec VPN: only traffic from the internal network can initiate a VPN.
        /// </summary>
        public readonly string Outbound;
        /// <summary>
        /// Enable/disable passive WAN health measurement. When enabled, auto-asic-offload is disabled.
        /// </summary>
        public readonly string PassiveWanHealthMeasurement;
        /// <summary>
        /// Per-IP traffic shaper.
        /// </summary>
        public readonly string PerIpShaper;
        /// <summary>
        /// Accept UDP packets from any host.
        /// </summary>
        public readonly string PermitAnyHost;
        /// <summary>
        /// Accept UDP packets from any Session Traversal Utilities for NAT (STUN) host.
        /// </summary>
        public readonly string PermitStunHost;
        /// <summary>
        /// Enable/disable policy expiry.
        /// </summary>
        public readonly string PolicyExpiry;
        /// <summary>
        /// Policy expiry date (YYYY-MM-DD HH:MM:SS).
        /// </summary>
        public readonly string PolicyExpiryDate;
        /// <summary>
        /// Policy ID.
        /// </summary>
        public readonly int Policyid;
        /// <summary>
        /// IPv6 pool names. The structure of `poolname6` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetFirewallPolicyPoolname6Result> Poolname6s;
        /// <summary>
        /// IP Pool names. The structure of `poolname` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetFirewallPolicyPoolnameResult> Poolnames;
        /// <summary>
        /// Name of profile group.
        /// </summary>
        public readonly string ProfileGroup;
        /// <summary>
        /// Name of an existing Protocol options profile.
        /// </summary>
        public readonly string ProfileProtocolOptions;
        /// <summary>
        /// Determine whether the firewall policy allows security profile groups or single profiles only.
        /// </summary>
        public readonly string ProfileType;
        /// <summary>
        /// Enable MAC authentication bypass. The bypassed MAC address must be received from RADIUS server.
        /// </summary>
        public readonly string RadiusMacAuthBypass;
        /// <summary>
        /// URL users are directed to after seeing and accepting the disclaimer or authenticating.
        /// </summary>
        public readonly string RedirectUrl;
        /// <summary>
        /// Override the default replacement message group for this policy.
        /// </summary>
        public readonly string ReplacemsgOverrideGroup;
        /// <summary>
        /// Direction of the initial traffic for reputation to take effect.
        /// </summary>
        public readonly string ReputationDirection;
        /// <summary>
        /// Direction of the initial traffic for IPv6 reputation to take effect.
        /// </summary>
        public readonly string ReputationDirection6;
        /// <summary>
        /// Minimum Reputation to take action.
        /// </summary>
        public readonly int ReputationMinimum;
        /// <summary>
        /// IPv6 Minimum Reputation to take action.
        /// </summary>
        public readonly int ReputationMinimum6;
        /// <summary>
        /// Enable/disable RADIUS single sign-on (RSSO).
        /// </summary>
        public readonly string Rsso;
        /// <summary>
        /// Address names if this is an RTP NAT policy. The structure of `rtp_addr` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetFirewallPolicyRtpAddrResult> RtpAddrs;
        /// <summary>
        /// Enable Real Time Protocol (RTP) NAT.
        /// </summary>
        public readonly string RtpNat;
        /// <summary>
        /// Block or monitor connections to Botnet servers or disable Botnet scanning.
        /// </summary>
        public readonly string ScanBotnetConnections;
        /// <summary>
        /// Schedule name.
        /// </summary>
        public readonly string Schedule;
        /// <summary>
        /// Enable to force current sessions to end when the schedule object times out. Disable allows them to end from inactivity.
        /// </summary>
        public readonly string ScheduleTimeout;
        /// <summary>
        /// Name of an existing SCTP filter profile.
        /// </summary>
        public readonly string SctpFilterProfile;
        /// <summary>
        /// Enable to send a reply when a session is denied or blocked by a firewall policy.
        /// </summary>
        public readonly string SendDenyPacket;
        /// <summary>
        /// When enabled service specifies what the service must NOT be.
        /// </summary>
        public readonly string ServiceNegate;
        /// <summary>
        /// Service and service group names. The structure of `service` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetFirewallPolicyServiceResult> Services;
        /// <summary>
        /// TTL in seconds for sessions accepted by this policy (0 means use the system default session TTL).
        /// </summary>
        public readonly int SessionTtl;
        /// <summary>
        /// Enable/disable security group tags (SGT) check.
        /// </summary>
        public readonly string SgtCheck;
        /// <summary>
        /// Security group tags. The structure of `sgt` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetFirewallPolicySgtResult> Sgts;
        /// <summary>
        /// Name of an existing Spam filter profile.
        /// </summary>
        public readonly string SpamfilterProfile;
        /// <summary>
        /// Vendor MAC source ID. The structure of `src_vendor_mac` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetFirewallPolicySrcVendorMacResult> SrcVendorMacs;
        /// <summary>
        /// When enabled srcaddr6 specifies what the source address must NOT be.
        /// </summary>
        public readonly string Srcaddr6Negate;
        /// <summary>
        /// Source IPv6 address name and address group names. The structure of `srcaddr6` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetFirewallPolicySrcaddr6Result> Srcaddr6s;
        /// <summary>
        /// When enabled srcaddr specifies what the source address must NOT be.
        /// </summary>
        public readonly string SrcaddrNegate;
        /// <summary>
        /// Source address and address group names. The structure of `srcaddr` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetFirewallPolicySrcaddrResult> Srcaddrs;
        /// <summary>
        /// Incoming (ingress) interface. The structure of `srcintf` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetFirewallPolicySrcintfResult> Srcintfs;
        /// <summary>
        /// Name of an existing SSH filter profile.
        /// </summary>
        public readonly string SshFilterProfile;
        /// <summary>
        /// Redirect SSH traffic to matching transparent proxy policy.
        /// </summary>
        public readonly string SshPolicyRedirect;
        /// <summary>
        /// Enable to copy decrypted SSL traffic to a FortiGate interface (called SSL mirroring).
        /// </summary>
        public readonly string SslMirror;
        /// <summary>
        /// SSL mirror interface name. The structure of `ssl_mirror_intf` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetFirewallPolicySslMirrorIntfResult> SslMirrorIntfs;
        /// <summary>
        /// Name of an existing SSL SSH profile.
        /// </summary>
        public readonly string SslSshProfile;
        /// <summary>
        /// Enable or disable this policy.
        /// </summary>
        public readonly string Status;
        /// <summary>
        /// Receiver TCP maximum segment size (MSS).
        /// </summary>
        public readonly int TcpMssReceiver;
        /// <summary>
        /// Sender TCP maximum segment size (MSS).
        /// </summary>
        public readonly int TcpMssSender;
        /// <summary>
        /// Enable/disable creation of TCP session without SYN flag.
        /// </summary>
        public readonly string TcpSessionWithoutSyn;
        /// <summary>
        /// Enable/disable sending RST packets when TCP sessions expire.
        /// </summary>
        public readonly string TimeoutSendRst;
        /// <summary>
        /// ToS (Type of Service) value used for comparison.
        /// </summary>
        public readonly string Tos;
        /// <summary>
        /// Non-zero bit positions are used for comparison while zero bit positions are ignored.
        /// </summary>
        public readonly string TosMask;
        /// <summary>
        /// Enable negated TOS match.
        /// </summary>
        public readonly string TosNegate;
        /// <summary>
        /// Traffic shaper.
        /// </summary>
        public readonly string TrafficShaper;
        /// <summary>
        /// Reverse traffic shaper.
        /// </summary>
        public readonly string TrafficShaperReverse;
        /// <summary>
        /// URL category ID list. The structure of `url_category` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetFirewallPolicyUrlCategoryResult> UrlCategories;
        /// <summary>
        /// Names of individual users that can authenticate with this policy. The structure of `users` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetFirewallPolicyUserResult> Users;
        /// <summary>
        /// Enable to add one or more security profiles (AV, IPS, etc.) to the firewall policy.
        /// </summary>
        public readonly string UtmStatus;
        /// <summary>
        /// Universally Unique Identifier (UUID; automatically assigned but can be manually reset).
        /// </summary>
        public readonly string Uuid;
        public readonly string? Vdomparam;
        /// <summary>
        /// Name of an existing VideoFilter profile.
        /// </summary>
        public readonly string VideofilterProfile;
        /// <summary>
        /// VLAN forward direction user priority: 255 passthrough, 0 lowest, 7 highest.
        /// </summary>
        public readonly int VlanCosFwd;
        /// <summary>
        /// VLAN reverse direction user priority: 255 passthrough, 0 lowest, 7 highest.
        /// </summary>
        public readonly int VlanCosRev;
        /// <summary>
        /// Set VLAN filters.
        /// </summary>
        public readonly string VlanFilter;
        /// <summary>
        /// Name of an existing VoIP profile.
        /// </summary>
        public readonly string VoipProfile;
        /// <summary>
        /// Policy-based IPsec VPN: name of the IPsec VPN Phase 1.
        /// </summary>
        public readonly string Vpntunnel;
        /// <summary>
        /// Name of an existing Web application firewall profile.
        /// </summary>
        public readonly string WafProfile;
        /// <summary>
        /// Enable/disable WAN optimization.
        /// </summary>
        public readonly string Wanopt;
        /// <summary>
        /// WAN optimization auto-detection mode.
        /// </summary>
        public readonly string WanoptDetection;
        /// <summary>
        /// WAN optimization passive mode options. This option decides what IP address will be used to connect server.
        /// </summary>
        public readonly string WanoptPassiveOpt;
        /// <summary>
        /// WAN optimization peer.
        /// </summary>
        public readonly string WanoptPeer;
        /// <summary>
        /// WAN optimization profile.
        /// </summary>
        public readonly string WanoptProfile;
        /// <summary>
        /// Enable/disable forwarding traffic matching this policy to a configured WCCP server.
        /// </summary>
        public readonly string Wccp;
        /// <summary>
        /// Enable/disable web cache.
        /// </summary>
        public readonly string Webcache;
        /// <summary>
        /// Enable/disable web cache for HTTPS.
        /// </summary>
        public readonly string WebcacheHttps;
        /// <summary>
        /// Name of an existing Web filter profile.
        /// </summary>
        public readonly string WebfilterProfile;
        /// <summary>
        /// Web proxy forward server name.
        /// </summary>
        public readonly string WebproxyForwardServer;
        /// <summary>
        /// Webproxy profile name.
        /// </summary>
        public readonly string WebproxyProfile;
        /// <summary>
        /// Enable/disable WiFi Single Sign On (WSSO).
        /// </summary>
        public readonly string Wsso;
        /// <summary>
        /// Source ztna-ems-tag names. The structure of `ztna_ems_tag` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetFirewallPolicyZtnaEmsTagResult> ZtnaEmsTags;
        /// <summary>
        /// Source ztna-geo-tag names. The structure of `ztna_geo_tag` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetFirewallPolicyZtnaGeoTagResult> ZtnaGeoTags;
        /// <summary>
        /// Enable/disable zero trust access.
        /// </summary>
        public readonly string ZtnaStatus;

        [OutputConstructor]
        private GetFirewallPolicyResult(
            string action,

            string antiReplay,

            ImmutableArray<Outputs.GetFirewallPolicyAppCategoryResult> appCategories,

            ImmutableArray<Outputs.GetFirewallPolicyAppGroupResult> appGroups,

            string applicationList,

            ImmutableArray<Outputs.GetFirewallPolicyApplicationResult> applications,

            string authCert,

            string authPath,

            string authRedirectAddr,

            string autoAsicOffload,

            string avProfile,

            string blockNotification,

            string captivePortalExempt,

            string capturePacket,

            string cifsProfile,

            string comments,

            ImmutableArray<Outputs.GetFirewallPolicyCustomLogFieldResult> customLogFields,

            string decryptedTrafficMirror,

            string delayTcpNpuSession,

            ImmutableArray<Outputs.GetFirewallPolicyDeviceResult> devices,

            string diffservCopy,

            string diffservForward,

            string diffservReverse,

            string diffservcodeForward,

            string diffservcodeRev,

            string disclaimer,

            string dlpProfile,

            string dlpSensor,

            string dnsfilterProfile,

            string dsri,

            string dstaddr6Negate,

            ImmutableArray<Outputs.GetFirewallPolicyDstaddr6Result> dstaddr6s,

            string dstaddrNegate,

            ImmutableArray<Outputs.GetFirewallPolicyDstaddrResult> dstaddrs,

            ImmutableArray<Outputs.GetFirewallPolicyDstintfResult> dstintfs,

            string dynamicShaping,

            string emailCollect,

            string emailfilterProfile,

            string fec,

            string fileFilterProfile,

            string firewallSessionDirty,

            string fixedport,

            string fsso,

            string fssoAgentForNtlm,

            ImmutableArray<Outputs.GetFirewallPolicyFssoGroupResult> fssoGroups,

            string geoipAnycast,

            string geoipMatch,

            string globalLabel,

            ImmutableArray<Outputs.GetFirewallPolicyGroupResult> groups,

            string httpPolicyRedirect,

            string icapProfile,

            string id,

            string identityBasedRoute,

            string inbound,

            string inspectionMode,

            string internetService,

            string internetService6,

            ImmutableArray<Outputs.GetFirewallPolicyInternetService6CustomGroupResult> internetService6CustomGroups,

            ImmutableArray<Outputs.GetFirewallPolicyInternetService6CustomResult> internetService6Customs,

            ImmutableArray<Outputs.GetFirewallPolicyInternetService6GroupResult> internetService6Groups,

            ImmutableArray<Outputs.GetFirewallPolicyInternetService6NameResult> internetService6Names,

            string internetService6Negate,

            string internetService6Src,

            ImmutableArray<Outputs.GetFirewallPolicyInternetService6SrcCustomGroupResult> internetService6SrcCustomGroups,

            ImmutableArray<Outputs.GetFirewallPolicyInternetService6SrcCustomResult> internetService6SrcCustoms,

            ImmutableArray<Outputs.GetFirewallPolicyInternetService6SrcGroupResult> internetService6SrcGroups,

            ImmutableArray<Outputs.GetFirewallPolicyInternetService6SrcNameResult> internetService6SrcNames,

            string internetService6SrcNegate,

            ImmutableArray<Outputs.GetFirewallPolicyInternetServiceCustomGroupResult> internetServiceCustomGroups,

            ImmutableArray<Outputs.GetFirewallPolicyInternetServiceCustomResult> internetServiceCustoms,

            ImmutableArray<Outputs.GetFirewallPolicyInternetServiceGroupResult> internetServiceGroups,

            ImmutableArray<Outputs.GetFirewallPolicyInternetServiceIdResult> internetServiceIds,

            ImmutableArray<Outputs.GetFirewallPolicyInternetServiceNameResult> internetServiceNames,

            string internetServiceNegate,

            string internetServiceSrc,

            ImmutableArray<Outputs.GetFirewallPolicyInternetServiceSrcCustomGroupResult> internetServiceSrcCustomGroups,

            ImmutableArray<Outputs.GetFirewallPolicyInternetServiceSrcCustomResult> internetServiceSrcCustoms,

            ImmutableArray<Outputs.GetFirewallPolicyInternetServiceSrcGroupResult> internetServiceSrcGroups,

            ImmutableArray<Outputs.GetFirewallPolicyInternetServiceSrcIdResult> internetServiceSrcIds,

            ImmutableArray<Outputs.GetFirewallPolicyInternetServiceSrcNameResult> internetServiceSrcNames,

            string internetServiceSrcNegate,

            string ippool,

            string ipsSensor,

            string label,

            string learningMode,

            string logtraffic,

            string logtrafficStart,

            string matchVip,

            string matchVipOnly,

            string name,

            string nat,

            string nat46,

            string nat64,

            string natinbound,

            string natip,

            string natoutbound,

            ImmutableArray<Outputs.GetFirewallPolicyNetworkServiceDynamicResult> networkServiceDynamics,

            ImmutableArray<Outputs.GetFirewallPolicyNetworkServiceSrcDynamicResult> networkServiceSrcDynamics,

            string npAcceleration,

            string ntlm,

            ImmutableArray<Outputs.GetFirewallPolicyNtlmEnabledBrowserResult> ntlmEnabledBrowsers,

            string ntlmGuest,

            string outbound,

            string passiveWanHealthMeasurement,

            string perIpShaper,

            string permitAnyHost,

            string permitStunHost,

            string policyExpiry,

            string policyExpiryDate,

            int policyid,

            ImmutableArray<Outputs.GetFirewallPolicyPoolname6Result> poolname6s,

            ImmutableArray<Outputs.GetFirewallPolicyPoolnameResult> poolnames,

            string profileGroup,

            string profileProtocolOptions,

            string profileType,

            string radiusMacAuthBypass,

            string redirectUrl,

            string replacemsgOverrideGroup,

            string reputationDirection,

            string reputationDirection6,

            int reputationMinimum,

            int reputationMinimum6,

            string rsso,

            ImmutableArray<Outputs.GetFirewallPolicyRtpAddrResult> rtpAddrs,

            string rtpNat,

            string scanBotnetConnections,

            string schedule,

            string scheduleTimeout,

            string sctpFilterProfile,

            string sendDenyPacket,

            string serviceNegate,

            ImmutableArray<Outputs.GetFirewallPolicyServiceResult> services,

            int sessionTtl,

            string sgtCheck,

            ImmutableArray<Outputs.GetFirewallPolicySgtResult> sgts,

            string spamfilterProfile,

            ImmutableArray<Outputs.GetFirewallPolicySrcVendorMacResult> srcVendorMacs,

            string srcaddr6Negate,

            ImmutableArray<Outputs.GetFirewallPolicySrcaddr6Result> srcaddr6s,

            string srcaddrNegate,

            ImmutableArray<Outputs.GetFirewallPolicySrcaddrResult> srcaddrs,

            ImmutableArray<Outputs.GetFirewallPolicySrcintfResult> srcintfs,

            string sshFilterProfile,

            string sshPolicyRedirect,

            string sslMirror,

            ImmutableArray<Outputs.GetFirewallPolicySslMirrorIntfResult> sslMirrorIntfs,

            string sslSshProfile,

            string status,

            int tcpMssReceiver,

            int tcpMssSender,

            string tcpSessionWithoutSyn,

            string timeoutSendRst,

            string tos,

            string tosMask,

            string tosNegate,

            string trafficShaper,

            string trafficShaperReverse,

            ImmutableArray<Outputs.GetFirewallPolicyUrlCategoryResult> urlCategories,

            ImmutableArray<Outputs.GetFirewallPolicyUserResult> users,

            string utmStatus,

            string uuid,

            string? vdomparam,

            string videofilterProfile,

            int vlanCosFwd,

            int vlanCosRev,

            string vlanFilter,

            string voipProfile,

            string vpntunnel,

            string wafProfile,

            string wanopt,

            string wanoptDetection,

            string wanoptPassiveOpt,

            string wanoptPeer,

            string wanoptProfile,

            string wccp,

            string webcache,

            string webcacheHttps,

            string webfilterProfile,

            string webproxyForwardServer,

            string webproxyProfile,

            string wsso,

            ImmutableArray<Outputs.GetFirewallPolicyZtnaEmsTagResult> ztnaEmsTags,

            ImmutableArray<Outputs.GetFirewallPolicyZtnaGeoTagResult> ztnaGeoTags,

            string ztnaStatus)
        {
            Action = action;
            AntiReplay = antiReplay;
            AppCategories = appCategories;
            AppGroups = appGroups;
            ApplicationList = applicationList;
            Applications = applications;
            AuthCert = authCert;
            AuthPath = authPath;
            AuthRedirectAddr = authRedirectAddr;
            AutoAsicOffload = autoAsicOffload;
            AvProfile = avProfile;
            BlockNotification = blockNotification;
            CaptivePortalExempt = captivePortalExempt;
            CapturePacket = capturePacket;
            CifsProfile = cifsProfile;
            Comments = comments;
            CustomLogFields = customLogFields;
            DecryptedTrafficMirror = decryptedTrafficMirror;
            DelayTcpNpuSession = delayTcpNpuSession;
            Devices = devices;
            DiffservCopy = diffservCopy;
            DiffservForward = diffservForward;
            DiffservReverse = diffservReverse;
            DiffservcodeForward = diffservcodeForward;
            DiffservcodeRev = diffservcodeRev;
            Disclaimer = disclaimer;
            DlpProfile = dlpProfile;
            DlpSensor = dlpSensor;
            DnsfilterProfile = dnsfilterProfile;
            Dsri = dsri;
            Dstaddr6Negate = dstaddr6Negate;
            Dstaddr6s = dstaddr6s;
            DstaddrNegate = dstaddrNegate;
            Dstaddrs = dstaddrs;
            Dstintfs = dstintfs;
            DynamicShaping = dynamicShaping;
            EmailCollect = emailCollect;
            EmailfilterProfile = emailfilterProfile;
            Fec = fec;
            FileFilterProfile = fileFilterProfile;
            FirewallSessionDirty = firewallSessionDirty;
            Fixedport = fixedport;
            Fsso = fsso;
            FssoAgentForNtlm = fssoAgentForNtlm;
            FssoGroups = fssoGroups;
            GeoipAnycast = geoipAnycast;
            GeoipMatch = geoipMatch;
            GlobalLabel = globalLabel;
            Groups = groups;
            HttpPolicyRedirect = httpPolicyRedirect;
            IcapProfile = icapProfile;
            Id = id;
            IdentityBasedRoute = identityBasedRoute;
            Inbound = inbound;
            InspectionMode = inspectionMode;
            InternetService = internetService;
            InternetService6 = internetService6;
            InternetService6CustomGroups = internetService6CustomGroups;
            InternetService6Customs = internetService6Customs;
            InternetService6Groups = internetService6Groups;
            InternetService6Names = internetService6Names;
            InternetService6Negate = internetService6Negate;
            InternetService6Src = internetService6Src;
            InternetService6SrcCustomGroups = internetService6SrcCustomGroups;
            InternetService6SrcCustoms = internetService6SrcCustoms;
            InternetService6SrcGroups = internetService6SrcGroups;
            InternetService6SrcNames = internetService6SrcNames;
            InternetService6SrcNegate = internetService6SrcNegate;
            InternetServiceCustomGroups = internetServiceCustomGroups;
            InternetServiceCustoms = internetServiceCustoms;
            InternetServiceGroups = internetServiceGroups;
            InternetServiceIds = internetServiceIds;
            InternetServiceNames = internetServiceNames;
            InternetServiceNegate = internetServiceNegate;
            InternetServiceSrc = internetServiceSrc;
            InternetServiceSrcCustomGroups = internetServiceSrcCustomGroups;
            InternetServiceSrcCustoms = internetServiceSrcCustoms;
            InternetServiceSrcGroups = internetServiceSrcGroups;
            InternetServiceSrcIds = internetServiceSrcIds;
            InternetServiceSrcNames = internetServiceSrcNames;
            InternetServiceSrcNegate = internetServiceSrcNegate;
            Ippool = ippool;
            IpsSensor = ipsSensor;
            Label = label;
            LearningMode = learningMode;
            Logtraffic = logtraffic;
            LogtrafficStart = logtrafficStart;
            MatchVip = matchVip;
            MatchVipOnly = matchVipOnly;
            Name = name;
            Nat = nat;
            Nat46 = nat46;
            Nat64 = nat64;
            Natinbound = natinbound;
            Natip = natip;
            Natoutbound = natoutbound;
            NetworkServiceDynamics = networkServiceDynamics;
            NetworkServiceSrcDynamics = networkServiceSrcDynamics;
            NpAcceleration = npAcceleration;
            Ntlm = ntlm;
            NtlmEnabledBrowsers = ntlmEnabledBrowsers;
            NtlmGuest = ntlmGuest;
            Outbound = outbound;
            PassiveWanHealthMeasurement = passiveWanHealthMeasurement;
            PerIpShaper = perIpShaper;
            PermitAnyHost = permitAnyHost;
            PermitStunHost = permitStunHost;
            PolicyExpiry = policyExpiry;
            PolicyExpiryDate = policyExpiryDate;
            Policyid = policyid;
            Poolname6s = poolname6s;
            Poolnames = poolnames;
            ProfileGroup = profileGroup;
            ProfileProtocolOptions = profileProtocolOptions;
            ProfileType = profileType;
            RadiusMacAuthBypass = radiusMacAuthBypass;
            RedirectUrl = redirectUrl;
            ReplacemsgOverrideGroup = replacemsgOverrideGroup;
            ReputationDirection = reputationDirection;
            ReputationDirection6 = reputationDirection6;
            ReputationMinimum = reputationMinimum;
            ReputationMinimum6 = reputationMinimum6;
            Rsso = rsso;
            RtpAddrs = rtpAddrs;
            RtpNat = rtpNat;
            ScanBotnetConnections = scanBotnetConnections;
            Schedule = schedule;
            ScheduleTimeout = scheduleTimeout;
            SctpFilterProfile = sctpFilterProfile;
            SendDenyPacket = sendDenyPacket;
            ServiceNegate = serviceNegate;
            Services = services;
            SessionTtl = sessionTtl;
            SgtCheck = sgtCheck;
            Sgts = sgts;
            SpamfilterProfile = spamfilterProfile;
            SrcVendorMacs = srcVendorMacs;
            Srcaddr6Negate = srcaddr6Negate;
            Srcaddr6s = srcaddr6s;
            SrcaddrNegate = srcaddrNegate;
            Srcaddrs = srcaddrs;
            Srcintfs = srcintfs;
            SshFilterProfile = sshFilterProfile;
            SshPolicyRedirect = sshPolicyRedirect;
            SslMirror = sslMirror;
            SslMirrorIntfs = sslMirrorIntfs;
            SslSshProfile = sslSshProfile;
            Status = status;
            TcpMssReceiver = tcpMssReceiver;
            TcpMssSender = tcpMssSender;
            TcpSessionWithoutSyn = tcpSessionWithoutSyn;
            TimeoutSendRst = timeoutSendRst;
            Tos = tos;
            TosMask = tosMask;
            TosNegate = tosNegate;
            TrafficShaper = trafficShaper;
            TrafficShaperReverse = trafficShaperReverse;
            UrlCategories = urlCategories;
            Users = users;
            UtmStatus = utmStatus;
            Uuid = uuid;
            Vdomparam = vdomparam;
            VideofilterProfile = videofilterProfile;
            VlanCosFwd = vlanCosFwd;
            VlanCosRev = vlanCosRev;
            VlanFilter = vlanFilter;
            VoipProfile = voipProfile;
            Vpntunnel = vpntunnel;
            WafProfile = wafProfile;
            Wanopt = wanopt;
            WanoptDetection = wanoptDetection;
            WanoptPassiveOpt = wanoptPassiveOpt;
            WanoptPeer = wanoptPeer;
            WanoptProfile = wanoptProfile;
            Wccp = wccp;
            Webcache = webcache;
            WebcacheHttps = webcacheHttps;
            WebfilterProfile = webfilterProfile;
            WebproxyForwardServer = webproxyForwardServer;
            WebproxyProfile = webproxyProfile;
            Wsso = wsso;
            ZtnaEmsTags = ztnaEmsTags;
            ZtnaGeoTags = ztnaGeoTags;
            ZtnaStatus = ztnaStatus;
        }
    }
}
