Boomi Data Integration API Reference (1.0.0) - DataFlows
Download OpenAPI Specification: Download
For more information about Postman collections, forking, and making your first API call, refer to the Working with Boomi APIs on Postman page.
List Data Flow Versions
Authorization scope: data flow:list
This endpoint returns all data flow versions for a given river_cross_id.
Authorizations:
path Parameters
| account_id required | string (Account Id) |
| environment_id required | string (Environment Id) |
| river_cross_id required | string (River Cross Id) |
query Parameters
| items_per_page | integer (Items Per Page) [ 1 .. 500 ] Default: 20 The number of items per page in the paginated list. |
| page | integer (Page) >= 1 Default: 1 The current page number in the paginated list. |
Responses
Response Schema: application/json
| current_page_size required | integer (Current Page Size) The current page size |
| account_id required | string (Account Id) The account id |
| environment_id required | string (Environment Id) The environment id |
required | object (RiverVersionsStats) River versions stats fields. |
required | Array of objects (Items) |
Next Page (string) or Next Page (null) (Next Page) The next page URL | |
Previous Page (string) or Previous Page (null) (Previous Page) The previous page URL | |
| page | integer (Page) Default: 1 The page number |
| total_items | integer (Total Items) Default: 0 The total number of entities fetched |
Response samples
- 200
- 422
{- "next_page": "string",
- "previous_page": "string",
- "page": 1,
- "current_page_size": 0,
- "total_items": 0,
- "account_id": "string",
- "environment_id": "string",
- "statistics": {
- "bookmarked_versions": 3,
- "bookmarks_allowed": 30,
- "total_versions": 3,
- "snapshot_versions": 2,
- "versions_allowed": 70
}, - "items": [
- {
- "account_id": "55fr7d4270fdca16cac18261",
- "user_info": {
- "user_name": "createdby_username",
- "user_email": "createdby@rivery.io"
}, - "environment_id": "55fr7d4270fdca16cac18261",
- "insert_date": "2022-08-02T13:38:44.054000",
- "version_id": "55fr7d4270fdca16cac18261",
- "previous_version": "55fr7d4270fdca16cac18261",
- "created_by": "55fr7d4270fdca16cac18261",
- "river_id": "55fr7d4270fdca16cac18261",
- "restored_by": "55fr7d4270fdca16cac18261",
- "restore_date": "2022-08-02T13:38:44.054000",
- "name": "river_version_name",
- "bookmarked": false
}
]
}Get Data Flow Version
Authorization scope: data flow:list
This endpoint returns a given version for a version id and river_cross_id.
Authorizations:
path Parameters
| account_id required | string (Account Id) |
| environment_id required | string (Environment Id) |
| river_cross_id required | string (River Cross Id) |
| version_id required | string (Version Id) |
Responses
Response Schema: application/json
| account_id required | string (Account Id) The account id of the river version |
| environment_id required | string (Environment Id) The environment id of the river version |
| insert_date required | string <date-time> (Insert Date) The insert date time of the river version in UTC timezone |
| version_id required | string (Version Id) The version id of the river version |
| created_by required | string (Created By) The creator id of the river version |
| river_id required | string (River Id) The river id of the river version |
required | LegacyRiverResponse (object) or RiverModel (object) (River) The definition of the river version |
UserInfo (object) or null Contains user name and user email information | |
Previous Version (string) or Previous Version (null) (Previous Version) The previous version id of the river version | |
Restored By (string) or Restored By (null) (Restored By) The restore id of the river version | |
Restore Date (string) or Restore Date (null) (Restore Date) The restore date time of the river version in UTC timezone | |
Name (string) or Name (null) (Name) Name of river version | |
| bookmarked | boolean (Bookmarked) Default: false Flag indicating whether the river version is bookmarked or not |
Response samples
- 200
- 422
{- "account_id": "55fr7d4270fdca16cac18261",
- "user_info": {
- "user_name": "createdby_username",
- "user_email": "createdby@rivery.io"
}, - "environment_id": "55fr7d4270fdca16cac18261",
- "insert_date": "2022-08-02T13:38:44.054000",
- "version_id": "55fr7d4270fdca16cac18261",
- "previous_version": "55fr7d4270fdca16cac18261",
- "created_by": "55fr7d4270fdca16cac18261",
- "river_id": "55fr7d4270fdca16cac18261",
- "restored_by": "55fr7d4270fdca16cac18261",
- "restore_date": "2022-08-02T13:38:44.054000",
- "name": "river_version_name",
- "bookmarked": false,
- "river": {
- "river definition": "some definition"
}
}Add Data Flow
Authorization scope: data flow:write
This endpoint creates a data flow.
📖 Instructions for usage
create_data_flow
Create a new source-to-target data flow.
Parameters
----------
name : Display name for the data flow.
source_name : Connector type for the source, as shown by list_connections —
e.g. mysql, postgresql, snowflake, salesforce, hubspot, facebook ads, tiktok.
Not an exhaustive list: new connectors are added regularly, so pass the type
of your connection even if it is not listed here. (blueprint / blueprint_custom
flows are created in the console, not here.)
source_connection_id : cross_id of the source connection (from list_connections).
target_name : Connector type for the target (same convention as source_name).
target_connection_id : cross_id of the target connection.
loading_method : How data is loaded into the target. Common values:
append, merge, replace. Defaults to "append".
target_settings : Optional dict with target-specific fields, e.g.:
{"database_name": "MY_DB", "schema_name": "PUBLIC", "table_name": "my_table"}
Required fields vary by target connector type.
Note: blueprint / blueprint_custom (recipe) sources are NOT supported here — create
those flows in the Boomi Data Integration console.
To see a real example of this object, list your data flows and GET a similar one — use its definition as a reference.
📚 Per-source request/response examples: https://bitbucket.org/boomii/data-integration-sources-examples/src/main/
Authorizations:
path Parameters
| account_id required | string (Account Id) |
| environment_id required | string (Environment Id) |
query Parameters
River Cross Id (string) or River Cross Id (null) (River Cross Id) |
Request Body schema: application/jsonrequired
| name required | string (Name) The name of the river. |
| type required | string (RiverTypeEnum) Enum: "source_to_target" "actions" "logic" "connector_executor" The type of river. |
required | object (RiverMetadata) An object containing river metadata. |
required | object (RiverSettings) An object containing river settings. |
required | any (Properties) The properties of a river. |
RiverKindEnum (string) or null Default: "main_river" The kind of the river. | |
Group Id (string) or Group Id (null) (Group Id) The id of the group the river belongs to. | |
Group Name (string) or Group Name (null) (Group Name) The name of the group the river belongs to. | |
Array of objects (Schedulers) [ 0 .. 1 ] items Default: [] An object containing the schedule settings. Currently support only one scheduler | |
Cross Id (string) or Cross Id (null) (Cross Id) The cross_id of the river to be deployed. | |
Deployment Definition (object) or Deployment Definition (null) (Deployment Definition) The deployment definition of the river to be deployed. | |
Account Id (string) or Account Id (null) (Account Id) The account id. | |
Environment Id (string) or Environment Id (null) (Environment Id) The environment id. | |
Environment Name (string) or Environment Name (null) (Environment Name) The name of the environment. |
Responses
Request samples
- Payload
{- "name": "river_name",
- "kind": "main_river",
- "type": "source_to_target",
- "group_id": "55fr7d4270fdca16cac18261",
- "group_name": "river_group_1",
- "metadata": {
- "description": "River 1 description",
- "river_status": "active"
}, - "settings": {
- "run_timeout_seconds": 43200,
- "notification": {
- "warning": {
- "email": "test@test.com",
- "is_enabled": true,
- "execution_time_limit_seconds": 43200
}, - "failure": {
- "email": "test@test.com",
- "is_enabled": true,
- "execution_time_limit_seconds": 43200
}, - "run_threshold": {
- "email": "test@test.com",
- "is_enabled": true,
- "execution_time_limit_seconds": 43200
}
}
}, - "properties": {
- "properties_type": "source_to_target",
- "source": {
- "name": "mysql",
- "connection_id": "5f4d3b3d9f9c8b0001f6b0e6",
- "connection_name": "Connection 1",
- "run_type": "predefined_report",
- "cdc_settings": {
- "default_tables_migration_option": "SKIP_INITIAL_MIGRATION",
- "include_snapshot_tables": true,
- "datasource_id": "mysql"
}, - "additional_settings": {
- "extract_method": "all"
}, - "custom_query_source_settings": {
- "query": "SELECT id, name FROM users WHERE active = true",
- "array_size": 1000,
- "exporter_chunk_size": 30000,
- "incremental_type": "datetime",
- "incremental_field": "created_at",
- "date_range": {
- "time_period": "custom",
- "start_date": "2020-12-01T00:00:00.000Z",
- "end_date": "2020-01-01T00:00:00.000Z",
- "days_back": 1,
- "include_end_value": true,
- "split_time_intervals": {
- "interval_size": 3,
- "time_interval": "days"
}, - "update_increment_on_failures": true,
- "utc_offset": -3,
- "round_up": true
}, - "running_number": {
- "include_end_value": true,
- "rows_in_chunk": 1000,
- "start_value": 1,
- "end_value": 100
}, - "epoch": {
- "start_value": 1727503847,
- "end_value": 1727590247,
- "include_end_value": true
}, - "row_version": {
- "include_end_value": true,
- "rows_in_chunk": 1000,
- "start_value": "version",
- "end_value": "version"
}, - "extract_method": "incremental"
}
}, - "target": {
- "name": "snowflake",
- "connection_id": "5f4d3b3d9f9c8b0001f6b0e6",
- "connection_name": "Connection 1",
- "single_table_settings": {
- "escape_character": "\\t",
- "match_keys": [
- "id",
- "username"
], - "mapping": [
- {
- "name": "id",
- "type": "INTEGER"
}
], - "sql_dialect": "standard",
- "split_tables": "no",
- "split_data": "a>3",
- "split_interval": "daily",
- "partition_type": "TIMESTAMP",
- "partition_granularity": "DAY",
- "distribution_method": "even"
}, - "table_name": "Table 1",
- "target_prefix": "start_at_",
- "is_ordered_merge_key": true,
- "order_expression": "id desc,createDate asc",
- "loading_method": "merge",
- "merge_method": "merge",
- "file_zone_settings": {
- "path": "my_path",
- "bucket_name": "my_bucket",
- "partitioned_kind": "by_day",
- "fz_loading_mode": "auto-period"
}, - "file_path_destination": "path/to/file",
- "additional_settings": {
- "key": "value"
}, - "database_name": "Database 1",
- "schema_name": "Schema 1"
}, - "schemas": [ ]
}, - "schedulers": [ ],
- "cross_id": "string",
- "deployment_definition": { },
- "account_id": "62e7f4352c13160013dc39be",
- "environment_id": "62e7f4352c13160013dc39be",
- "environment_name": "my_environment"
}Response samples
- 201
- 422
{- "cross_id": "62e7f4352c13160013dc39be",
- "account_id": "62e7f4352c13160013dc39be",
- "kind": "main_river",
- "type": "source_to_target",
- "name": "my_river",
- "environment_id": "62e7f4352c13160013dc39be",
- "environment_name": "my_environment",
- "group_id": "62e7f4352c13160013dc39be",
- "group_name": "my_group",
- "metadata": {
- "description": "River 1 description",
- "river_status": "active",
- "current_version_id": "5f4d3b3d9f9c8b0001f6b0e6",
- "created_by": "SomeUser",
- "last_updated_by": "SomeUser",
- "created_at": "2020-09-01T00:00:00Z",
- "last_updated_at": "2020-09-01T12:00:00.000Z",
- "is_deleted": false
}, - "properties": {
- "properties_type": "source_to_target",
- "source": {
- "name": "mysql",
- "connection_id": "5f4d3b3d9f9c8b0001f6b0e6",
- "connection_name": "Connection 1",
- "run_type": "predefined_report",
- "cdc_settings": {
- "default_tables_migration_option": "SKIP_INITIAL_MIGRATION",
- "include_snapshot_tables": true,
- "datasource_id": "mysql"
}, - "additional_settings": {
- "extract_method": "all"
}, - "custom_query_source_settings": {
- "query": "SELECT id, name FROM users WHERE active = true",
- "array_size": 1000,
- "exporter_chunk_size": 30000,
- "incremental_type": "datetime",
- "incremental_field": "created_at",
- "date_range": {
- "time_period": "custom",
- "start_date": "2020-12-01T00:00:00.000Z",
- "end_date": "2020-01-01T00:00:00.000Z",
- "days_back": 1,
- "include_end_value": true,
- "split_time_intervals": {
- "interval_size": 3,
- "time_interval": "days"
}, - "update_increment_on_failures": true,
- "utc_offset": -3,
- "round_up": true
}, - "running_number": {
- "include_end_value": true,
- "rows_in_chunk": 1000,
- "start_value": 1,
- "end_value": 100
}, - "epoch": {
- "start_value": 1727503847,
- "end_value": 1727590247,
- "include_end_value": true
}, - "row_version": {
- "include_end_value": true,
- "rows_in_chunk": 1000,
- "start_value": "version",
- "end_value": "version"
}, - "extract_method": "incremental"
}
}, - "target": {
- "name": "snowflake",
- "connection_id": "5f4d3b3d9f9c8b0001f6b0e6",
- "connection_name": "Connection 1",
- "single_table_settings": {
- "escape_character": "\\t",
- "match_keys": [
- "id",
- "username"
], - "mapping": [
- {
- "name": "id",
- "type": "INTEGER"
}
], - "sql_dialect": "standard",
- "split_tables": "no",
- "split_data": "a>3",
- "split_interval": "daily",
- "partition_type": "TIMESTAMP",
- "partition_granularity": "DAY",
- "distribution_method": "even"
}, - "table_name": "Table 1",
- "target_prefix": "start_at_",
- "is_ordered_merge_key": true,
- "order_expression": "id desc,createDate asc",
- "loading_method": "merge",
- "merge_method": "merge",
- "file_zone_settings": {
- "path": "my_path",
- "bucket_name": "my_bucket",
- "partitioned_kind": "by_day",
- "fz_loading_mode": "auto-period"
}, - "file_path_destination": "path/to/file",
- "additional_settings": {
- "key": "value"
}, - "database_name": "Database 1",
- "schema_name": "Schema 1"
}, - "schemas": [ ]
}, - "settings": {
- "run_timeout_seconds": 43200,
- "notification": {
- "warning": {
- "email": "test@test.com",
- "is_enabled": true,
- "execution_time_limit_seconds": 43200
}, - "failure": {
- "email": "test@test.com",
- "is_enabled": true,
- "execution_time_limit_seconds": 43200
}, - "run_threshold": {
- "email": "test@test.com",
- "is_enabled": true,
- "execution_time_limit_seconds": 43200
}
}
}, - "schedulers": [ ]
}List Data Flows
Authorization scope: data flow:list
This endpoint gets a summary of all the data flows in an environment
📖 Instructions for usage
list_data_flows
List data flows by name or status. Do NOT call this speculatively.
Before calling, ask the user what they want to do. You can:
- Run a data flow → ask for the name, then call list_data_flows(name=<name>)
- Check run status → ask which flow and use get_run / list_runs
- Create a new flow → use create_data_flow
- Update a flow → ask for the name, then get it and patch it
Always filter by name when the user mentions a specific flow.
Only list without a filter if the user explicitly asks to see all flows.
Returns items plus pagination metadata (total_items, page, has_next).
📚 Per-source request/response examples: https://bitbucket.org/boomii/data-integration-sources-examples/src/main/
Authorizations:
path Parameters
| account_id required | string (Account Id) |
| environment_id required | string (Environment Id) |
query Parameters
| page | integer (Page) >= 1 Default: 1 The current page number in the paginated list. |
| items_per_page | integer (Items Per Page) [ 1 .. 500 ] Default: 20 The number of items per page in the paginated list. |
Group Name (string) or Group Name (null) (Group Name) The river group name | |
Array of Group Id (strings) or Group Id (null) (Group Id) Examples: group_id=5f5b17b0a10e07a4ff4c33 The river group id | |
Name (string) or Name (null) (Name) The river name | |
RiverScheduleStatusEnum (string) or Schedule (null) (Schedule) The river schedule status | |
| river_status | Array of strings (River Status) Default: "" Items Enum: "active" "disabled" Examples: river_status=active The river status |
RiverInterfaceEnum (string) or Interface Type (null) (Interface Type) The rivers interface type | |
| include_deleted | boolean (Include Deleted) Default: false |
| sort_by | string (Sort By) Default: "last_updated_at" Enum: "last_updated_at" "source_name" "river_name" "group_name" "group_id" The river sort by filter |
| sort_order | string (Sort Order) Default: "desc" Enum: "desc" "asc" The river sort order filter |
(Array of River Type (RiverTypeInternalEnum (string) or RiverTypeEnum (string))) or River Type (null) (River Type) The river type |
Responses
Response Schema: application/json
| current_page_size required | integer (Current Page Size) The current page size |
| account_id required | string (Account Id) The account id |
| environment_id required | string (Environment Id) The environment id |
required | Array of objects (Items) |
Next Page (string) or Next Page (null) (Next Page) The next page URL | |
Previous Page (string) or Previous Page (null) (Previous Page) The previous page URL | |
| page | integer (Page) Default: 1 The page number |
| total_items | integer (Total Items) Default: 0 The total number of entities fetched |
Response samples
- 200
- 422
{- "next_page": "string",
- "previous_page": "string",
- "page": 1,
- "current_page_size": 0,
- "total_items": 0,
- "account_id": "string",
- "environment_id": "string",
- "items": [
- {
- "name": "river_name",
- "river_status": "active",
- "group_name": "river_group_1",
- "group_id": "62e7f4352c13160013dc39be",
- "river_schedulers": [
- "0 * * * *",
- "0 0 1 * *"
], - "datasource_id": "5f7d4270fdca16cac18261",
- "last_user_name_modified": "user_name",
- "river_cross_id": "5f7d4270fdca16cac18261",
- "last_updated_at": "2021-01-01T00:00:00.000Z",
- "description": "river_description",
- "is_api_v2": true,
- "river_type": "source_to_target",
- "created_at": "2021-01-01T00:00:00.000Z"
}
]
}Edit Data Flow
Authorization scope: data flow:write
This endpoint updates a data flow.
📖 Instructions for usage
update_data_flow, set_data_flow_source_tables, patch_data_flow
update_data_flow
Update an existing data flow. body must match the UpdateRiver API schema.
To add source tables, use set_data_flow_source_tables instead — it handles
the correct schema grouping automatically.
set_data_flow_source_tables
Set the source tables on a data flow by name.
Looks up the correct schema grouping from the connection and builds the
data flow schemas structure automatically. Use this instead of update_data_flow
when you want to select which tables to sync.
Note: this performs a GET-then-PUT with no locking. Concurrent calls on
the same data_flow_id will overwrite each other (last write wins).
Avoid calling this on the same data flow from multiple agents simultaneously.
Parameters
----------
data_flow_id : The data flow to update.
source_connection_id : The source connection cross_id (from list_connections).
table_names : ALL table/object names to sync on this data flow, e.g. ["Account", "Contact"].
Pass every table you want in one call — this replaces the entire table
selection. One data flow handles multiple tables; do not create a separate
data flow per table.
Names are matched case-insensitively against the connection's table list.
patch_data_flow
Partially update a data flow — only supply the fields you want to change.
Fetches the current data flow, deep-merges patch into it, then PUTs it back.
Much simpler than update_data_flow when you only want to change one or two fields.
IMPORTANT — lists are REPLACED, not merged. Do NOT use this to add or change
source tables (properties.schemas). Use set_data_flow_source_tables instead, which
handles table selection correctly and keeps all tables in one data flow.
Examples
--------
Change target schema only:
patch={"properties": {"target": {"schema_name": "PUBLIC"}}}
Rename the data flow:
patch={"name": "New Name"}
Note: GET-then-PUT with no locking — concurrent calls on the same data flow
will overwrite each other (last write wins).
📚 Per-source request/response examples: https://bitbucket.org/boomii/data-integration-sources-examples/src/main/
Authorizations:
path Parameters
| account_id required | string (Account Id) |
| environment_id required | string (Environment Id) |
| river_cross_id required | string (River Cross Id) |
Request Body schema: application/jsonrequired
| name required | string (Name) The name of the river. |
| type required | string (RiverTypeEnum) Enum: "source_to_target" "actions" "logic" "connector_executor" The type of river. |
required | object (RiverMetadata) An object containing river metadata. |
required | object (RiverSettings) An object containing river settings. |
required | any (Properties) The properties of a river. |
RiverKindEnum (string) or null Default: "main_river" The kind of the river. | |
Group Id (string) or Group Id (null) (Group Id) The id of the group the river belongs to. | |
Group Name (string) or Group Name (null) (Group Name) The name of the group the river belongs to. | |
Array of objects (Schedulers) [ 0 .. 1 ] items Default: [] An object containing the schedule settings. Currently support only one scheduler | |
Cross Id (string) or Cross Id (null) (Cross Id) The cross_id of the river to be deployed. | |
Deployment Definition (object) or Deployment Definition (null) (Deployment Definition) The deployment definition of the river to be deployed. | |
Account Id (string) or Account Id (null) (Account Id) The account id. | |
Environment Id (string) or Environment Id (null) (Environment Id) The environment id. | |
Environment Name (string) or Environment Name (null) (Environment Name) The name of the environment. |
Responses
Response Schema: application/json
| cross_id required | string (Cross Id) The river cross id. |
| account_id required | string (Account Id) The account id. |
| type required | string (RiverTypeEnum) Enum: "source_to_target" "actions" "logic" "connector_executor" The type of the river. |
| name required | string (Name) The name of the river. |
| environment_id required | string (Environment Id) The environment cross id. |
| environment_name required | string (Environment Name) The environment name. |
| group_id required | string (Group Id) The group id. |
| group_name required | string (Group Name) The group name. |
required | object (RiverMetadataExtended) The river metadata. |
required | any (Properties) The river properties, will change according to the river type. |
| kind | string (RiverKindEnum) Default: "main_river" Enum: "sub_river" "main_river" The kind of the river. |
RiverSettings (object) or null River settings. | |
Array of Schedulers (objects) or Schedulers (null) (Schedulers) Default: [] River schedulers. |
Request samples
- Payload
{- "name": "river_name",
- "kind": "main_river",
- "type": "source_to_target",
- "group_id": "55fr7d4270fdca16cac18261",
- "group_name": "river_group_1",
- "metadata": {
- "description": "River 1 description",
- "river_status": "active"
}, - "settings": {
- "run_timeout_seconds": 43200,
- "notification": {
- "warning": {
- "email": "test@test.com",
- "is_enabled": true,
- "execution_time_limit_seconds": 43200
}, - "failure": {
- "email": "test@test.com",
- "is_enabled": true,
- "execution_time_limit_seconds": 43200
}, - "run_threshold": {
- "email": "test@test.com",
- "is_enabled": true,
- "execution_time_limit_seconds": 43200
}
}
}, - "properties": {
- "properties_type": "source_to_target",
- "source": {
- "name": "mysql",
- "connection_id": "5f4d3b3d9f9c8b0001f6b0e6",
- "connection_name": "Connection 1",
- "run_type": "predefined_report",
- "cdc_settings": {
- "default_tables_migration_option": "SKIP_INITIAL_MIGRATION",
- "include_snapshot_tables": true,
- "datasource_id": "mysql"
}, - "additional_settings": {
- "extract_method": "all"
}, - "custom_query_source_settings": {
- "query": "SELECT id, name FROM users WHERE active = true",
- "array_size": 1000,
- "exporter_chunk_size": 30000,
- "incremental_type": "datetime",
- "incremental_field": "created_at",
- "date_range": {
- "time_period": "custom",
- "start_date": "2020-12-01T00:00:00.000Z",
- "end_date": "2020-01-01T00:00:00.000Z",
- "days_back": 1,
- "include_end_value": true,
- "split_time_intervals": {
- "interval_size": 3,
- "time_interval": "days"
}, - "update_increment_on_failures": true,
- "utc_offset": -3,
- "round_up": true
}, - "running_number": {
- "include_end_value": true,
- "rows_in_chunk": 1000,
- "start_value": 1,
- "end_value": 100
}, - "epoch": {
- "start_value": 1727503847,
- "end_value": 1727590247,
- "include_end_value": true
}, - "row_version": {
- "include_end_value": true,
- "rows_in_chunk": 1000,
- "start_value": "version",
- "end_value": "version"
}, - "extract_method": "incremental"
}
}, - "target": {
- "name": "snowflake",
- "connection_id": "5f4d3b3d9f9c8b0001f6b0e6",
- "connection_name": "Connection 1",
- "single_table_settings": {
- "escape_character": "\\t",
- "match_keys": [
- "id",
- "username"
], - "mapping": [
- {
- "name": "id",
- "type": "INTEGER"
}
], - "sql_dialect": "standard",
- "split_tables": "no",
- "split_data": "a>3",
- "split_interval": "daily",
- "partition_type": "TIMESTAMP",
- "partition_granularity": "DAY",
- "distribution_method": "even"
}, - "table_name": "Table 1",
- "target_prefix": "start_at_",
- "is_ordered_merge_key": true,
- "order_expression": "id desc,createDate asc",
- "loading_method": "merge",
- "merge_method": "merge",
- "file_zone_settings": {
- "path": "my_path",
- "bucket_name": "my_bucket",
- "partitioned_kind": "by_day",
- "fz_loading_mode": "auto-period"
}, - "file_path_destination": "path/to/file",
- "additional_settings": {
- "key": "value"
}, - "database_name": "Database 1",
- "schema_name": "Schema 1"
}, - "schemas": [ ]
}, - "schedulers": [ ],
- "cross_id": "string",
- "deployment_definition": { },
- "account_id": "62e7f4352c13160013dc39be",
- "environment_id": "62e7f4352c13160013dc39be",
- "environment_name": "my_environment"
}Response samples
- 200
- 422
{- "cross_id": "62e7f4352c13160013dc39be",
- "account_id": "62e7f4352c13160013dc39be",
- "kind": "main_river",
- "type": "source_to_target",
- "name": "my_river",
- "environment_id": "62e7f4352c13160013dc39be",
- "environment_name": "my_environment",
- "group_id": "62e7f4352c13160013dc39be",
- "group_name": "my_group",
- "metadata": {
- "description": "River 1 description",
- "river_status": "active",
- "current_version_id": "5f4d3b3d9f9c8b0001f6b0e6",
- "created_by": "SomeUser",
- "last_updated_by": "SomeUser",
- "created_at": "2020-09-01T00:00:00Z",
- "last_updated_at": "2020-09-01T12:00:00.000Z",
- "is_deleted": false
}, - "properties": {
- "properties_type": "source_to_target",
- "source": {
- "name": "mysql",
- "connection_id": "5f4d3b3d9f9c8b0001f6b0e6",
- "connection_name": "Connection 1",
- "run_type": "predefined_report",
- "cdc_settings": {
- "default_tables_migration_option": "SKIP_INITIAL_MIGRATION",
- "include_snapshot_tables": true,
- "datasource_id": "mysql"
}, - "additional_settings": {
- "extract_method": "all"
}, - "custom_query_source_settings": {
- "query": "SELECT id, name FROM users WHERE active = true",
- "array_size": 1000,
- "exporter_chunk_size": 30000,
- "incremental_type": "datetime",
- "incremental_field": "created_at",
- "date_range": {
- "time_period": "custom",
- "start_date": "2020-12-01T00:00:00.000Z",
- "end_date": "2020-01-01T00:00:00.000Z",
- "days_back": 1,
- "include_end_value": true,
- "split_time_intervals": {
- "interval_size": 3,
- "time_interval": "days"
}, - "update_increment_on_failures": true,
- "utc_offset": -3,
- "round_up": true
}, - "running_number": {
- "include_end_value": true,
- "rows_in_chunk": 1000,
- "start_value": 1,
- "end_value": 100
}, - "epoch": {
- "start_value": 1727503847,
- "end_value": 1727590247,
- "include_end_value": true
}, - "row_version": {
- "include_end_value": true,
- "rows_in_chunk": 1000,
- "start_value": "version",
- "end_value": "version"
}, - "extract_method": "incremental"
}
}, - "target": {
- "name": "snowflake",
- "connection_id": "5f4d3b3d9f9c8b0001f6b0e6",
- "connection_name": "Connection 1",
- "single_table_settings": {
- "escape_character": "\\t",
- "match_keys": [
- "id",
- "username"
], - "mapping": [
- {
- "name": "id",
- "type": "INTEGER"
}
], - "sql_dialect": "standard",
- "split_tables": "no",
- "split_data": "a>3",
- "split_interval": "daily",
- "partition_type": "TIMESTAMP",
- "partition_granularity": "DAY",
- "distribution_method": "even"
}, - "table_name": "Table 1",
- "target_prefix": "start_at_",
- "is_ordered_merge_key": true,
- "order_expression": "id desc,createDate asc",
- "loading_method": "merge",
- "merge_method": "merge",
- "file_zone_settings": {
- "path": "my_path",
- "bucket_name": "my_bucket",
- "partitioned_kind": "by_day",
- "fz_loading_mode": "auto-period"
}, - "file_path_destination": "path/to/file",
- "additional_settings": {
- "key": "value"
}, - "database_name": "Database 1",
- "schema_name": "Schema 1"
}, - "schemas": [ ]
}, - "settings": {
- "run_timeout_seconds": 43200,
- "notification": {
- "warning": {
- "email": "test@test.com",
- "is_enabled": true,
- "execution_time_limit_seconds": 43200
}, - "failure": {
- "email": "test@test.com",
- "is_enabled": true,
- "execution_time_limit_seconds": 43200
}, - "run_threshold": {
- "email": "test@test.com",
- "is_enabled": true,
- "execution_time_limit_seconds": 43200
}
}
}, - "schedulers": [ ]
}Delete Data Flow
Authorization scope: data flow:write
This endpoint deletes a data flow
📖 Instructions for usage
delete_data_flow
Delete a data flow.
The upstream DELETE returns an empty body on success; this returns
{"deleted": true, "data_flow_id": ...}. Deleting an ACTIVE flow returns a 400
(surfaced verbatim) — call disable_data_flow first, then delete. This never
force-deletes.
📚 Per-source request/response examples: https://bitbucket.org/boomii/data-integration-sources-examples/src/main/
Authorizations:
path Parameters
| account_id required | string (Account Id) |
| environment_id required | string (Environment Id) |
| river_cross_id required | string (River Cross Id) |
Responses
Response Schema: application/json
Response samples
- 200
- 422
nullGet Data Flow
Authorization scope: data flow:list
This endpoint gets a data flow.
📖 Instructions for usage
get_data_flow, set_data_flow_source_tables, run_data_flow, patch_data_flow
get_data_flow
Get full details of a data flow by its ID.
Note: only works for data flows created via the API (is_api_v2=true).
Data flows created in the Boomi Data Integration UI will return a 400 error.
Use list_data_flows to find data_flow_id values.
set_data_flow_source_tables
Set the source tables on a data flow by name.
Looks up the correct schema grouping from the connection and builds the
data flow schemas structure automatically. Use this instead of update_data_flow
when you want to select which tables to sync.
Note: this performs a GET-then-PUT with no locking. Concurrent calls on
the same data_flow_id will overwrite each other (last write wins).
Avoid calling this on the same data flow from multiple agents simultaneously.
Parameters
----------
data_flow_id : The data flow to update.
source_connection_id : The source connection cross_id (from list_connections).
table_names : ALL table/object names to sync on this data flow, e.g. ["Account", "Contact"].
Pass every table you want in one call — this replaces the entire table
selection. One data flow handles multiple tables; do not create a separate
data flow per table.
Names are matched case-insensitively against the connection's table list.
run_data_flow
Trigger an immediate run of a data flow.
By default returns instantly with the run_id (do NOT poll). Set wait=True to block
until the run reaches a terminal state (success/failed/cancelled) and return the
final run object — useful for tests/automation so you don't sleep blindly.
Before calling this, make sure ALL source tables are configured in a single
set_data_flow_source_tables call — one data flow syncs multiple tables in one run.
Common 400 causes:
- Data flow not yet activated: call activate_data_flow(wait=True) first.
- No source tables configured: call set_data_flow_source_tables first.
patch_data_flow
Partially update a data flow — only supply the fields you want to change.
Fetches the current data flow, deep-merges patch into it, then PUTs it back.
Much simpler than update_data_flow when you only want to change one or two fields.
IMPORTANT — lists are REPLACED, not merged. Do NOT use this to add or change
source tables (properties.schemas). Use set_data_flow_source_tables instead, which
handles table selection correctly and keeps all tables in one data flow.
Examples
--------
Change target schema only:
patch={"properties": {"target": {"schema_name": "PUBLIC"}}}
Rename the data flow:
patch={"name": "New Name"}
Note: GET-then-PUT with no locking — concurrent calls on the same data flow
will overwrite each other (last write wins).
📚 Per-source request/response examples: https://bitbucket.org/boomii/data-integration-sources-examples/src/main/
Authorizations:
path Parameters
| account_id required | string (Account Id) |
| environment_id required | string (Environment Id) |
| river_cross_id required | string (River Cross Id) |
Responses
Response Schema: application/json
| cross_id required | string (Cross Id) The river cross id. |
| account_id required | string (Account Id) The account id. |
| type required | string (RiverTypeEnum) Enum: "source_to_target" "actions" "logic" "connector_executor" The type of the river. |
| name required | string (Name) The name of the river. |
| environment_id required | string (Environment Id) The environment cross id. |
| environment_name required | string (Environment Name) The environment name. |
| group_id required | string (Group Id) The group id. |
| group_name required | string (Group Name) The group name. |
required | object (RiverMetadataExtended) The river metadata. |
required | any (Properties) The river properties, will change according to the river type. |
| kind | string (RiverKindEnum) Default: "main_river" Enum: "sub_river" "main_river" The kind of the river. |
RiverSettings (object) or null River settings. | |
Array of Schedulers (objects) or Schedulers (null) (Schedulers) Default: [] River schedulers. |
Response samples
- 200
- 422
{- "cross_id": "62e7f4352c13160013dc39be",
- "account_id": "62e7f4352c13160013dc39be",
- "kind": "main_river",
- "type": "source_to_target",
- "name": "my_river",
- "environment_id": "62e7f4352c13160013dc39be",
- "environment_name": "my_environment",
- "group_id": "62e7f4352c13160013dc39be",
- "group_name": "my_group",
- "metadata": {
- "description": "River 1 description",
- "river_status": "active",
- "current_version_id": "5f4d3b3d9f9c8b0001f6b0e6",
- "created_by": "SomeUser",
- "last_updated_by": "SomeUser",
- "created_at": "2020-09-01T00:00:00Z",
- "last_updated_at": "2020-09-01T12:00:00.000Z",
- "is_deleted": false
}, - "properties": {
- "properties_type": "source_to_target",
- "source": {
- "name": "mysql",
- "connection_id": "5f4d3b3d9f9c8b0001f6b0e6",
- "connection_name": "Connection 1",
- "run_type": "predefined_report",
- "cdc_settings": {
- "default_tables_migration_option": "SKIP_INITIAL_MIGRATION",
- "include_snapshot_tables": true,
- "datasource_id": "mysql"
}, - "additional_settings": {
- "extract_method": "all"
}, - "custom_query_source_settings": {
- "query": "SELECT id, name FROM users WHERE active = true",
- "array_size": 1000,
- "exporter_chunk_size": 30000,
- "incremental_type": "datetime",
- "incremental_field": "created_at",
- "date_range": {
- "time_period": "custom",
- "start_date": "2020-12-01T00:00:00.000Z",
- "end_date": "2020-01-01T00:00:00.000Z",
- "days_back": 1,
- "include_end_value": true,
- "split_time_intervals": {
- "interval_size": 3,
- "time_interval": "days"
}, - "update_increment_on_failures": true,
- "utc_offset": -3,
- "round_up": true
}, - "running_number": {
- "include_end_value": true,
- "rows_in_chunk": 1000,
- "start_value": 1,
- "end_value": 100
}, - "epoch": {
- "start_value": 1727503847,
- "end_value": 1727590247,
- "include_end_value": true
}, - "row_version": {
- "include_end_value": true,
- "rows_in_chunk": 1000,
- "start_value": "version",
- "end_value": "version"
}, - "extract_method": "incremental"
}
}, - "target": {
- "name": "snowflake",
- "connection_id": "5f4d3b3d9f9c8b0001f6b0e6",
- "connection_name": "Connection 1",
- "single_table_settings": {
- "escape_character": "\\t",
- "match_keys": [
- "id",
- "username"
], - "mapping": [
- {
- "name": "id",
- "type": "INTEGER"
}
], - "sql_dialect": "standard",
- "split_tables": "no",
- "split_data": "a>3",
- "split_interval": "daily",
- "partition_type": "TIMESTAMP",
- "partition_granularity": "DAY",
- "distribution_method": "even"
}, - "table_name": "Table 1",
- "target_prefix": "start_at_",
- "is_ordered_merge_key": true,
- "order_expression": "id desc,createDate asc",
- "loading_method": "merge",
- "merge_method": "merge",
- "file_zone_settings": {
- "path": "my_path",
- "bucket_name": "my_bucket",
- "partitioned_kind": "by_day",
- "fz_loading_mode": "auto-period"
}, - "file_path_destination": "path/to/file",
- "additional_settings": {
- "key": "value"
}, - "database_name": "Database 1",
- "schema_name": "Schema 1"
}, - "schemas": [ ]
}, - "settings": {
- "run_timeout_seconds": 43200,
- "notification": {
- "warning": {
- "email": "test@test.com",
- "is_enabled": true,
- "execution_time_limit_seconds": 43200
}, - "failure": {
- "email": "test@test.com",
- "is_enabled": true,
- "execution_time_limit_seconds": 43200
}, - "run_threshold": {
- "email": "test@test.com",
- "is_enabled": true,
- "execution_time_limit_seconds": 43200
}
}
}, - "schedulers": [ ]
}Copy Data Flow
Authorization scope: data flow:write
This endpoint creates a copy of a data flow
Authorizations:
path Parameters
| account_id required | string (Account Id) |
| environment_id required | string (Environment Id) |
| river_cross_id required | string (River Cross Id) |
Responses
Response samples
- 201
- 422
{- "details": "string",
- "cross_id": "62e7f4352c13160013dc39be"
}Restore Data Flow Version
Authorization scope: data flow:write
This endpoint restores a data flow to a specific version
Authorizations:
path Parameters
| account_id required | string (Account Id) |
| environment_id required | string (Environment Id) |
| river_cross_id required | string (River Cross Id) |
Request Body schema: application/jsonrequired
| version_id required | string (Version Id) The id of the version to restore. |
Responses
Response Schema: application/json
| cross_id required | string (Cross Id) The river cross id. |
| account_id required | string (Account Id) The account id. |
| type required | string (RiverTypeEnum) Enum: "source_to_target" "actions" "logic" "connector_executor" The type of the river. |
| name required | string (Name) The name of the river. |
| environment_id required | string (Environment Id) The environment cross id. |
| environment_name required | string (Environment Name) The environment name. |
| group_id required | string (Group Id) The group id. |
| group_name required | string (Group Name) The group name. |
required | object (RiverMetadataExtended) The river metadata. |
required | any (Properties) The river properties, will change according to the river type. |
| kind | string (RiverKindEnum) Default: "main_river" Enum: "sub_river" "main_river" The kind of the river. |
RiverSettings (object) or null River settings. | |
Array of Schedulers (objects) or Schedulers (null) (Schedulers) Default: [] River schedulers. |
Request samples
- Payload
{- "version_id": "5f7d4270fdca16cac18261"
}Response samples
- 200
- 422
{- "cross_id": "62e7f4352c13160013dc39be",
- "account_id": "62e7f4352c13160013dc39be",
- "kind": "main_river",
- "type": "source_to_target",
- "name": "my_river",
- "environment_id": "62e7f4352c13160013dc39be",
- "environment_name": "my_environment",
- "group_id": "62e7f4352c13160013dc39be",
- "group_name": "my_group",
- "metadata": {
- "description": "River 1 description",
- "river_status": "active",
- "current_version_id": "5f4d3b3d9f9c8b0001f6b0e6",
- "created_by": "SomeUser",
- "last_updated_by": "SomeUser",
- "created_at": "2020-09-01T00:00:00Z",
- "last_updated_at": "2020-09-01T12:00:00.000Z",
- "is_deleted": false
}, - "properties": {
- "properties_type": "source_to_target",
- "source": {
- "name": "mysql",
- "connection_id": "5f4d3b3d9f9c8b0001f6b0e6",
- "connection_name": "Connection 1",
- "run_type": "predefined_report",
- "cdc_settings": {
- "default_tables_migration_option": "SKIP_INITIAL_MIGRATION",
- "include_snapshot_tables": true,
- "datasource_id": "mysql"
}, - "additional_settings": {
- "extract_method": "all"
}, - "custom_query_source_settings": {
- "query": "SELECT id, name FROM users WHERE active = true",
- "array_size": 1000,
- "exporter_chunk_size": 30000,
- "incremental_type": "datetime",
- "incremental_field": "created_at",
- "date_range": {
- "time_period": "custom",
- "start_date": "2020-12-01T00:00:00.000Z",
- "end_date": "2020-01-01T00:00:00.000Z",
- "days_back": 1,
- "include_end_value": true,
- "split_time_intervals": {
- "interval_size": 3,
- "time_interval": "days"
}, - "update_increment_on_failures": true,
- "utc_offset": -3,
- "round_up": true
}, - "running_number": {
- "include_end_value": true,
- "rows_in_chunk": 1000,
- "start_value": 1,
- "end_value": 100
}, - "epoch": {
- "start_value": 1727503847,
- "end_value": 1727590247,
- "include_end_value": true
}, - "row_version": {
- "include_end_value": true,
- "rows_in_chunk": 1000,
- "start_value": "version",
- "end_value": "version"
}, - "extract_method": "incremental"
}
}, - "target": {
- "name": "snowflake",
- "connection_id": "5f4d3b3d9f9c8b0001f6b0e6",
- "connection_name": "Connection 1",
- "single_table_settings": {
- "escape_character": "\\t",
- "match_keys": [
- "id",
- "username"
], - "mapping": [
- {
- "name": "id",
- "type": "INTEGER"
}
], - "sql_dialect": "standard",
- "split_tables": "no",
- "split_data": "a>3",
- "split_interval": "daily",
- "partition_type": "TIMESTAMP",
- "partition_granularity": "DAY",
- "distribution_method": "even"
}, - "table_name": "Table 1",
- "target_prefix": "start_at_",
- "is_ordered_merge_key": true,
- "order_expression": "id desc,createDate asc",
- "loading_method": "merge",
- "merge_method": "merge",
- "file_zone_settings": {
- "path": "my_path",
- "bucket_name": "my_bucket",
- "partitioned_kind": "by_day",
- "fz_loading_mode": "auto-period"
}, - "file_path_destination": "path/to/file",
- "additional_settings": {
- "key": "value"
}, - "database_name": "Database 1",
- "schema_name": "Schema 1"
}, - "schemas": [ ]
}, - "settings": {
- "run_timeout_seconds": 43200,
- "notification": {
- "warning": {
- "email": "test@test.com",
- "is_enabled": true,
- "execution_time_limit_seconds": 43200
}, - "failure": {
- "email": "test@test.com",
- "is_enabled": true,
- "execution_time_limit_seconds": 43200
}, - "run_threshold": {
- "email": "test@test.com",
- "is_enabled": true,
- "execution_time_limit_seconds": 43200
}
}
}, - "schedulers": [ ]
}Enable Cdc
Authorization scope: data flow:write
This endpoint enables the CDC extraction for a CDC data flow.
Authorizations:
path Parameters
| account_id required | string (Account Id) |
| environment_id required | string (Environment Id) |
| river_cross_id required | string (River Cross Id) |
Responses
Response samples
- 202
- 422
{- "operation_id": "62e7f4352c13160013dc39be",
- "operation_type": "dataframe",
- "run_id": "5cbc6bbbc90a4658b00c70a3bb0f3b31",
- "last_update_date": "2022-08-02T13:38:44.054000",
- "status": "D",
- "result": "true",
- "error_message": "[RVR-QBK-003]: Response value error: Missing Rows/Columns"
}Disable Cdc
Authorization scope: data flow:write
This endpoint disables the CDC extraction for a CDC data flow.
Authorizations:
path Parameters
| account_id required | string (Account Id) |
| environment_id required | string (Environment Id) |
| river_cross_id required | string (River Cross Id) |
Responses
Response samples
- 202
- 422
{- "operation_id": "62e7f4352c13160013dc39be",
- "operation_type": "dataframe",
- "run_id": "5cbc6bbbc90a4658b00c70a3bb0f3b31",
- "last_update_date": "2022-08-02T13:38:44.054000",
- "status": "D",
- "result": "true",
- "error_message": "[RVR-QBK-003]: Response value error: Missing Rows/Columns"
}Get Cdc Config
Authorization scope: data flow:list
This endpoint gets the cdc config: *** Gets cdc offset by provided datasource type to see the last position of the cdc** *** For SQL Server LSN offsets, if a dictionary of LSNs is provided, returns the minimum LSN value**
Raises: HTTPException: 400 if no offsets found INTERNAL_SERVICE_ERROR_EXCEPTION: For all other errors (including invalid LSN format, Pydantic validation errors, etc.). Error details will be logged.
Authorizations:
path Parameters
| account_id required | string (Account Id) |
| environment_id required | string (Environment Id) |
| river_cross_id required | string (River Cross Id) |
Responses
Response Schema: application/json
required | any (Config) | ||||||
| |||||||
Response samples
- 200
- 422
{- "config": {
- "last_updated": "2026-06-24T19:14:52.768867Z",
- "datasource_type": "mysql",
- "binlog_file": "mysql-bin-changelog.000931",
- "binlog_position": "515820321",
- "gtid": "51d431b9-585e-11ed-9222-022d1416c792:1-34,7e0646d8-b3e4-11eb-a15e-0a47d4c912dc:1-21343,8937b67f-3ab2-11ea-9bc9-0ad74248f0fe:1-5182243242,c23585e8-579a-11ed-83e3-0a47d4c912dc:1-12"
}
}Delete Cdc Config
Authorization scope: data flow:write
This endpoint delete the cdc config:
Authorizations:
path Parameters
| account_id required | string (Account Id) |
| environment_id required | string (Environment Id) |
| river_cross_id required | string (River Cross Id) |
Responses
Response Schema: application/json
Response samples
- 200
- 422
nullSet Cdc Config
Authorization scope: data flow:write
This endpoint set the cdc config:
*** Set the cdc offset that next run of the data flow can continue from specific position**
Authorizations:
path Parameters
| account_id required | string (Account Id) |
| environment_id required | string (Environment Id) |
| river_cross_id required | string (River Cross Id) |
Request Body schema: application/jsonrequired
required | any (Config) | ||||||
| |||||||
Responses
Response Schema: application/json
Request samples
- Payload
{- "config": {
- "last_updated": "2026-06-24T19:14:52.768867Z",
- "datasource_type": "mysql",
- "binlog_file": "mysql-bin-changelog.000931",
- "binlog_position": "515820321",
- "gtid": "51d431b9-585e-11ed-9222-022d1416c792:1-34,7e0646d8-b3e4-11eb-a15e-0a47d4c912dc:1-21343,8937b67f-3ab2-11ea-9bc9-0ad74248f0fe:1-5182243242,c23585e8-579a-11ed-83e3-0a47d4c912dc:1-12"
}
}Response samples
- 200
- 422
nullActivate Data Flow
Authorization scope: data flow:write
This endpoint activates a data flow for allowing it to run.
📖 Instructions for usage
activate_data_flow
Activate (schedule) a data flow so it runs on its configured schedule.
Set wait=True to block until activation completes or fails — eliminates
the need to manually call get_operation in a loop.
Returns the final operation status when wait=True.
📚 Per-source request/response examples: https://bitbucket.org/boomii/data-integration-sources-examples/src/main/
Authorizations:
path Parameters
| account_id required | string (Account Id) |
| environment_id required | string (Environment Id) |
| river_cross_id required | string (River Cross Id) |
Responses
Response samples
- 202
- 422
{- "operation_id": "62e7f4352c13160013dc39be",
- "operation_type": "dataframe",
- "run_id": "5cbc6bbbc90a4658b00c70a3bb0f3b31",
- "last_update_date": "2022-08-02T13:38:44.054000",
- "status": "D",
- "result": "true",
- "error_message": "[RVR-QBK-003]: Response value error: Missing Rows/Columns"
}Disable Data Flow
Authorization scope: data flow:write
This endpoint disables a data flow to forbid it from running.
📖 Instructions for usage
disable_data_flow
Disable (pause) a data flow's schedule without deleting it.
Returns {"disabled": true, "data_flow_id": ...} (the upstream may return an empty body).
📚 Per-source request/response examples: https://bitbucket.org/boomii/data-integration-sources-examples/src/main/
Authorizations:
path Parameters
| account_id required | string (Account Id) |
| environment_id required | string (Environment Id) |
| river_cross_id required | string (River Cross Id) |
Responses
Response samples
- 202
- 422
{- "operation_id": "62e7f4352c13160013dc39be",
- "operation_type": "dataframe",
- "run_id": "5cbc6bbbc90a4658b00c70a3bb0f3b31",
- "last_update_date": "2022-08-02T13:38:44.054000",
- "status": "D",
- "result": "true",
- "error_message": "[RVR-QBK-003]: Response value error: Missing Rows/Columns"
}Data Flows Search
Authorization scope: data flow:list
This endpoint searches for data flows for a specific account_id and environment_id, pagination is supported
Authorizations:
path Parameters
| account_id required | string (Account Id) |
| environment_id required | string (Environment Id) |
query Parameters
| page | integer (Page) >= 1 Default: 1 The current page number in the paginated list. |
| items_per_page | integer (Items Per Page) [ 1 .. 500 ] Default: 20 The number of items per page in the paginated list. |
Array of Group Id (strings) or Group Id (null) (Group Id) Examples: group_id=5f5b17b0a10e07a4ff4c33 The river group id | |
RiverScheduleStatusEnum (string) or Schedule (null) (Schedule) The river schedule status | |
RiverSearchStatusEnum (string) or River Status (null) (River Status) The river status | |
RiverInterfaceEnum (string) or Interface Type (null) (Interface Type) Classic or API V2 | |
| sort_by | string (Sort By) Default: "river_date_updated" Enum: "river_date_updated" "group_name" "river_name" The river sort by filter |
| sort_order | string (Sort Order) Default: "desc" Enum: "desc" "asc" The river sort order filter |
| search_query | string (Search Query) |
| name | string (Name) |
(Array of River Type (RiverTypeInternalEnum (string) or RiverTypeEnum (string))) or River Type (null) (River Type) The river type |
Responses
Response Schema: application/json
| current_page_size required | integer (Current Page Size) The current page size |
| account_id required | string (Account Id) The account id |
| environment_id required | string (Environment Id) The environment id |
required | Array of objects (Items) The list of rivers. |
| items_per_page required | integer (Items Per Page) The number of items per page. |
| request required | any (Request) the original search request |
Next Page (string) or Next Page (null) (Next Page) The next page URL | |
Previous Page (string) or Previous Page (null) (Previous Page) The previous page URL | |
| page | integer (Page) Default: 1 The page number |
| total_items | integer (Total Items) Default: 0 The total number of entities fetched |
Response samples
- 200
- 422
{- "next_page": "string",
- "previous_page": "string",
- "page": 1,
- "current_page_size": 0,
- "total_items": 0,
- "account_id": "string",
- "environment_id": "string",
- "items": [
- {
- "name": "river_name",
- "river_status": "active",
- "group_name": "river_group_1",
- "group_id": "62e7f4352c13160013dc39be",
- "river_schedulers": [
- "0 * * * *",
- "0 0 1 * *"
], - "datasource_id": "mysql",
- "target_type": "snowflake",
- "last_user_name_modified": "user_name",
- "river_cross_id": "5f7d4270fdca16cac18261",
- "last_updated_at": "2021-01-01T00:00:00.000Z",
- "description": "CDC River MySql -> Snowflake to be used by the BI team",
- "is_api_v2": true,
- "river_type": "source_to_target",
- "created_at": "2021-01-01T00:00:00.000Z",
- "source_task_connection_name": "connection_name",
- "match_reason": "river_name=river1",
- "suspended": {
- "notification_date": "2025-01-01T00:00:00",
- "suspension_date": "2025-01-08T00:00:00"
}
}
], - "items_per_page": 0,
- "request": null
}Cancel Data Flow Run
Authorization scope: data flow:execute
This endpoint cancels a specific run if run_id is provided or multiple runs if run_group_id is provided.
Authorizations:
path Parameters
| account_id required | string (Account Id) |
| environment_id required | string (Environment Id) |
| river_cross_id required | string (River Cross Id) |
Request Body schema: application/jsonrequired
Run Id (string) or Run Id (null) (Run Id) The run_id to cancel. | |
Run Group Id (string) or Run Group Id (null) (Run Group Id) The run_group_id to cancel. Use this field when you want to cancel multiple tables or sub rivers |
Responses
Request samples
- Payload
{- "run_id": "string",
- "run_group_id": "string"
}Response samples
- 202
- 422
{- "details": "string"
}Run Data Flow
Authorization scope: data flow:execute
This endpoint runs a data flow.
Throttling rules: *** Data Flow can be executed up to 2 times per minute** *** Each user can execute a data flow up to 15 times per minute**
📖 Instructions for usage
run_data_flow
Trigger an immediate run of a data flow.
By default returns instantly with the run_id (do NOT poll). Set wait=True to block
until the run reaches a terminal state (success/failed/cancelled) and return the
final run object — useful for tests/automation so you don't sleep blindly.
Before calling this, make sure ALL source tables are configured in a single
set_data_flow_source_tables call — one data flow syncs multiple tables in one run.
Common 400 causes:
- Data flow not yet activated: call activate_data_flow(wait=True) first.
- No source tables configured: call set_data_flow_source_tables first.
📚 Per-source request/response examples: https://bitbucket.org/boomii/data-integration-sources-examples/src/main/
Authorizations:
path Parameters
| account_id required | string (Account Id) |
| environment_id required | string (Environment Id) |
| river_cross_id required | string (River Cross Id) |
query Parameters
| run_sub_rivers | boolean (Run Sub Rivers) Default: false A flag that indicates whether to run all active sub rivers of the master river |
Responses
Response samples
- 202
- 422
{- "runs": [
- {
- "sub_river_id": "62e7f4352c13160013dc39be",
- "run_id": "1f1468d097754cd8892468c2763ebfe8",
- "status": "pending",
- "message": "The river is already in progress."
}
], - "river_cross_id": "string",
- "run_group_id": "string"
}Run Sub Data Flow
Authorization scope: data flow:execute
This endpoint runs a sub_river.
Authorizations:
path Parameters
| account_id required | string (Account Id) |
| environment_id required | string (Environment Id) |
| river_cross_id required | string (River Cross Id) |
| sub_river_id required | string (Sub River Id) |
Responses
Response samples
- 202
- 422
{- "runs": [
- {
- "sub_river_id": "62e7f4352c13160013dc39be",
- "run_id": "1f1468d097754cd8892468c2763ebfe8",
- "status": "pending",
- "message": "The river is already in progress."
}
], - "river_cross_id": "string",
- "run_group_id": "string"
}Update Data Flow Variable
Authorization scope: data flow:write
This endpoint updates a variable for a data flow. Given a list of variables, it will replace all existing variables for the logic data flow with the provided list.
Authorizations:
path Parameters
| river_cross_id required | string (River Cross Id) |
| account_id required | string (Account Id) |
| environment_id required | string (Environment Id) |
query Parameters
| items_per_page | integer (Items Per Page) [ 1 .. 500 ] Default: 20 The number of items per page in the paginated list. |
| page | integer (Page) >= 1 Default: 1 The current page number in the paginated list. |
Request Body schema: application/jsonrequired
required | Array of objects (Items) | ||||||
Array
| |||||||
Responses
Response Schema: application/json
| current_page_size required | integer (Current Page Size) The current page size |
| account_id required | string (Account Id) The account id |
| environment_id required | string (Environment Id) The environment id |
required | Array of objects (Items) |
Next Page (string) or Next Page (null) (Next Page) The next page URL | |
Previous Page (string) or Previous Page (null) (Previous Page) The previous page URL | |
| page | integer (Page) Default: 1 The page number |
| total_items | integer (Total Items) Default: 0 The total number of entities fetched |
Request samples
- Payload
{- "items": [
- {
- "name": "credentials",
- "settings": {
- "clear_value_on_start": true,
- "is_encrypted": false,
- "is_multi_value": false
}, - "value": "1234"
}
]
}Response samples
- 200
- 422
{- "next_page": "string",
- "previous_page": "string",
- "page": 1,
- "current_page_size": 0,
- "total_items": 0,
- "account_id": "string",
- "environment_id": "string",
- "items": [
- {
- "account": "55fr7d4270fdca16cac18261",
- "env_id": "55fr7d4270fdca16cac18261",
- "river_id": "55fr7d4270fdca16cac18261",
- "name": "credentials",
- "settings": {
- "clear_value_on_start": true,
- "is_encrypted": false,
- "is_multi_value": false,
- "is_private": false
}, - "value": "1234"
}
]
}Get Data Flow Variables
Authorization scope: data flow:list
Get all data flow variables
Authorizations:
path Parameters
| account_id required | string (Account Id) |
| environment_id required | string (Environment Id) |
| river_cross_id required | string (River Cross Id) |
query Parameters
| items_per_page | integer (Items Per Page) [ 1 .. 500 ] Default: 20 The number of items per page in the paginated list. |
| page | integer (Page) >= 1 Default: 1 The current page number in the paginated list. |
Responses
Response Schema: application/json
| current_page_size required | integer (Current Page Size) The current page size |
| account_id required | string (Account Id) The account id |
| environment_id required | string (Environment Id) The environment id |
required | Array of objects (Items) |
Next Page (string) or Next Page (null) (Next Page) The next page URL | |
Previous Page (string) or Previous Page (null) (Previous Page) The previous page URL | |
| page | integer (Page) Default: 1 The page number |
| total_items | integer (Total Items) Default: 0 The total number of entities fetched |
Response samples
- 200
- 422
{- "next_page": "string",
- "previous_page": "string",
- "page": 1,
- "current_page_size": 0,
- "total_items": 0,
- "account_id": "string",
- "environment_id": "string",
- "items": [
- {
- "account": "55fr7d4270fdca16cac18261",
- "env_id": "55fr7d4270fdca16cac18261",
- "river_id": "55fr7d4270fdca16cac18261",
- "name": "credentials",
- "settings": {
- "clear_value_on_start": true,
- "is_encrypted": false,
- "is_multi_value": false,
- "is_private": false
}, - "value": "1234"
}
]
}Add Data Flow
Authorization scope: data flow:write
This endpoint creates a data flow.
📖 Instructions for usage
create_data_flow
Create a new source-to-target data flow.
Parameters
----------
name : Display name for the data flow.
source_name : Connector type for the source, as shown by list_connections —
e.g. mysql, postgresql, snowflake, salesforce, hubspot, facebook ads, tiktok.
Not an exhaustive list: new connectors are added regularly, so pass the type
of your connection even if it is not listed here. (blueprint / blueprint_custom
flows are created in the console, not here.)
source_connection_id : cross_id of the source connection (from list_connections).
target_name : Connector type for the target (same convention as source_name).
target_connection_id : cross_id of the target connection.
loading_method : How data is loaded into the target. Common values:
append, merge, replace. Defaults to "append".
target_settings : Optional dict with target-specific fields, e.g.:
{"database_name": "MY_DB", "schema_name": "PUBLIC", "table_name": "my_table"}
Required fields vary by target connector type.
Note: blueprint / blueprint_custom (recipe) sources are NOT supported here — create
those flows in the Boomi Data Integration console.
To see a real example of this object, list your data flows and GET a similar one — use its definition as a reference.
📚 Per-source request/response examples: https://bitbucket.org/boomii/data-integration-sources-examples/src/main/
Authorizations:
path Parameters
| account_id required | string (Account Id) |
| environment_id required | string (Environment Id) |
query Parameters
River Cross Id (string) or River Cross Id (null) (River Cross Id) |
Request Body schema: application/jsonrequired
| name required | string (Name) The name of the river. |
| type required | string (RiverTypeEnum) Enum: "source_to_target" "actions" "logic" "connector_executor" The type of river. |
required | object (RiverMetadata) An object containing river metadata. |
required | object (RiverSettings) An object containing river settings. |
required | any (Properties) The properties of a river. |
RiverKindEnum (string) or null Default: "main_river" The kind of the river. | |
Group Id (string) or Group Id (null) (Group Id) The id of the group the river belongs to. | |
Group Name (string) or Group Name (null) (Group Name) The name of the group the river belongs to. | |
Array of objects (Schedulers) [ 0 .. 1 ] items Default: [] An object containing the schedule settings. Currently support only one scheduler | |
Cross Id (string) or Cross Id (null) (Cross Id) The cross_id of the river to be deployed. | |
Deployment Definition (object) or Deployment Definition (null) (Deployment Definition) The deployment definition of the river to be deployed. | |
Account Id (string) or Account Id (null) (Account Id) The account id. | |
Environment Id (string) or Environment Id (null) (Environment Id) The environment id. | |
Environment Name (string) or Environment Name (null) (Environment Name) The name of the environment. |
Responses
Request samples
- Payload
{- "name": "river_name",
- "kind": "main_river",
- "type": "source_to_target",
- "group_id": "55fr7d4270fdca16cac18261",
- "group_name": "river_group_1",
- "metadata": {
- "description": "River 1 description",
- "river_status": "active"
}, - "settings": {
- "run_timeout_seconds": 43200,
- "notification": {
- "warning": {
- "email": "test@test.com",
- "is_enabled": true,
- "execution_time_limit_seconds": 43200
}, - "failure": {
- "email": "test@test.com",
- "is_enabled": true,
- "execution_time_limit_seconds": 43200
}, - "run_threshold": {
- "email": "test@test.com",
- "is_enabled": true,
- "execution_time_limit_seconds": 43200
}
}
}, - "properties": {
- "properties_type": "source_to_target",
- "source": {
- "name": "mysql",
- "connection_id": "5f4d3b3d9f9c8b0001f6b0e6",
- "connection_name": "Connection 1",
- "run_type": "predefined_report",
- "cdc_settings": {
- "default_tables_migration_option": "SKIP_INITIAL_MIGRATION",
- "include_snapshot_tables": true,
- "datasource_id": "mysql"
}, - "additional_settings": {
- "extract_method": "all"
}, - "custom_query_source_settings": {
- "query": "SELECT id, name FROM users WHERE active = true",
- "array_size": 1000,
- "exporter_chunk_size": 30000,
- "incremental_type": "datetime",
- "incremental_field": "created_at",
- "date_range": {
- "time_period": "custom",
- "start_date": "2020-12-01T00:00:00.000Z",
- "end_date": "2020-01-01T00:00:00.000Z",
- "days_back": 1,
- "include_end_value": true,
- "split_time_intervals": {
- "interval_size": 3,
- "time_interval": "days"
}, - "update_increment_on_failures": true,
- "utc_offset": -3,
- "round_up": true
}, - "running_number": {
- "include_end_value": true,
- "rows_in_chunk": 1000,
- "start_value": 1,
- "end_value": 100
}, - "epoch": {
- "start_value": 1727503847,
- "end_value": 1727590247,
- "include_end_value": true
}, - "row_version": {
- "include_end_value": true,
- "rows_in_chunk": 1000,
- "start_value": "version",
- "end_value": "version"
}, - "extract_method": "incremental"
}
}, - "target": {
- "name": "snowflake",
- "connection_id": "5f4d3b3d9f9c8b0001f6b0e6",
- "connection_name": "Connection 1",
- "single_table_settings": {
- "escape_character": "\\t",
- "match_keys": [
- "id",
- "username"
], - "mapping": [
- {
- "name": "id",
- "type": "INTEGER"
}
], - "sql_dialect": "standard",
- "split_tables": "no",
- "split_data": "a>3",
- "split_interval": "daily",
- "partition_type": "TIMESTAMP",
- "partition_granularity": "DAY",
- "distribution_method": "even"
}, - "table_name": "Table 1",
- "target_prefix": "start_at_",
- "is_ordered_merge_key": true,
- "order_expression": "id desc,createDate asc",
- "loading_method": "merge",
- "merge_method": "merge",
- "file_zone_settings": {
- "path": "my_path",
- "bucket_name": "my_bucket",
- "partitioned_kind": "by_day",
- "fz_loading_mode": "auto-period"
}, - "file_path_destination": "path/to/file",
- "additional_settings": {
- "key": "value"
}, - "database_name": "Database 1",
- "schema_name": "Schema 1"
}, - "schemas": [ ]
}, - "schedulers": [ ],
- "cross_id": "string",
- "deployment_definition": { },
- "account_id": "62e7f4352c13160013dc39be",
- "environment_id": "62e7f4352c13160013dc39be",
- "environment_name": "my_environment"
}Response samples
- 201
- 422
{- "cross_id": "62e7f4352c13160013dc39be",
- "account_id": "62e7f4352c13160013dc39be",
- "kind": "main_river",
- "type": "source_to_target",
- "name": "my_river",
- "environment_id": "62e7f4352c13160013dc39be",
- "environment_name": "my_environment",
- "group_id": "62e7f4352c13160013dc39be",
- "group_name": "my_group",
- "metadata": {
- "description": "River 1 description",
- "river_status": "active",
- "current_version_id": "5f4d3b3d9f9c8b0001f6b0e6",
- "created_by": "SomeUser",
- "last_updated_by": "SomeUser",
- "created_at": "2020-09-01T00:00:00Z",
- "last_updated_at": "2020-09-01T12:00:00.000Z",
- "is_deleted": false
}, - "properties": {
- "properties_type": "source_to_target",
- "source": {
- "name": "mysql",
- "connection_id": "5f4d3b3d9f9c8b0001f6b0e6",
- "connection_name": "Connection 1",
- "run_type": "predefined_report",
- "cdc_settings": {
- "default_tables_migration_option": "SKIP_INITIAL_MIGRATION",
- "include_snapshot_tables": true,
- "datasource_id": "mysql"
}, - "additional_settings": {
- "extract_method": "all"
}, - "custom_query_source_settings": {
- "query": "SELECT id, name FROM users WHERE active = true",
- "array_size": 1000,
- "exporter_chunk_size": 30000,
- "incremental_type": "datetime",
- "incremental_field": "created_at",
- "date_range": {
- "time_period": "custom",
- "start_date": "2020-12-01T00:00:00.000Z",
- "end_date": "2020-01-01T00:00:00.000Z",
- "days_back": 1,
- "include_end_value": true,
- "split_time_intervals": {
- "interval_size": 3,
- "time_interval": "days"
}, - "update_increment_on_failures": true,
- "utc_offset": -3,
- "round_up": true
}, - "running_number": {
- "include_end_value": true,
- "rows_in_chunk": 1000,
- "start_value": 1,
- "end_value": 100
}, - "epoch": {
- "start_value": 1727503847,
- "end_value": 1727590247,
- "include_end_value": true
}, - "row_version": {
- "include_end_value": true,
- "rows_in_chunk": 1000,
- "start_value": "version",
- "end_value": "version"
}, - "extract_method": "incremental"
}
}, - "target": {
- "name": "snowflake",
- "connection_id": "5f4d3b3d9f9c8b0001f6b0e6",
- "connection_name": "Connection 1",
- "single_table_settings": {
- "escape_character": "\\t",
- "match_keys": [
- "id",
- "username"
], - "mapping": [
- {
- "name": "id",
- "type": "INTEGER"
}
], - "sql_dialect": "standard",
- "split_tables": "no",
- "split_data": "a>3",
- "split_interval": "daily",
- "partition_type": "TIMESTAMP",
- "partition_granularity": "DAY",
- "distribution_method": "even"
}, - "table_name": "Table 1",
- "target_prefix": "start_at_",
- "is_ordered_merge_key": true,
- "order_expression": "id desc,createDate asc",
- "loading_method": "merge",
- "merge_method": "merge",
- "file_zone_settings": {
- "path": "my_path",
- "bucket_name": "my_bucket",
- "partitioned_kind": "by_day",
- "fz_loading_mode": "auto-period"
}, - "file_path_destination": "path/to/file",
- "additional_settings": {
- "key": "value"
}, - "database_name": "Database 1",
- "schema_name": "Schema 1"
}, - "schemas": [ ]
}, - "settings": {
- "run_timeout_seconds": 43200,
- "notification": {
- "warning": {
- "email": "test@test.com",
- "is_enabled": true,
- "execution_time_limit_seconds": 43200
}, - "failure": {
- "email": "test@test.com",
- "is_enabled": true,
- "execution_time_limit_seconds": 43200
}, - "run_threshold": {
- "email": "test@test.com",
- "is_enabled": true,
- "execution_time_limit_seconds": 43200
}
}
}, - "schedulers": [ ]
}List Data Flows
Authorization scope: data flow:list
This endpoint gets a summary of all the data flows in an environment
📖 Instructions for usage
list_data_flows
List data flows by name or status. Do NOT call this speculatively.
Before calling, ask the user what they want to do. You can:
- Run a data flow → ask for the name, then call list_data_flows(name=<name>)
- Check run status → ask which flow and use get_run / list_runs
- Create a new flow → use create_data_flow
- Update a flow → ask for the name, then get it and patch it
Always filter by name when the user mentions a specific flow.
Only list without a filter if the user explicitly asks to see all flows.
Returns items plus pagination metadata (total_items, page, has_next).
📚 Per-source request/response examples: https://bitbucket.org/boomii/data-integration-sources-examples/src/main/
Authorizations:
path Parameters
| account_id required | string (Account Id) |
| environment_id required | string (Environment Id) |
query Parameters
| page | integer (Page) >= 1 Default: 1 The current page number in the paginated list. |
| items_per_page | integer (Items Per Page) [ 1 .. 500 ] Default: 20 The number of items per page in the paginated list. |
Group Name (string) or Group Name (null) (Group Name) The river group name | |
Array of Group Id (strings) or Group Id (null) (Group Id) Examples: group_id=5f5b17b0a10e07a4ff4c33 The river group id | |
Name (string) or Name (null) (Name) The river name | |
RiverScheduleStatusEnum (string) or Schedule (null) (Schedule) The river schedule status | |
| river_status | Array of strings (River Status) Default: "" Items Enum: "active" "disabled" Examples: river_status=active The river status |
RiverInterfaceEnum (string) or Interface Type (null) (Interface Type) The rivers interface type | |
| include_deleted | boolean (Include Deleted) Default: false |
| sort_by | string (Sort By) Default: "last_updated_at" Enum: "last_updated_at" "source_name" "river_name" "group_name" "group_id" The river sort by filter |
| sort_order | string (Sort Order) Default: "desc" Enum: "desc" "asc" The river sort order filter |
(Array of River Type (RiverTypeInternalEnum (string) or RiverTypeEnum (string))) or River Type (null) (River Type) The river type |
Responses
Response Schema: application/json
| current_page_size required | integer (Current Page Size) The current page size |
| account_id required | string (Account Id) The account id |
| environment_id required | string (Environment Id) The environment id |
required | Array of objects (Items) |
Next Page (string) or Next Page (null) (Next Page) The next page URL | |
Previous Page (string) or Previous Page (null) (Previous Page) The previous page URL | |
| page | integer (Page) Default: 1 The page number |
| total_items | integer (Total Items) Default: 0 The total number of entities fetched |
Response samples
- 200
- 422
{- "next_page": "string",
- "previous_page": "string",
- "page": 1,
- "current_page_size": 0,
- "total_items": 0,
- "account_id": "string",
- "environment_id": "string",
- "items": [
- {
- "name": "river_name",
- "river_status": "active",
- "group_name": "river_group_1",
- "group_id": "62e7f4352c13160013dc39be",
- "river_schedulers": [
- "0 * * * *",
- "0 0 1 * *"
], - "datasource_id": "5f7d4270fdca16cac18261",
- "last_user_name_modified": "user_name",
- "river_cross_id": "5f7d4270fdca16cac18261",
- "last_updated_at": "2021-01-01T00:00:00.000Z",
- "description": "river_description",
- "is_api_v2": true,
- "river_type": "source_to_target",
- "created_at": "2021-01-01T00:00:00.000Z"
}
]
}Edit Data Flow
Authorization scope: data flow:write
This endpoint updates a data flow.
📖 Instructions for usage
update_data_flow, set_data_flow_source_tables, patch_data_flow
update_data_flow
Update an existing data flow. body must match the UpdateRiver API schema.
To add source tables, use set_data_flow_source_tables instead — it handles
the correct schema grouping automatically.
set_data_flow_source_tables
Set the source tables on a data flow by name.
Looks up the correct schema grouping from the connection and builds the
data flow schemas structure automatically. Use this instead of update_data_flow
when you want to select which tables to sync.
Note: this performs a GET-then-PUT with no locking. Concurrent calls on
the same data_flow_id will overwrite each other (last write wins).
Avoid calling this on the same data flow from multiple agents simultaneously.
Parameters
----------
data_flow_id : The data flow to update.
source_connection_id : The source connection cross_id (from list_connections).
table_names : ALL table/object names to sync on this data flow, e.g. ["Account", "Contact"].
Pass every table you want in one call — this replaces the entire table
selection. One data flow handles multiple tables; do not create a separate
data flow per table.
Names are matched case-insensitively against the connection's table list.
patch_data_flow
Partially update a data flow — only supply the fields you want to change.
Fetches the current data flow, deep-merges patch into it, then PUTs it back.
Much simpler than update_data_flow when you only want to change one or two fields.
IMPORTANT — lists are REPLACED, not merged. Do NOT use this to add or change
source tables (properties.schemas). Use set_data_flow_source_tables instead, which
handles table selection correctly and keeps all tables in one data flow.
Examples
--------
Change target schema only:
patch={"properties": {"target": {"schema_name": "PUBLIC"}}}
Rename the data flow:
patch={"name": "New Name"}
Note: GET-then-PUT with no locking — concurrent calls on the same data flow
will overwrite each other (last write wins).
📚 Per-source request/response examples: https://bitbucket.org/boomii/data-integration-sources-examples/src/main/
Authorizations:
path Parameters
| account_id required | string (Account Id) |
| environment_id required | string (Environment Id) |
| river_cross_id required | string (River Cross Id) |
Request Body schema: application/jsonrequired
| name required | string (Name) The name of the river. |
| type required | string (RiverTypeEnum) Enum: "source_to_target" "actions" "logic" "connector_executor" The type of river. |
required | object (RiverMetadata) An object containing river metadata. |
required | object (RiverSettings) An object containing river settings. |
required | any (Properties) The properties of a river. |
RiverKindEnum (string) or null Default: "main_river" The kind of the river. | |
Group Id (string) or Group Id (null) (Group Id) The id of the group the river belongs to. | |
Group Name (string) or Group Name (null) (Group Name) The name of the group the river belongs to. | |
Array of objects (Schedulers) [ 0 .. 1 ] items Default: [] An object containing the schedule settings. Currently support only one scheduler | |
Cross Id (string) or Cross Id (null) (Cross Id) The cross_id of the river to be deployed. | |
Deployment Definition (object) or Deployment Definition (null) (Deployment Definition) The deployment definition of the river to be deployed. | |
Account Id (string) or Account Id (null) (Account Id) The account id. | |
Environment Id (string) or Environment Id (null) (Environment Id) The environment id. | |
Environment Name (string) or Environment Name (null) (Environment Name) The name of the environment. |
Responses
Response Schema: application/json
| cross_id required | string (Cross Id) The river cross id. |
| account_id required | string (Account Id) The account id. |
| type required | string (RiverTypeEnum) Enum: "source_to_target" "actions" "logic" "connector_executor" The type of the river. |
| name required | string (Name) The name of the river. |
| environment_id required | string (Environment Id) The environment cross id. |
| environment_name required | string (Environment Name) The environment name. |
| group_id required | string (Group Id) The group id. |
| group_name required | string (Group Name) The group name. |
required | object (RiverMetadataExtended) The river metadata. |
required | any (Properties) The river properties, will change according to the river type. |
| kind | string (RiverKindEnum) Default: "main_river" Enum: "sub_river" "main_river" The kind of the river. |
RiverSettings (object) or null River settings. | |
Array of Schedulers (objects) or Schedulers (null) (Schedulers) Default: [] River schedulers. |
Request samples
- Payload
{- "name": "river_name",
- "kind": "main_river",
- "type": "source_to_target",
- "group_id": "55fr7d4270fdca16cac18261",
- "group_name": "river_group_1",
- "metadata": {
- "description": "River 1 description",
- "river_status": "active"
}, - "settings": {
- "run_timeout_seconds": 43200,
- "notification": {
- "warning": {
- "email": "test@test.com",
- "is_enabled": true,
- "execution_time_limit_seconds": 43200
}, - "failure": {
- "email": "test@test.com",
- "is_enabled": true,
- "execution_time_limit_seconds": 43200
}, - "run_threshold": {
- "email": "test@test.com",
- "is_enabled": true,
- "execution_time_limit_seconds": 43200
}
}
}, - "properties": {
- "properties_type": "source_to_target",
- "source": {
- "name": "mysql",
- "connection_id": "5f4d3b3d9f9c8b0001f6b0e6",
- "connection_name": "Connection 1",
- "run_type": "predefined_report",
- "cdc_settings": {
- "default_tables_migration_option": "SKIP_INITIAL_MIGRATION",
- "include_snapshot_tables": true,
- "datasource_id": "mysql"
}, - "additional_settings": {
- "extract_method": "all"
}, - "custom_query_source_settings": {
- "query": "SELECT id, name FROM users WHERE active = true",
- "array_size": 1000,
- "exporter_chunk_size": 30000,
- "incremental_type": "datetime",
- "incremental_field": "created_at",
- "date_range": {
- "time_period": "custom",
- "start_date": "2020-12-01T00:00:00.000Z",
- "end_date": "2020-01-01T00:00:00.000Z",
- "days_back": 1,
- "include_end_value": true,
- "split_time_intervals": {
- "interval_size": 3,
- "time_interval": "days"
}, - "update_increment_on_failures": true,
- "utc_offset": -3,
- "round_up": true
}, - "running_number": {
- "include_end_value": true,
- "rows_in_chunk": 1000,
- "start_value": 1,
- "end_value": 100
}, - "epoch": {
- "start_value": 1727503847,
- "end_value": 1727590247,
- "include_end_value": true
}, - "row_version": {
- "include_end_value": true,
- "rows_in_chunk": 1000,
- "start_value": "version",
- "end_value": "version"
}, - "extract_method": "incremental"
}
}, - "target": {
- "name": "snowflake",
- "connection_id": "5f4d3b3d9f9c8b0001f6b0e6",
- "connection_name": "Connection 1",
- "single_table_settings": {
- "escape_character": "\\t",
- "match_keys": [
- "id",
- "username"
], - "mapping": [
- {
- "name": "id",
- "type": "INTEGER"
}
], - "sql_dialect": "standard",
- "split_tables": "no",
- "split_data": "a>3",
- "split_interval": "daily",
- "partition_type": "TIMESTAMP",
- "partition_granularity": "DAY",
- "distribution_method": "even"
}, - "table_name": "Table 1",
- "target_prefix": "start_at_",
- "is_ordered_merge_key": true,
- "order_expression": "id desc,createDate asc",
- "loading_method": "merge",
- "merge_method": "merge",
- "file_zone_settings": {
- "path": "my_path",
- "bucket_name": "my_bucket",
- "partitioned_kind": "by_day",
- "fz_loading_mode": "auto-period"
}, - "file_path_destination": "path/to/file",
- "additional_settings": {
- "key": "value"
}, - "database_name": "Database 1",
- "schema_name": "Schema 1"
}, - "schemas": [ ]
}, - "schedulers": [ ],
- "cross_id": "string",
- "deployment_definition": { },
- "account_id": "62e7f4352c13160013dc39be",
- "environment_id": "62e7f4352c13160013dc39be",
- "environment_name": "my_environment"
}Response samples
- 200
- 422
{- "cross_id": "62e7f4352c13160013dc39be",
- "account_id": "62e7f4352c13160013dc39be",
- "kind": "main_river",
- "type": "source_to_target",
- "name": "my_river",
- "environment_id": "62e7f4352c13160013dc39be",
- "environment_name": "my_environment",
- "group_id": "62e7f4352c13160013dc39be",
- "group_name": "my_group",
- "metadata": {
- "description": "River 1 description",
- "river_status": "active",
- "current_version_id": "5f4d3b3d9f9c8b0001f6b0e6",
- "created_by": "SomeUser",
- "last_updated_by": "SomeUser",
- "created_at": "2020-09-01T00:00:00Z",
- "last_updated_at": "2020-09-01T12:00:00.000Z",
- "is_deleted": false
}, - "properties": {
- "properties_type": "source_to_target",
- "source": {
- "name": "mysql",
- "connection_id": "5f4d3b3d9f9c8b0001f6b0e6",
- "connection_name": "Connection 1",
- "run_type": "predefined_report",
- "cdc_settings": {
- "default_tables_migration_option": "SKIP_INITIAL_MIGRATION",
- "include_snapshot_tables": true,
- "datasource_id": "mysql"
}, - "additional_settings": {
- "extract_method": "all"
}, - "custom_query_source_settings": {
- "query": "SELECT id, name FROM users WHERE active = true",
- "array_size": 1000,
- "exporter_chunk_size": 30000,
- "incremental_type": "datetime",
- "incremental_field": "created_at",
- "date_range": {
- "time_period": "custom",
- "start_date": "2020-12-01T00:00:00.000Z",
- "end_date": "2020-01-01T00:00:00.000Z",
- "days_back": 1,
- "include_end_value": true,
- "split_time_intervals": {
- "interval_size": 3,
- "time_interval": "days"
}, - "update_increment_on_failures": true,
- "utc_offset": -3,
- "round_up": true
}, - "running_number": {
- "include_end_value": true,
- "rows_in_chunk": 1000,
- "start_value": 1,
- "end_value": 100
}, - "epoch": {
- "start_value": 1727503847,
- "end_value": 1727590247,
- "include_end_value": true
}, - "row_version": {
- "include_end_value": true,
- "rows_in_chunk": 1000,
- "start_value": "version",
- "end_value": "version"
}, - "extract_method": "incremental"
}
}, - "target": {
- "name": "snowflake",
- "connection_id": "5f4d3b3d9f9c8b0001f6b0e6",
- "connection_name": "Connection 1",
- "single_table_settings": {
- "escape_character": "\\t",
- "match_keys": [
- "id",
- "username"
], - "mapping": [
- {
- "name": "id",
- "type": "INTEGER"
}
], - "sql_dialect": "standard",
- "split_tables": "no",
- "split_data": "a>3",
- "split_interval": "daily",
- "partition_type": "TIMESTAMP",
- "partition_granularity": "DAY",
- "distribution_method": "even"
}, - "table_name": "Table 1",
- "target_prefix": "start_at_",
- "is_ordered_merge_key": true,
- "order_expression": "id desc,createDate asc",
- "loading_method": "merge",
- "merge_method": "merge",
- "file_zone_settings": {
- "path": "my_path",
- "bucket_name": "my_bucket",
- "partitioned_kind": "by_day",
- "fz_loading_mode": "auto-period"
}, - "file_path_destination": "path/to/file",
- "additional_settings": {
- "key": "value"
}, - "database_name": "Database 1",
- "schema_name": "Schema 1"
}, - "schemas": [ ]
}, - "settings": {
- "run_timeout_seconds": 43200,
- "notification": {
- "warning": {
- "email": "test@test.com",
- "is_enabled": true,
- "execution_time_limit_seconds": 43200
}, - "failure": {
- "email": "test@test.com",
- "is_enabled": true,
- "execution_time_limit_seconds": 43200
}, - "run_threshold": {
- "email": "test@test.com",
- "is_enabled": true,
- "execution_time_limit_seconds": 43200
}
}
}, - "schedulers": [ ]
}Delete Data Flow
Authorization scope: data flow:write
This endpoint deletes a data flow
📖 Instructions for usage
delete_data_flow
Delete a data flow.
The upstream DELETE returns an empty body on success; this returns
{"deleted": true, "data_flow_id": ...}. Deleting an ACTIVE flow returns a 400
(surfaced verbatim) — call disable_data_flow first, then delete. This never
force-deletes.
📚 Per-source request/response examples: https://bitbucket.org/boomii/data-integration-sources-examples/src/main/
Authorizations:
path Parameters
| account_id required | string (Account Id) |
| environment_id required | string (Environment Id) |
| river_cross_id required | string (River Cross Id) |
Responses
Response Schema: application/json
Response samples
- 200
- 422
nullGet Data Flow
Authorization scope: data flow:list
This endpoint gets a data flow.
📖 Instructions for usage
get_data_flow, set_data_flow_source_tables, run_data_flow, patch_data_flow
get_data_flow
Get full details of a data flow by its ID.
Note: only works for data flows created via the API (is_api_v2=true).
Data flows created in the Boomi Data Integration UI will return a 400 error.
Use list_data_flows to find data_flow_id values.
set_data_flow_source_tables
Set the source tables on a data flow by name.
Looks up the correct schema grouping from the connection and builds the
data flow schemas structure automatically. Use this instead of update_data_flow
when you want to select which tables to sync.
Note: this performs a GET-then-PUT with no locking. Concurrent calls on
the same data_flow_id will overwrite each other (last write wins).
Avoid calling this on the same data flow from multiple agents simultaneously.
Parameters
----------
data_flow_id : The data flow to update.
source_connection_id : The source connection cross_id (from list_connections).
table_names : ALL table/object names to sync on this data flow, e.g. ["Account", "Contact"].
Pass every table you want in one call — this replaces the entire table
selection. One data flow handles multiple tables; do not create a separate
data flow per table.
Names are matched case-insensitively against the connection's table list.
run_data_flow
Trigger an immediate run of a data flow.
By default returns instantly with the run_id (do NOT poll). Set wait=True to block
until the run reaches a terminal state (success/failed/cancelled) and return the
final run object — useful for tests/automation so you don't sleep blindly.
Before calling this, make sure ALL source tables are configured in a single
set_data_flow_source_tables call — one data flow syncs multiple tables in one run.
Common 400 causes:
- Data flow not yet activated: call activate_data_flow(wait=True) first.
- No source tables configured: call set_data_flow_source_tables first.
patch_data_flow
Partially update a data flow — only supply the fields you want to change.
Fetches the current data flow, deep-merges patch into it, then PUTs it back.
Much simpler than update_data_flow when you only want to change one or two fields.
IMPORTANT — lists are REPLACED, not merged. Do NOT use this to add or change
source tables (properties.schemas). Use set_data_flow_source_tables instead, which
handles table selection correctly and keeps all tables in one data flow.
Examples
--------
Change target schema only:
patch={"properties": {"target": {"schema_name": "PUBLIC"}}}
Rename the data flow:
patch={"name": "New Name"}
Note: GET-then-PUT with no locking — concurrent calls on the same data flow
will overwrite each other (last write wins).
📚 Per-source request/response examples: https://bitbucket.org/boomii/data-integration-sources-examples/src/main/
Authorizations:
path Parameters
| account_id required | string (Account Id) |
| environment_id required | string (Environment Id) |
| river_cross_id required | string (River Cross Id) |
Responses
Response Schema: application/json
| cross_id required | string (Cross Id) The river cross id. |
| account_id required | string (Account Id) The account id. |
| type required | string (RiverTypeEnum) Enum: "source_to_target" "actions" "logic" "connector_executor" The type of the river. |
| name required | string (Name) The name of the river. |
| environment_id required | string (Environment Id) The environment cross id. |
| environment_name required | string (Environment Name) The environment name. |
| group_id required | string (Group Id) The group id. |
| group_name required | string (Group Name) The group name. |
required | object (RiverMetadataExtended) The river metadata. |
required | any (Properties) The river properties, will change according to the river type. |
| kind | string (RiverKindEnum) Default: "main_river" Enum: "sub_river" "main_river" The kind of the river. |
RiverSettings (object) or null River settings. | |
Array of Schedulers (objects) or Schedulers (null) (Schedulers) Default: [] River schedulers. |
Response samples
- 200
- 422
{- "cross_id": "62e7f4352c13160013dc39be",
- "account_id": "62e7f4352c13160013dc39be",
- "kind": "main_river",
- "type": "source_to_target",
- "name": "my_river",
- "environment_id": "62e7f4352c13160013dc39be",
- "environment_name": "my_environment",
- "group_id": "62e7f4352c13160013dc39be",
- "group_name": "my_group",
- "metadata": {
- "description": "River 1 description",
- "river_status": "active",
- "current_version_id": "5f4d3b3d9f9c8b0001f6b0e6",
- "created_by": "SomeUser",
- "last_updated_by": "SomeUser",
- "created_at": "2020-09-01T00:00:00Z",
- "last_updated_at": "2020-09-01T12:00:00.000Z",
- "is_deleted": false
}, - "properties": {
- "properties_type": "source_to_target",
- "source": {
- "name": "mysql",
- "connection_id": "5f4d3b3d9f9c8b0001f6b0e6",
- "connection_name": "Connection 1",
- "run_type": "predefined_report",
- "cdc_settings": {
- "default_tables_migration_option": "SKIP_INITIAL_MIGRATION",
- "include_snapshot_tables": true,
- "datasource_id": "mysql"
}, - "additional_settings": {
- "extract_method": "all"
}, - "custom_query_source_settings": {
- "query": "SELECT id, name FROM users WHERE active = true",
- "array_size": 1000,
- "exporter_chunk_size": 30000,
- "incremental_type": "datetime",
- "incremental_field": "created_at",
- "date_range": {
- "time_period": "custom",
- "start_date": "2020-12-01T00:00:00.000Z",
- "end_date": "2020-01-01T00:00:00.000Z",
- "days_back": 1,
- "include_end_value": true,
- "split_time_intervals": {
- "interval_size": 3,
- "time_interval": "days"
}, - "update_increment_on_failures": true,
- "utc_offset": -3,
- "round_up": true
}, - "running_number": {
- "include_end_value": true,
- "rows_in_chunk": 1000,
- "start_value": 1,
- "end_value": 100
}, - "epoch": {
- "start_value": 1727503847,
- "end_value": 1727590247,
- "include_end_value": true
}, - "row_version": {
- "include_end_value": true,
- "rows_in_chunk": 1000,
- "start_value": "version",
- "end_value": "version"
}, - "extract_method": "incremental"
}
}, - "target": {
- "name": "snowflake",
- "connection_id": "5f4d3b3d9f9c8b0001f6b0e6",
- "connection_name": "Connection 1",
- "single_table_settings": {
- "escape_character": "\\t",
- "match_keys": [
- "id",
- "username"
], - "mapping": [
- {
- "name": "id",
- "type": "INTEGER"
}
], - "sql_dialect": "standard",
- "split_tables": "no",
- "split_data": "a>3",
- "split_interval": "daily",
- "partition_type": "TIMESTAMP",
- "partition_granularity": "DAY",
- "distribution_method": "even"
}, - "table_name": "Table 1",
- "target_prefix": "start_at_",
- "is_ordered_merge_key": true,
- "order_expression": "id desc,createDate asc",
- "loading_method": "merge",
- "merge_method": "merge",
- "file_zone_settings": {
- "path": "my_path",
- "bucket_name": "my_bucket",
- "partitioned_kind": "by_day",
- "fz_loading_mode": "auto-period"
}, - "file_path_destination": "path/to/file",
- "additional_settings": {
- "key": "value"
}, - "database_name": "Database 1",
- "schema_name": "Schema 1"
}, - "schemas": [ ]
}, - "settings": {
- "run_timeout_seconds": 43200,
- "notification": {
- "warning": {
- "email": "test@test.com",
- "is_enabled": true,
- "execution_time_limit_seconds": 43200
}, - "failure": {
- "email": "test@test.com",
- "is_enabled": true,
- "execution_time_limit_seconds": 43200
}, - "run_threshold": {
- "email": "test@test.com",
- "is_enabled": true,
- "execution_time_limit_seconds": 43200
}
}
}, - "schedulers": [ ]
}Activate Data Flow
Authorization scope: data flow:write
This endpoint activates a data flow for allowing it to run.
📖 Instructions for usage
activate_data_flow
Activate (schedule) a data flow so it runs on its configured schedule.
Set wait=True to block until activation completes or fails — eliminates
the need to manually call get_operation in a loop.
Returns the final operation status when wait=True.
📚 Per-source request/response examples: https://bitbucket.org/boomii/data-integration-sources-examples/src/main/
Authorizations:
path Parameters
| account_id required | string (Account Id) |
| environment_id required | string (Environment Id) |
| river_cross_id required | string (River Cross Id) |
Responses
Response samples
- 202
- 422
{- "operation_id": "62e7f4352c13160013dc39be",
- "operation_type": "dataframe",
- "run_id": "5cbc6bbbc90a4658b00c70a3bb0f3b31",
- "last_update_date": "2022-08-02T13:38:44.054000",
- "status": "D",
- "result": "true",
- "error_message": "[RVR-QBK-003]: Response value error: Missing Rows/Columns"
}Disable Data Flow
Authorization scope: data flow:write
This endpoint disables a data flow to forbid it from running.
📖 Instructions for usage
disable_data_flow
Disable (pause) a data flow's schedule without deleting it.
Returns {"disabled": true, "data_flow_id": ...} (the upstream may return an empty body).
📚 Per-source request/response examples: https://bitbucket.org/boomii/data-integration-sources-examples/src/main/
Authorizations:
path Parameters
| account_id required | string (Account Id) |
| environment_id required | string (Environment Id) |
| river_cross_id required | string (River Cross Id) |
Responses
Response samples
- 202
- 422
{- "operation_id": "62e7f4352c13160013dc39be",
- "operation_type": "dataframe",
- "run_id": "5cbc6bbbc90a4658b00c70a3bb0f3b31",
- "last_update_date": "2022-08-02T13:38:44.054000",
- "status": "D",
- "result": "true",
- "error_message": "[RVR-QBK-003]: Response value error: Missing Rows/Columns"
}Run Data Flow
Authorization scope: data flow:execute
This endpoint runs a data flow.
Throttling rules: *** Data Flow can be executed up to 2 times per minute** *** Each user can execute a data flow up to 15 times per minute**
📖 Instructions for usage
run_data_flow
Trigger an immediate run of a data flow.
By default returns instantly with the run_id (do NOT poll). Set wait=True to block
until the run reaches a terminal state (success/failed/cancelled) and return the
final run object — useful for tests/automation so you don't sleep blindly.
Before calling this, make sure ALL source tables are configured in a single
set_data_flow_source_tables call — one data flow syncs multiple tables in one run.
Common 400 causes:
- Data flow not yet activated: call activate_data_flow(wait=True) first.
- No source tables configured: call set_data_flow_source_tables first.
📚 Per-source request/response examples: https://bitbucket.org/boomii/data-integration-sources-examples/src/main/
Authorizations:
path Parameters
| account_id required | string (Account Id) |
| environment_id required | string (Environment Id) |
| river_cross_id required | string (River Cross Id) |
query Parameters
| run_sub_rivers | boolean (Run Sub Rivers) Default: false A flag that indicates whether to run all active sub rivers of the master river |
Responses
Response samples
- 202
- 422
{- "runs": [
- {
- "sub_river_id": "62e7f4352c13160013dc39be",
- "run_id": "1f1468d097754cd8892468c2763ebfe8",
- "status": "pending",
- "message": "The river is already in progress."
}
], - "river_cross_id": "string",
- "run_group_id": "string"
}