/*
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file is distributed
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
/*
* Do not modify this file. This file is generated from the appflow-2020-08-23.normal.json service model.
*/
using System;
using System.Collections.Generic;
using System.Xml.Serialization;
using System.Text;
using System.IO;
using System.Net;
using Amazon.Runtime;
using Amazon.Runtime.Internal;
namespace Amazon.Appflow.Model
{
///
/// The properties that are applied when Salesforce is being used as a destination.
///
public partial class SalesforceDestinationProperties
{
private SalesforceDataTransferApi _dataTransferApi;
private ErrorHandlingConfig _errorHandlingConfig;
private List _idFieldNames = new List();
private string _object;
private WriteOperationType _writeOperationType;
///
/// Gets and sets the property DataTransferApi.
///
/// Specifies which Salesforce API is used by Amazon AppFlow when your flow transfers
/// data to Salesforce.
///
/// - AUTOMATIC
-
///
/// The default. Amazon AppFlow selects which API to use based on the number of records
/// that your flow transfers to Salesforce. If your flow transfers fewer than 1,000 records,
/// Amazon AppFlow uses Salesforce REST API. If your flow transfers 1,000 records or more,
/// Amazon AppFlow uses Salesforce Bulk API 2.0.
///
///
///
/// Each of these Salesforce APIs structures data differently. If Amazon AppFlow selects
/// the API automatically, be aware that, for recurring flows, the data output might vary
/// from one flow run to the next. For example, if a flow runs daily, it might use REST
/// API on one day to transfer 900 records, and it might use Bulk API 2.0 on the next
/// day to transfer 1,100 records. For each of these flow runs, the respective Salesforce
/// API formats the data differently. Some of the differences include how dates are formatted
/// and null values are represented. Also, Bulk API 2.0 doesn't transfer Salesforce compound
/// fields.
///
///
///
/// By choosing this option, you optimize flow performance for both small and large data
/// transfers, but the tradeoff is inconsistent formatting in the output.
///
///
- BULKV2
-
///
/// Amazon AppFlow uses only Salesforce Bulk API 2.0. This API runs asynchronous data
/// transfers, and it's optimal for large sets of data. By choosing this option, you ensure
/// that your flow writes consistent output, but you optimize performance only for large
/// data transfers.
///
///
///
/// Note that Bulk API 2.0 does not transfer Salesforce compound fields.
///
///
- REST_SYNC
-
///
/// Amazon AppFlow uses only Salesforce REST API. By choosing this option, you ensure
/// that your flow writes consistent output, but you decrease performance for large data
/// transfers that are better suited for Bulk API 2.0. In some cases, if your flow attempts
/// to transfer a vary large set of data, it might fail with a timed out error.
///
///
///
public SalesforceDataTransferApi DataTransferApi
{
get { return this._dataTransferApi; }
set { this._dataTransferApi = value; }
}
// Check to see if DataTransferApi property is set
internal bool IsSetDataTransferApi()
{
return this._dataTransferApi != null;
}
///
/// Gets and sets the property ErrorHandlingConfig.
///
/// The settings that determine how Amazon AppFlow handles an error when placing data
/// in the Salesforce destination. For example, this setting would determine if the flow
/// should fail after one insertion error, or continue and attempt to insert every record
/// regardless of the initial failure. ErrorHandlingConfig
is a part of the
/// destination connector details.
///
///
public ErrorHandlingConfig ErrorHandlingConfig
{
get { return this._errorHandlingConfig; }
set { this._errorHandlingConfig = value; }
}
// Check to see if ErrorHandlingConfig property is set
internal bool IsSetErrorHandlingConfig()
{
return this._errorHandlingConfig != null;
}
///
/// Gets and sets the property IdFieldNames.
///
/// The name of the field that Amazon AppFlow uses as an ID when performing a write operation
/// such as update or delete.
///
///
[AWSProperty(Min=0)]
public List IdFieldNames
{
get { return this._idFieldNames; }
set { this._idFieldNames = value; }
}
// Check to see if IdFieldNames property is set
internal bool IsSetIdFieldNames()
{
return this._idFieldNames != null && this._idFieldNames.Count > 0;
}
///
/// Gets and sets the property Object.
///
/// The object specified in the Salesforce flow destination.
///
///
[AWSProperty(Required=true, Max=512)]
public string Object
{
get { return this._object; }
set { this._object = value; }
}
// Check to see if Object property is set
internal bool IsSetObject()
{
return this._object != null;
}
///
/// Gets and sets the property WriteOperationType.
///
/// This specifies the type of write operation to be performed in Salesforce. When the
/// value is UPSERT
, then idFieldNames
is required.
///
///
public WriteOperationType WriteOperationType
{
get { return this._writeOperationType; }
set { this._writeOperationType = value; }
}
// Check to see if WriteOperationType property is set
internal bool IsSetWriteOperationType()
{
return this._writeOperationType != null;
}
}
}