// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

// <auto-generated/>

#nullable disable

using System.Collections.Generic;
using Azure.Core;
using Azure.ResourceManager.Resources.Models;

namespace Azure.ResourceManager.Network.Models
{
    /// <summary> Path rule of URL path map of an application gateway. </summary>
    public partial class ApplicationGatewayPathRule : WritableSubResource
    {
        /// <summary> Initializes a new instance of ApplicationGatewayPathRule. </summary>
        public ApplicationGatewayPathRule()
        {
            Paths = new ChangeTrackingList<string>();
        }

        /// <summary> Initializes a new instance of ApplicationGatewayPathRule. </summary>
        /// <param name="id"> The id. </param>
        /// <param name="name"> Name of the path rule that is unique within an Application Gateway. </param>
        /// <param name="etag"> A unique read-only string that changes whenever the resource is updated. </param>
        /// <param name="type"> Type of the resource. </param>
        /// <param name="paths"> Path rules of URL path map. </param>
        /// <param name="backendAddressPool"> Backend address pool resource of URL path map path rule. </param>
        /// <param name="backendHttpSettings"> Backend http settings resource of URL path map path rule. </param>
        /// <param name="redirectConfiguration"> Redirect configuration resource of URL path map path rule. </param>
        /// <param name="rewriteRuleSet"> Rewrite rule set resource of URL path map path rule. </param>
        /// <param name="provisioningState"> The provisioning state of the path rule resource. </param>
        /// <param name="firewallPolicy"> Reference to the FirewallPolicy resource. </param>
        internal ApplicationGatewayPathRule(string id, string name, string etag, string type, IList<string> paths, SubResource backendAddressPool, SubResource backendHttpSettings, SubResource redirectConfiguration, SubResource rewriteRuleSet, ProvisioningState? provisioningState, SubResource firewallPolicy) : base(id)
        {
            Name = name;
            Etag = etag;
            Type = type;
            Paths = paths;
            BackendAddressPool = backendAddressPool;
            BackendHttpSettings = backendHttpSettings;
            RedirectConfiguration = redirectConfiguration;
            RewriteRuleSet = rewriteRuleSet;
            ProvisioningState = provisioningState;
            FirewallPolicy = firewallPolicy;
        }

        /// <summary> Name of the path rule that is unique within an Application Gateway. </summary>
        public string Name { get; set; }
        /// <summary> A unique read-only string that changes whenever the resource is updated. </summary>
        public string Etag { get; }
        /// <summary> Type of the resource. </summary>
        public string Type { get; }
        /// <summary> Path rules of URL path map. </summary>
        public IList<string> Paths { get; }
        /// <summary> Backend address pool resource of URL path map path rule. </summary>
        public SubResource BackendAddressPool { get; set; }
        /// <summary> Backend http settings resource of URL path map path rule. </summary>
        public SubResource BackendHttpSettings { get; set; }
        /// <summary> Redirect configuration resource of URL path map path rule. </summary>
        public SubResource RedirectConfiguration { get; set; }
        /// <summary> Rewrite rule set resource of URL path map path rule. </summary>
        public SubResource RewriteRuleSet { get; set; }
        /// <summary> The provisioning state of the path rule resource. </summary>
        public ProvisioningState? ProvisioningState { get; }
        /// <summary> Reference to the FirewallPolicy resource. </summary>
        public SubResource FirewallPolicy { get; set; }
    }
}
