<filename>sdk/dotnet/Dts/SynchronizationJob.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.Dts
{
    /// <summary>
    /// Provides a DTS Synchronization Job resource.
    /// 
    /// For information about DTS Synchronization Job and how to use it, see [What is Synchronization Job](https://www.alibabacloud.com/product/data-transmission-service).
    /// 
    /// &gt; **NOTE:** Available in v1.138.0+.
    /// 
    /// ## Example Usage
    /// 
    /// Basic Usage
    /// 
    /// ```csharp
    /// using System.Collections.Generic;
    /// using Pulumi;
    /// using AliCloud = Pulumi.AliCloud;
    /// 
    /// return await Deployment.RunAsync(() =&gt; 
    /// {
    ///     var defaultSynchronizationInstance = new AliCloud.Dts.SynchronizationInstance("defaultSynchronizationInstance", new()
    ///     {
    ///         PaymentType = "PayAsYouGo",
    ///         SourceEndpointEngineName = "PolarDB",
    ///         SourceEndpointRegion = "cn-hangzhou",
    ///         DestinationEndpointEngineName = "ADB30",
    ///         DestinationEndpointRegion = "cn-hangzhou",
    ///         InstanceClass = "small",
    ///         SyncArchitecture = "oneway",
    ///     });
    /// 
    ///     var defaultSynchronizationJob = new AliCloud.Dts.SynchronizationJob("defaultSynchronizationJob", new()
    ///     {
    ///         DtsInstanceId = defaultSynchronizationInstance.Id,
    ///         DtsJobName = "tf-testAccCase1",
    ///         SourceEndpointInstanceType = "PolarDB",
    ///         SourceEndpointInstanceId = "pc-xxxxxxxx",
    ///         SourceEndpointEngineName = "PolarDB",
    ///         SourceEndpointRegion = "cn-hangzhou",
    ///         SourceEndpointDatabaseName = "tf-testacc",
    ///         SourceEndpointUserName = "root",
    ///         SourceEndpointPassword = "password",
    ///         DestinationEndpointInstanceType = "ads",
    ///         DestinationEndpointInstanceId = "am-xxxxxxxx",
    ///         DestinationEndpointEngineName = "ADB30",
    ///         DestinationEndpointRegion = "cn-hangzhou",
    ///         DestinationEndpointDatabaseName = "tf-testacc",
    ///         DestinationEndpointUserName = "root",
    ///         DestinationEndpointPassword = "password",
    ///         DbList = "{\"tf-testacc\":{\"name\":\"tf-test\",\"all\":true,\"state\":\"normal\"}}",
    ///         StructureInitialization = true,
    ///         DataInitialization = true,
    ///         DataSynchronization = true,
    ///         Status = "Synchronizing",
    ///     });
    /// 
    /// });
    /// ```
    /// ## Notice
    /// 
    /// 1. The expiration time cannot be changed after the work of the annual and monthly subscription suspended;
    /// 2. After the pay-as-you-go type job suspended, your job configuration fee will still be charged;
    /// 3. If the task suspended for more than 6 hours, the task will not start successfully.
    /// 4. Suspending the task will only stop writing to the target library, but will still continue to obtain the incremental log of the source, so that the task can be quickly resumed after the suspension is canceled. Therefore, some resources of the source library, such as bandwidth resources, will continue to be occupied during the period.
    /// 5. Charges will continue during the task suspension period. If you need to stop charging, please release the instance
    /// 6. When a DTS instance suspended for more than 7 days, the instance cannot be resumed, and the status will change from suspended to failed.
    /// 
    /// ## Import
    /// 
    /// DTS Synchronization Job can be imported using the id, e.g.
    /// 
    /// ```sh
    ///  $ pulumi import alicloud:dts/synchronizationJob:SynchronizationJob example &lt;id&gt;
    /// ```
    /// </summary>
    [AliCloudResourceType("alicloud:dts/synchronizationJob:SynchronizationJob")]
    public partial class SynchronizationJob : global::Pulumi.CustomResource
    {
        /// <summary>
        /// The start point or synchronization point of incremental data migration, the format is Unix timestamp, and the unit is seconds.
        /// </summary>
        [Output("checkpoint")]
        public Output<string> Checkpoint { get; private set; } = null!;

        /// <summary>
        /// Whether to perform full data migration or full data initialization. Valid values: `true`, `false`.
        /// </summary>
        [Output("dataInitialization")]
        public Output<bool> DataInitialization { get; private set; } = null!;

        /// <summary>
        /// Whether to perform incremental data migration or synchronization. Valid values: `true`, `false`.
        /// </summary>
        [Output("dataSynchronization")]
        public Output<bool> DataSynchronization { get; private set; } = null!;

        /// <summary>
        /// Migration object, in the format of JSON strings. For detailed definition instructions, please refer to [the description of migration, synchronization or subscription objects](https://help.aliyun.com/document_detail/209545.html). **NOTE:** From version 1.173.0, `db_list` can be modified.
        /// </summary>
        [Output("dbList")]
        public Output<string> DbList { get; private set; } = null!;

        /// <summary>
        /// The delay notice. Valid values: `true`, `false`.
        /// </summary>
        [Output("delayNotice")]
        public Output<bool?> DelayNotice { get; private set; } = null!;

        /// <summary>
        /// The delay phone. The mobile phone number of the contact who delayed the alarm. Multiple mobile phone numbers separated by English commas `,`. This parameter currently only supports China stations, and only supports mainland mobile phone numbers, and up to 10 mobile phone numbers can be passed in.
        /// </summary>
        [Output("delayPhone")]
        public Output<string?> DelayPhone { get; private set; } = null!;

        /// <summary>
        /// The delay rule time. When `delay_notice` is set to `true`, this parameter must be passed in. The threshold for triggering the delay alarm. The unit is second and needs to be an integer. The threshold can be set according to business needs. It is recommended to set it above 10 seconds to avoid delay fluctuations caused by network and database load.
        /// </summary>
        [Output("delayRuleTime")]
        public Output<string?> DelayRuleTime { get; private set; } = null!;

        /// <summary>
        /// The name of the database to which the migration object belongs in the target instance. Note: when the target instance or target database type is PolarDB O engine, AnalyticDB PostgreSQL, PostgreSQL, MongoDB database, this parameter is available and must be passed in.
        /// </summary>
        [Output("destinationEndpointDatabaseName")]
        public Output<string?> DestinationEndpointDatabaseName { get; private set; } = null!;

        /// <summary>
        /// The type of destination database. The default value is MYSQL. For the correspondence between supported target libraries and source libraries, see [Supported Databases](https://help.aliyun.com/document_detail/131497.htm). When the database type of the target instance is KAFKA or MONGODB, you also need to pass in some information in the reserved parameter `reserve`. For the configuration method, see the description of `reserve` parameters. Valid values: `ADS`, `ADB30`, `AS400`, `DATAHUB`, `DB2`, `GREENPLUM`, `KAFKA`, `MONGODB`, `MSSQL`, `MySQL`, `ORACLE`, `PolarDB`, `POLARDBX20`, `POLARDB_O`, `PostgreSQL`.
        /// </summary>
        [Output("destinationEndpointEngineName")]
        public Output<string> DestinationEndpointEngineName { get; private set; } = null!;

        /// <summary>
        /// The ID of destination instance. If the target instance is a cloud database (such as RDS MySQL), you need to pass in the instance ID of the cloud database (such as the instance ID of RDS MySQL). If the target instance is a self-built database, the value of this parameter changes according to the value of `destination_endpoint_instance_type`. For example, the value of `destination_endpoint_instance_type` is:
        /// ** `ECS`, then this parameter needs to be passed into the instance ID of ECS.
        /// ** `DG`, then this parameter needs to be passed into the ID of database gateway.
        /// ** `EXPRESS`, `CEN`, then this parameter needs to be passed in the ID of VPC that has been interconnected with the source database. **Note**: when the value is `CEN`, you also need to pass in the ID of CEN instance in the cloud enterprise network with the reserved parameter `reserve`.
        /// </summary>
        [Output("destinationEndpointInstanceId")]
        public Output<string?> DestinationEndpointInstanceId { get; private set; } = null!;

        /// <summary>
        /// The type of destination instance. If the target instance is a PolarDB O engine cluster, the target instance type needs to be `OTHER` or `EXPRESS` as a self-built database, and access via public IP or dedicated line. If the target instance is the Kafka version of Message Queuing, the target instance type needs to be `ECS` or `EXPRESS` as a self-built database, and access via ECS or dedicated line. For the correspondence between supported targets and source instances, see [Supported Databases](https://help.aliyun.com/document_detail/131497.htm). When the target instance is a self-built database, you also need to perform corresponding preparations, please refer to the [overview of preparations](https://help.aliyun.com/document_detail/146958.htm). Valid values: `ADS`, `CEN`, `DATAHUB`, `DG`, `ECS`, `EXPRESS`, `GREENPLUM`, `MONGODB`, `OTHER`, `PolarDB`, `POLARDBX20`, `RDS`.
        /// </summary>
        [Output("destinationEndpointInstanceType")]
        public Output<string> DestinationEndpointInstanceType { get; private set; } = null!;

        /// <summary>
        /// The IP of source endpoint. When `destination_endpoint_instance_type` is `OTHER`, `EXPRESS`, `DG`, `CEN`, this parameter is available and must be passed in.
        /// </summary>
        [Output("destinationEndpointIp")]
        public Output<string?> DestinationEndpointIp { get; private set; } = null!;

        /// <summary>
        /// The SID of Oracle database. Note: when the value of DestinationEndpointEngineName is Oracle and the Oracle database is a non-RAC instance, this parameter is available and must be passed in.
        /// </summary>
        [Output("destinationEndpointOracleSid")]
        public Output<string?> DestinationEndpointOracleSid { get; private set; } = null!;

        /// <summary>
        /// The password of database account.
        /// </summary>
        [Output("destinationEndpointPassword")]
        public Output<string?> DestinationEndpointPassword { get; private set; } = null!;

        /// <summary>
        /// The port of source endpoint. When the target instance is a self-built database, this parameter is available and must be passed in.
        /// </summary>
        [Output("destinationEndpointPort")]
        public Output<string?> DestinationEndpointPort { get; private set; } = null!;

        /// <summary>
        /// The region of destination instance. For the target instance region, please refer to the [list of supported regions](https://help.aliyun.com/document_detail/141033.htm). Note: if the target is an Alibaba Cloud database, this parameter must be passed in.
        /// </summary>
        [Output("destinationEndpointRegion")]
        public Output<string?> DestinationEndpointRegion { get; private set; } = null!;

        /// <summary>
        /// The username of database account. Note: in most cases, you need to pass in the database account of the source library. The permissions required for migrating or synchronizing different databases are different. For specific permission requirements, see [Preparing database accounts for data migration](https://help.aliyun.com/document_detail/175878.htm) and [Preparing database accounts for data synchronization](https://help.aliyun.com/document_detail/213152.htm).
        /// </summary>
        [Output("destinationEndpointUserName")]
        public Output<string?> DestinationEndpointUserName { get; private set; } = null!;

        /// <summary>
        /// The ID of synchronization instance, it must be an ID of `alicloud.dts.SynchronizationInstance`.
        /// </summary>
        [Output("dtsInstanceId")]
        public Output<string> DtsInstanceId { get; private set; } = null!;

        /// <summary>
        /// The name of synchronization job.
        /// </summary>
        [Output("dtsJobName")]
        public Output<string> DtsJobName { get; private set; } = null!;

        /// <summary>
        /// The error notice. Valid values: `true`, `false`.
        /// </summary>
        [Output("errorNotice")]
        public Output<bool?> ErrorNotice { get; private set; } = null!;

        /// <summary>
        /// The error phone. The mobile phone number of the contact who error the alarm. Multiple mobile phone numbers separated by English commas `,`. This parameter currently only supports China stations, and only supports mainland mobile phone numbers, and up to 10 mobile phone numbers can be passed in.
        /// </summary>
        [Output("errorPhone")]
        public Output<string?> ErrorPhone { get; private set; } = null!;

        /// <summary>
        /// The instance class. Valid values: `large`, `medium`, `micro`, `small`, `xlarge`, `xxlarge`. You can only upgrade the configuration, not downgrade the configuration. If you downgrade the instance, you need to [submit a ticket](https://selfservice.console.aliyun.com/ticket/category/dts/today).
        /// </summary>
        [Output("instanceClass")]
        public Output<string> InstanceClass { get; private set; } = null!;

        /// <summary>
        /// DTS reserves parameters, the format is a JSON string, you can pass in this parameter to complete the source and target database information (such as the data storage format of the target Kafka database, the instance ID of the cloud enterprise network CEN). For more information, please refer to the parameter [description of the Reserve parameter](https://help.aliyun.com/document_detail/273111.html).
        /// </summary>
        [Output("reserve")]
        public Output<string> Reserve { get; private set; } = null!;

        /// <summary>
        /// The name of the database to which the migration object belongs in the source instance. Note: this parameter is only available and must be passed in when the source instance, or the database type of the source instance is PolarDB O engine, PostgreSQL, or MongoDB database.
        /// </summary>
        [Output("sourceEndpointDatabaseName")]
        public Output<string?> SourceEndpointDatabaseName { get; private set; } = null!;

        /// <summary>
        /// The type of source database. The default value is `MySQL`. For the correspondence between supported source libraries and target libraries, see [Supported Databases](https://help.aliyun.com/document_detail/131497.htm). When the database type of the source instance is `MONGODB`, you also need to pass in some information in the reserved parameter `Reserve`, for the configuration method, see the description of Reserve parameters. Valid values: `AS400`, `DB2`, `DMSPOLARDB`, `HBASE`, `MONGODB`, `MSSQL`, `MySQL`, `ORACLE`, `PolarDB`, `POLARDBX20`, `POLARDB_O`, `POSTGRESQL`, `TERADATA`.
        /// </summary>
        [Output("sourceEndpointEngineName")]
        public Output<string> SourceEndpointEngineName { get; private set; } = null!;

        /// <summary>
        /// The ID of source instance. If the source instance is a cloud database (such as RDS MySQL), you need to pass in the instance ID of the cloud database (such as the instance ID of RDS MySQL). If the source instance is a self-built database, the value of this parameter changes according to the value of `source_endpoint_instance_type`. For example, the value of `source_endpoint_instance_type` is:
        /// ** `ECS`, then this parameter needs to be passed into the instance ID of ECS.
        /// ** `DG`, then this parameter needs to be passed into the ID of database gateway.
        /// ** `EXPRESS`, `CEN`, then this parameter needs to be passed in the ID of VPC that has been interconnected with the source database. **Note**: when the value is `CEN`, you also need to pass in the ID of CEN instance in the cloud enterprise network with the reserved parameter `reserve`.
        /// </summary>
        [Output("sourceEndpointInstanceId")]
        public Output<string?> SourceEndpointInstanceId { get; private set; } = null!;

        /// <summary>
        /// The type of source instance. If the source instance is a `PolarDB O` engine cluster, the source instance type needs to be `OTHER` or `EXPRESS` as a self-built database, and access via public IP or dedicated line. For the correspondence between supported source and target instances, see [Supported Databases](https://help.aliyun.com/document_detail/131497.htm). When the source instance is a self-built database, you also need to perform corresponding preparations, for details, see [Preparations Overview](https://help.aliyun.com/document_detail/146958.htm). Valid values: `CEN`, `DG`, `DISTRIBUTED_DMSLOGICDB`, `ECS`, `EXPRESS`, `MONGODB`, `OTHER`, `PolarDB`, `POLARDBX20`, `RDS`.
        /// </summary>
        [Output("sourceEndpointInstanceType")]
        public Output<string> SourceEndpointInstanceType { get; private set; } = null!;

        /// <summary>
        /// The IP of source endpoint. When `source_endpoint_instance_type` is `OTHER`, `EXPRESS`, `DG`, `CEN`, this parameter is available and must be passed in.
        /// </summary>
        [Output("sourceEndpointIp")]
        public Output<string?> SourceEndpointIp { get; private set; } = null!;

        /// <summary>
        /// The SID of Oracle database. When the value of SourceEndpointEngineName is Oracle and the Oracle database is a non-RAC instance, this parameter is available and must be passed in.
        /// </summary>
        [Output("sourceEndpointOracleSid")]
        public Output<string?> SourceEndpointOracleSid { get; private set; } = null!;

        /// <summary>
        /// The ID of Alibaba Cloud account to which the source instance belongs. Note: passing in this parameter means performing data migration or synchronization across Alibaba Cloud accounts, and you also need to pass in the `source_endpoint_role` parameter.
        /// </summary>
        [Output("sourceEndpointOwnerId")]
        public Output<string?> SourceEndpointOwnerId { get; private set; } = null!;

        /// <summary>
        /// The password of database account.
        /// </summary>
        [Output("sourceEndpointPassword")]
        public Output<string?> SourceEndpointPassword { get; private set; } = null!;

        /// <summary>
        /// The port of source endpoint. When the source instance is a self-built database, this parameter is available and must be passed in.
        /// </summary>
        [Output("sourceEndpointPort")]
        public Output<string?> SourceEndpointPort { get; private set; } = null!;

        /// <summary>
        /// Source instance area, please refer to the [list of supported areas](https://help.aliyun.com/document_detail/141033.htm) for details. Note if the source is an Alibaba Cloud database, this parameter must be passed in.
        /// </summary>
        [Output("sourceEndpointRegion")]
        public Output<string?> SourceEndpointRegion { get; private set; } = null!;

        /// <summary>
        /// The name of the role configured for the cloud account to which the source instance belongs. Note: this parameter must be passed in when performing cross Alibaba Cloud account data migration or synchronization. For the permissions and authorization methods required by this role, please refer to [How to configure RAM authorization when cross-Alibaba Cloud account data migration or synchronization](https://help.aliyun.com/document_detail/48468.htm).
        /// </summary>
        [Output("sourceEndpointRole")]
        public Output<string?> SourceEndpointRole { get; private set; } = null!;

        /// <summary>
        /// The username of database account. Note: in most cases, you need to pass in the database account of the source library. The permissions required for migrating or synchronizing different databases are different. For specific permission requirements, see [Preparing database accounts for data migration](https://help.aliyun.com/document_detail/175878.htm) and [Preparing database accounts for data synchronization](https://help.aliyun.com/document_detail/213152.htm).
        /// </summary>
        [Output("sourceEndpointUserName")]
        public Output<string?> SourceEndpointUserName { get; private set; } = null!;

        /// <summary>
        /// The status of the resource. Valid values: `Synchronizing`, `Suspending`. You can stop the task by specifying `Suspending` and start the task by specifying `Synchronizing`.
        /// </summary>
        [Output("status")]
        public Output<string> Status { get; private set; } = null!;

        /// <summary>
        /// Whether to perform library table structure migration or initialization. Valid values: `true`, `false`.
        /// </summary>
        [Output("structureInitialization")]
        public Output<bool> StructureInitialization { get; private set; } = null!;

        /// <summary>
        /// Synchronization direction. Valid values: `Forward`, `Reverse`. Only when the property `sync_architecture` of the `alicloud.dts.SynchronizationInstance` was `bidirectional` this parameter should be passed, otherwise this parameter should not be specified.
        /// </summary>
        [Output("synchronizationDirection")]
        public Output<string> SynchronizationDirection { get; private set; } = null!;


        /// <summary>
        /// Create a SynchronizationJob 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 SynchronizationJob(string name, SynchronizationJobArgs args, CustomResourceOptions? options = null)
            : base("alicloud:dts/synchronizationJob:SynchronizationJob", name, args ?? new SynchronizationJobArgs(), MakeResourceOptions(options, ""))
        {
        }

        private SynchronizationJob(string name, Input<string> id, SynchronizationJobState? state = null, CustomResourceOptions? options = null)
            : base("alicloud:dts/synchronizationJob:SynchronizationJob", 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 SynchronizationJob 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 SynchronizationJob Get(string name, Input<string> id, SynchronizationJobState? state = null, CustomResourceOptions? options = null)
        {
            return new SynchronizationJob(name, id, state, options);
        }
    }

    public sealed class SynchronizationJobArgs : global::Pulumi.ResourceArgs
    {
        /// <summary>
        /// The start point or synchronization point of incremental data migration, the format is Unix timestamp, and the unit is seconds.
        /// </summary>
        [Input("checkpoint")]
        public Input<string>? Checkpoint { get; set; }

        /// <summary>
        /// Whether to perform full data migration or full data initialization. Valid values: `true`, `false`.
        /// </summary>
        [Input("dataInitialization", required: true)]
        public Input<bool> DataInitialization { get; set; } = null!;

        /// <summary>
        /// Whether to perform incremental data migration or synchronization. Valid values: `true`, `false`.
        /// </summary>
        [Input("dataSynchronization", required: true)]
        public Input<bool> DataSynchronization { get; set; } = null!;

        /// <summary>
        /// Migration object, in the format of JSON strings. For detailed definition instructions, please refer to [the description of migration, synchronization or subscription objects](https://help.aliyun.com/document_detail/209545.html). **NOTE:** From version 1.173.0, `db_list` can be modified.
        /// </summary>
        [Input("dbList", required: true)]
        public Input<string> DbList { get; set; } = null!;

        /// <summary>
        /// The delay notice. Valid values: `true`, `false`.
        /// </summary>
        [Input("delayNotice")]
        public Input<bool>? DelayNotice { get; set; }

        /// <summary>
        /// The delay phone. The mobile phone number of the contact who delayed the alarm. Multiple mobile phone numbers separated by English commas `,`. This parameter currently only supports China stations, and only supports mainland mobile phone numbers, and up to 10 mobile phone numbers can be passed in.
        /// </summary>
        [Input("delayPhone")]
        public Input<string>? DelayPhone { get; set; }

        /// <summary>
        /// The delay rule time. When `delay_notice` is set to `true`, this parameter must be passed in. The threshold for triggering the delay alarm. The unit is second and needs to be an integer. The threshold can be set according to business needs. It is recommended to set it above 10 seconds to avoid delay fluctuations caused by network and database load.
        /// </summary>
        [Input("delayRuleTime")]
        public Input<string>? DelayRuleTime { get; set; }

        /// <summary>
        /// The name of the database to which the migration object belongs in the target instance. Note: when the target instance or target database type is PolarDB O engine, AnalyticDB PostgreSQL, PostgreSQL, MongoDB database, this parameter is available and must be passed in.
        /// </summary>
        [Input("destinationEndpointDatabaseName")]
        public Input<string>? DestinationEndpointDatabaseName { get; set; }

        /// <summary>
        /// The type of destination database. The default value is MYSQL. For the correspondence between supported target libraries and source libraries, see [Supported Databases](https://help.aliyun.com/document_detail/131497.htm). When the database type of the target instance is KAFKA or MONGODB, you also need to pass in some information in the reserved parameter `reserve`. For the configuration method, see the description of `reserve` parameters. Valid values: `ADS`, `ADB30`, `AS400`, `DATAHUB`, `DB2`, `GREENPLUM`, `KAFKA`, `MONGODB`, `MSSQL`, `MySQL`, `ORACLE`, `PolarDB`, `POLARDBX20`, `POLARDB_O`, `PostgreSQL`.
        /// </summary>
        [Input("destinationEndpointEngineName", required: true)]
        public Input<string> DestinationEndpointEngineName { get; set; } = null!;

        /// <summary>
        /// The ID of destination instance. If the target instance is a cloud database (such as RDS MySQL), you need to pass in the instance ID of the cloud database (such as the instance ID of RDS MySQL). If the target instance is a self-built database, the value of this parameter changes according to the value of `destination_endpoint_instance_type`. For example, the value of `destination_endpoint_instance_type` is:
        /// ** `ECS`, then this parameter needs to be passed into the instance ID of ECS.
        /// ** `DG`, then this parameter needs to be passed into the ID of database gateway.
        /// ** `EXPRESS`, `CEN`, then this parameter needs to be passed in the ID of VPC that has been interconnected with the source database. **Note**: when the value is `CEN`, you also need to pass in the ID of CEN instance in the cloud enterprise network with the reserved parameter `reserve`.
        /// </summary>
        [Input("destinationEndpointInstanceId")]
        public Input<string>? DestinationEndpointInstanceId { get; set; }

        /// <summary>
        /// The type of destination instance. If the target instance is a PolarDB O engine cluster, the target instance type needs to be `OTHER` or `EXPRESS` as a self-built database, and access via public IP or dedicated line. If the target instance is the Kafka version of Message Queuing, the target instance type needs to be `ECS` or `EXPRESS` as a self-built database, and access via ECS or dedicated line. For the correspondence between supported targets and source instances, see [Supported Databases](https://help.aliyun.com/document_detail/131497.htm). When the target instance is a self-built database, you also need to perform corresponding preparations, please refer to the [overview of preparations](https://help.aliyun.com/document_detail/146958.htm). Valid values: `ADS`, `CEN`, `DATAHUB`, `DG`, `ECS`, `EXPRESS`, `GREENPLUM`, `MONGODB`, `OTHER`, `PolarDB`, `POLARDBX20`, `RDS`.
        /// </summary>
        [Input("destinationEndpointInstanceType", required: true)]
        public Input<string> DestinationEndpointInstanceType { get; set; } = null!;

        /// <summary>
        /// The IP of source endpoint. When `destination_endpoint_instance_type` is `OTHER`, `EXPRESS`, `DG`, `CEN`, this parameter is available and must be passed in.
        /// </summary>
        [Input("destinationEndpointIp")]
        public Input<string>? DestinationEndpointIp { get; set; }

        /// <summary>
        /// The SID of Oracle database. Note: when the value of DestinationEndpointEngineName is Oracle and the Oracle database is a non-RAC instance, this parameter is available and must be passed in.
        /// </summary>
        [Input("destinationEndpointOracleSid")]
        public Input<string>? DestinationEndpointOracleSid { get; set; }

        /// <summary>
        /// The password of database account.
        /// </summary>
        [Input("destinationEndpointPassword")]
        public Input<string>? DestinationEndpointPassword { get; set; }

        /// <summary>
        /// The port of source endpoint. When the target instance is a self-built database, this parameter is available and must be passed in.
        /// </summary>
        [Input("destinationEndpointPort")]
        public Input<string>? DestinationEndpointPort { get; set; }

        /// <summary>
        /// The region of destination instance. For the target instance region, please refer to the [list of supported regions](https://help.aliyun.com/document_detail/141033.htm). Note: if the target is an Alibaba Cloud database, this parameter must be passed in.
        /// </summary>
        [Input("destinationEndpointRegion")]
        public Input<string>? DestinationEndpointRegion { get; set; }

        /// <summary>
        /// The username of database account. Note: in most cases, you need to pass in the database account of the source library. The permissions required for migrating or synchronizing different databases are different. For specific permission requirements, see [Preparing database accounts for data migration](https://help.aliyun.com/document_detail/175878.htm) and [Preparing database accounts for data synchronization](https://help.aliyun.com/document_detail/213152.htm).
        /// </summary>
        [Input("destinationEndpointUserName")]
        public Input<string>? DestinationEndpointUserName { get; set; }

        /// <summary>
        /// The ID of synchronization instance, it must be an ID of `alicloud.dts.SynchronizationInstance`.
        /// </summary>
        [Input("dtsInstanceId", required: true)]
        public Input<string> DtsInstanceId { get; set; } = null!;

        /// <summary>
        /// The name of synchronization job.
        /// </summary>
        [Input("dtsJobName", required: true)]
        public Input<string> DtsJobName { get; set; } = null!;

        /// <summary>
        /// The error notice. Valid values: `true`, `false`.
        /// </summary>
        [Input("errorNotice")]
        public Input<bool>? ErrorNotice { get; set; }

        /// <summary>
        /// The error phone. The mobile phone number of the contact who error the alarm. Multiple mobile phone numbers separated by English commas `,`. This parameter currently only supports China stations, and only supports mainland mobile phone numbers, and up to 10 mobile phone numbers can be passed in.
        /// </summary>
        [Input("errorPhone")]
        public Input<string>? ErrorPhone { get; set; }

        /// <summary>
        /// The instance class. Valid values: `large`, `medium`, `micro`, `small`, `xlarge`, `xxlarge`. You can only upgrade the configuration, not downgrade the configuration. If you downgrade the instance, you need to [submit a ticket](https://selfservice.console.aliyun.com/ticket/category/dts/today).
        /// </summary>
        [Input("instanceClass")]
        public Input<string>? InstanceClass { get; set; }

        /// <summary>
        /// DTS reserves parameters, the format is a JSON string, you can pass in this parameter to complete the source and target database information (such as the data storage format of the target Kafka database, the instance ID of the cloud enterprise network CEN). For more information, please refer to the parameter [description of the Reserve parameter](https://help.aliyun.com/document_detail/273111.html).
        /// </summary>
        [Input("reserve")]
        public Input<string>? Reserve { get; set; }

        /// <summary>
        /// The name of the database to which the migration object belongs in the source instance. Note: this parameter is only available and must be passed in when the source instance, or the database type of the source instance is PolarDB O engine, PostgreSQL, or MongoDB database.
        /// </summary>
        [Input("sourceEndpointDatabaseName")]
        public Input<string>? SourceEndpointDatabaseName { get; set; }

        /// <summary>
        /// The type of source database. The default value is `MySQL`. For the correspondence between supported source libraries and target libraries, see [Supported Databases](https://help.aliyun.com/document_detail/131497.htm). When the database type of the source instance is `MONGODB`, you also need to pass in some information in the reserved parameter `Reserve`, for the configuration method, see the description of Reserve parameters. Valid values: `AS400`, `DB2`, `DMSPOLARDB`, `HBASE`, `MONGODB`, `MSSQL`, `MySQL`, `ORACLE`, `PolarDB`, `POLARDBX20`, `POLARDB_O`, `POSTGRESQL`, `TERADATA`.
        /// </summary>
        [Input("sourceEndpointEngineName", required: true)]
        public Input<string> SourceEndpointEngineName { get; set; } = null!;

        /// <summary>
        /// The ID of source instance. If the source instance is a cloud database (such as RDS MySQL), you need to pass in the instance ID of the cloud database (such as the instance ID of RDS MySQL). If the source instance is a self-built database, the value of this parameter changes according to the value of `source_endpoint_instance_type`. For example, the value of `source_endpoint_instance_type` is:
        /// ** `ECS`, then this parameter needs to be passed into the instance ID of ECS.
        /// ** `DG`, then this parameter needs to be passed into the ID of database gateway.
        /// ** `EXPRESS`, `CEN`, then this parameter needs to be passed in the ID of VPC that has been interconnected with the source database. **Note**: when the value is `CEN`, you also need to pass in the ID of CEN instance in the cloud enterprise network with the reserved parameter `reserve`.
        /// </summary>
        [Input("sourceEndpointInstanceId")]
        public Input<string>? SourceEndpointInstanceId { get; set; }

        /// <summary>
        /// The type of source instance. If the source instance is a `PolarDB O` engine cluster, the source instance type needs to be `OTHER` or `EXPRESS` as a self-built database, and access via public IP or dedicated line. For the correspondence between supported source and target instances, see [Supported Databases](https://help.aliyun.com/document_detail/131497.htm). When the source instance is a self-built database, you also need to perform corresponding preparations, for details, see [Preparations Overview](https://help.aliyun.com/document_detail/146958.htm). Valid values: `CEN`, `DG`, `DISTRIBUTED_DMSLOGICDB`, `ECS`, `EXPRESS`, `MONGODB`, `OTHER`, `PolarDB`, `POLARDBX20`, `RDS`.
        /// </summary>
        [Input("sourceEndpointInstanceType", required: true)]
        public Input<string> SourceEndpointInstanceType { get; set; } = null!;

        /// <summary>
        /// The IP of source endpoint. When `source_endpoint_instance_type` is `OTHER`, `EXPRESS`, `DG`, `CEN`, this parameter is available and must be passed in.
        /// </summary>
        [Input("sourceEndpointIp")]
        public Input<string>? SourceEndpointIp { get; set; }

        /// <summary>
        /// The SID of Oracle database. When the value of SourceEndpointEngineName is Oracle and the Oracle database is a non-RAC instance, this parameter is available and must be passed in.
        /// </summary>
        [Input("sourceEndpointOracleSid")]
        public Input<string>? SourceEndpointOracleSid { get; set; }

        /// <summary>
        /// The ID of Alibaba Cloud account to which the source instance belongs. Note: passing in this parameter means performing data migration or synchronization across Alibaba Cloud accounts, and you also need to pass in the `source_endpoint_role` parameter.
        /// </summary>
        [Input("sourceEndpointOwnerId")]
        public Input<string>? SourceEndpointOwnerId { get; set; }

        /// <summary>
        /// The password of database account.
        /// </summary>
        [Input("sourceEndpointPassword")]
        public Input<string>? SourceEndpointPassword { get; set; }

        /// <summary>
        /// The port of source endpoint. When the source instance is a self-built database, this parameter is available and must be passed in.
        /// </summary>
        [Input("sourceEndpointPort")]
        public Input<string>? SourceEndpointPort { get; set; }

        /// <summary>
        /// Source instance area, please refer to the [list of supported areas](https://help.aliyun.com/document_detail/141033.htm) for details. Note if the source is an Alibaba Cloud database, this parameter must be passed in.
        /// </summary>
        [Input("sourceEndpointRegion")]
        public Input<string>? SourceEndpointRegion { get; set; }

        /// <summary>
        /// The name of the role configured for the cloud account to which the source instance belongs. Note: this parameter must be passed in when performing cross Alibaba Cloud account data migration or synchronization. For the permissions and authorization methods required by this role, please refer to [How to configure RAM authorization when cross-Alibaba Cloud account data migration or synchronization](https://help.aliyun.com/document_detail/48468.htm).
        /// </summary>
        [Input("sourceEndpointRole")]
        public Input<string>? SourceEndpointRole { get; set; }

        /// <summary>
        /// The username of database account. Note: in most cases, you need to pass in the database account of the source library. The permissions required for migrating or synchronizing different databases are different. For specific permission requirements, see [Preparing database accounts for data migration](https://help.aliyun.com/document_detail/175878.htm) and [Preparing database accounts for data synchronization](https://help.aliyun.com/document_detail/213152.htm).
        /// </summary>
        [Input("sourceEndpointUserName")]
        public Input<string>? SourceEndpointUserName { get; set; }

        /// <summary>
        /// The status of the resource. Valid values: `Synchronizing`, `Suspending`. You can stop the task by specifying `Suspending` and start the task by specifying `Synchronizing`.
        /// </summary>
        [Input("status")]
        public Input<string>? Status { get; set; }

        /// <summary>
        /// Whether to perform library table structure migration or initialization. Valid values: `true`, `false`.
        /// </summary>
        [Input("structureInitialization", required: true)]
        public Input<bool> StructureInitialization { get; set; } = null!;

        /// <summary>
        /// Synchronization direction. Valid values: `Forward`, `Reverse`. Only when the property `sync_architecture` of the `alicloud.dts.SynchronizationInstance` was `bidirectional` this parameter should be passed, otherwise this parameter should not be specified.
        /// </summary>
        [Input("synchronizationDirection")]
        public Input<string>? SynchronizationDirection { get; set; }

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

    public sealed class SynchronizationJobState : global::Pulumi.ResourceArgs
    {
        /// <summary>
        /// The start point or synchronization point of incremental data migration, the format is Unix timestamp, and the unit is seconds.
        /// </summary>
        [Input("checkpoint")]
        public Input<string>? Checkpoint { get; set; }

        /// <summary>
        /// Whether to perform full data migration or full data initialization. Valid values: `true`, `false`.
        /// </summary>
        [Input("dataInitialization")]
        public Input<bool>? DataInitialization { get; set; }

        /// <summary>
        /// Whether to perform incremental data migration or synchronization. Valid values: `true`, `false`.
        /// </summary>
        [Input("dataSynchronization")]
        public Input<bool>? DataSynchronization { get; set; }

        /// <summary>
        /// Migration object, in the format of JSON strings. For detailed definition instructions, please refer to [the description of migration, synchronization or subscription objects](https://help.aliyun.com/document_detail/209545.html). **NOTE:** From version 1.173.0, `db_list` can be modified.
        /// </summary>
        [Input("dbList")]
        public Input<string>? DbList { get; set; }

        /// <summary>
        /// The delay notice. Valid values: `true`, `false`.
        /// </summary>
        [Input("delayNotice")]
        public Input<bool>? DelayNotice { get; set; }

        /// <summary>
        /// The delay phone. The mobile phone number of the contact who delayed the alarm. Multiple mobile phone numbers separated by English commas `,`. This parameter currently only supports China stations, and only supports mainland mobile phone numbers, and up to 10 mobile phone numbers can be passed in.
        /// </summary>
        [Input("delayPhone")]
        public Input<string>? DelayPhone { get; set; }

        /// <summary>
        /// The delay rule time. When `delay_notice` is set to `true`, this parameter must be passed in. The threshold for triggering the delay alarm. The unit is second and needs to be an integer. The threshold can be set according to business needs. It is recommended to set it above 10 seconds to avoid delay fluctuations caused by network and database load.
        /// </summary>
        [Input("delayRuleTime")]
        public Input<string>? DelayRuleTime { get; set; }

        /// <summary>
        /// The name of the database to which the migration object belongs in the target instance. Note: when the target instance or target database type is PolarDB O engine, AnalyticDB PostgreSQL, PostgreSQL, MongoDB database, this parameter is available and must be passed in.
        /// </summary>
        [Input("destinationEndpointDatabaseName")]
        public Input<string>? DestinationEndpointDatabaseName { get; set; }

        /// <summary>
        /// The type of destination database. The default value is MYSQL. For the correspondence between supported target libraries and source libraries, see [Supported Databases](https://help.aliyun.com/document_detail/131497.htm). When the database type of the target instance is KAFKA or MONGODB, you also need to pass in some information in the reserved parameter `reserve`. For the configuration method, see the description of `reserve` parameters. Valid values: `ADS`, `ADB30`, `AS400`, `DATAHUB`, `DB2`, `GREENPLUM`, `KAFKA`, `MONGODB`, `MSSQL`, `MySQL`, `ORACLE`, `PolarDB`, `POLARDBX20`, `POLARDB_O`, `PostgreSQL`.
        /// </summary>
        [Input("destinationEndpointEngineName")]
        public Input<string>? DestinationEndpointEngineName { get; set; }

        /// <summary>
        /// The ID of destination instance. If the target instance is a cloud database (such as RDS MySQL), you need to pass in the instance ID of the cloud database (such as the instance ID of RDS MySQL). If the target instance is a self-built database, the value of this parameter changes according to the value of `destination_endpoint_instance_type`. For example, the value of `destination_endpoint_instance_type` is:
        /// ** `ECS`, then this parameter needs to be passed into the instance ID of ECS.
        /// ** `DG`, then this parameter needs to be passed into the ID of database gateway.
        /// ** `EXPRESS`, `CEN`, then this parameter needs to be passed in the ID of VPC that has been interconnected with the source database. **Note**: when the value is `CEN`, you also need to pass in the ID of CEN instance in the cloud enterprise network with the reserved parameter `reserve`.
        /// </summary>
        [Input("destinationEndpointInstanceId")]
        public Input<string>? DestinationEndpointInstanceId { get; set; }

        /// <summary>
        /// The type of destination instance. If the target instance is a PolarDB O engine cluster, the target instance type needs to be `OTHER` or `EXPRESS` as a self-built database, and access via public IP or dedicated line. If the target instance is the Kafka version of Message Queuing, the target instance type needs to be `ECS` or `EXPRESS` as a self-built database, and access via ECS or dedicated line. For the correspondence between supported targets and source instances, see [Supported Databases](https://help.aliyun.com/document_detail/131497.htm). When the target instance is a self-built database, you also need to perform corresponding preparations, please refer to the [overview of preparations](https://help.aliyun.com/document_detail/146958.htm). Valid values: `ADS`, `CEN`, `DATAHUB`, `DG`, `ECS`, `EXPRESS`, `GREENPLUM`, `MONGODB`, `OTHER`, `PolarDB`, `POLARDBX20`, `RDS`.
        /// </summary>
        [Input("destinationEndpointInstanceType")]
        public Input<string>? DestinationEndpointInstanceType { get; set; }

        /// <summary>
        /// The IP of source endpoint. When `destination_endpoint_instance_type` is `OTHER`, `EXPRESS`, `DG`, `CEN`, this parameter is available and must be passed in.
        /// </summary>
        [Input("destinationEndpointIp")]
        public Input<string>? DestinationEndpointIp { get; set; }

        /// <summary>
        /// The SID of Oracle database. Note: when the value of DestinationEndpointEngineName is Oracle and the Oracle database is a non-RAC instance, this parameter is available and must be passed in.
        /// </summary>
        [Input("destinationEndpointOracleSid")]
        public Input<string>? DestinationEndpointOracleSid { get; set; }

        /// <summary>
        /// The password of database account.
        /// </summary>
        [Input("destinationEndpointPassword")]
        public Input<string>? DestinationEndpointPassword { get; set; }

        /// <summary>
        /// The port of source endpoint. When the target instance is a self-built database, this parameter is available and must be passed in.
        /// </summary>
        [Input("destinationEndpointPort")]
        public Input<string>? DestinationEndpointPort { get; set; }

        /// <summary>
        /// The region of destination instance. For the target instance region, please refer to the [list of supported regions](https://help.aliyun.com/document_detail/141033.htm). Note: if the target is an Alibaba Cloud database, this parameter must be passed in.
        /// </summary>
        [Input("destinationEndpointRegion")]
        public Input<string>? DestinationEndpointRegion { get; set; }

        /// <summary>
        /// The username of database account. Note: in most cases, you need to pass in the database account of the source library. The permissions required for migrating or synchronizing different databases are different. For specific permission requirements, see [Preparing database accounts for data migration](https://help.aliyun.com/document_detail/175878.htm) and [Preparing database accounts for data synchronization](https://help.aliyun.com/document_detail/213152.htm).
        /// </summary>
        [Input("destinationEndpointUserName")]
        public Input<string>? DestinationEndpointUserName { get; set; }

        /// <summary>
        /// The ID of synchronization instance, it must be an ID of `alicloud.dts.SynchronizationInstance`.
        /// </summary>
        [Input("dtsInstanceId")]
        public Input<string>? DtsInstanceId { get; set; }

        /// <summary>
        /// The name of synchronization job.
        /// </summary>
        [Input("dtsJobName")]
        public Input<string>? DtsJobName { get; set; }

        /// <summary>
        /// The error notice. Valid values: `true`, `false`.
        /// </summary>
        [Input("errorNotice")]
        public Input<bool>? ErrorNotice { get; set; }

        /// <summary>
        /// The error phone. The mobile phone number of the contact who error the alarm. Multiple mobile phone numbers separated by English commas `,`. This parameter currently only supports China stations, and only supports mainland mobile phone numbers, and up to 10 mobile phone numbers can be passed in.
        /// </summary>
        [Input("errorPhone")]
        public Input<string>? ErrorPhone { get; set; }

        /// <summary>
        /// The instance class. Valid values: `large`, `medium`, `micro`, `small`, `xlarge`, `xxlarge`. You can only upgrade the configuration, not downgrade the configuration. If you downgrade the instance, you need to [submit a ticket](https://selfservice.console.aliyun.com/ticket/category/dts/today).
        /// </summary>
        [Input("instanceClass")]
        public Input<string>? InstanceClass { get; set; }

        /// <summary>
        /// DTS reserves parameters, the format is a JSON string, you can pass in this parameter to complete the source and target database information (such as the data storage format of the target Kafka database, the instance ID of the cloud enterprise network CEN). For more information, please refer to the parameter [description of the Reserve parameter](https://help.aliyun.com/document_detail/273111.html).
        /// </summary>
        [Input("reserve")]
        public Input<string>? Reserve { get; set; }

        /// <summary>
        /// The name of the database to which the migration object belongs in the source instance. Note: this parameter is only available and must be passed in when the source instance, or the database type of the source instance is PolarDB O engine, PostgreSQL, or MongoDB database.
        /// </summary>
        [Input("sourceEndpointDatabaseName")]
        public Input<string>? SourceEndpointDatabaseName { get; set; }

        /// <summary>
        /// The type of source database. The default value is `MySQL`. For the correspondence between supported source libraries and target libraries, see [Supported Databases](https://help.aliyun.com/document_detail/131497.htm). When the database type of the source instance is `MONGODB`, you also need to pass in some information in the reserved parameter `Reserve`, for the configuration method, see the description of Reserve parameters. Valid values: `AS400`, `DB2`, `DMSPOLARDB`, `HBASE`, `MONGODB`, `MSSQL`, `MySQL`, `ORACLE`, `PolarDB`, `POLARDBX20`, `POLARDB_O`, `POSTGRESQL`, `TERADATA`.
        /// </summary>
        [Input("sourceEndpointEngineName")]
        public Input<string>? SourceEndpointEngineName { get; set; }

        /// <summary>
        /// The ID of source instance. If the source instance is a cloud database (such as RDS MySQL), you need to pass in the instance ID of the cloud database (such as the instance ID of RDS MySQL). If the source instance is a self-built database, the value of this parameter changes according to the value of `source_endpoint_instance_type`. For example, the value of `source_endpoint_instance_type` is:
        /// ** `ECS`, then this parameter needs to be passed into the instance ID of ECS.
        /// ** `DG`, then this parameter needs to be passed into the ID of database gateway.
        /// ** `EXPRESS`, `CEN`, then this parameter needs to be passed in the ID of VPC that has been interconnected with the source database. **Note**: when the value is `CEN`, you also need to pass in the ID of CEN instance in the cloud enterprise network with the reserved parameter `reserve`.
        /// </summary>
        [Input("sourceEndpointInstanceId")]
        public Input<string>? SourceEndpointInstanceId { get; set; }

        /// <summary>
        /// The type of source instance. If the source instance is a `PolarDB O` engine cluster, the source instance type needs to be `OTHER` or `EXPRESS` as a self-built database, and access via public IP or dedicated line. For the correspondence between supported source and target instances, see [Supported Databases](https://help.aliyun.com/document_detail/131497.htm). When the source instance is a self-built database, you also need to perform corresponding preparations, for details, see [Preparations Overview](https://help.aliyun.com/document_detail/146958.htm). Valid values: `CEN`, `DG`, `DISTRIBUTED_DMSLOGICDB`, `ECS`, `EXPRESS`, `MONGODB`, `OTHER`, `PolarDB`, `POLARDBX20`, `RDS`.
        /// </summary>
        [Input("sourceEndpointInstanceType")]
        public Input<string>? SourceEndpointInstanceType { get; set; }

        /// <summary>
        /// The IP of source endpoint. When `source_endpoint_instance_type` is `OTHER`, `EXPRESS`, `DG`, `CEN`, this parameter is available and must be passed in.
        /// </summary>
        [Input("sourceEndpointIp")]
        public Input<string>? SourceEndpointIp { get; set; }

        /// <summary>
        /// The SID of Oracle database. When the value of SourceEndpointEngineName is Oracle and the Oracle database is a non-RAC instance, this parameter is available and must be passed in.
        /// </summary>
        [Input("sourceEndpointOracleSid")]
        public Input<string>? SourceEndpointOracleSid { get; set; }

        /// <summary>
        /// The ID of Alibaba Cloud account to which the source instance belongs. Note: passing in this parameter means performing data migration or synchronization across Alibaba Cloud accounts, and you also need to pass in the `source_endpoint_role` parameter.
        /// </summary>
        [Input("sourceEndpointOwnerId")]
        public Input<string>? SourceEndpointOwnerId { get; set; }

        /// <summary>
        /// The password of database account.
        /// </summary>
        [Input("sourceEndpointPassword")]
        public Input<string>? SourceEndpointPassword { get; set; }

        /// <summary>
        /// The port of source endpoint. When the source instance is a self-built database, this parameter is available and must be passed in.
        /// </summary>
        [Input("sourceEndpointPort")]
        public Input<string>? SourceEndpointPort { get; set; }

        /// <summary>
        /// Source instance area, please refer to the [list of supported areas](https://help.aliyun.com/document_detail/141033.htm) for details. Note if the source is an Alibaba Cloud database, this parameter must be passed in.
        /// </summary>
        [Input("sourceEndpointRegion")]
        public Input<string>? SourceEndpointRegion { get; set; }

        /// <summary>
        /// The name of the role configured for the cloud account to which the source instance belongs. Note: this parameter must be passed in when performing cross Alibaba Cloud account data migration or synchronization. For the permissions and authorization methods required by this role, please refer to [How to configure RAM authorization when cross-Alibaba Cloud account data migration or synchronization](https://help.aliyun.com/document_detail/48468.htm).
        /// </summary>
        [Input("sourceEndpointRole")]
        public Input<string>? SourceEndpointRole { get; set; }

        /// <summary>
        /// The username of database account. Note: in most cases, you need to pass in the database account of the source library. The permissions required for migrating or synchronizing different databases are different. For specific permission requirements, see [Preparing database accounts for data migration](https://help.aliyun.com/document_detail/175878.htm) and [Preparing database accounts for data synchronization](https://help.aliyun.com/document_detail/213152.htm).
        /// </summary>
        [Input("sourceEndpointUserName")]
        public Input<string>? SourceEndpointUserName { get; set; }

        /// <summary>
        /// The status of the resource. Valid values: `Synchronizing`, `Suspending`. You can stop the task by specifying `Suspending` and start the task by specifying `Synchronizing`.
        /// </summary>
        [Input("status")]
        public Input<string>? Status { get; set; }

        /// <summary>
        /// Whether to perform library table structure migration or initialization. Valid values: `true`, `false`.
        /// </summary>
        [Input("structureInitialization")]
        public Input<bool>? StructureInitialization { get; set; }

        /// <summary>
        /// Synchronization direction. Valid values: `Forward`, `Reverse`. Only when the property `sync_architecture` of the `alicloud.dts.SynchronizationInstance` was `bidirectional` this parameter should be passed, otherwise this parameter should not be specified.
        /// </summary>
        [Input("synchronizationDirection")]
        public Input<string>? SynchronizationDirection { get; set; }

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