mmv1/products/datastream/Stream.yaml (1,775 lines of code) (raw):

# Copyright 2024 Google Inc. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License 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. --- name: 'Stream' description: | A resource representing streaming data from a source to a destination. references: guides: 'Official Documentation': 'https://cloud.google.com/datastream/docs/create-a-stream' api: 'https://cloud.google.com/datastream/docs/reference/rest/v1/projects.locations.streams' docs: id_format: 'projects/{{project}}/locations/{{location}}/streams/{{stream_id}}' base_url: 'projects/{{project}}/locations/{{location}}/streams' self_link: 'projects/{{project}}/locations/{{location}}/streams/{{stream_id}}' create_url: 'projects/{{project}}/locations/{{location}}/streams?streamId={{stream_id}}&force={{create_without_validation}}' update_verb: 'PATCH' update_mask: true import_format: - 'projects/{{project}}/locations/{{location}}/streams/{{stream_id}}' timeouts: insert_minutes: 20 update_minutes: 20 delete_minutes: 20 async: actions: ['create', 'delete', 'update'] type: 'OpAsync' operation: base_url: '{{op_id}}' result: resource_inside_response: true custom_code: constants: 'templates/terraform/constants/datastream_stream.go.tmpl' encoder: 'templates/terraform/encoders/datastream_stream.go.tmpl' post_create: 'templates/terraform/post_create/datastream_stream.go.tmpl' pre_update: 'templates/terraform/pre_update/datastream_stream.go.tmpl' post_update: 'templates/terraform/post_update/datastream_stream.go.tmpl' post_import: 'templates/terraform/post_import/datastream_stream.go.tmpl' custom_diff: - 'resourceDatastreamStreamCustomDiff' examples: - name: 'datastream_stream_basic' primary_resource_id: 'default' vars: stream_id: 'my-stream' private_connection_id: 'my-connection' network_name: 'my-network' source_connection_profile_id: 'source-profile' database_instance_name: 'my-instance' deletion_protection: 'true' bucket_name: 'my-bucket' destination_connection_profile_id: 'destination-profile' test_vars_overrides: 'deletion_protection': 'false' oics_vars_overrides: 'deletion_protection': 'false' external_providers: ["random", "time"] exclude_docs: true # Random provider skip_vcr: true - name: 'datastream_stream_full' primary_resource_id: 'default' vars: stream_id: 'my-stream' private_connection_id: 'my-connection' network_name: 'my-network' source_connection_profile_id: 'source-profile' database_instance_name: 'my-instance' deletion_protection: 'true' bucket_name: 'my-bucket' destination_connection_profile_id: 'destination-profile' stream_cmek: 'kms-name' test_vars_overrides: 'deletion_protection': 'false' 'stream_cmek': 'acctest.BootstrapKMSKeyInLocation(t, "us-central1").CryptoKey.Name' oics_vars_overrides: 'deletion_protection': 'false' external_providers: ["random", "time"] # Random provider skip_vcr: true - name: 'datastream_stream_postgresql' primary_resource_id: 'default' vars: stream_id: 'my-stream' source_connection_profile_id: 'source-profile' destination_connection_profile_id: 'destination-profile' exclude_test: true - name: 'datastream_stream_oracle' primary_resource_id: 'default' vars: stream_id: 'my-stream' source_connection_profile_id: 'source-profile' destination_connection_profile_id: 'destination-profile' exclude_test: true - name: 'datastream_stream_sql_server' primary_resource_id: 'default' vars: database_name: 'db' database_password: 'password' database_user: 'user' deletion_protection: 'true' destination_connection_profile_id: 'destination-profile' source_connection_profile_id: 'source-profile' sql_server_name: 'sql-server' sql_server_root_password: 'root-password' stream_id: 'stream' test_vars_overrides: 'deletion_protection': 'false' exclude_test: true - name: 'datastream_stream_sql_server_change_tables' primary_resource_id: 'default' vars: database_name: 'db' database_password: 'password' database_user: 'user' deletion_protection: 'true' destination_connection_profile_id: 'destination-profile' source_connection_profile_id: 'source-profile' sql_server_name: 'sql-server' sql_server_root_password: 'root-password' stream_id: 'stream' test_vars_overrides: 'deletion_protection': 'false' # Requires SQLServer Configuration exclude_test: true - name: 'datastream_stream_mysql_gtid' primary_resource_id: 'default' vars: database_name: 'db' database_password: 'password' database_user: 'user' deletion_protection: 'true' destination_connection_profile_id: 'destination-profile' source_connection_profile_id: 'source-profile' mysql_name: 'mysql' mysql_root_password: 'root-password' stream_id: 'stream' test_vars_overrides: 'deletion_protection': 'false' # Requires MySQL Configuration exclude_test: true - name: 'datastream_stream_postgresql_bigquery_dataset_id' primary_resource_id: 'default' vars: dataset_id: 'postgres' stream_id: 'postgres-bigquery' dest_connection_profile_id: 'dest-profile' instance_name: 'instance-name' sql_user_name: 'my-user' source_connection_profile_id: 'source-profile' external_providers: ["random", "time"] # Random provider skip_vcr: true - name: 'datastream_stream_bigquery' primary_resource_id: 'default' vars: stream_id: 'my-stream' private_connection_id: 'my-connection' network_name: 'my-network' source_connection_profile_id: 'source-profile' database_instance_name: 'my-instance' deletion_protection: 'true' destination_connection_profile_id: 'destination-profile' bigquery_destination_table_kms_key_name: 'bigquery-kms-name' test_vars_overrides: 'deletion_protection': 'false' 'bigquery_destination_table_kms_key_name': 'acctest.BootstrapKMSKeyInLocation(t, "us-central1").CryptoKey.Name' oics_vars_overrides: 'deletion_protection': 'false' external_providers: ["random", "time"] # Random provider skip_vcr: true - name: 'datastream_stream_bigquery_append_only' primary_resource_id: 'default' vars: stream_id: 'my-stream' private_connection_id: 'my-connection' network_name: 'my-network' source_connection_profile_id: 'source-profile' database_instance_name: 'my-instance' deletion_protection: 'true' destination_connection_profile_id: 'destination-profile' test_vars_overrides: 'deletion_protection': 'false' oics_vars_overrides: 'deletion_protection': 'false' external_providers: ["random", "time"] # Random provider skip_vcr: true - name: 'datastream_stream_bigquery_blmt' primary_resource_id: 'default' vars: stream_id: 'blmt-stream' database_instance_name: 'blmt-instance' deletion_protection: 'true' source_connection_profile_id: 'blmt-source-profile' destination_connection_profile_id: 'blmt-destination-profile' blmt_bucket_name: 'blmt-bucket' blmt_connection_id: 'blmt-connection' test_vars_overrides: 'deletion_protection': 'false' external_providers: ["random"] skip_vcr: true # Involves complex dependency creation, which makes it impractical in this context exclude_test: true - name: 'datastream_stream_salesforce' primary_resource_id: 'default' vars: source_connection_profile_id: 'source-profile' destination_connection_profile_id: 'destination-profile' exclude_test: true virtual_fields: - name: 'desired_state' description: | Desired state of the Stream. Set this field to `RUNNING` to start the stream, `NOT_STARTED` to create the stream without starting and `PAUSED` to pause the stream from a `RUNNING` state. Possible values: NOT_STARTED, RUNNING, PAUSED. Default: NOT_STARTED type: String default_value: "NOT_STARTED" parameters: - name: 'streamId' type: String description: |- The stream identifier. url_param_only: true required: true immutable: true - name: 'create_without_validation' type: Boolean description: |- Create the stream without validating it. url_param_only: true required: false immutable: true default_value: false - name: 'location' type: String description: | The name of the location this stream is located in. url_param_only: true required: true immutable: true properties: - name: 'name' type: String description: The stream's name. output: true - name: 'labels' type: KeyValueLabels description: Labels. - name: 'displayName' type: String description: Display name. required: true - name: 'sourceConfig' type: NestedObject description: | Source connection profile configuration. required: true properties: - name: 'sourceConnectionProfile' type: String description: | Source connection profile resource. Format: projects/{project}/locations/{location}/connectionProfiles/{name} required: true immutable: true diff_suppress_func: 'tpgresource.ProjectNumberDiffSuppress' - name: 'mysqlSourceConfig' type: NestedObject description: | MySQL data source configuration. send_empty_value: true allow_empty_object: true exactly_one_of: - 'source_config.0.mysql_source_config' - 'source_config.0.oracle_source_config' - 'source_config.0.postgresql_source_config' - 'source_config.0.sql_server_source_config' - 'source_config.0.salesforce_source_config' properties: - name: 'includeObjects' type: NestedObject description: | MySQL objects to retrieve from the source. properties: - name: 'mysqlDatabases' type: Array description: | MySQL databases on the server required: true item_type: description: | MySQL database. type: NestedObject properties: - name: 'database' type: String description: | Database name. required: true - name: 'mysqlTables' type: Array description: | Tables in the database. item_type: description: | MySQL table. type: NestedObject properties: - name: 'table' type: String description: | Table name. required: true - name: 'mysqlColumns' type: Array description: | MySQL columns in the schema. When unspecified as part of include/exclude objects, includes/excludes everything. item_type: description: | MySQL Column. type: NestedObject properties: - name: 'column' type: String description: | Column name. - name: 'dataType' type: String description: | The MySQL data type. Full data types list can be found here: https://dev.mysql.com/doc/refman/8.0/en/data-types.html - name: 'length' type: Integer description: | Column length. output: true - name: 'collation' type: String description: | Column collation. - name: 'primaryKey' type: Boolean description: | Whether or not the column represents a primary key. - name: 'nullable' type: Boolean description: | Whether or not the column can accept a null value. - name: 'ordinalPosition' type: Integer description: | The ordinal position of the column in the table. min_size: 1 min_size: 1 min_size: 1 - name: 'excludeObjects' type: NestedObject description: | MySQL objects to exclude from the stream. properties: - name: 'mysqlDatabases' type: Array description: | MySQL databases on the server required: true item_type: description: | MySQL database. type: NestedObject properties: - name: 'database' type: String description: | Database name. required: true - name: 'mysqlTables' type: Array description: | Tables in the database. item_type: description: | MySQL table. type: NestedObject properties: - name: 'table' type: String description: | Table name. required: true - name: 'mysqlColumns' type: Array description: | MySQL columns in the schema. When unspecified as part of include/exclude objects, includes/excludes everything. item_type: description: | MySQL Column. type: NestedObject properties: - name: 'column' type: String description: | Column name. - name: 'dataType' type: String description: | The MySQL data type. Full data types list can be found here: https://dev.mysql.com/doc/refman/8.0/en/data-types.html - name: 'length' type: Integer description: | Column length. output: true - name: 'collation' type: String description: | Column collation. - name: 'primaryKey' type: Boolean description: | Whether or not the column represents a primary key. - name: 'nullable' type: Boolean description: | Whether or not the column can accept a null value. - name: 'ordinalPosition' type: Integer description: | The ordinal position of the column in the table. min_size: 1 min_size: 1 min_size: 1 - name: 'maxConcurrentCdcTasks' type: Integer description: | Maximum number of concurrent CDC tasks. The number should be non negative. If not set (or set to 0), the system's default value will be used. default_from_api: true send_empty_value: true validation: function: 'validation.IntAtLeast(0)' - name: 'maxConcurrentBackfillTasks' type: Integer description: | Maximum number of concurrent backfill tasks. The number should be non negative. If not set (or set to 0), the system's default value will be used. default_from_api: true send_empty_value: true validation: function: 'validation.IntAtLeast(0)' - name: 'binaryLogPosition' type: NestedObject allow_empty_object: true send_empty_value: true conflicts: - source_config.0.mysql_source_config.gtid description: | CDC reader reads from binary logs replication cdc method. properties: [] - name: 'gtid' type: NestedObject allow_empty_object: true send_empty_value: true conflicts: - source_config.0.mysql_source_config.binaryLogPosition description: | CDC reader reads from gtid based replication. properties: [] - name: 'oracleSourceConfig' type: NestedObject description: | MySQL data source configuration. send_empty_value: true allow_empty_object: true exactly_one_of: - 'source_config.0.mysql_source_config' - 'source_config.0.oracle_source_config' - 'source_config.0.postgresql_source_config' - 'source_config.0.sql_server_source_config' - 'source_config.0.salesforce_source_config' properties: - name: 'includeObjects' type: NestedObject description: | Oracle objects to retrieve from the source. properties: - name: 'oracleSchemas' type: Array description: | Oracle schemas/databases in the database server required: true item_type: description: | MySQL database. type: NestedObject properties: - name: 'schema' type: String description: | Schema name. required: true - name: 'oracleTables' type: Array description: | Tables in the database. item_type: description: | Oracle table. type: NestedObject properties: - name: 'table' type: String description: | Table name. required: true - name: 'oracleColumns' type: Array description: | Oracle columns in the schema. When unspecified as part of include/exclude objects, includes/excludes everything. item_type: description: | Oracle Column. type: NestedObject properties: - name: 'column' type: String description: | Column name. - name: 'dataType' type: String description: | The Oracle data type. Full data types list can be found here: https://docs.oracle.com/en/database/oracle/oracle-database/21/sqlrf/Data-Types.html - name: 'length' type: Integer description: | Column length. output: true - name: 'precision' type: Integer description: | Column precision. output: true - name: 'scale' type: Integer description: | Column scale. output: true - name: 'encoding' type: String description: | Column encoding. output: true - name: 'primaryKey' type: Boolean description: | Whether or not the column represents a primary key. output: true - name: 'nullable' type: Boolean description: | Whether or not the column can accept a null value. output: true - name: 'ordinalPosition' type: Integer description: | The ordinal position of the column in the table. output: true min_size: 1 min_size: 1 min_size: 1 - name: 'excludeObjects' type: NestedObject description: | Oracle objects to exclude from the stream. properties: - name: 'oracleSchemas' type: Array description: | Oracle schemas/databases in the database server required: true item_type: description: | MySQL database. type: NestedObject properties: - name: 'schema' type: String description: | Schema name. required: true - name: 'oracleTables' type: Array description: | Tables in the database. item_type: description: | Oracle table. type: NestedObject properties: - name: 'table' type: String description: | Table name. required: true - name: 'oracleColumns' type: Array description: | Oracle columns in the schema. When unspecified as part of include/exclude objects, includes/excludes everything. item_type: description: | Oracle Column. type: NestedObject properties: - name: 'column' type: String description: | Column name. - name: 'dataType' type: String description: | The Oracle data type. Full data types list can be found here: https://docs.oracle.com/en/database/oracle/oracle-database/21/sqlrf/Data-Types.html - name: 'length' type: Integer description: | Column length. output: true - name: 'precision' type: Integer description: | Column precision. output: true - name: 'scale' type: Integer description: | Column scale. output: true - name: 'encoding' type: String description: | Column encoding. output: true - name: 'primaryKey' type: Boolean description: | Whether or not the column represents a primary key. output: true - name: 'nullable' type: Boolean description: | Whether or not the column can accept a null value. output: true - name: 'ordinalPosition' type: Integer description: | The ordinal position of the column in the table. output: true min_size: 1 min_size: 1 min_size: 1 - name: 'maxConcurrentCdcTasks' type: Integer description: | Maximum number of concurrent CDC tasks. The number should be non negative. If not set (or set to 0), the system's default value will be used. default_from_api: true send_empty_value: true validation: function: 'validation.IntAtLeast(0)' - name: 'maxConcurrentBackfillTasks' type: Integer description: | Maximum number of concurrent backfill tasks. The number should be non negative. If not set (or set to 0), the system's default value will be used. default_from_api: true send_empty_value: true validation: function: 'validation.IntAtLeast(0)' - name: 'dropLargeObjects' type: NestedObject description: | Configuration to drop large object values. send_empty_value: true allow_empty_object: true properties: [] - name: 'streamLargeObjects' type: NestedObject description: | Configuration to drop large object values. send_empty_value: true allow_empty_object: true properties: [] - name: 'postgresqlSourceConfig' type: NestedObject description: | PostgreSQL data source configuration. send_empty_value: true allow_empty_object: true exactly_one_of: - 'source_config.0.mysql_source_config' - 'source_config.0.oracle_source_config' - 'source_config.0.postgresql_source_config' - 'source_config.0.sql_server_source_config' - 'source_config.0.salesforce_source_config' properties: - name: 'includeObjects' type: NestedObject description: | PostgreSQL objects to retrieve from the source. properties: - name: 'postgresqlSchemas' type: Array description: | PostgreSQL schemas on the server required: true item_type: description: | PostgreSQL schema. type: NestedObject properties: - name: 'schema' type: String description: | Database name. required: true - name: 'postgresqlTables' type: Array description: | Tables in the schema. item_type: description: | PostgreSQL table. type: NestedObject properties: - name: 'table' type: String description: | Table name. required: true - name: 'postgresqlColumns' type: Array description: | PostgreSQL columns in the schema. When unspecified as part of include/exclude objects, includes/excludes everything. item_type: description: | PostgreSQL Column. type: NestedObject properties: - name: 'column' type: String description: | Column name. - name: 'dataType' type: String description: | The PostgreSQL data type. Full data types list can be found here: https://www.postgresql.org/docs/current/datatype.html - name: 'length' type: Integer description: | Column length. output: true - name: 'precision' type: Integer description: | Column precision. output: true - name: 'scale' type: Integer description: | Column scale. output: true - name: 'primaryKey' type: Boolean description: | Whether or not the column represents a primary key. - name: 'nullable' type: Boolean description: | Whether or not the column can accept a null value. - name: 'ordinalPosition' type: Integer description: | The ordinal position of the column in the table. min_size: 1 min_size: 1 min_size: 1 - name: 'excludeObjects' type: NestedObject description: | PostgreSQL objects to exclude from the stream. properties: - name: 'postgresqlSchemas' type: Array description: | PostgreSQL schemas on the server required: true item_type: description: | PostgreSQL schema. type: NestedObject properties: - name: 'schema' type: String description: | Database name. required: true - name: 'postgresqlTables' type: Array description: | Tables in the schema. item_type: description: | PostgreSQL table. type: NestedObject properties: - name: 'table' type: String description: | Table name. required: true - name: 'postgresqlColumns' type: Array description: | PostgreSQL columns in the schema. When unspecified as part of include/exclude objects, includes/excludes everything. item_type: description: | PostgreSQL Column. type: NestedObject properties: - name: 'column' type: String description: | Column name. - name: 'dataType' type: String description: | The PostgreSQL data type. Full data types list can be found here: https://www.postgresql.org/docs/current/datatype.html - name: 'length' type: Integer description: | Column length. output: true - name: 'precision' type: Integer description: | Column precision. output: true - name: 'scale' type: Integer description: | Column scale. output: true - name: 'primaryKey' type: Boolean description: | Whether or not the column represents a primary key. - name: 'nullable' type: Boolean description: | Whether or not the column can accept a null value. - name: 'ordinalPosition' type: Integer description: | The ordinal position of the column in the table. min_size: 1 min_size: 1 min_size: 1 - name: 'replicationSlot' type: String description: | The name of the logical replication slot that's configured with the pgoutput plugin. required: true - name: 'publication' type: String description: | The name of the publication that includes the set of all tables that are defined in the stream's include_objects. required: true - name: 'maxConcurrentBackfillTasks' type: Integer description: | Maximum number of concurrent backfill tasks. The number should be non negative. If not set (or set to 0), the system's default value will be used. default_from_api: true send_empty_value: true validation: function: 'validation.IntAtLeast(0)' - name: 'sqlServerSourceConfig' type: NestedObject description: | SQL Server data source configuration. send_empty_value: true allow_empty_object: true exactly_one_of: - 'source_config.0.mysql_source_config' - 'source_config.0.oracle_source_config' - 'source_config.0.postgresql_source_config' - 'source_config.0.sql_server_source_config' - 'source_config.0.salesforce_source_config' properties: - name: 'includeObjects' type: NestedObject description: | SQL Server objects to retrieve from the source. properties: - name: 'schemas' type: Array description: | SQL Server schemas/databases in the database server required: true item_type: description: | SQL Server database. type: NestedObject properties: - name: 'schema' type: String description: | Schema name. required: true - name: 'tables' type: Array description: | Tables in the database. item_type: description: | SQL Server table. type: NestedObject properties: - name: 'table' type: String description: | Table name. required: true - name: 'columns' type: Array description: | SQL Server columns in the schema. When unspecified as part of include/exclude objects, includes/excludes everything. item_type: description: | SQL Server Column. type: NestedObject properties: - name: 'column' type: String description: | Column name. - name: 'dataType' type: String description: | The SQL Server data type. Full data types list can be found here: https://learn.microsoft.com/en-us/sql/t-sql/data-types/data-types-transact-sql?view=sql-server-ver16 - name: 'length' type: Integer description: | Column length. output: true - name: 'precision' type: Integer description: | Column precision. output: true - name: 'scale' type: Integer description: | Column scale. output: true - name: 'primaryKey' type: Boolean description: | Whether or not the column represents a primary key. output: true - name: 'nullable' type: Boolean description: | Whether or not the column can accept a null value. output: true - name: 'ordinalPosition' type: Integer description: | The ordinal position of the column in the table. output: true min_size: 1 min_size: 1 min_size: 1 - name: 'excludeObjects' type: NestedObject description: | SQL Server objects to exclude from the stream. properties: - name: 'schemas' type: Array description: | SQL Server schemas/databases in the database server required: true item_type: description: | SQL Server database. type: NestedObject properties: - name: 'schema' type: String description: | Schema name. required: true - name: 'tables' type: Array description: | Tables in the database. item_type: description: | SQL Server table. type: NestedObject properties: - name: 'table' type: String description: | Table name. required: true - name: 'columns' type: Array description: | SQL Server columns in the schema. When unspecified as part of include/exclude objects, includes/excludes everything. item_type: description: | SQL Server Column. type: NestedObject properties: - name: 'column' type: String description: | Column name. - name: 'dataType' type: String description: | The SQL Server data type. Full data types list can be found here: https://learn.microsoft.com/en-us/sql/t-sql/data-types/data-types-transact-sql?view=sql-server-ver16 - name: 'length' type: Integer description: | Column length. output: true - name: 'precision' type: Integer description: | Column precision. output: true - name: 'scale' type: Integer description: | Column scale. output: true - name: 'primaryKey' type: Boolean description: | Whether or not the column represents a primary key. output: true - name: 'nullable' type: Boolean description: | Whether or not the column can accept a null value. output: true - name: 'ordinalPosition' type: Integer description: | The ordinal position of the column in the table. output: true min_size: 1 min_size: 1 min_size: 1 - name: 'maxConcurrentCdcTasks' type: Integer description: | Max concurrent CDC tasks. default_from_api: true send_empty_value: true validation: function: 'validation.IntAtLeast(0)' - name: 'maxConcurrentBackfillTasks' type: Integer description: | Max concurrent backfill tasks. default_from_api: true send_empty_value: true validation: function: 'validation.IntAtLeast(0)' - name: 'transactionLogs' type: NestedObject description: | CDC reader reads from transaction logs. send_empty_value: true allow_empty_object: true properties: [] - name: 'changeTables' type: NestedObject description: | CDC reader reads from change tables. send_empty_value: true allow_empty_object: true properties: [] - name: 'salesforceSourceConfig' type: NestedObject description: | Salesforce data source configuration. send_empty_value: true allow_empty_object: true exactly_one_of: - 'source_config.0.mysql_source_config' - 'source_config.0.oracle_source_config' - 'source_config.0.postgresql_source_config' - 'source_config.0.sql_server_source_config' - 'source_config.0.salesforce_source_config' properties: - name: 'includeObjects' type: NestedObject description: | Salesforce objects to retrieve from the source. properties: - name: 'objects' type: Array description: | Salesforce objects in Salesforce Org. required: true min_size: 1 item_type: description: | Salesforce objects. type: NestedObject properties: - name: 'objectName' type: String description: | Name of object in Salesforce Org. - name: 'fields' type: Array description: | Fields in the Salesforce object. When unspecified as part of include/exclude objects, includes/excludes everything/nothing. min_size: 1 item_type: description: | Salesforce field. type: NestedObject properties: - name: 'name' type: String description: | Field name. - name: 'excludeObjects' type: NestedObject description: | Salesforce objects to exclude from the stream. properties: - name: 'objects' type: Array description: | Salesforce objects in data source. required: true min_size: 1 item_type: description: | Salesforce objects. type: NestedObject properties: - name: 'objectName' type: String description: | Name of object in Salesforce Org. - name: 'fields' type: Array description: | Fields in the Salesforce object. When unspecified as part of include/exclude objects, includes/excludes everything/nothing. min_size: 1 item_type: description: | Salesforce field. type: NestedObject properties: - name: 'name' type: String description: | Field name. - name: 'pollingInterval' type: String description: | Salesforce objects polling interval. The interval at which new changes will be polled for each object. The duration must be between 5 minutes and 24 hours. required: true - name: 'destinationConfig' type: NestedObject description: | Destination connection profile configuration. required: true properties: - name: 'destinationConnectionProfile' type: String description: | Destination connection profile resource. Format: projects/{project}/locations/{location}/connectionProfiles/{name} required: true immutable: true diff_suppress_func: 'tpgresource.ProjectNumberDiffSuppress' - name: 'gcsDestinationConfig' type: NestedObject description: | A configuration for how data should be loaded to Cloud Storage. exactly_one_of: - 'destination_config.0.gcs_destination_config' - 'destination_config.0.bigquery_destination_config' properties: - name: 'path' type: String description: | Path inside the Cloud Storage bucket to write data to. - name: 'fileRotationMb' type: Integer description: | The maximum file size to be saved in the bucket. default_from_api: true - name: 'fileRotationInterval' type: String description: | The maximum duration for which new events are added before a file is closed and a new file is created. A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s". Defaults to 900s. default_from_api: true - name: 'avroFileFormat' type: NestedObject description: | AVRO file format configuration. send_empty_value: true allow_empty_object: true exactly_one_of: - 'destination_config.0.gcs_destination_config.0.avro_file_format' - 'destination_config.0.gcs_destination_config.0.json_file_format' properties: [] - name: 'jsonFileFormat' type: NestedObject description: | JSON file format configuration. exactly_one_of: - 'destination_config.0.gcs_destination_config.0.avro_file_format' - 'destination_config.0.gcs_destination_config.0.json_file_format' properties: - name: 'schemaFileFormat' type: Enum description: | The schema file format along JSON data files. enum_values: - 'NO_SCHEMA_FILE' - 'AVRO_SCHEMA_FILE' - name: 'compression' type: Enum description: | Compression of the loaded JSON file. enum_values: - 'NO_COMPRESSION' - 'GZIP' - name: 'bigqueryDestinationConfig' type: NestedObject description: | A configuration for how data should be loaded to Google BigQuery. exactly_one_of: - 'destination_config.0.gcs_destination_config' - 'destination_config.0.bigquery_destination_config' properties: - name: 'dataFreshness' type: String description: | The guaranteed data freshness (in seconds) when querying tables created by the stream. Editing this field will only affect new tables created in the future, but existing tables will not be impacted. Lower values mean that queries will return fresher data, but may result in higher cost. A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s". Defaults to 900s. - name: 'singleTargetDataset' type: NestedObject description: | A single target dataset to which all data will be streamed. exactly_one_of: - 'destination_config.0.bigquery_destination_config.0.single_target_dataset' - 'destination_config.0.bigquery_destination_config.0.source_hierarchy_datasets' properties: - name: 'datasetId' type: String description: | Dataset ID in the format projects/{project}/datasets/{dataset_id} or {project}:{dataset_id} required: true diff_suppress_func: 'resourceDatastreamStreamDatabaseIdDiffSuppress' custom_expand: 'templates/terraform/custom_expand/datastream_stream_dataset_id.go.tmpl' - name: 'sourceHierarchyDatasets' type: NestedObject description: | Destination datasets are created so that hierarchy of the destination data objects matches the source hierarchy. exactly_one_of: - 'destination_config.0.bigquery_destination_config.0.single_target_dataset' - 'destination_config.0.bigquery_destination_config.0.source_hierarchy_datasets' properties: - name: 'datasetTemplate' type: NestedObject description: | Dataset template used for dynamic dataset creation. required: true properties: - name: 'location' type: String description: | The geographic location where the dataset should reside. See https://cloud.google.com/bigquery/docs/locations for supported locations. required: true - name: 'datasetIdPrefix' type: String description: | If supplied, every created dataset will have its name prefixed by the provided value. The prefix and name will be separated by an underscore. i.e. _. - name: 'kmsKeyName' type: String description: | Describes the Cloud KMS encryption key that will be used to protect destination BigQuery table. The BigQuery Service Account associated with your project requires access to this encryption key. i.e. projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{cryptoKey}. See https://cloud.google.com/bigquery/docs/customer-managed-encryption for more information. immutable: true - name: 'blmtConfig' type: NestedObject description: 'BigLake Managed Tables configuration for BigQuery streams.' properties: - name: 'bucket' type: String description: | The Cloud Storage bucket name. required: true - name: 'connectionName' type: String description: | The bigquery connection. Format: `{project}.{location}.{name}` required: true - name: 'fileFormat' type: String description: | The file format. required: true enum_values: - FILE_FORMAT_UNSPECIFIED - PARQUET - name: 'tableFormat' type: String description: | The table format. required: true enum_values: - TABLE_FORMAT_UNSPECIFIED - ICEBERG - name: 'rootPath' type: String description: | The root path inside the Cloud Storage bucket. - name: 'merge' type: NestedObject description: | Merge mode defines that all changes to a table will be merged at the destination Google BigQuery table. This is the default write mode. When selected, BigQuery reflects the way the data is stored in the source database. With Merge mode, no historical record of the change events is kept. immutable: true send_empty_value: true allow_empty_object: true conflicts: - destination_config.0.bigquery_destination_config.0.append_only properties: [] - name: 'appendOnly' type: NestedObject description: | AppendOnly mode defines that the stream of changes (INSERT, UPDATE-INSERT, UPDATE-DELETE and DELETE events) to a source table will be written to the destination Google BigQuery table, retaining the historical state of the data. immutable: true send_empty_value: true allow_empty_object: true conflicts: - destination_config.0.bigquery_destination_config.0.merge properties: [] - name: 'state' type: String description: The state of the stream. output: true - name: 'backfillAll' type: NestedObject description: | Backfill strategy to automatically backfill the Stream's objects. Specific objects can be excluded. send_empty_value: true allow_empty_object: true exactly_one_of: - 'backfill_all' - 'backfill_none' properties: - name: 'mysqlExcludedObjects' type: NestedObject description: | MySQL data source objects to avoid backfilling. properties: - name: 'mysqlDatabases' type: Array description: | MySQL databases on the server required: true item_type: description: | MySQL database. type: NestedObject properties: - name: 'database' type: String description: | Database name. required: true - name: 'mysqlTables' type: Array description: | Tables in the database. item_type: description: | MySQL table. type: NestedObject properties: - name: 'table' type: String description: | Table name. required: true - name: 'mysqlColumns' type: Array description: | MySQL columns in the schema. When unspecified as part of include/exclude objects, includes/excludes everything. item_type: description: | MySQL Column. type: NestedObject properties: - name: 'column' type: String description: | Column name. - name: 'dataType' type: String description: | The MySQL data type. Full data types list can be found here: https://dev.mysql.com/doc/refman/8.0/en/data-types.html - name: 'length' type: Integer description: | Column length. output: true - name: 'collation' type: String description: | Column collation. - name: 'primaryKey' type: Boolean description: | Whether or not the column represents a primary key. - name: 'nullable' type: Boolean description: | Whether or not the column can accept a null value. - name: 'ordinalPosition' type: Integer description: | The ordinal position of the column in the table. min_size: 1 min_size: 1 min_size: 1 - name: 'postgresqlExcludedObjects' type: NestedObject description: | PostgreSQL data source objects to avoid backfilling. properties: - name: 'postgresqlSchemas' type: Array description: | PostgreSQL schemas on the server required: true item_type: description: | PostgreSQL schema. type: NestedObject properties: - name: 'schema' type: String description: | Database name. required: true - name: 'postgresqlTables' type: Array description: | Tables in the schema. item_type: description: | PostgreSQL table. type: NestedObject properties: - name: 'table' type: String description: | Table name. required: true - name: 'postgresqlColumns' type: Array description: | PostgreSQL columns in the schema. When unspecified as part of include/exclude objects, includes/excludes everything. item_type: description: | PostgreSQL Column. type: NestedObject properties: - name: 'column' type: String description: | Column name. - name: 'dataType' type: String description: | The PostgreSQL data type. Full data types list can be found here: https://www.postgresql.org/docs/current/datatype.html - name: 'length' type: Integer description: | Column length. output: true - name: 'precision' type: Integer description: | Column precision. output: true - name: 'scale' type: Integer description: | Column scale. output: true - name: 'primaryKey' type: Boolean description: | Whether or not the column represents a primary key. - name: 'nullable' type: Boolean description: | Whether or not the column can accept a null value. - name: 'ordinalPosition' type: Integer description: | The ordinal position of the column in the table. min_size: 1 min_size: 1 min_size: 1 - name: 'oracleExcludedObjects' type: NestedObject description: | PostgreSQL data source objects to avoid backfilling. properties: - name: 'oracleSchemas' type: Array description: | Oracle schemas/databases in the database server required: true item_type: description: | MySQL database. type: NestedObject properties: - name: 'schema' type: String description: | Schema name. required: true - name: 'oracleTables' type: Array description: | Tables in the database. item_type: description: | Oracle table. type: NestedObject properties: - name: 'table' type: String description: | Table name. required: true - name: 'oracleColumns' type: Array description: | Oracle columns in the schema. When unspecified as part of include/exclude objects, includes/excludes everything. item_type: description: | Oracle Column. type: NestedObject properties: - name: 'column' type: String description: | Column name. - name: 'dataType' type: String description: | The Oracle data type. Full data types list can be found here: https://docs.oracle.com/en/database/oracle/oracle-database/21/sqlrf/Data-Types.html - name: 'length' type: Integer description: | Column length. output: true - name: 'precision' type: Integer description: | Column precision. output: true - name: 'scale' type: Integer description: | Column scale. output: true - name: 'encoding' type: String description: | Column encoding. output: true - name: 'primaryKey' type: Boolean description: | Whether or not the column represents a primary key. output: true - name: 'nullable' type: Boolean description: | Whether or not the column can accept a null value. output: true - name: 'ordinalPosition' type: Integer description: | The ordinal position of the column in the table. output: true min_size: 1 min_size: 1 min_size: 1 - name: 'sqlServerExcludedObjects' type: NestedObject description: | SQL Server data source objects to avoid backfilling. properties: - name: 'schemas' type: Array description: | SQL Server schemas/databases in the database server required: true item_type: description: | SQL Server database. type: NestedObject properties: - name: 'schema' type: String description: | Schema name. required: true - name: 'tables' type: Array description: | Tables in the database. item_type: description: | SQL Server table. type: NestedObject properties: - name: 'table' type: String description: | Table name. required: true - name: 'columns' type: Array description: | SQL Server columns in the schema. When unspecified as part of include/exclude objects, includes/excludes everything. item_type: description: | SQL Server Column. type: NestedObject properties: - name: 'column' type: String description: | Column name. - name: 'dataType' type: String description: | The SQL Server data type. Full data types list can be found here: https://learn.microsoft.com/en-us/sql/t-sql/data-types/data-types-transact-sql?view=sql-server-ver16 - name: 'length' type: Integer description: | Column length. output: true - name: 'precision' type: Integer description: | Column precision. output: true - name: 'scale' type: Integer description: | Column scale. output: true - name: 'primaryKey' type: Boolean description: | Whether or not the column represents a primary key. output: true - name: 'nullable' type: Boolean description: | Whether or not the column can accept a null value. output: true - name: 'ordinalPosition' type: Integer description: | The ordinal position of the column in the table. output: true min_size: 1 min_size: 1 min_size: 1 - name: 'salesforceExcludedObjects' type: NestedObject description: | Salesforce objects to avoid backfilling. properties: - name: 'objects' type: Array description: | Salesforce objects in Salesforce Org. required: true min_size: 1 item_type: description: | Salesforce objects. type: NestedObject properties: - name: 'objectName' type: String description: | Name of object in Salesforce Org. - name: 'fields' type: Array description: | Fields in the Salesforce object. When unspecified as part of include/exclude objects, includes/excludes everything/nothing. min_size: 1 item_type: description: | Salesforce field. type: NestedObject properties: - name: 'name' type: String description: | Field name. - name: 'backfillNone' type: NestedObject description: | Backfill strategy to disable automatic backfill for the Stream's objects. send_empty_value: true allow_empty_object: true exactly_one_of: - 'backfill_all' - 'backfill_none' properties: [] - name: 'customerManagedEncryptionKey' type: String description: | A reference to a KMS encryption key. If provided, it will be used to encrypt the data. If left blank, data will be encrypted using an internal Stream-specific encryption key provisioned through KMS. immutable: true