<filename>sdk/dotnet/Rds/RdsCloneDbInstance.cs// *** 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.Rds
{
    /// <summary>
    /// Provides a RDS Clone DB Instance resource.
    /// 
    /// For information about RDS Clone DB Instance and how to use it, see [What is ApsaraDB for RDS](https://www.alibabacloud.com/help/en/doc-detail/26092.htm).
    /// 
    /// &gt; **NOTE:** Available in v1.149.0+.
    /// 
    /// ## Example Usage
    /// ### Create a RDS MySQL clone instance
    /// 
    /// ```csharp
    /// using System.Collections.Generic;
    /// using Pulumi;
    /// using AliCloud = Pulumi.AliCloud;
    /// 
    /// return await Deployment.RunAsync(() =&gt; 
    /// {
    ///     var config = new Config();
    ///     var name = config.Get("name") ?? "tf-testaccdbinstance";
    ///     var creation = config.Get("creation") ?? "Rds";
    ///     var exampleZones = AliCloud.GetZones.Invoke(new()
    ///     {
    ///         AvailableResourceCreation = creation,
    ///     });
    /// 
    ///     var exampleNetwork = new AliCloud.Vpc.Network("exampleNetwork", new()
    ///     {
    ///         CidrBlock = "172.16.0.0/16",
    ///     });
    /// 
    ///     var exampleSwitch = new AliCloud.Vpc.Switch("exampleSwitch", new()
    ///     {
    ///         VpcId = exampleNetwork.Id,
    ///         CidrBlock = "172.16.0.0/24",
    ///         ZoneId = exampleZones.Apply(getZonesResult =&gt; getZonesResult.Zones[0]?.Id),
    ///     });
    /// 
    ///     var exampleInstance = new AliCloud.Rds.Instance("exampleInstance", new()
    ///     {
    ///         Engine = "MySQL",
    ///         EngineVersion = "5.6",
    ///         InstanceType = "rds.mysql.s2.large",
    ///         InstanceStorage = 30,
    ///         InstanceChargeType = "Postpaid",
    ///         InstanceName = name,
    ///         VswitchId = exampleSwitch.Id,
    ///         MonitoringPeriod = 60,
    ///     });
    /// 
    ///     var exampleRdsCloneDbInstance = new AliCloud.Rds.RdsCloneDbInstance("exampleRdsCloneDbInstance", new()
    ///     {
    ///         SourceDbInstanceId = exampleInstance.Id,
    ///         DbInstanceStorageType = "local_ssd",
    ///         PaymentType = "PayAsYouGo",
    ///         RestoreTime = "2021-11-24T11:25:00Z",
    ///         DbInstanceStorage = 30,
    ///     });
    /// 
    /// });
    /// ```
    /// 
    /// ## Import
    /// 
    /// RDS Clone DB Instance can be imported using the id, e.g.
    /// 
    /// ```sh
    ///  $ pulumi import alicloud:rds/rdsCloneDbInstance:RdsCloneDbInstance example &lt;id&gt;
    /// ```
    /// </summary>
    [AliCloudResourceType("alicloud:rds/rdsCloneDbInstance:RdsCloneDbInstance")]
    public partial class RdsCloneDbInstance : global::Pulumi.CustomResource
    {
        /// <summary>
        /// This parameter is only supported by the RDS PostgreSQL cloud disk version. This parameter indicates the authentication method. It is allowed only when the public key of the client certificate authority is enabled. Valid values: `cert` and `perfer` and `verify-ca` and `verify-full (supported by RDS PostgreSQL above 12)`.
        /// </summary>
        [Output("acl")]
        public Output<string> Acl { get; private set; } = null!;

        /// <summary>
        /// How to upgrade the minor version of the instance. Valid values:
        /// * **Auto**: automatically upgrade the minor version.
        /// * **Manual**: It is not automatically upgraded. It is only mandatory when the current version is offline.
        /// </summary>
        [Output("autoUpgradeMinorVersion")]
        public Output<string> AutoUpgradeMinorVersion { get; private set; } = null!;

        /// <summary>
        /// The ID of the data backup file you want to use. You can call the DescribeBackups operation to query the most recent data backup file list.
        /// </summary>
        [Output("backupId")]
        public Output<string?> BackupId { get; private set; } = null!;

        /// <summary>
        /// The type of backup that is used to restore the data of the original instance. Valid values:
        /// * **FullBackup**: full backup
        /// * **IncrementalBackup**: incremental backup
        /// </summary>
        [Output("backupType")]
        public Output<string?> BackupType { get; private set; } = null!;

        /// <summary>
        /// This parameter is only supported by the RDS PostgreSQL cloud disk version. It indicates the certificate type. When the value of ssl_action is Open, the default value of this parameter is aliyun. Value range:
        /// * **aliyun**: using cloud certificates
        /// * **custom**: use a custom certificate. Valid values: `aliyun`, `custom`.
        /// </summary>
        [Output("caType")]
        public Output<string> CaType { get; private set; } = null!;

        /// <summary>
        /// Instance series. Valid values:
        /// * **Basic**: Basic Edition
        /// * **HighAvailability**: High availability
        /// * **AlwaysOn**: Cluster Edition
        /// * **Finance**: Three-node Enterprise Edition.
        /// * **serverless_basic**: Serverless Basic Edition. (Available in 1.200.0+)
        /// </summary>
        [Output("category")]
        public Output<string> Category { get; private set; } = null!;

        /// <summary>
        /// The file that contains the certificate used for TDE.
        /// </summary>
        [Output("certificate")]
        public Output<string?> Certificate { get; private set; } = null!;

        /// <summary>
        /// This parameter is only supported by the RDS PostgreSQL cloud disk version. It indicates the public key of the client certification authority. If the value of client_ca_enabled is 1, this parameter must be configured.
        /// </summary>
        [Output("clientCaCert")]
        public Output<string?> ClientCaCert { get; private set; } = null!;

        /// <summary>
        /// The client ca enabled.
        /// </summary>
        [Output("clientCaEnabled")]
        public Output<int?> ClientCaEnabled { get; private set; } = null!;

        /// <summary>
        /// This parameter is only supported by the RDS PostgreSQL cloud disk version, which indicates that the client revokes the certificate file. If the value of client_crl_enabled is 1, this parameter must be configured.
        /// </summary>
        [Output("clientCertRevocationList")]
        public Output<string?> ClientCertRevocationList { get; private set; } = null!;

        /// <summary>
        /// The client crl enabled.
        /// </summary>
        [Output("clientCrlEnabled")]
        public Output<int?> ClientCrlEnabled { get; private set; } = null!;

        /// <summary>
        /// The database connection address.
        /// </summary>
        [Output("connectionString")]
        public Output<string> ConnectionString { get; private set; } = null!;

        /// <summary>
        /// The connection string prefix.
        /// </summary>
        [Output("connectionStringPrefix")]
        public Output<string?> ConnectionStringPrefix { get; private set; } = null!;

        /// <summary>
        /// The instance type of the new instance. For information, see [Primary ApsaraDB RDS instance types](https://www.alibabacloud.com/doc-detail/26312.htm).
        /// </summary>
        [Output("dbInstanceClass")]
        public Output<string> DbInstanceClass { get; private set; } = null!;

        /// <summary>
        /// The db instance description.
        /// </summary>
        [Output("dbInstanceDescription")]
        public Output<string?> DbInstanceDescription { get; private set; } = null!;

        /// <summary>
        /// The storage capacity of the new instance. Unit: GB. The storage capacity increases in increments of 5 GB. For more information, see [Primary ApsaraDB RDS instance types](https://www.alibabacloud.com/doc-detail/26312.htm).
        /// </summary>
        [Output("dbInstanceStorage")]
        public Output<int> DbInstanceStorage { get; private set; } = null!;

        /// <summary>
        /// The type of storage media that is used for the new instance. Valid values:
        /// * **local_ssd**: local SSDs
        /// * **cloud_ssd**: standard SSDs
        /// * **cloud_essd**: enhanced SSDs (ESSDs) of performance level 1 (PL1)
        /// * **cloud_essd2**: ESSDs of PL2
        /// * **cloud_essd3**: ESSDs of PL3
        /// </summary>
        [Output("dbInstanceStorageType")]
        public Output<string> DbInstanceStorageType { get; private set; } = null!;

        /// <summary>
        /// The name of the database for which you want to enable TDE. Up to 50 names can be entered in a single request. If you specify multiple names, separate these names with commas (,).
        /// </summary>
        [Output("dbName")]
        public Output<string?> DbName { get; private set; } = null!;

        /// <summary>
        /// The names of the databases that you want to create on the new instance.
        /// </summary>
        [Output("dbNames")]
        public Output<string?> DbNames { get; private set; } = null!;

        /// <summary>
        /// The ID of the dedicated cluster to which the new instance belongs. This parameter takes effect only when you create the new instance in a dedicated cluster.
        /// </summary>
        [Output("dedicatedHostGroupId")]
        public Output<string?> DedicatedHostGroupId { get; private set; } = null!;

        /// <summary>
        /// The switch of delete protection. Valid values:
        /// - true: delete protect.
        /// - false: no delete protect.
        /// </summary>
        [Output("deletionProtection")]
        public Output<bool?> DeletionProtection { get; private set; } = null!;

        /// <summary>
        /// The direction. Valid values: `Auto`, `Down`, `TempUpgrade`, `Up`.
        /// </summary>
        [Output("direction")]
        public Output<string?> Direction { get; private set; } = null!;

        /// <summary>
        /// The effective time.
        /// </summary>
        [Output("effectiveTime")]
        public Output<string?> EffectiveTime { get; private set; } = null!;

        /// <summary>
        /// The ID of the private key.
        /// </summary>
        [Output("encryptionKey")]
        public Output<string?> EncryptionKey { get; private set; } = null!;

        /// <summary>
        /// Database type. Value options: MySQL, SQLServer, PostgreSQL, MariaDB.
        /// </summary>
        [Output("engine")]
        public Output<string> Engine { get; private set; } = null!;

        /// <summary>
        /// Database version. Value:
        /// * MySQL:**5.5/5.6/5.7/8.0**
        /// * SQL Server:**2008r2/08r2_ent_ha/2012/2012_ent_ha/2012_std_ha/2012_web/2014_std_ha/2016_ent_ha/2016_std_ha/2016_web/2017_std_ha/2017_ent/2019_std_ha/2019_ent**
        /// * PostgreSQL:**9.4/10.0/11.0/12.0/13.0**
        /// * MariaDB:**10.3**.
        /// </summary>
        [Output("engineVersion")]
        public Output<string> EngineVersion { get; private set; } = null!;

        /// <summary>
        /// Set it to true to make some parameter efficient when modifying them. Default to false.
        /// </summary>
        [Output("forceRestart")]
        public Output<bool?> ForceRestart { get; private set; } = null!;

        /// <summary>
        /// The high availability mode. Valid values:
        /// * **RPO**: Data persistence is preferred. The instance preferentially ensures data reliability to minimize data loss. Use this mode if you have higher requirements on data consistency.
        /// * **RTO**: Instance availability is preferred. The instance restores services as soon as possible to ensure availability. Use this mode if you have higher requirements on service availability.
        /// </summary>
        [Output("haMode")]
        public Output<string> HaMode { get; private set; } = null!;

        /// <summary>
        /// The network type of the instance. Valid values:
        /// * **Classic**: Classic Network
        /// * **VPC**: VPC.
        /// </summary>
        [Output("instanceNetworkType")]
        public Output<string> InstanceNetworkType { get; private set; } = null!;

        /// <summary>
        /// The maintainable time period of the instance. Format: &lt;I&gt; HH:mm&lt;/I&gt; Z-&lt;I&gt; HH:mm&lt;/I&gt; Z(UTC time).
        /// </summary>
        [Output("maintainTime")]
        public Output<string> MaintainTime { get; private set; } = null!;

        /// <summary>
        /// Set of parameters needs to be set after DB instance was launched. Available parameters can refer to the latest docs [View database parameter templates](https://www.alibabacloud.com/help/doc-detail/26284.htm).
        /// </summary>
        [Output("parameters")]
        public Output<ImmutableArray<Outputs.RdsCloneDbInstanceParameter>> Parameters { get; private set; } = null!;

        /// <summary>
        /// The password of the certificate.
        /// </summary>
        [Output("password")]
        public Output<string?> Password { get; private set; } = null!;

        /// <summary>
        /// The billing method of the new instance. Valid values: `PayAsYouGo` and `Subscription` and `Serverless`.
        /// </summary>
        [Output("paymentType")]
        public Output<string> PaymentType { get; private set; } = null!;

        /// <summary>
        /// The period. Valid values: `Month`, `Year`.
        /// </summary>
        [Output("period")]
        public Output<string?> Period { get; private set; } = null!;

        /// <summary>
        /// The configuration of [AD domain](https://www.alibabacloud.com/help/en/doc-detail/349288.htm) (documented below).
        /// </summary>
        [Output("pgHbaConfs")]
        public Output<ImmutableArray<Outputs.RdsCloneDbInstancePgHbaConf>> PgHbaConfs { get; private set; } = null!;

        /// <summary>
        /// The port.
        /// </summary>
        [Output("port")]
        public Output<string> Port { get; private set; } = null!;

        /// <summary>
        /// The intranet IP address of the new instance must be within the specified vSwitch IP address range. By default, the system automatically allocates by using **VPCId** and **VSwitchId**.
        /// </summary>
        [Output("privateIpAddress")]
        public Output<string> PrivateIpAddress { get; private set; } = null!;

        /// <summary>
        /// The file that contains the private key used for TDE.
        /// </summary>
        [Output("privateKey")]
        public Output<string?> PrivateKey { get; private set; } = null!;

        /// <summary>
        /// The released keep policy.
        /// </summary>
        [Output("releasedKeepPolicy")]
        public Output<string?> ReleasedKeepPolicy { get; private set; } = null!;

        /// <summary>
        /// This parameter is only supported by the RDS PostgreSQL cloud disk version, indicating the authentication method of the replication permission. It is only allowed when the public key of the client certificate authority is enabled. Valid values: `cert` and `perfer` and `verify-ca` and `verify-full (supported by RDS PostgreSQL above 12)`.
        /// </summary>
        [Output("replicationAcl")]
        public Output<string> ReplicationAcl { get; private set; } = null!;

        /// <summary>
        /// The resource group id.
        /// </summary>
        [Output("resourceGroupId")]
        public Output<string?> ResourceGroupId { get; private set; } = null!;

        /// <summary>
        /// Specifies whether to restore only the databases and tables that you specify. The value 1 specifies to restore only the specified databases and tables. If you do not want to restore only the specified databases or tables, you can choose not to specify this parameter.
        /// </summary>
        [Output("restoreTable")]
        public Output<string?> RestoreTable { get; private set; } = null!;

        /// <summary>
        /// The point in time to which you want to restore the data of the original instance. The point in time must fall within the specified log backup retention period. The time follows the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.
        /// </summary>
        [Output("restoreTime")]
        public Output<string?> RestoreTime { get; private set; } = null!;

        /// <summary>
        /// The Alibaba Cloud Resource Name (ARN) of a RAM role. A RAM role is a virtual RAM identity that you can create within your Alibaba Cloud account. For more information, see [RAM role overview](https://www.alibabacloud.com/doc-detail/93689.htm).
        /// </summary>
        [Output("roleArn")]
        public Output<string?> RoleArn { get; private set; } = null!;

        /// <summary>
        /// The IP address whitelist of the instance. Separate multiple IP addresses with commas (,) and cannot be repeated. The following two formats are supported:
        /// * IP address form, for example: 10.23.12.24.
        /// * CIDR format, for example, 10.23.12.0/24 (no Inter-Domain Routing, 24 indicates the length of the prefix in the address, ranging from 1 to 32).
        /// </summary>
        [Output("securityIps")]
        public Output<ImmutableArray<string>> SecurityIps { get; private set; } = null!;

        /// <summary>
        /// This parameter is only supported by the RDS PostgreSQL cloud disk version. It indicates the content of the server certificate. If the CAType value is custom, this parameter must be configured.
        /// </summary>
        [Output("serverCert")]
        public Output<string> ServerCert { get; private set; } = null!;

        /// <summary>
        /// This parameter is only supported by the RDS PostgreSQL cloud disk version. It indicates the private key of the server certificate. If the value of CAType is custom, this parameter must be configured.
        /// </summary>
        [Output("serverKey")]
        public Output<string> ServerKey { get; private set; } = null!;

        /// <summary>
        /// The settings of the serverless instance. This parameter is required when you create a serverless instance. This parameter takes effect only when you create an ApsaraDB RDS for MySQL instance.
        /// </summary>
        [Output("serverlessConfigs")]
        public Output<ImmutableArray<Outputs.RdsCloneDbInstanceServerlessConfig>> ServerlessConfigs { get; private set; } = null!;

        /// <summary>
        /// The source biz.
        /// </summary>
        [Output("sourceBiz")]
        public Output<string?> SourceBiz { get; private set; } = null!;

        /// <summary>
        /// The source db instance id.
        /// </summary>
        [Output("sourceDbInstanceId")]
        public Output<string> SourceDbInstanceId { get; private set; } = null!;

        /// <summary>
        /// Enable or disable SSL. Valid values: `0` and `1`.
        /// </summary>
        [Output("sslEnabled")]
        public Output<int> SslEnabled { get; private set; } = null!;

        /// <summary>
        /// The time at which you want to apply the specification changes. The time follows the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.
        /// </summary>
        [Output("switchTime")]
        public Output<string?> SwitchTime { get; private set; } = null!;

        /// <summary>
        /// [The data replication mode](https://www.alibabacloud.com/help/doc-detail/96055.htm). Valid values:
        /// * **Sync**: strong synchronization
        /// * **Semi-sync**: Semi-synchronous
        /// * **Async**: asynchronous
        /// </summary>
        [Output("syncMode")]
        public Output<string> SyncMode { get; private set; } = null!;

        /// <summary>
        /// The information about the databases and tables that you want to restore. Format:
        /// [{"type":"db","name":"The original name of Database 1","newname":"The new name of Database 1","tables":[{"type":"table","name":"The original name of Table 1 in Database 1","newname":"The new name of Table 1 in Database 1"},{"type":"table","name":"The original name of Table 2 in Database 1","newname":"The new name of Table 2 in Database 1"}]},{"type":"db","name":"The original name of Database 2","newname":"The new name of Database 2","tables":[{"type":"table","name":"The original name of Table 1 in Database 2","newname":"The new name of Table 1 in Database 2"},{"type":"table","name":"The original name of Table 2 in Database 2","newname":"The new name of Table 2 in Database 2"}]}]
        /// </summary>
        [Output("tableMeta")]
        public Output<string?> TableMeta { get; private set; } = null!;

        /// <summary>
        /// The availability check method of the instance. Valid values:
        /// - **SHORT**: Alibaba Cloud uses short-lived connections to check the availability of the instance.
        /// - **LONG**: Alibaba Cloud uses persistent connections to check the availability of the instance.
        /// </summary>
        [Output("tcpConnectionType")]
        public Output<string> TcpConnectionType { get; private set; } = null!;

        /// <summary>
        /// Specifies whether to enable TDE. Valid values:
        /// * Enabled
        /// * Disabled
        /// </summary>
        [Output("tdeStatus")]
        public Output<string?> TdeStatus { get; private set; } = null!;

        /// <summary>
        /// The subscription period of the new instance. This parameter takes effect only when you select the subscription billing method for the new instance. Valid values:
        /// * If you set the `Period` parameter to Year, the value of the UsedTime parameter ranges from 1 to 3.
        /// * If you set the `Period` parameter to Month, the value of the UsedTime parameter ranges from 1 to 9.
        /// </summary>
        [Output("usedTime")]
        public Output<int?> UsedTime { get; private set; } = null!;

        /// <summary>
        /// The ID of the VPC to which the new instance belongs.
        /// </summary>
        [Output("vpcId")]
        public Output<string> VpcId { get; private set; } = null!;

        /// <summary>
        /// The ID of the vSwitch associated with the specified VPC.
        /// </summary>
        [Output("vswitchId")]
        public Output<string> VswitchId { get; private set; } = null!;

        /// <summary>
        /// The ID of the zone to which the new instance belongs. You can call the [DescribeRegions](https://www.alibabacloud.com/doc-detail/26243.htm) operation to query the most recent region list.
        /// </summary>
        [Output("zoneId")]
        public Output<string> ZoneId { get; private set; } = null!;


        /// <summary>
        /// Create a RdsCloneDbInstance resource with the given unique name, arguments, and options.
        /// </summary>
        ///
        /// <param name="name">The unique name of the resource</param>
        /// <param name="args">The arguments used to populate this resource's properties</param>
        /// <param name="options">A bag of options that control this resource's behavior</param>
        public RdsCloneDbInstance(string name, RdsCloneDbInstanceArgs args, CustomResourceOptions? options = null)
            : base("alicloud:rds/rdsCloneDbInstance:RdsCloneDbInstance", name, args ?? new RdsCloneDbInstanceArgs(), MakeResourceOptions(options, ""))
        {
        }

        private RdsCloneDbInstance(string name, Input<string> id, RdsCloneDbInstanceState? state = null, CustomResourceOptions? options = null)
            : base("alicloud:rds/rdsCloneDbInstance:RdsCloneDbInstance", name, state, MakeResourceOptions(options, id))
        {
        }

        private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input<string>? id)
        {
            var defaultOptions = new CustomResourceOptions
            {
                Version = Utilities.Version,
                PluginDownloadURL = "github://api.github.com/rhysmdnz/pulumi-alicloud",
            };
            var merged = CustomResourceOptions.Merge(defaultOptions, options);
            // Override the ID if one was specified for consistency with other language SDKs.
            merged.Id = id ?? merged.Id;
            return merged;
        }
        /// <summary>
        /// Get an existing RdsCloneDbInstance resource's state with the given name, ID, and optional extra
        /// properties used to qualify the lookup.
        /// </summary>
        ///
        /// <param name="name">The unique name of the resulting resource.</param>
        /// <param name="id">The unique provider ID of the resource to lookup.</param>
        /// <param name="state">Any extra arguments used during the lookup.</param>
        /// <param name="options">A bag of options that control this resource's behavior</param>
        public static RdsCloneDbInstance Get(string name, Input<string> id, RdsCloneDbInstanceState? state = null, CustomResourceOptions? options = null)
        {
            return new RdsCloneDbInstance(name, id, state, options);
        }
    }

    public sealed class RdsCloneDbInstanceArgs : global::Pulumi.ResourceArgs
    {
        /// <summary>
        /// This parameter is only supported by the RDS PostgreSQL cloud disk version. This parameter indicates the authentication method. It is allowed only when the public key of the client certificate authority is enabled. Valid values: `cert` and `perfer` and `verify-ca` and `verify-full (supported by RDS PostgreSQL above 12)`.
        /// </summary>
        [Input("acl")]
        public Input<string>? Acl { get; set; }

        /// <summary>
        /// How to upgrade the minor version of the instance. Valid values:
        /// * **Auto**: automatically upgrade the minor version.
        /// * **Manual**: It is not automatically upgraded. It is only mandatory when the current version is offline.
        /// </summary>
        [Input("autoUpgradeMinorVersion")]
        public Input<string>? AutoUpgradeMinorVersion { get; set; }

        /// <summary>
        /// The ID of the data backup file you want to use. You can call the DescribeBackups operation to query the most recent data backup file list.
        /// </summary>
        [Input("backupId")]
        public Input<string>? BackupId { get; set; }

        /// <summary>
        /// The type of backup that is used to restore the data of the original instance. Valid values:
        /// * **FullBackup**: full backup
        /// * **IncrementalBackup**: incremental backup
        /// </summary>
        [Input("backupType")]
        public Input<string>? BackupType { get; set; }

        /// <summary>
        /// This parameter is only supported by the RDS PostgreSQL cloud disk version. It indicates the certificate type. When the value of ssl_action is Open, the default value of this parameter is aliyun. Value range:
        /// * **aliyun**: using cloud certificates
        /// * **custom**: use a custom certificate. Valid values: `aliyun`, `custom`.
        /// </summary>
        [Input("caType")]
        public Input<string>? CaType { get; set; }

        /// <summary>
        /// Instance series. Valid values:
        /// * **Basic**: Basic Edition
        /// * **HighAvailability**: High availability
        /// * **AlwaysOn**: Cluster Edition
        /// * **Finance**: Three-node Enterprise Edition.
        /// * **serverless_basic**: Serverless Basic Edition. (Available in 1.200.0+)
        /// </summary>
        [Input("category")]
        public Input<string>? Category { get; set; }

        /// <summary>
        /// The file that contains the certificate used for TDE.
        /// </summary>
        [Input("certificate")]
        public Input<string>? Certificate { get; set; }

        /// <summary>
        /// This parameter is only supported by the RDS PostgreSQL cloud disk version. It indicates the public key of the client certification authority. If the value of client_ca_enabled is 1, this parameter must be configured.
        /// </summary>
        [Input("clientCaCert")]
        public Input<string>? ClientCaCert { get; set; }

        /// <summary>
        /// The client ca enabled.
        /// </summary>
        [Input("clientCaEnabled")]
        public Input<int>? ClientCaEnabled { get; set; }

        /// <summary>
        /// This parameter is only supported by the RDS PostgreSQL cloud disk version, which indicates that the client revokes the certificate file. If the value of client_crl_enabled is 1, this parameter must be configured.
        /// </summary>
        [Input("clientCertRevocationList")]
        public Input<string>? ClientCertRevocationList { get; set; }

        /// <summary>
        /// The client crl enabled.
        /// </summary>
        [Input("clientCrlEnabled")]
        public Input<int>? ClientCrlEnabled { get; set; }

        /// <summary>
        /// The connection string prefix.
        /// </summary>
        [Input("connectionStringPrefix")]
        public Input<string>? ConnectionStringPrefix { get; set; }

        /// <summary>
        /// The instance type of the new instance. For information, see [Primary ApsaraDB RDS instance types](https://www.alibabacloud.com/doc-detail/26312.htm).
        /// </summary>
        [Input("dbInstanceClass")]
        public Input<string>? DbInstanceClass { get; set; }

        /// <summary>
        /// The db instance description.
        /// </summary>
        [Input("dbInstanceDescription")]
        public Input<string>? DbInstanceDescription { get; set; }

        /// <summary>
        /// The storage capacity of the new instance. Unit: GB. The storage capacity increases in increments of 5 GB. For more information, see [Primary ApsaraDB RDS instance types](https://www.alibabacloud.com/doc-detail/26312.htm).
        /// </summary>
        [Input("dbInstanceStorage")]
        public Input<int>? DbInstanceStorage { get; set; }

        /// <summary>
        /// The type of storage media that is used for the new instance. Valid values:
        /// * **local_ssd**: local SSDs
        /// * **cloud_ssd**: standard SSDs
        /// * **cloud_essd**: enhanced SSDs (ESSDs) of performance level 1 (PL1)
        /// * **cloud_essd2**: ESSDs of PL2
        /// * **cloud_essd3**: ESSDs of PL3
        /// </summary>
        [Input("dbInstanceStorageType", required: true)]
        public Input<string> DbInstanceStorageType { get; set; } = null!;

        /// <summary>
        /// The name of the database for which you want to enable TDE. Up to 50 names can be entered in a single request. If you specify multiple names, separate these names with commas (,).
        /// </summary>
        [Input("dbName")]
        public Input<string>? DbName { get; set; }

        /// <summary>
        /// The names of the databases that you want to create on the new instance.
        /// </summary>
        [Input("dbNames")]
        public Input<string>? DbNames { get; set; }

        /// <summary>
        /// The ID of the dedicated cluster to which the new instance belongs. This parameter takes effect only when you create the new instance in a dedicated cluster.
        /// </summary>
        [Input("dedicatedHostGroupId")]
        public Input<string>? DedicatedHostGroupId { get; set; }

        /// <summary>
        /// The switch of delete protection. Valid values:
        /// - true: delete protect.
        /// - false: no delete protect.
        /// </summary>
        [Input("deletionProtection")]
        public Input<bool>? DeletionProtection { get; set; }

        /// <summary>
        /// The direction. Valid values: `Auto`, `Down`, `TempUpgrade`, `Up`.
        /// </summary>
        [Input("direction")]
        public Input<string>? Direction { get; set; }

        /// <summary>
        /// The effective time.
        /// </summary>
        [Input("effectiveTime")]
        public Input<string>? EffectiveTime { get; set; }

        /// <summary>
        /// The ID of the private key.
        /// </summary>
        [Input("encryptionKey")]
        public Input<string>? EncryptionKey { get; set; }

        /// <summary>
        /// Database type. Value options: MySQL, SQLServer, PostgreSQL, MariaDB.
        /// </summary>
        [Input("engine")]
        public Input<string>? Engine { get; set; }

        /// <summary>
        /// Database version. Value:
        /// * MySQL:**5.5/5.6/5.7/8.0**
        /// * SQL Server:**2008r2/08r2_ent_ha/2012/2012_ent_ha/2012_std_ha/2012_web/2014_std_ha/2016_ent_ha/2016_std_ha/2016_web/2017_std_ha/2017_ent/2019_std_ha/2019_ent**
        /// * PostgreSQL:**9.4/10.0/11.0/12.0/13.0**
        /// * MariaDB:**10.3**.
        /// </summary>
        [Input("engineVersion")]
        public Input<string>? EngineVersion { get; set; }

        /// <summary>
        /// Set it to true to make some parameter efficient when modifying them. Default to false.
        /// </summary>
        [Input("forceRestart")]
        public Input<bool>? ForceRestart { get; set; }

        /// <summary>
        /// The high availability mode. Valid values:
        /// * **RPO**: Data persistence is preferred. The instance preferentially ensures data reliability to minimize data loss. Use this mode if you have higher requirements on data consistency.
        /// * **RTO**: Instance availability is preferred. The instance restores services as soon as possible to ensure availability. Use this mode if you have higher requirements on service availability.
        /// </summary>
        [Input("haMode")]
        public Input<string>? HaMode { get; set; }

        /// <summary>
        /// The network type of the instance. Valid values:
        /// * **Classic**: Classic Network
        /// * **VPC**: VPC.
        /// </summary>
        [Input("instanceNetworkType")]
        public Input<string>? InstanceNetworkType { get; set; }

        /// <summary>
        /// The maintainable time period of the instance. Format: &lt;I&gt; HH:mm&lt;/I&gt; Z-&lt;I&gt; HH:mm&lt;/I&gt; Z(UTC time).
        /// </summary>
        [Input("maintainTime")]
        public Input<string>? MaintainTime { get; set; }

        [Input("parameters")]
        private InputList<Inputs.RdsCloneDbInstanceParameterArgs>? _parameters;

        /// <summary>
        /// Set of parameters needs to be set after DB instance was launched. Available parameters can refer to the latest docs [View database parameter templates](https://www.alibabacloud.com/help/doc-detail/26284.htm).
        /// </summary>
        public InputList<Inputs.RdsCloneDbInstanceParameterArgs> Parameters
        {
            get => _parameters ?? (_parameters = new InputList<Inputs.RdsCloneDbInstanceParameterArgs>());
            set => _parameters = value;
        }

        /// <summary>
        /// The password of the certificate.
        /// </summary>
        [Input("password")]
        public Input<string>? Password { get; set; }

        /// <summary>
        /// The billing method of the new instance. Valid values: `PayAsYouGo` and `Subscription` and `Serverless`.
        /// </summary>
        [Input("paymentType", required: true)]
        public Input<string> PaymentType { get; set; } = null!;

        /// <summary>
        /// The period. Valid values: `Month`, `Year`.
        /// </summary>
        [Input("period")]
        public Input<string>? Period { get; set; }

        [Input("pgHbaConfs")]
        private InputList<Inputs.RdsCloneDbInstancePgHbaConfArgs>? _pgHbaConfs;

        /// <summary>
        /// The configuration of [AD domain](https://www.alibabacloud.com/help/en/doc-detail/349288.htm) (documented below).
        /// </summary>
        public InputList<Inputs.RdsCloneDbInstancePgHbaConfArgs> PgHbaConfs
        {
            get => _pgHbaConfs ?? (_pgHbaConfs = new InputList<Inputs.RdsCloneDbInstancePgHbaConfArgs>());
            set => _pgHbaConfs = value;
        }

        /// <summary>
        /// The port.
        /// </summary>
        [Input("port")]
        public Input<string>? Port { get; set; }

        /// <summary>
        /// The intranet IP address of the new instance must be within the specified vSwitch IP address range. By default, the system automatically allocates by using **VPCId** and **VSwitchId**.
        /// </summary>
        [Input("privateIpAddress")]
        public Input<string>? PrivateIpAddress { get; set; }

        /// <summary>
        /// The file that contains the private key used for TDE.
        /// </summary>
        [Input("privateKey")]
        public Input<string>? PrivateKey { get; set; }

        /// <summary>
        /// The released keep policy.
        /// </summary>
        [Input("releasedKeepPolicy")]
        public Input<string>? ReleasedKeepPolicy { get; set; }

        /// <summary>
        /// This parameter is only supported by the RDS PostgreSQL cloud disk version, indicating the authentication method of the replication permission. It is only allowed when the public key of the client certificate authority is enabled. Valid values: `cert` and `perfer` and `verify-ca` and `verify-full (supported by RDS PostgreSQL above 12)`.
        /// </summary>
        [Input("replicationAcl")]
        public Input<string>? ReplicationAcl { get; set; }

        /// <summary>
        /// The resource group id.
        /// </summary>
        [Input("resourceGroupId")]
        public Input<string>? ResourceGroupId { get; set; }

        /// <summary>
        /// Specifies whether to restore only the databases and tables that you specify. The value 1 specifies to restore only the specified databases and tables. If you do not want to restore only the specified databases or tables, you can choose not to specify this parameter.
        /// </summary>
        [Input("restoreTable")]
        public Input<string>? RestoreTable { get; set; }

        /// <summary>
        /// The point in time to which you want to restore the data of the original instance. The point in time must fall within the specified log backup retention period. The time follows the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.
        /// </summary>
        [Input("restoreTime")]
        public Input<string>? RestoreTime { get; set; }

        /// <summary>
        /// The Alibaba Cloud Resource Name (ARN) of a RAM role. A RAM role is a virtual RAM identity that you can create within your Alibaba Cloud account. For more information, see [RAM role overview](https://www.alibabacloud.com/doc-detail/93689.htm).
        /// </summary>
        [Input("roleArn")]
        public Input<string>? RoleArn { get; set; }

        [Input("securityIps")]
        private InputList<string>? _securityIps;

        /// <summary>
        /// The IP address whitelist of the instance. Separate multiple IP addresses with commas (,) and cannot be repeated. The following two formats are supported:
        /// * IP address form, for example: 10.23.12.24.
        /// * CIDR format, for example, 10.23.12.0/24 (no Inter-Domain Routing, 24 indicates the length of the prefix in the address, ranging from 1 to 32).
        /// </summary>
        public InputList<string> SecurityIps
        {
            get => _securityIps ?? (_securityIps = new InputList<string>());
            set => _securityIps = value;
        }

        /// <summary>
        /// This parameter is only supported by the RDS PostgreSQL cloud disk version. It indicates the content of the server certificate. If the CAType value is custom, this parameter must be configured.
        /// </summary>
        [Input("serverCert")]
        public Input<string>? ServerCert { get; set; }

        /// <summary>
        /// This parameter is only supported by the RDS PostgreSQL cloud disk version. It indicates the private key of the server certificate. If the value of CAType is custom, this parameter must be configured.
        /// </summary>
        [Input("serverKey")]
        public Input<string>? ServerKey { get; set; }

        [Input("serverlessConfigs")]
        private InputList<Inputs.RdsCloneDbInstanceServerlessConfigArgs>? _serverlessConfigs;

        /// <summary>
        /// The settings of the serverless instance. This parameter is required when you create a serverless instance. This parameter takes effect only when you create an ApsaraDB RDS for MySQL instance.
        /// </summary>
        public InputList<Inputs.RdsCloneDbInstanceServerlessConfigArgs> ServerlessConfigs
        {
            get => _serverlessConfigs ?? (_serverlessConfigs = new InputList<Inputs.RdsCloneDbInstanceServerlessConfigArgs>());
            set => _serverlessConfigs = value;
        }

        /// <summary>
        /// The source biz.
        /// </summary>
        [Input("sourceBiz")]
        public Input<string>? SourceBiz { get; set; }

        /// <summary>
        /// The source db instance id.
        /// </summary>
        [Input("sourceDbInstanceId", required: true)]
        public Input<string> SourceDbInstanceId { get; set; } = null!;

        /// <summary>
        /// Enable or disable SSL. Valid values: `0` and `1`.
        /// </summary>
        [Input("sslEnabled")]
        public Input<int>? SslEnabled { get; set; }

        /// <summary>
        /// The time at which you want to apply the specification changes. The time follows the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.
        /// </summary>
        [Input("switchTime")]
        public Input<string>? SwitchTime { get; set; }

        /// <summary>
        /// [The data replication mode](https://www.alibabacloud.com/help/doc-detail/96055.htm). Valid values:
        /// * **Sync**: strong synchronization
        /// * **Semi-sync**: Semi-synchronous
        /// * **Async**: asynchronous
        /// </summary>
        [Input("syncMode")]
        public Input<string>? SyncMode { get; set; }

        /// <summary>
        /// The information about the databases and tables that you want to restore. Format:
        /// [{"type":"db","name":"The original name of Database 1","newname":"The new name of Database 1","tables":[{"type":"table","name":"The original name of Table 1 in Database 1","newname":"The new name of Table 1 in Database 1"},{"type":"table","name":"The original name of Table 2 in Database 1","newname":"The new name of Table 2 in Database 1"}]},{"type":"db","name":"The original name of Database 2","newname":"The new name of Database 2","tables":[{"type":"table","name":"The original name of Table 1 in Database 2","newname":"The new name of Table 1 in Database 2"},{"type":"table","name":"The original name of Table 2 in Database 2","newname":"The new name of Table 2 in Database 2"}]}]
        /// </summary>
        [Input("tableMeta")]
        public Input<string>? TableMeta { get; set; }

        /// <summary>
        /// The availability check method of the instance. Valid values:
        /// - **SHORT**: Alibaba Cloud uses short-lived connections to check the availability of the instance.
        /// - **LONG**: Alibaba Cloud uses persistent connections to check the availability of the instance.
        /// </summary>
        [Input("tcpConnectionType")]
        public Input<string>? TcpConnectionType { get; set; }

        /// <summary>
        /// Specifies whether to enable TDE. Valid values:
        /// * Enabled
        /// * Disabled
        /// </summary>
        [Input("tdeStatus")]
        public Input<string>? TdeStatus { get; set; }

        /// <summary>
        /// The subscription period of the new instance. This parameter takes effect only when you select the subscription billing method for the new instance. Valid values:
        /// * If you set the `Period` parameter to Year, the value of the UsedTime parameter ranges from 1 to 3.
        /// * If you set the `Period` parameter to Month, the value of the UsedTime parameter ranges from 1 to 9.
        /// </summary>
        [Input("usedTime")]
        public Input<int>? UsedTime { get; set; }

        /// <summary>
        /// The ID of the VPC to which the new instance belongs.
        /// </summary>
        [Input("vpcId")]
        public Input<string>? VpcId { get; set; }

        /// <summary>
        /// The ID of the vSwitch associated with the specified VPC.
        /// </summary>
        [Input("vswitchId")]
        public Input<string>? VswitchId { get; set; }

        /// <summary>
        /// The ID of the zone to which the new instance belongs. You can call the [DescribeRegions](https://www.alibabacloud.com/doc-detail/26243.htm) operation to query the most recent region list.
        /// </summary>
        [Input("zoneId")]
        public Input<string>? ZoneId { get; set; }

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

    public sealed class RdsCloneDbInstanceState : global::Pulumi.ResourceArgs
    {
        /// <summary>
        /// This parameter is only supported by the RDS PostgreSQL cloud disk version. This parameter indicates the authentication method. It is allowed only when the public key of the client certificate authority is enabled. Valid values: `cert` and `perfer` and `verify-ca` and `verify-full (supported by RDS PostgreSQL above 12)`.
        /// </summary>
        [Input("acl")]
        public Input<string>? Acl { get; set; }

        /// <summary>
        /// How to upgrade the minor version of the instance. Valid values:
        /// * **Auto**: automatically upgrade the minor version.
        /// * **Manual**: It is not automatically upgraded. It is only mandatory when the current version is offline.
        /// </summary>
        [Input("autoUpgradeMinorVersion")]
        public Input<string>? AutoUpgradeMinorVersion { get; set; }

        /// <summary>
        /// The ID of the data backup file you want to use. You can call the DescribeBackups operation to query the most recent data backup file list.
        /// </summary>
        [Input("backupId")]
        public Input<string>? BackupId { get; set; }

        /// <summary>
        /// The type of backup that is used to restore the data of the original instance. Valid values:
        /// * **FullBackup**: full backup
        /// * **IncrementalBackup**: incremental backup
        /// </summary>
        [Input("backupType")]
        public Input<string>? BackupType { get; set; }

        /// <summary>
        /// This parameter is only supported by the RDS PostgreSQL cloud disk version. It indicates the certificate type. When the value of ssl_action is Open, the default value of this parameter is aliyun. Value range:
        /// * **aliyun**: using cloud certificates
        /// * **custom**: use a custom certificate. Valid values: `aliyun`, `custom`.
        /// </summary>
        [Input("caType")]
        public Input<string>? CaType { get; set; }

        /// <summary>
        /// Instance series. Valid values:
        /// * **Basic**: Basic Edition
        /// * **HighAvailability**: High availability
        /// * **AlwaysOn**: Cluster Edition
        /// * **Finance**: Three-node Enterprise Edition.
        /// * **serverless_basic**: Serverless Basic Edition. (Available in 1.200.0+)
        /// </summary>
        [Input("category")]
        public Input<string>? Category { get; set; }

        /// <summary>
        /// The file that contains the certificate used for TDE.
        /// </summary>
        [Input("certificate")]
        public Input<string>? Certificate { get; set; }

        /// <summary>
        /// This parameter is only supported by the RDS PostgreSQL cloud disk version. It indicates the public key of the client certification authority. If the value of client_ca_enabled is 1, this parameter must be configured.
        /// </summary>
        [Input("clientCaCert")]
        public Input<string>? ClientCaCert { get; set; }

        /// <summary>
        /// The client ca enabled.
        /// </summary>
        [Input("clientCaEnabled")]
        public Input<int>? ClientCaEnabled { get; set; }

        /// <summary>
        /// This parameter is only supported by the RDS PostgreSQL cloud disk version, which indicates that the client revokes the certificate file. If the value of client_crl_enabled is 1, this parameter must be configured.
        /// </summary>
        [Input("clientCertRevocationList")]
        public Input<string>? ClientCertRevocationList { get; set; }

        /// <summary>
        /// The client crl enabled.
        /// </summary>
        [Input("clientCrlEnabled")]
        public Input<int>? ClientCrlEnabled { get; set; }

        /// <summary>
        /// The database connection address.
        /// </summary>
        [Input("connectionString")]
        public Input<string>? ConnectionString { get; set; }

        /// <summary>
        /// The connection string prefix.
        /// </summary>
        [Input("connectionStringPrefix")]
        public Input<string>? ConnectionStringPrefix { get; set; }

        /// <summary>
        /// The instance type of the new instance. For information, see [Primary ApsaraDB RDS instance types](https://www.alibabacloud.com/doc-detail/26312.htm).
        /// </summary>
        [Input("dbInstanceClass")]
        public Input<string>? DbInstanceClass { get; set; }

        /// <summary>
        /// The db instance description.
        /// </summary>
        [Input("dbInstanceDescription")]
        public Input<string>? DbInstanceDescription { get; set; }

        /// <summary>
        /// The storage capacity of the new instance. Unit: GB. The storage capacity increases in increments of 5 GB. For more information, see [Primary ApsaraDB RDS instance types](https://www.alibabacloud.com/doc-detail/26312.htm).
        /// </summary>
        [Input("dbInstanceStorage")]
        public Input<int>? DbInstanceStorage { get; set; }

        /// <summary>
        /// The type of storage media that is used for the new instance. Valid values:
        /// * **local_ssd**: local SSDs
        /// * **cloud_ssd**: standard SSDs
        /// * **cloud_essd**: enhanced SSDs (ESSDs) of performance level 1 (PL1)
        /// * **cloud_essd2**: ESSDs of PL2
        /// * **cloud_essd3**: ESSDs of PL3
        /// </summary>
        [Input("dbInstanceStorageType")]
        public Input<string>? DbInstanceStorageType { get; set; }

        /// <summary>
        /// The name of the database for which you want to enable TDE. Up to 50 names can be entered in a single request. If you specify multiple names, separate these names with commas (,).
        /// </summary>
        [Input("dbName")]
        public Input<string>? DbName { get; set; }

        /// <summary>
        /// The names of the databases that you want to create on the new instance.
        /// </summary>
        [Input("dbNames")]
        public Input<string>? DbNames { get; set; }

        /// <summary>
        /// The ID of the dedicated cluster to which the new instance belongs. This parameter takes effect only when you create the new instance in a dedicated cluster.
        /// </summary>
        [Input("dedicatedHostGroupId")]
        public Input<string>? DedicatedHostGroupId { get; set; }

        /// <summary>
        /// The switch of delete protection. Valid values:
        /// - true: delete protect.
        /// - false: no delete protect.
        /// </summary>
        [Input("deletionProtection")]
        public Input<bool>? DeletionProtection { get; set; }

        /// <summary>
        /// The direction. Valid values: `Auto`, `Down`, `TempUpgrade`, `Up`.
        /// </summary>
        [Input("direction")]
        public Input<string>? Direction { get; set; }

        /// <summary>
        /// The effective time.
        /// </summary>
        [Input("effectiveTime")]
        public Input<string>? EffectiveTime { get; set; }

        /// <summary>
        /// The ID of the private key.
        /// </summary>
        [Input("encryptionKey")]
        public Input<string>? EncryptionKey { get; set; }

        /// <summary>
        /// Database type. Value options: MySQL, SQLServer, PostgreSQL, MariaDB.
        /// </summary>
        [Input("engine")]
        public Input<string>? Engine { get; set; }

        /// <summary>
        /// Database version. Value:
        /// * MySQL:**5.5/5.6/5.7/8.0**
        /// * SQL Server:**2008r2/08r2_ent_ha/2012/2012_ent_ha/2012_std_ha/2012_web/2014_std_ha/2016_ent_ha/2016_std_ha/2016_web/2017_std_ha/2017_ent/2019_std_ha/2019_ent**
        /// * PostgreSQL:**9.4/10.0/11.0/12.0/13.0**
        /// * MariaDB:**10.3**.
        /// </summary>
        [Input("engineVersion")]
        public Input<string>? EngineVersion { get; set; }

        /// <summary>
        /// Set it to true to make some parameter efficient when modifying them. Default to false.
        /// </summary>
        [Input("forceRestart")]
        public Input<bool>? ForceRestart { get; set; }

        /// <summary>
        /// The high availability mode. Valid values:
        /// * **RPO**: Data persistence is preferred. The instance preferentially ensures data reliability to minimize data loss. Use this mode if you have higher requirements on data consistency.
        /// * **RTO**: Instance availability is preferred. The instance restores services as soon as possible to ensure availability. Use this mode if you have higher requirements on service availability.
        /// </summary>
        [Input("haMode")]
        public Input<string>? HaMode { get; set; }

        /// <summary>
        /// The network type of the instance. Valid values:
        /// * **Classic**: Classic Network
        /// * **VPC**: VPC.
        /// </summary>
        [Input("instanceNetworkType")]
        public Input<string>? InstanceNetworkType { get; set; }

        /// <summary>
        /// The maintainable time period of the instance. Format: &lt;I&gt; HH:mm&lt;/I&gt; Z-&lt;I&gt; HH:mm&lt;/I&gt; Z(UTC time).
        /// </summary>
        [Input("maintainTime")]
        public Input<string>? MaintainTime { get; set; }

        [Input("parameters")]
        private InputList<Inputs.RdsCloneDbInstanceParameterGetArgs>? _parameters;

        /// <summary>
        /// Set of parameters needs to be set after DB instance was launched. Available parameters can refer to the latest docs [View database parameter templates](https://www.alibabacloud.com/help/doc-detail/26284.htm).
        /// </summary>
        public InputList<Inputs.RdsCloneDbInstanceParameterGetArgs> Parameters
        {
            get => _parameters ?? (_parameters = new InputList<Inputs.RdsCloneDbInstanceParameterGetArgs>());
            set => _parameters = value;
        }

        /// <summary>
        /// The password of the certificate.
        /// </summary>
        [Input("password")]
        public Input<string>? Password { get; set; }

        /// <summary>
        /// The billing method of the new instance. Valid values: `PayAsYouGo` and `Subscription` and `Serverless`.
        /// </summary>
        [Input("paymentType")]
        public Input<string>? PaymentType { get; set; }

        /// <summary>
        /// The period. Valid values: `Month`, `Year`.
        /// </summary>
        [Input("period")]
        public Input<string>? Period { get; set; }

        [Input("pgHbaConfs")]
        private InputList<Inputs.RdsCloneDbInstancePgHbaConfGetArgs>? _pgHbaConfs;

        /// <summary>
        /// The configuration of [AD domain](https://www.alibabacloud.com/help/en/doc-detail/349288.htm) (documented below).
        /// </summary>
        public InputList<Inputs.RdsCloneDbInstancePgHbaConfGetArgs> PgHbaConfs
        {
            get => _pgHbaConfs ?? (_pgHbaConfs = new InputList<Inputs.RdsCloneDbInstancePgHbaConfGetArgs>());
            set => _pgHbaConfs = value;
        }

        /// <summary>
        /// The port.
        /// </summary>
        [Input("port")]
        public Input<string>? Port { get; set; }

        /// <summary>
        /// The intranet IP address of the new instance must be within the specified vSwitch IP address range. By default, the system automatically allocates by using **VPCId** and **VSwitchId**.
        /// </summary>
        [Input("privateIpAddress")]
        public Input<string>? PrivateIpAddress { get; set; }

        /// <summary>
        /// The file that contains the private key used for TDE.
        /// </summary>
        [Input("privateKey")]
        public Input<string>? PrivateKey { get; set; }

        /// <summary>
        /// The released keep policy.
        /// </summary>
        [Input("releasedKeepPolicy")]
        public Input<string>? ReleasedKeepPolicy { get; set; }

        /// <summary>
        /// This parameter is only supported by the RDS PostgreSQL cloud disk version, indicating the authentication method of the replication permission. It is only allowed when the public key of the client certificate authority is enabled. Valid values: `cert` and `perfer` and `verify-ca` and `verify-full (supported by RDS PostgreSQL above 12)`.
        /// </summary>
        [Input("replicationAcl")]
        public Input<string>? ReplicationAcl { get; set; }

        /// <summary>
        /// The resource group id.
        /// </summary>
        [Input("resourceGroupId")]
        public Input<string>? ResourceGroupId { get; set; }

        /// <summary>
        /// Specifies whether to restore only the databases and tables that you specify. The value 1 specifies to restore only the specified databases and tables. If you do not want to restore only the specified databases or tables, you can choose not to specify this parameter.
        /// </summary>
        [Input("restoreTable")]
        public Input<string>? RestoreTable { get; set; }

        /// <summary>
        /// The point in time to which you want to restore the data of the original instance. The point in time must fall within the specified log backup retention period. The time follows the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.
        /// </summary>
        [Input("restoreTime")]
        public Input<string>? RestoreTime { get; set; }

        /// <summary>
        /// The Alibaba Cloud Resource Name (ARN) of a RAM role. A RAM role is a virtual RAM identity that you can create within your Alibaba Cloud account. For more information, see [RAM role overview](https://www.alibabacloud.com/doc-detail/93689.htm).
        /// </summary>
        [Input("roleArn")]
        public Input<string>? RoleArn { get; set; }

        [Input("securityIps")]
        private InputList<string>? _securityIps;

        /// <summary>
        /// The IP address whitelist of the instance. Separate multiple IP addresses with commas (,) and cannot be repeated. The following two formats are supported:
        /// * IP address form, for example: 10.23.12.24.
        /// * CIDR format, for example, 10.23.12.0/24 (no Inter-Domain Routing, 24 indicates the length of the prefix in the address, ranging from 1 to 32).
        /// </summary>
        public InputList<string> SecurityIps
        {
            get => _securityIps ?? (_securityIps = new InputList<string>());
            set => _securityIps = value;
        }

        /// <summary>
        /// This parameter is only supported by the RDS PostgreSQL cloud disk version. It indicates the content of the server certificate. If the CAType value is custom, this parameter must be configured.
        /// </summary>
        [Input("serverCert")]
        public Input<string>? ServerCert { get; set; }

        /// <summary>
        /// This parameter is only supported by the RDS PostgreSQL cloud disk version. It indicates the private key of the server certificate. If the value of CAType is custom, this parameter must be configured.
        /// </summary>
        [Input("serverKey")]
        public Input<string>? ServerKey { get; set; }

        [Input("serverlessConfigs")]
        private InputList<Inputs.RdsCloneDbInstanceServerlessConfigGetArgs>? _serverlessConfigs;

        /// <summary>
        /// The settings of the serverless instance. This parameter is required when you create a serverless instance. This parameter takes effect only when you create an ApsaraDB RDS for MySQL instance.
        /// </summary>
        public InputList<Inputs.RdsCloneDbInstanceServerlessConfigGetArgs> ServerlessConfigs
        {
            get => _serverlessConfigs ?? (_serverlessConfigs = new InputList<Inputs.RdsCloneDbInstanceServerlessConfigGetArgs>());
            set => _serverlessConfigs = value;
        }

        /// <summary>
        /// The source biz.
        /// </summary>
        [Input("sourceBiz")]
        public Input<string>? SourceBiz { get; set; }

        /// <summary>
        /// The source db instance id.
        /// </summary>
        [Input("sourceDbInstanceId")]
        public Input<string>? SourceDbInstanceId { get; set; }

        /// <summary>
        /// Enable or disable SSL. Valid values: `0` and `1`.
        /// </summary>
        [Input("sslEnabled")]
        public Input<int>? SslEnabled { get; set; }

        /// <summary>
        /// The time at which you want to apply the specification changes. The time follows the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.
        /// </summary>
        [Input("switchTime")]
        public Input<string>? SwitchTime { get; set; }

        /// <summary>
        /// [The data replication mode](https://www.alibabacloud.com/help/doc-detail/96055.htm). Valid values:
        /// * **Sync**: strong synchronization
        /// * **Semi-sync**: Semi-synchronous
        /// * **Async**: asynchronous
        /// </summary>
        [Input("syncMode")]
        public Input<string>? SyncMode { get; set; }

        /// <summary>
        /// The information about the databases and tables that you want to restore. Format:
        /// [{"type":"db","name":"The original name of Database 1","newname":"The new name of Database 1","tables":[{"type":"table","name":"The original name of Table 1 in Database 1","newname":"The new name of Table 1 in Database 1"},{"type":"table","name":"The original name of Table 2 in Database 1","newname":"The new name of Table 2 in Database 1"}]},{"type":"db","name":"The original name of Database 2","newname":"The new name of Database 2","tables":[{"type":"table","name":"The original name of Table 1 in Database 2","newname":"The new name of Table 1 in Database 2"},{"type":"table","name":"The original name of Table 2 in Database 2","newname":"The new name of Table 2 in Database 2"}]}]
        /// </summary>
        [Input("tableMeta")]
        public Input<string>? TableMeta { get; set; }

        /// <summary>
        /// The availability check method of the instance. Valid values:
        /// - **SHORT**: Alibaba Cloud uses short-lived connections to check the availability of the instance.
        /// - **LONG**: Alibaba Cloud uses persistent connections to check the availability of the instance.
        /// </summary>
        [Input("tcpConnectionType")]
        public Input<string>? TcpConnectionType { get; set; }

        /// <summary>
        /// Specifies whether to enable TDE. Valid values:
        /// * Enabled
        /// * Disabled
        /// </summary>
        [Input("tdeStatus")]
        public Input<string>? TdeStatus { get; set; }

        /// <summary>
        /// The subscription period of the new instance. This parameter takes effect only when you select the subscription billing method for the new instance. Valid values:
        /// * If you set the `Period` parameter to Year, the value of the UsedTime parameter ranges from 1 to 3.
        /// * If you set the `Period` parameter to Month, the value of the UsedTime parameter ranges from 1 to 9.
        /// </summary>
        [Input("usedTime")]
        public Input<int>? UsedTime { get; set; }

        /// <summary>
        /// The ID of the VPC to which the new instance belongs.
        /// </summary>
        [Input("vpcId")]
        public Input<string>? VpcId { get; set; }

        /// <summary>
        /// The ID of the vSwitch associated with the specified VPC.
        /// </summary>
        [Input("vswitchId")]
        public Input<string>? VswitchId { get; set; }

        /// <summary>
        /// The ID of the zone to which the new instance belongs. You can call the [DescribeRegions](https://www.alibabacloud.com/doc-detail/26243.htm) operation to query the most recent region list.
        /// </summary>
        [Input("zoneId")]
        public Input<string>? ZoneId { get; set; }

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