class Aws::Appflow::Types::CreateFlowRequest

@note When making an API call, you may pass CreateFlowRequest

data as a hash:

    {
      flow_name: "FlowName", # required
      description: "FlowDescription",
      kms_arn: "KMSArn",
      trigger_config: { # required
        trigger_type: "Scheduled", # required, accepts Scheduled, Event, OnDemand
        trigger_properties: {
          scheduled: {
            schedule_expression: "ScheduleExpression", # required
            data_pull_mode: "Incremental", # accepts Incremental, Complete
            schedule_start_time: Time.now,
            schedule_end_time: Time.now,
            timezone: "Timezone",
            schedule_offset: 1,
            first_execution_from: Time.now,
          },
        },
      },
      source_flow_config: { # required
        connector_type: "Salesforce", # required, accepts Salesforce, Singular, Slack, Redshift, S3, Marketo, Googleanalytics, Zendesk, Servicenow, Datadog, Trendmicro, Snowflake, Dynatrace, Infornexus, Amplitude, Veeva, EventBridge, LookoutMetrics, Upsolver, Honeycode, CustomerProfiles, SAPOData
        connector_profile_name: "ConnectorProfileName",
        source_connector_properties: { # required
          amplitude: {
            object: "Object", # required
          },
          datadog: {
            object: "Object", # required
          },
          dynatrace: {
            object: "Object", # required
          },
          google_analytics: {
            object: "Object", # required
          },
          infor_nexus: {
            object: "Object", # required
          },
          marketo: {
            object: "Object", # required
          },
          s3: {
            bucket_name: "BucketName", # required
            bucket_prefix: "BucketPrefix",
          },
          salesforce: {
            object: "Object", # required
            enable_dynamic_field_update: false,
            include_deleted_records: false,
          },
          service_now: {
            object: "Object", # required
          },
          singular: {
            object: "Object", # required
          },
          slack: {
            object: "Object", # required
          },
          trendmicro: {
            object: "Object", # required
          },
          veeva: {
            object: "Object", # required
            document_type: "DocumentType",
            include_source_files: false,
            include_renditions: false,
            include_all_versions: false,
          },
          zendesk: {
            object: "Object", # required
          },
          sapo_data: {
            object_path: "Object",
          },
        },
        incremental_pull_config: {
          datetime_type_field_name: "DatetimeTypeFieldName",
        },
      },
      destination_flow_config_list: [ # required
        {
          connector_type: "Salesforce", # required, accepts Salesforce, Singular, Slack, Redshift, S3, Marketo, Googleanalytics, Zendesk, Servicenow, Datadog, Trendmicro, Snowflake, Dynatrace, Infornexus, Amplitude, Veeva, EventBridge, LookoutMetrics, Upsolver, Honeycode, CustomerProfiles, SAPOData
          connector_profile_name: "ConnectorProfileName",
          destination_connector_properties: { # required
            redshift: {
              object: "Object", # required
              intermediate_bucket_name: "BucketName", # required
              bucket_prefix: "BucketPrefix",
              error_handling_config: {
                fail_on_first_destination_error: false,
                bucket_prefix: "BucketPrefix",
                bucket_name: "BucketName",
              },
            },
            s3: {
              bucket_name: "BucketName", # required
              bucket_prefix: "BucketPrefix",
              s3_output_format_config: {
                file_type: "CSV", # accepts CSV, JSON, PARQUET
                prefix_config: {
                  prefix_type: "FILENAME", # accepts FILENAME, PATH, PATH_AND_FILENAME
                  prefix_format: "YEAR", # accepts YEAR, MONTH, DAY, HOUR, MINUTE
                },
                aggregation_config: {
                  aggregation_type: "None", # accepts None, SingleFile
                },
              },
            },
            salesforce: {
              object: "Object", # required
              id_field_names: ["Name"],
              error_handling_config: {
                fail_on_first_destination_error: false,
                bucket_prefix: "BucketPrefix",
                bucket_name: "BucketName",
              },
              write_operation_type: "INSERT", # accepts INSERT, UPSERT, UPDATE
            },
            snowflake: {
              object: "Object", # required
              intermediate_bucket_name: "BucketName", # required
              bucket_prefix: "BucketPrefix",
              error_handling_config: {
                fail_on_first_destination_error: false,
                bucket_prefix: "BucketPrefix",
                bucket_name: "BucketName",
              },
            },
            event_bridge: {
              object: "Object", # required
              error_handling_config: {
                fail_on_first_destination_error: false,
                bucket_prefix: "BucketPrefix",
                bucket_name: "BucketName",
              },
            },
            lookout_metrics: {
            },
            upsolver: {
              bucket_name: "UpsolverBucketName", # required
              bucket_prefix: "BucketPrefix",
              s3_output_format_config: { # required
                file_type: "CSV", # accepts CSV, JSON, PARQUET
                prefix_config: { # required
                  prefix_type: "FILENAME", # accepts FILENAME, PATH, PATH_AND_FILENAME
                  prefix_format: "YEAR", # accepts YEAR, MONTH, DAY, HOUR, MINUTE
                },
                aggregation_config: {
                  aggregation_type: "None", # accepts None, SingleFile
                },
              },
            },
            honeycode: {
              object: "Object", # required
              error_handling_config: {
                fail_on_first_destination_error: false,
                bucket_prefix: "BucketPrefix",
                bucket_name: "BucketName",
              },
            },
            customer_profiles: {
              domain_name: "DomainName", # required
              object_type_name: "ObjectTypeName",
            },
            zendesk: {
              object: "Object", # required
              id_field_names: ["Name"],
              error_handling_config: {
                fail_on_first_destination_error: false,
                bucket_prefix: "BucketPrefix",
                bucket_name: "BucketName",
              },
              write_operation_type: "INSERT", # accepts INSERT, UPSERT, UPDATE
            },
          },
        },
      ],
      tasks: [ # required
        {
          source_fields: ["String"], # required
          connector_operator: {
            amplitude: "BETWEEN", # accepts BETWEEN
            datadog: "PROJECTION", # accepts PROJECTION, BETWEEN, EQUAL_TO, ADDITION, MULTIPLICATION, DIVISION, SUBTRACTION, MASK_ALL, MASK_FIRST_N, MASK_LAST_N, VALIDATE_NON_NULL, VALIDATE_NON_ZERO, VALIDATE_NON_NEGATIVE, VALIDATE_NUMERIC, NO_OP
            dynatrace: "PROJECTION", # accepts PROJECTION, BETWEEN, EQUAL_TO, ADDITION, MULTIPLICATION, DIVISION, SUBTRACTION, MASK_ALL, MASK_FIRST_N, MASK_LAST_N, VALIDATE_NON_NULL, VALIDATE_NON_ZERO, VALIDATE_NON_NEGATIVE, VALIDATE_NUMERIC, NO_OP
            google_analytics: "PROJECTION", # accepts PROJECTION, BETWEEN
            infor_nexus: "PROJECTION", # accepts PROJECTION, BETWEEN, EQUAL_TO, ADDITION, MULTIPLICATION, DIVISION, SUBTRACTION, MASK_ALL, MASK_FIRST_N, MASK_LAST_N, VALIDATE_NON_NULL, VALIDATE_NON_ZERO, VALIDATE_NON_NEGATIVE, VALIDATE_NUMERIC, NO_OP
            marketo: "PROJECTION", # accepts PROJECTION, LESS_THAN, GREATER_THAN, BETWEEN, ADDITION, MULTIPLICATION, DIVISION, SUBTRACTION, MASK_ALL, MASK_FIRST_N, MASK_LAST_N, VALIDATE_NON_NULL, VALIDATE_NON_ZERO, VALIDATE_NON_NEGATIVE, VALIDATE_NUMERIC, NO_OP
            s3: "PROJECTION", # accepts PROJECTION, LESS_THAN, GREATER_THAN, BETWEEN, LESS_THAN_OR_EQUAL_TO, GREATER_THAN_OR_EQUAL_TO, EQUAL_TO, NOT_EQUAL_TO, ADDITION, MULTIPLICATION, DIVISION, SUBTRACTION, MASK_ALL, MASK_FIRST_N, MASK_LAST_N, VALIDATE_NON_NULL, VALIDATE_NON_ZERO, VALIDATE_NON_NEGATIVE, VALIDATE_NUMERIC, NO_OP
            salesforce: "PROJECTION", # accepts PROJECTION, LESS_THAN, CONTAINS, GREATER_THAN, BETWEEN, LESS_THAN_OR_EQUAL_TO, GREATER_THAN_OR_EQUAL_TO, EQUAL_TO, NOT_EQUAL_TO, ADDITION, MULTIPLICATION, DIVISION, SUBTRACTION, MASK_ALL, MASK_FIRST_N, MASK_LAST_N, VALIDATE_NON_NULL, VALIDATE_NON_ZERO, VALIDATE_NON_NEGATIVE, VALIDATE_NUMERIC, NO_OP
            service_now: "PROJECTION", # accepts PROJECTION, CONTAINS, LESS_THAN, GREATER_THAN, BETWEEN, LESS_THAN_OR_EQUAL_TO, GREATER_THAN_OR_EQUAL_TO, EQUAL_TO, NOT_EQUAL_TO, ADDITION, MULTIPLICATION, DIVISION, SUBTRACTION, MASK_ALL, MASK_FIRST_N, MASK_LAST_N, VALIDATE_NON_NULL, VALIDATE_NON_ZERO, VALIDATE_NON_NEGATIVE, VALIDATE_NUMERIC, NO_OP
            singular: "PROJECTION", # accepts PROJECTION, EQUAL_TO, ADDITION, MULTIPLICATION, DIVISION, SUBTRACTION, MASK_ALL, MASK_FIRST_N, MASK_LAST_N, VALIDATE_NON_NULL, VALIDATE_NON_ZERO, VALIDATE_NON_NEGATIVE, VALIDATE_NUMERIC, NO_OP
            slack: "PROJECTION", # accepts PROJECTION, LESS_THAN, GREATER_THAN, BETWEEN, LESS_THAN_OR_EQUAL_TO, GREATER_THAN_OR_EQUAL_TO, EQUAL_TO, ADDITION, MULTIPLICATION, DIVISION, SUBTRACTION, MASK_ALL, MASK_FIRST_N, MASK_LAST_N, VALIDATE_NON_NULL, VALIDATE_NON_ZERO, VALIDATE_NON_NEGATIVE, VALIDATE_NUMERIC, NO_OP
            trendmicro: "PROJECTION", # accepts PROJECTION, EQUAL_TO, ADDITION, MULTIPLICATION, DIVISION, SUBTRACTION, MASK_ALL, MASK_FIRST_N, MASK_LAST_N, VALIDATE_NON_NULL, VALIDATE_NON_ZERO, VALIDATE_NON_NEGATIVE, VALIDATE_NUMERIC, NO_OP
            veeva: "PROJECTION", # accepts PROJECTION, LESS_THAN, GREATER_THAN, CONTAINS, BETWEEN, LESS_THAN_OR_EQUAL_TO, GREATER_THAN_OR_EQUAL_TO, EQUAL_TO, NOT_EQUAL_TO, ADDITION, MULTIPLICATION, DIVISION, SUBTRACTION, MASK_ALL, MASK_FIRST_N, MASK_LAST_N, VALIDATE_NON_NULL, VALIDATE_NON_ZERO, VALIDATE_NON_NEGATIVE, VALIDATE_NUMERIC, NO_OP
            zendesk: "PROJECTION", # accepts PROJECTION, GREATER_THAN, ADDITION, MULTIPLICATION, DIVISION, SUBTRACTION, MASK_ALL, MASK_FIRST_N, MASK_LAST_N, VALIDATE_NON_NULL, VALIDATE_NON_ZERO, VALIDATE_NON_NEGATIVE, VALIDATE_NUMERIC, NO_OP
            sapo_data: "PROJECTION", # accepts PROJECTION, LESS_THAN, CONTAINS, GREATER_THAN, BETWEEN, LESS_THAN_OR_EQUAL_TO, GREATER_THAN_OR_EQUAL_TO, EQUAL_TO, NOT_EQUAL_TO, ADDITION, MULTIPLICATION, DIVISION, SUBTRACTION, MASK_ALL, MASK_FIRST_N, MASK_LAST_N, VALIDATE_NON_NULL, VALIDATE_NON_ZERO, VALIDATE_NON_NEGATIVE, VALIDATE_NUMERIC, NO_OP
          },
          destination_field: "DestinationField",
          task_type: "Arithmetic", # required, accepts Arithmetic, Filter, Map, Map_all, Mask, Merge, Truncate, Validate
          task_properties: {
            "VALUE" => "Property",
          },
        },
      ],
      tags: {
        "TagKey" => "TagValue",
      },
    }

@!attribute [rw] flow_name

The specified name of the flow. Spaces are not allowed. Use
underscores (\_) or hyphens (-) only.
@return [String]

@!attribute [rw] description

A description of the flow you want to create.
@return [String]

@!attribute [rw] kms_arn

The ARN (Amazon Resource Name) of the Key Management Service (KMS)
key you provide for encryption. This is required if you do not want
to use the Amazon AppFlow-managed KMS key. If you don't provide
anything here, Amazon AppFlow uses the Amazon AppFlow-managed KMS
key.
@return [String]

@!attribute [rw] trigger_config

The trigger settings that determine how and when the flow runs.
@return [Types::TriggerConfig]

@!attribute [rw] source_flow_config

The configuration that controls how Amazon AppFlow retrieves data
from the source connector.
@return [Types::SourceFlowConfig]

@!attribute [rw] destination_flow_config_list

The configuration that controls how Amazon AppFlow places data in
the destination connector.
@return [Array<Types::DestinationFlowConfig>]

@!attribute [rw] tasks

A list of tasks that Amazon AppFlow performs while transferring the
data in the flow run.
@return [Array<Types::Task>]

@!attribute [rw] tags

The tags used to organize, track, or control access for your flow.
@return [Hash<String,String>]

@see docs.aws.amazon.com/goto/WebAPI/appflow-2020-08-23/CreateFlowRequest AWS API Documentation

Constants

SENSITIVE