Syncs
Syncs continuously replicate data from source applications into a data warehouse. A sync belongs to an integration and pairs a source connection with a destination database/schema; its datasets choose which tables and columns to replicate and how records are loaded. Use these endpoints to create and configure syncs and their datasets, discover the supported source and destination applications and their tables, review change history and schema-drift events, and track usage.
Sync and dataset schemas
Returns all syncs in the account, sorted by name. Filter to one integration with the _integrationId query parameter (equivalent to GET /v1/integrations/{_integrationId}/syncs).
Only return syncs that belong to this integration.
69f4ffd395ec28be9cb8c12eMaximum number of syncs to return per page.
1000Example: 100Opaque pagination cursor for the next page. Take it from the after value in
the Link response header's rel="next" URL rather than constructing it.
WyIiLCI2OTdiZDAwNDFhMWJiMDdhZWY4NmRmNDciXQComma-separated list of fields to project into each returned record.
Triggers summary projection: the response contains a minimal identity
set (_id, name, plus resource-specific fields) with the requested
fields added on top. Supports dot notation for nested fields.
Mutually exclusive with exclude.
_integrationId,disabled,lastModifiedComma-separated list of fields to strip from the default response.
Unlike include, does not trigger summary projection — returns the
full record with the named fields removed. Protected identity fields
(e.g. name) cannot be stripped. Mutually exclusive with include.
createdAt,lastModifiedArray of sync objects.
No syncs exist in the account.
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Unprocessable entity. The request was well-formed but was unable to be followed due to semantic errors.
GET /v1/syncs HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
{
"_id": "6a4b8bfb731a7a5cae9bd364",
"_userId": "68c821306f5d848c881da205",
"_integrationId": "69f4ffd395ec28be9cb8c12e",
"name": "Salesforce Demo Sync",
"disabled": false,
"schedule": "? 0 */8 * * *",
"timezone": "Asia/Calcutta",
"historicDateTime": "2022-07-04T18:30:00.000Z",
"source": {
"_connectionId": "6a2a95909e994395f3c2a4e6"
},
"destination": {
"_connectionId": "68d02dbe0839a514623c1d6d",
"database": "ANALYTICS_DB",
"schema": "salesforce_raw"
},
"driftPolicy": {
"dataset": {
"added": "automate",
"removed": "automate"
},
"element": {
"added": "automate",
"objectAdded": "preserve",
"arrayAdded": "preserve",
"removed": "automate",
"reduced": "automate",
"expanded": "automate"
}
}
},
{
"_id": "6966b5bd344490b470099978",
"_userId": "68c821306f5d848c881da205",
"_integrationId": "6966b587dfb77eaae13110c7",
"name": "Order Analytics",
"disabled": true,
"historicDateTime": "1970-01-01T00:00:00.000Z",
"source": {
"_connectionId": "68db4afe97bf4f4942a3b92c"
},
"destination": {},
"driftPolicy": {
"dataset": {},
"element": {}
}
}
]Creates a sync inside an integration. Only _integrationId and source._connectionId are required — new syncs start as disabled drafts, so the destination, datasets, and schedule can be configured with later requests. Creating a sync also registers its connections for the platform's replication runtime.
Writable sync fields for POST /v1/syncs and PUT /v1/syncs/{_id}. Updates are full
replacements: omitted optional fields (schedule, timezone, destination details,
driftPolicy) are cleared, not preserved, so send the complete desired configuration
on every PUT.
Integration to create the sync in. Required on create; forbidden on update —
the integration cannot be changed once assigned (400 sync_integration_id_update).
69f4ffd395ec28be9cb8c12eDisplay name shown in the UI. Values over 150 characters fail with
422 size_limit_exceeded.
Salesforce Demo SyncFree-form notes about what the sync replicates and why.
Replicates core CRM objects into the analytics warehouse.When true, the sync neither runs on schedule nor accepts on-demand runs. Set to
false only once source, destination, datasets, and historicDateTime are all
configured; enabling an incomplete sync fails with 422 sync_not_enabled.
trueCron expression that controls automatic runs, e.g. ? 0 */6 * * * for every six
hours. Send an empty string (or omit) for a sync that only runs on demand.
Evaluated in timezone.
? 0 */6 * * *IANA time zone name (e.g. America/New_York) the schedule is evaluated in.
America/New_YorkEarliest record timestamp to backfill from the source. Must be set before the sync can be enabled.
2022-07-04T18:30:00.000ZCreated sync.
A sync continuously replicates data from a source application into a data warehouse. New syncs start as disabled drafts; a sync can only be enabled once its source, destination, and datasets are fully configured.
Unique identifier for the sync.
6a4b8bfb731a7a5cae9bd364Account owner the sync belongs to.
68c821306f5d848c881da205Integration the sync lives in. Required when creating; cannot be changed
afterwards — sending it on an update fails with 400 sync_integration_id_update.
69f4ffd395ec28be9cb8c12eDisplay name shown in the UI. Defaults to an empty string when not provided at creation.
Salesforce Demo SyncFree-form notes about what the sync replicates and why.
Replicates core CRM objects into the analytics warehouse.When true, the sync neither runs on schedule nor accepts on-demand runs. New syncs
start disabled. Enabling requires a fully configured sync — source and destination
connections plus a destination database and schema — and a historicDateTime;
otherwise the update fails with 422 sync_not_enabled.
trueCron expression that controls automatic runs, e.g. ? 0 */6 * * * for every
six hours. Empty or omitted means the sync only runs on demand via
POST /v1/syncs/{_syncId}/run. Evaluated in the sync's timezone.
? 0 */6 * * *IANA time zone name (e.g. America/New_York) the schedule is evaluated in.
America/New_YorkEarliest record timestamp to backfill from the source. The first run extracts history from this point forward; later runs are incremental. Must be set before the sync can be enabled.
2022-07-04T18:30:00.000ZBad request. _integrationId is missing (missing_integration_id), the body
contains _id or _userId (id_and_userId_in_request), or a connection
reference is not a valid id.
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Validation failed. source._connectionId is missing
(missing_source_connection), the destination duplicates another sync
(duplicate_destination_host), the destination connector rejected the
sync configuration (invalid_destination_sync_config), two enabled
datasets resolve to the same destination table
(conflicting_table_name), a field exceeds its size limit
(size_limit_exceeded), or the drift policy is inconsistent
(drift_policy_invalid_setup).
POST /v1/syncs HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 99
{
"_integrationId": "6966b587dfb77eaae13110c7",
"source": {
"_connectionId": "6a2a95909e994395f3c2a4e6"
}
}{
"_id": "6a559b5185efa7502eefd439",
"_userId": "68c821306f5d848c881da205",
"_integrationId": "6966b587dfb77eaae13110c7",
"name": "",
"disabled": true,
"source": {
"_connectionId": "6a2a95909e994395f3c2a4e6"
},
"destination": {},
"driftPolicy": {
"dataset": {},
"element": {}
}
}Returns a single sync by ID.
Sync id.
6a4b8bfb731a7a5cae9bd364Sync object.
A sync continuously replicates data from a source application into a data warehouse. New syncs start as disabled drafts; a sync can only be enabled once its source, destination, and datasets are fully configured.
Unique identifier for the sync.
6a4b8bfb731a7a5cae9bd364Account owner the sync belongs to.
68c821306f5d848c881da205Integration the sync lives in. Required when creating; cannot be changed
afterwards — sending it on an update fails with 400 sync_integration_id_update.
69f4ffd395ec28be9cb8c12eDisplay name shown in the UI. Defaults to an empty string when not provided at creation.
Salesforce Demo SyncFree-form notes about what the sync replicates and why.
Replicates core CRM objects into the analytics warehouse.When true, the sync neither runs on schedule nor accepts on-demand runs. New syncs
start disabled. Enabling requires a fully configured sync — source and destination
connections plus a destination database and schema — and a historicDateTime;
otherwise the update fails with 422 sync_not_enabled.
trueCron expression that controls automatic runs, e.g. ? 0 */6 * * * for every
six hours. Empty or omitted means the sync only runs on demand via
POST /v1/syncs/{_syncId}/run. Evaluated in the sync's timezone.
? 0 */6 * * *IANA time zone name (e.g. America/New_York) the schedule is evaluated in.
America/New_YorkEarliest record timestamp to backfill from the source. The first run extracts history from this point forward; later runs are incremental. Must be set before the sync can be enabled.
2022-07-04T18:30:00.000ZUnauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Not found. The requested resource does not exist or is not visible to the caller.
GET /v1/syncs/{_id} HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"_id": "6a4b8bfb731a7a5cae9bd364",
"_userId": "68c821306f5d848c881da205",
"_integrationId": "69f4ffd395ec28be9cb8c12e",
"name": "Salesforce Demo Sync",
"disabled": false,
"schedule": "? 0 */8 * * *",
"timezone": "Asia/Calcutta",
"historicDateTime": "2022-07-04T18:30:00.000Z",
"source": {
"_connectionId": "6a2a95909e994395f3c2a4e6"
},
"destination": {
"_connectionId": "68d02dbe0839a514623c1d6d",
"database": "ANALYTICS_DB",
"schema": "salesforce_raw"
},
"driftPolicy": {
"dataset": {
"added": "automate",
"removed": "automate"
},
"element": {
"added": "automate",
"objectAdded": "preserve",
"arrayAdded": "preserve",
"removed": "automate",
"reduced": "automate",
"expanded": "automate"
}
}
}Replaces a sync's configuration. Send the complete desired state: omitted optional fields (schedule, timezone, destination details, driftPolicy) are cleared, not preserved. _integrationId cannot be sent — the integration is fixed at creation.
Set disabled: false to enable the sync once its source, destination, datasets, and historicDateTime are configured; enabling an incomplete sync fails with 422 sync_not_enabled.
Sync id.
6a4b8bfb731a7a5cae9bd364Writable sync fields for POST /v1/syncs and PUT /v1/syncs/{_id}. Updates are full
replacements: omitted optional fields (schedule, timezone, destination details,
driftPolicy) are cleared, not preserved, so send the complete desired configuration
on every PUT.
Integration to create the sync in. Required on create; forbidden on update —
the integration cannot be changed once assigned (400 sync_integration_id_update).
69f4ffd395ec28be9cb8c12eDisplay name shown in the UI. Values over 150 characters fail with
422 size_limit_exceeded.
Salesforce Demo SyncFree-form notes about what the sync replicates and why.
Replicates core CRM objects into the analytics warehouse.When true, the sync neither runs on schedule nor accepts on-demand runs. Set to
false only once source, destination, datasets, and historicDateTime are all
configured; enabling an incomplete sync fails with 422 sync_not_enabled.
trueCron expression that controls automatic runs, e.g. ? 0 */6 * * * for every six
hours. Send an empty string (or omit) for a sync that only runs on demand.
Evaluated in timezone.
? 0 */6 * * *IANA time zone name (e.g. America/New_York) the schedule is evaluated in.
America/New_YorkEarliest record timestamp to backfill from the source. Must be set before the sync can be enabled.
2022-07-04T18:30:00.000ZUpdated sync.
A sync continuously replicates data from a source application into a data warehouse. New syncs start as disabled drafts; a sync can only be enabled once its source, destination, and datasets are fully configured.
Unique identifier for the sync.
6a4b8bfb731a7a5cae9bd364Account owner the sync belongs to.
68c821306f5d848c881da205Integration the sync lives in. Required when creating; cannot be changed
afterwards — sending it on an update fails with 400 sync_integration_id_update.
69f4ffd395ec28be9cb8c12eDisplay name shown in the UI. Defaults to an empty string when not provided at creation.
Salesforce Demo SyncFree-form notes about what the sync replicates and why.
Replicates core CRM objects into the analytics warehouse.When true, the sync neither runs on schedule nor accepts on-demand runs. New syncs
start disabled. Enabling requires a fully configured sync — source and destination
connections plus a destination database and schema — and a historicDateTime;
otherwise the update fails with 422 sync_not_enabled.
trueCron expression that controls automatic runs, e.g. ? 0 */6 * * * for every
six hours. Empty or omitted means the sync only runs on demand via
POST /v1/syncs/{_syncId}/run. Evaluated in the sync's timezone.
? 0 */6 * * *IANA time zone name (e.g. America/New_York) the schedule is evaluated in.
America/New_YorkEarliest record timestamp to backfill from the source. The first run extracts history from this point forward; later runs are incremental. Must be set before the sync can be enabled.
2022-07-04T18:30:00.000ZBad request. The body contains _integrationId (sync_integration_id_update)
or _id/_userId (id_and_userId_in_request).
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Not found. The requested resource does not exist or is not visible to the caller.
Validation failed. source._connectionId is missing
(missing_source_connection), the sync is not ready to enable
(sync_not_enabled), the destination duplicates another sync
(duplicate_destination_host), the destination connector rejected the
sync configuration (invalid_destination_sync_config), two enabled
datasets resolve to the same destination table
(conflicting_table_name), a field exceeds its size limit
(size_limit_exceeded), or the drift policy is inconsistent
(drift_policy_invalid_setup).
PUT /v1/syncs/{_id} HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 511
{
"name": "Salesforce Demo Sync",
"schedule": "? 0 */6 * * *",
"timezone": "America/New_York",
"historicDateTime": "2022-07-04T18:30:00.000Z",
"source": {
"_connectionId": "6a2a95909e994395f3c2a4e6"
},
"destination": {
"_connectionId": "68d02dbe0839a514623c1d6d",
"database": "ANALYTICS_DB",
"schema": "salesforce_raw"
},
"driftPolicy": {
"dataset": {
"added": "automate",
"removed": "automate"
},
"element": {
"added": "automate",
"objectAdded": "preserve",
"arrayAdded": "preserve",
"removed": "automate",
"reduced": "automate",
"expanded": "automate"
}
}
}{
"_id": "6a4b8bfb731a7a5cae9bd364",
"_userId": "68c821306f5d848c881da205",
"_integrationId": "69f4ffd395ec28be9cb8c12e",
"name": "Salesforce Demo Sync",
"disabled": true,
"schedule": "? 0 */6 * * *",
"timezone": "America/New_York",
"historicDateTime": "2022-07-04T18:30:00.000Z",
"source": {
"_connectionId": "6a2a95909e994395f3c2a4e6"
},
"destination": {
"_connectionId": "68d02dbe0839a514623c1d6d",
"database": "ANALYTICS_DB",
"schema": "salesforce_raw"
},
"driftPolicy": {
"dataset": {
"added": "automate",
"removed": "automate"
},
"element": {
"added": "automate",
"objectAdded": "preserve",
"arrayAdded": "preserve",
"removed": "automate",
"reduced": "automate",
"expanded": "automate"
}
}
}Deletes a sync and tears down its replication resources, including its datasets. The sync must be disabled first — deleting an enabled sync fails with 400 sync_delete_not_allowed. Syncs are not recoverable through the recycle bin.
Sync id.
6a559b5185efa7502eefd439Sync deleted.
No content
The sync is still enabled.
Error code: sync_delete_not_allowed.
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Not found. The requested resource does not exist or is not visible to the caller.
DELETE /v1/syncs/{_id} HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
No content
Returns the syncs that belong to one integration, sorted by name. Equivalent to GET /v1/syncs?_integrationId={_integrationId}.
Integration id.
6966b587dfb77eaae13110c7Maximum number of syncs to return per page.
1000Example: 100Opaque pagination cursor for the next page. Take it from the after value in
the Link response header's rel="next" URL rather than constructing it.
WyIiLCI2OTdiZDAwNDFhMWJiMDdhZWY4NmRmNDciXQComma-separated list of fields to project into each returned record.
Triggers summary projection: the response contains a minimal identity
set (_id, name, plus resource-specific fields) with the requested
fields added on top. Supports dot notation for nested fields.
Mutually exclusive with exclude.
_integrationId,disabled,lastModifiedComma-separated list of fields to strip from the default response.
Unlike include, does not trigger summary projection — returns the
full record with the named fields removed. Protected identity fields
(e.g. name) cannot be stripped. Mutually exclusive with include.
createdAt,lastModifiedArray of sync objects.
The integration has no syncs, or the integration does not exist.
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Unprocessable entity. The request was well-formed but was unable to be followed due to semantic errors.
GET /v1/integrations/{_integrationId}/syncs HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
{
"_id": "6966b5bd344490b470099978",
"_userId": "68c821306f5d848c881da205",
"_integrationId": "6966b587dfb77eaae13110c7",
"name": "Order Analytics",
"disabled": true,
"schedule": "? 0 */1 * * *",
"timezone": "America/New_York",
"historicDateTime": "1970-01-01T00:00:00.000Z",
"source": {
"_connectionId": "68db4afe97bf4f4942a3b92c"
},
"destination": {
"_connectionId": "68d02dbe0839a514623c1d6d",
"database": "ANALYTICS_DB",
"schema": "orders_raw"
},
"driftPolicy": {
"dataset": {},
"element": {}
}
}
]Returns the datasets configured on a sync — the tables/objects it replicates — sorted by name. Export-backed datasets whose export no longer uses the sync's source connection carry mismatchSyncConnection: true.
Sync id.
6a55970bdb54be366c858bc9Maximum number of datasets to return per page.
1000Example: 100Opaque pagination cursor for the next page. Take it from the after value in
the Link response header's rel="next" URL rather than constructing it.
WyJBY2NvdW50IiwiNmE1NTk3MGM1Zjk0OThhMTc1OGEwYWQzIl0Comma-separated list of fields to project into each returned record.
Triggers summary projection: the response contains a minimal identity
set (_id, name, plus resource-specific fields) with the requested
fields added on top. Supports dot notation for nested fields.
Mutually exclusive with exclude.
_integrationId,disabled,lastModifiedComma-separated list of fields to strip from the default response.
Unlike include, does not trigger summary projection — returns the
full record with the named fields removed. Protected identity fields
(e.g. name) cannot be stripped. Mutually exclusive with include.
createdAt,lastModifiedArray of dataset objects.
The sync has no datasets, or the sync does not exist.
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Unprocessable entity. The request was well-formed but was unable to be followed due to semantic errors.
GET /v1/syncs/{_syncId}/datasets HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
{
"_id": "6a559b547885d8f93921c2ba",
"_userId": "68c821306f5d848c881da205",
"_syncId": "6a55970bdb54be366c858bc9",
"name": "Account",
"externalId": "Account",
"enable": true,
"enableAllDataElements": false,
"ingestionMode": "merge",
"userActionRequired": false,
"exportProperties": {
"type": "delta",
"delta": {}
},
"driftPolicy": {
"element": {}
},
"dataElements": [
{
"name": "Id",
"enable": true,
"mask": false,
"isPrimaryKey": true,
"children": []
},
{
"name": "Name",
"enable": true,
"mask": false,
"children": []
}
]
},
{
"_id": "6a55974edb54be366c858d26",
"_userId": "68c821306f5d848c881da205",
"_syncId": "6a55970bdb54be366c858bc9",
"name": "Pull Salesforce Records",
"externalId": "6a3e7c54c2387aaa87881b80",
"enable": true,
"enableAllDataElements": false,
"ingestionMode": "merge",
"tableName": "pull_salesforce_records",
"isExport": true,
"userActionRequired": false,
"exportProperties": {
"delta": {}
},
"driftPolicy": {
"element": {}
},
"dataElements": [
{
"name": "Id",
"enable": true,
"mask": false,
"isPrimaryKey": true,
"children": []
}
],
"mismatchSyncConnection": true
}
]Creates and updates a sync's datasets in one batch. Each array item either creates a dataset (identified by externalId) or updates one (identified by _id); a single request can mix both. Updates fully replace each dataset's writable fields. The response body is empty — read back the saved datasets with GET /v1/syncs/{_syncId}/datasets.
Sync id.
6a55970bdb54be366c858bc9One dataset to create or update in a PUT /v1/syncs/{_syncId}/datasets batch.
Send externalId (without _id) to create, or _id (without externalId) to
update — providing both or neither fails with 400 dataset_externalId_id_required.
Updates are full replacements of the writable fields.
Dataset to update. The dataset must already belong to the sync in the request path. Omit when creating.
6a559b547885d8f93921c2baIdentifier of the dataset in the source system — the table/object name from
GET /v1/di/metadata/connections/{_connectionId}/datasets, or an export ID when
isExport is true. Set when creating; immutable afterwards. A dataset with the
same externalId must not already exist on the sync.
AccountDisplay name of the dataset, typically the source's human-readable label.
AccountWhen true, the sync replicates this dataset on each run. Required (with an
ingestionMode) to activate the dataset; datasets created with enable: false
stay configured but skipped.
trueHow extracted records are written into the destination table. Required when
enable is true. merge requires a primary key in dataElements.
mergePossible values: Destination table name override. Must be unique among the sync's datasets —
duplicates within the batch or with existing datasets fail with 400 duplicate_dataset_table_names / 422 table_name_already_exists. Required when
isExport is true.
accountWhen true, the dataset's records come from an existing export resource:
externalId must be the export's ID, the export must use the sync's source
connection (400 connection_mismatch), and the item must include tableName
and dataElements but no exportProperties.
Datasets created/updated. The response has no body.
No content
Bad request. The body is not a non-empty array (INVALID_REQUEST_BODY /
EMPTY_REQUEST_BODY), an item has both or neither of _id/externalId
(dataset_externalId_id_required), an externalId already exists or an _id
does not belong to the sync, tableName values collide
(duplicate_dataset_table_names), or an export dataset's export uses a
different connection than the sync (connection_mismatch).
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Validation failed. An enabled dataset is missing ingestionMode
(ingestion_mode_required_for_enabled_datasets), a merge dataset has no
primary key, a tableName is already taken, two source columns sanitize to
the same destination column name (duplicate_sanitized_column_names — rename
or disable the conflicting source columns), or a data-element combination is
invalid (e.g. transformMode without children, or isPrimaryKey with mask).
PUT /v1/syncs/{_syncId}/datasets HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 353
[
{
"name": "Account",
"externalId": "Account",
"enable": true,
"ingestionMode": "merge",
"exportProperties": {
"type": "all"
},
"dataElements": [
{
"name": "Id",
"enable": true,
"mask": false,
"isPrimaryKey": true
},
{
"name": "Name",
"enable": true,
"mask": false
}
]
},
{
"name": "Contact",
"externalId": "Contact",
"enable": false,
"ingestionMode": "merge",
"exportProperties": {
"type": "delta"
}
}
]No content
Returns a single dataset of a sync by ID.
Sync id.
6a55970bdb54be366c858bc9Dataset id.
6a559b547885d8f93921c2baDataset object.
One table/object a sync replicates, with its per-column selections and load behavior.
Datasets are scoped to a single sync and are created and updated in bulk via
PUT /v1/syncs/{_syncId}/datasets.
Unique identifier for the dataset.
6a559b547885d8f93921c2baAccount owner the dataset belongs to.
68c821306f5d848c881da205Sync this dataset belongs to. Assigned from the request path at creation.
6a559b5185efa7502eefd439Display name of the dataset, typically the source's human-readable label (e.g. a Salesforce object's display name). Empty string when never set.
AccountIdentifier of the dataset in the source system — the table/object name for
application sources, or the export ID when isExport is true. Immutable after
creation.
AccountWhen true, the sync replicates this dataset on each run. Disabled datasets stay configured but are skipped.
trueWhen true, every column in the source dataset is replicated. Computed by the
platform: true while the dataset has no explicit dataElements selection,
false once one is saved.
How each run's extracted records are written into the destination table.
Required once the dataset is enabled (422 ingestion_mode_required_for_enabled_datasets). merge additionally requires a
primary-key column in dataElements.
mergePossible values: Destination table name override. Must be unique among the sync's datasets
(422 table_name_already_exists); required when isExport is true. Omit to
let the platform derive the table name from the dataset.
accountWhen true, the dataset's records come from an existing export resource instead
of a source table; externalId then holds the export ID, and the export must
use the sync's source connection. Export datasets require tableName and an
explicit dataElements selection, and do not accept exportProperties.
When true, the platform detected a schema change that needs a user decision
before the dataset can be modified or replicated again — typically drift the
driftPolicy does not automate. Updates to the dataset are rejected until the
conflict is resolved (in the UI) in the same save that clears the flag.
Only present (as true) in list responses, on export-backed datasets whose
export no longer uses the sync's source connection. Repoint the export or
recreate the dataset to resume replicating it.
trueUnauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Not found. The requested resource does not exist or is not visible to the caller.
GET /v1/syncs/{_syncId}/datasets/{_id} HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"_id": "6a559b547885d8f93921c2ba",
"_userId": "68c821306f5d848c881da205",
"_syncId": "6a55970bdb54be366c858bc9",
"name": "Account",
"externalId": "Account",
"enable": true,
"enableAllDataElements": false,
"ingestionMode": "merge",
"userActionRequired": false,
"exportProperties": {
"type": "delta",
"delta": {}
},
"driftPolicy": {
"element": {}
},
"dataElements": [
{
"name": "Id",
"enable": true,
"mask": false,
"isPrimaryKey": true,
"children": []
},
{
"name": "Name",
"enable": true,
"mask": false,
"children": []
}
]
}Returns the change history for a sync. Entries cover the sync itself and the related resources it depends on — its datasets (the tables being replicated) and the source and destination connections it uses — so a single response interleaves sync, dataset, and connection events. Read resourceType on each entry to tell them apart.
Sync id.
6a1889b0c7b977adc441bc0dMaximum number of audit entries to return per page.
1000Example: 100Opaque pagination cursor for the next page. Take it from the after value in the Link
response header's rel="next" URL rather than constructing it.
W3siJGRhdGUiOiIyMDI2LTA1LTAxVDAwOjAwOjAwLjAwMFoifSwiNjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIl0Only return entries at or after this timestamp.
2026-05-01T00:00:00.000ZOnly return entries at or before this timestamp.
2026-05-31T23:59:59.999ZFilter by the change type. Maps to the event field on each entry.
updatePossible values: Filter by how the change was initiated.
uiPossible values: Filter to changes performed by a single user.
624cb0346309dc3a543733a2Narrow the aggregated results to a single resource kind — e.g. sync for only the sync's
own changes, excluding its datasets and connections.
syncPossible values: Filter to a single resource's entries. Must be sent together with resourceType;
sending it alone returns 400 invalid_id.
682094fa7eb7fc3e7ab7a4a0Array of audit entries, newest first.
No audit entries match the query.
Bad request. The server could not understand the request because of malformed syntax or invalid parameters.
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Not found. The requested resource does not exist or is not visible to the caller.
Unprocessable entity. The request was well-formed but was unable to be followed due to semantic errors.
GET /v1/syncs/{_syncId}/audit HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
{
"_id": "6a1889e4c7b977adc441cb3f",
"resourceType": "sync",
"_resourceId": "682094fa7eb7fc3e7ab7a4a0",
"source": "ui",
"event": "update",
"time": "2026-05-28T18:31:00.861Z",
"byUser": {
"_id": "624cb0346309dc3a543733a2",
"email": "user@example.com",
"name": "Tyler Lamparter"
},
"fieldChanges": [
{
"fieldPath": "name",
"oldValue": "",
"newValue": "Order Analytics"
},
{
"fieldPath": "schedule",
"newValue": "? 0 */1 * * *"
},
{
"fieldPath": "timezone",
"newValue": "Etc/UTC"
}
]
},
{
"_id": "6a1889c9c7b977adc441c27a",
"resourceType": "connection",
"_resourceId": "68c8213f8ece256d4c9fa351",
"source": "system",
"event": "update",
"time": "2026-05-28T18:30:32.891Z",
"byUser": {
"_id": "624cb0346309dc3a543733a2",
"email": "user@example.com",
"name": "Tyler Lamparter"
},
"fieldChanges": [
{
"fieldPath": "salesforce.refreshToken",
"newValue": "********"
}
]
}
]Returns the events recorded for a sync across all of its runs — schema drift the platform detected or applied, and data-catalog activity — newest first. Events are retained per the account's data retention period; a time_lte older than the retention window returns an empty list.
Sync id.
6a4b8bfb731a7a5cae9bd364Maximum number of events to return per page.
100Example: 251-based page number. Combine with limit to page through results.
1Example: 2Only return events recorded at or before this timestamp.
2026-07-14T00:00:00.000ZOnly return events recorded after this timestamp. Must not be in the future
(422 future_time_gt_not_allowed).
2026-07-07T00:00:00.000ZOnly return events of one category.
Schema DriftPossible values: Only return events for one source table/object.
AccountOnly return events from one run. Use the flowExecutionGroupId returned by
POST /v1/syncs/{_syncId}/run.
d0f875a575bd4b8c944533da773f350aEvents matching the filters, newest first.
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
The sync belongs to a different account owner.
Sync not found.
Error code: invalid_ref.
Invalid filter. A timestamp value cannot be parsed, or time_gt is in the
future (future_time_gt_not_allowed).
GET /v1/di/resource/syncs/{_syncId}/events HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"events": [
{
"id": "80ba31fe-b66d-4777-9b12-3177c55aab13",
"_syncId": "6a4b8bfb731a7a5cae9bd364",
"_userId": "68c821306f5d848c881da205",
"flowExecutionGroupId": "d0f875a575bd4b8c944533da773f350a",
"resourceName": "RelatedListDefinition",
"severity": "INFO",
"eventTime": "2026-07-13T12:36:06.225Z",
"type": "Schema Drift",
"stage": "Extract",
"metadata": {
"action": "Table removed",
"resourceType": "Table"
}
}
]
}Returns the number of records each sync loaded during the current calendar month (UTC), for the current environment. Only syncs that ran this month appear. Requires account-administration permission (the same level that manages account users); accounts without a Data Ingestion entitlement get an empty usage array.
Per-sync loaded-record volumes for the current month.
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
GET /v1/syncs/usage HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"usage": [
{
"_id": "6a4b8bfb731a7a5cae9bd364",
"name": "Salesforce Demo Sync",
"source": {
"_id": "6a2a95909e994395f3c2a4e6",
"name": "Salesforce Production"
},
"destination": {
"_id": "68d02dbe0839a514623c1d6d",
"name": "Snowflake"
},
"volume": 1458
}
]
}Returns account-wide sync usage by calendar month, newest first — the records loaded across all syncs and environments, alongside the account's Data Ingestion entitlement for each month. History reaches back at most 14 months. Requires account-administration permission (the same level that manages account users); accounts without a Data Ingestion entitlement get an empty array.
First month to include, as YYYY-MM. Cannot be more than 14 months back
(400 invalid_date_range). Defaults to 14 months before the current month.
2026-05Pattern: ^\d{4}-(0[1-9]|1[0-2])$Last month to include, as YYYY-MM. Cannot be in the future. Defaults to the
current month.
2026-07Pattern: ^\d{4}-(0[1-9]|1[0-2])$Monthly usage totals, newest month first.
One month's account-wide sync usage.
Calendar year of the usage month.
2026Calendar month (1-12) of the usage.
7Records loaded across all syncs that month, serialized as a string to avoid precision loss at high volumes.
292460Records per month the account's Data Ingestion license allows, serialized as a string.
100000000Invalid date range. from/to is malformed (invalid_date_format), or the
range is older than 14 months, in the future, or reversed
(invalid_date_range).
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
GET /v1/syncs/usage/summary HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
{
"year": 2026,
"month": 7,
"volume": "1537",
"entitlement": "100000000"
},
{
"year": 2026,
"month": 6,
"volume": "292460",
"entitlement": "100000000"
},
{
"year": 2026,
"month": 5,
"volume": "127448244",
"entitlement": "100000000"
}
]Returns the records loaded by syncs during the current calendar month (UTC), broken down by environment — production plus every additional environment in the account. Environments with no runs this month report a volume of 0. Requires account-administration permission (the same level that manages account users); accounts without a Data Ingestion entitlement get an empty usage array.
Per-environment loaded-record volumes for the current month.
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
GET /v1/syncs/usage/environments HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"usage": [
{
"environment": {
"_id": "68c821306f5d848c881da205",
"name": "Production"
},
"volume": 1537
},
{
"environment": {
"_id": "69cc38111c25db1bb3468a62",
"name": "Sandbox"
},
"volume": 0
}
]
}Returns the catalog of applications that can be used as the source of a sync — the system a sync extracts records from. Use the returned id as the source application when building a sync, and category to group the options in a picker.
Array of supported source applications.
A supported source application.
Application identifier to use as the sync source.
salesforceDisplay grouping for the application in selection UIs.
HTTP-connector-backed sources use the category
HTTP Connector.
Sales & MarketingHuman-readable application name. Present on HTTP-connector-backed sources.
StripeWhere the source's metadata comes from. Present on
HTTP-connector-backed sources with the value
httpConnectorMetadata.
httpConnectorMetadataUnauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
GET /v1/di/metadata/sources HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
{
"id": "salesforce",
"category": "Sales & Marketing"
},
{
"id": "netsuite",
"category": "Sales & Marketing"
},
{
"id": "stripe",
"category": "HTTP Connector",
"displayName": "Stripe",
"source": "httpConnectorMetadata",
"httpConnector": {
"_id": "63987132784a39b73aae63cd",
"_apiId": null,
"_versionId": "63987132784a39b73aae63ce"
}
}
]Returns the catalog of applications that can be used as the destination of a sync — the data warehouse a sync loads records into. Use the returned id as the destination application when building a sync. Identifiers include snowflake (Snowflake), nsaw (NetSuite Analytics Warehouse), and bigquery (Google BigQuery).
Array of supported destination applications.
A supported destination application.
Application identifier to use as the sync destination.
snowflakeUnauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
GET /v1/di/metadata/destinations HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
{
"id": "snowflake"
},
{
"id": "nsaw"
}
]Returns the catalog of tables/objects a connection's application exposes for syncing, plus the connection's existing export resources that can back export-based datasets. Use the returned name values as externalId when creating datasets via PUT /v1/syncs/{_syncId}/datasets.
Source connection id.
6a2a95909e994395f3c2a4e6Restrict the response to one catalog. With datasets, only source
tables/objects are returned; with exports, only export resources.
allExample: datasetsPossible values: When true, re-reads the catalog from the source application instead of
serving the platform's cached copy. Slower; use after making schema changes
in the source.
truePossible values: Dataset and/or export catalogs, keyed by type.
Bad request. The connection id is not a valid id, or type is not one of the
allowed values.
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
The catalog could not be fetched from the source application — e.g. the
connection is offline or rejects the request.
Error code: di_fetch_datasets_failure.
GET /v1/di/metadata/connections/{_connectionId}/datasets HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"datasets": [
{
"name": "Account",
"displayName": "Account"
},
{
"name": "Contact",
"displayName": "Contact"
}
],
"exports": [
{
"name": "Pull Salesforce Records",
"_id": "6a3e7c54c2387aaa87881b80",
"type": "delta",
"adaptorType": "SalesforceExport"
}
]
}Get column details for a dataset on a connection
Returns the full column/field catalog for one table/object on a connection, as read from the source application. Use it to build the dataElements selection before saving a dataset via PUT /v1/syncs/{_syncId}/datasets — each element's name here is the name to reference there.
Source connection id.
6a2a95909e994395f3c2a4e6Table/object name from GET /v1/di/metadata/connections/{_connectionId}/datasets.
When isExport is true, pass the export id instead.
AccountSet to true when datasetName is an export id, to read the export's record
structure instead of a source table.
falsePossible values: When true, re-reads the columns from the source application instead of the
platform's cached copy. Use after making schema changes in the source.
truePossible values: NetSuite record type backing the dataset, for saved-search datasets. Omit for other sources.
salesorderNetSuite saved-search display name, sent together with recordType.
Sales OrdersThe dataset's column catalog.
Bad request. The server could not understand the request because of malformed syntax or invalid parameters.
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
The columns could not be fetched from the source application — e.g. the
table/object does not exist or the connection rejects the request.
Error code: di_fetch_data_elements_failure.
GET /v1/di/metadata/connections/{_connectionId}/datasets/{datasetName}/details HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"dataset": {
"name": "Account",
"displayName": "Account",
"platform": "salesforce",
"dataSetType": "Regular",
"href": "/services/data/v61.0/sobjects/Account",
"nativeTerminology": {
"dataset": "Object",
"dataElements": "Fields",
"description": "inlineHelpText"
},
"dataElements": [
{
"name": "Id",
"displayName": "Account ID",
"dataType": "String",
"nativeDataType": "id",
"dataLength": 18,
"precision": 0,
"scale": 0,
"constraint": "PRIMARY_KEY",
"isPrimaryKey": true,
"fullyQualifiedName": "salesforce.00D30000000LHK8EAO.Account.Id",
"appSpecificProperties": {
"calculated": false
},
"children": null
},
{
"name": "Name",
"displayName": "Account Name",
"dataType": "String",
"nativeDataType": "string",
"dataLength": 255,
"precision": 0,
"scale": 0,
"fullyQualifiedName": "salesforce.00D30000000LHK8EAO.Account.Name",
"appSpecificProperties": {
"calculated": false
},
"children": null
}
]
}
}List a connection's datasets merged with a sync's configuration
Returns the connection's full dataset catalog with the sync's saved configuration merged in: catalog entries the sync already replicates carry their stored dataset fields (_id, enable, ingestionMode, …) plus computed totalFieldCount and selectedFieldCount, while unsaved entries appear with catalog fields only. dataElements arrays are stripped from every item to keep the payload small — read one item's columns with the sync-scoped details endpoint.
Use this to render or reconcile a sync's dataset selection; for just the saved datasets, GET /v1/syncs/{_syncId}/datasets is lighter.
Sync id.
6a55970bdb54be366c858bc9The sync's source connection id.
6a2a95909e994395f3c2a4e6Restrict the response to one catalog. With datasets, only source
tables/objects are returned; with exports, only export-backed entries.
allExample: datasetsPossible values: When true, re-reads the catalog from the source application instead of the
platform's cached copy.
truePossible values: Merged dataset and/or export lists, keyed by type.
Bad request. The server could not understand the request because of malformed syntax or invalid parameters.
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
The sync or connection belongs to a different account owner.
The catalog could not be fetched or merged — e.g. the connection is offline or the sync/connection pair does not match.
GET /v1/di/metadata/sync/{_syncId}/connections/{_connectionId}/datasets HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"datasets": [
{
"name": "Account",
"displayName": "Account",
"externalId": "Account",
"_id": "6a55970c5f9498a1758a0ad3",
"enable": true,
"enableAllDataElements": false,
"ingestionMode": "append",
"exportProperties": {
"type": "all"
},
"userActionRequired": false,
"totalFieldCount": 49,
"selectedFieldCount": 35
},
{
"name": "Contact",
"displayName": "Contact",
"exportProperties": {
"type": "delta"
}
}
],
"exports": [
{
"name": "Pull Salesforce Records",
"externalId": "6a3e7c54c2387aaa87881b80",
"_id": "6a55974edb54be366c858d26",
"type": "delta",
"adaptorType": "SalesforceExport",
"tableName": "pull_salesforce_records",
"enable": true,
"ingestionMode": "merge",
"isExport": true,
"userActionRequired": false,
"totalFieldCount": 16,
"selectedFieldCount": 16
}
]
}Get column details for a dataset in a sync's context
Returns one table/object's full column catalog from the source, merged with the sync's saved dataset state — enablement, ingestionMode, exportProperties, drift policy, and per-column selections. Use it to edit a dataset's dataElements with the current source schema and saved selections in one payload.
Sync id.
6a55970bdb54be366c858bc9The sync's source connection id.
6a2a95909e994395f3c2a4e6Table/object name from the merged catalog. When isExport is true, pass the
saved dataset's _id instead.
AccountSet to true when datasetName identifies an export-backed dataset, to read
the export's record structure instead of a source table.
falsePossible values: When true, re-reads the columns from the source application instead of the
platform's cached copy.
truePossible values: NetSuite record type backing the dataset, for saved-search datasets. Omit for other sources.
salesorderNetSuite saved-search display name, sent together with recordType.
Sales OrdersThe dataset's column catalog merged with the sync's saved state.
Bad request. The server could not understand the request because of malformed syntax or invalid parameters.
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
The sync or connection belongs to a different account owner.
The columns could not be fetched or merged — e.g. the table/object does not
exist in the source or the connection rejects the request.
Error code: di_fetch_data_elements_failure.
GET /v1/di/metadata/sync/{_syncId}/connections/{_connectionId}/datasets/{datasetName}/details HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"dataset": {
"_id": "6a55970c5f9498a1758a0ad3",
"name": "Account",
"displayName": "Account",
"platform": "salesforce",
"enable": true,
"isExport": false,
"ingestionMode": "append",
"exportProperties": {
"type": "all"
},
"dataElements": [
{
"name": "Id",
"displayName": "Account ID",
"dataType": "String",
"nativeDataType": "id",
"dataLength": 18,
"enable": true,
"isPrimaryKey": true
},
{
"name": "Name",
"displayName": "Account Name",
"dataType": "String",
"nativeDataType": "string",
"dataLength": 255,
"enable": true
}
]
}
}Last updated
Was this helpful?