// *** 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.Tem.Inputs
{

    public sealed class GatewayIngressArgs : Pulumi.ResourceArgs
    {
        /// <summary>
        /// ip version, support IPV4.
        /// </summary>
        [Input("addressIpVersion", required: true)]
        public Input<string> AddressIpVersion { get; set; } = null!;

        /// <summary>
        /// related CLB ID, support binding existing clb, does not support modification.
        /// </summary>
        [Input("clbId")]
        public Input<string>? ClbId { get; set; }

        [Input("createTime")]
        public Input<string>? CreateTime { get; set; }

        /// <summary>
        /// environment ID.
        /// </summary>
        [Input("environmentId", required: true)]
        public Input<string> EnvironmentId { get; set; } = null!;

        /// <summary>
        /// gateway name.
        /// </summary>
        [Input("ingressName", required: true)]
        public Input<string> IngressName { get; set; } = null!;

        /// <summary>
        /// mixing HTTP and HTTPS.
        /// </summary>
        [Input("mixed", required: true)]
        public Input<bool> Mixed { get; set; } = null!;

        /// <summary>
        /// redirect mode, support AUTO and NONE.
        /// </summary>
        [Input("rewriteType")]
        public Input<string>? RewriteType { get; set; }

        [Input("rules", required: true)]
        private InputList<Inputs.GatewayIngressRuleArgs>? _rules;

        /// <summary>
        /// proxy rules.
        /// </summary>
        public InputList<Inputs.GatewayIngressRuleArgs> Rules
        {
            get => _rules ?? (_rules = new InputList<Inputs.GatewayIngressRuleArgs>());
            set => _rules = value;
        }

        [Input("tls")]
        private InputList<Inputs.GatewayIngressTlArgs>? _tls;

        /// <summary>
        /// ingress TLS configurations.
        /// </summary>
        public InputList<Inputs.GatewayIngressTlArgs> Tls
        {
            get => _tls ?? (_tls = new InputList<Inputs.GatewayIngressTlArgs>());
            set => _tls = value;
        }

        [Input("vip")]
        public Input<string>? Vip { get; set; }

        public GatewayIngressArgs()
        {
        }
    }
}
