@celigo/api-specs 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +119 -0
- package/dist/account.yml +592 -0
- package/dist/agent.yml +908 -0
- package/dist/ai-agent.yml +5471 -0
- package/dist/api.yml +4140 -0
- package/dist/apim.yml +1286 -0
- package/dist/asynchelper.yml +3391 -0
- package/dist/audit.yml +2006 -0
- package/dist/connection.yml +8665 -0
- package/dist/connector.yml +1406 -0
- package/dist/ediprofile.yml +911 -0
- package/dist/editransaction.yml +1210 -0
- package/dist/enduser.yml +1724 -0
- package/dist/environment.yml +568 -0
- package/dist/eventreport.yml +692 -0
- package/dist/export.yml +17610 -0
- package/dist/filedefinition.yml +1396 -0
- package/dist/filestorage.yml +3102 -0
- package/dist/flow.yml +7928 -0
- package/dist/guardrail.yml +2763 -0
- package/dist/httpconnector.yml +2277 -0
- package/dist/httpconnectorendpoint.yml +722 -0
- package/dist/httpconnectorresource.yml +396 -0
- package/dist/iclient.yml +4452 -0
- package/dist/import.yml +15381 -0
- package/dist/integration.yml +4406 -0
- package/dist/job.yml +2014 -0
- package/dist/lookupcache.yml +1325 -0
- package/dist/marketplace.yml +685 -0
- package/dist/mcp-oauth-provider.yml +590 -0
- package/dist/mcp-server.yml +2656 -0
- package/dist/notification.yml +488 -0
- package/dist/processor.yml +1253 -0
- package/dist/profile.yml +455 -0
- package/dist/recyclebin.yml +768 -0
- package/dist/script.yml +1128 -0
- package/dist/stack.yml +1291 -0
- package/dist/state.yml +894 -0
- package/dist/subscription.yml +1405 -0
- package/dist/sync.yml +4857 -0
- package/dist/tag.yml +553 -0
- package/dist/template.yml +897 -0
- package/dist/tool.yml +33656 -0
- package/dist/tradingpartnerconnector.yml +1490 -0
- package/dist/user.yml +831 -0
- package/package.json +41 -0
- package/schemas.json +8420 -0
package/dist/sync.yml
ADDED
|
@@ -0,0 +1,4857 @@
|
|
|
1
|
+
openapi: 3.2.0
|
|
2
|
+
info:
|
|
3
|
+
version: 1.0.0
|
|
4
|
+
title: Syncs
|
|
5
|
+
description: API for building and running Celigo syncs and monitoring their jobs, datasets, events, and errors.
|
|
6
|
+
servers:
|
|
7
|
+
- url: https://api.integrator.io
|
|
8
|
+
description: Production (US / default region)
|
|
9
|
+
- url: https://api.eu.integrator.io
|
|
10
|
+
description: Production (EU region)
|
|
11
|
+
- url: https://api.au.integrator.io
|
|
12
|
+
description: Production (AU region)
|
|
13
|
+
- url: https://api.ca.integrator.io
|
|
14
|
+
description: Production (CA region)
|
|
15
|
+
security:
|
|
16
|
+
- bearerAuth: []
|
|
17
|
+
tags:
|
|
18
|
+
- name: Syncs
|
|
19
|
+
description: |-
|
|
20
|
+
Syncs continuously replicate data from source applications into a data warehouse.
|
|
21
|
+
A sync belongs to an integration and pairs a source connection with a destination
|
|
22
|
+
database/schema; its **datasets** choose which tables and columns to replicate and
|
|
23
|
+
how records are loaded. Use these endpoints to create and configure syncs and
|
|
24
|
+
their datasets, discover the supported source and destination applications and
|
|
25
|
+
their tables, review change history and schema-drift events, and track usage.
|
|
26
|
+
|
|
27
|
+
## Sync and dataset schemas
|
|
28
|
+
|
|
29
|
+
{% openapi-schemas spec="sync" schemas="Sync,Dataset" grouped="true" %}
|
|
30
|
+
- name: Sync Jobs
|
|
31
|
+
description: |-
|
|
32
|
+
Every sync run produces a read-only sync job that tracks extraction, loading, and
|
|
33
|
+
error counts across the sync's tables. Use these endpoints to trigger runs,
|
|
34
|
+
monitor job progress and per-table families, retrieve run errors, and cancel
|
|
35
|
+
in-flight jobs.
|
|
36
|
+
|
|
37
|
+
## Sync job schema
|
|
38
|
+
|
|
39
|
+
{% openapi-schemas spec="sync" schemas="SyncJob" grouped="true" %}
|
|
40
|
+
paths:
|
|
41
|
+
/v1/syncs:
|
|
42
|
+
get:
|
|
43
|
+
x-internal: false
|
|
44
|
+
summary: List syncs
|
|
45
|
+
description: |-
|
|
46
|
+
Returns all syncs in the account, sorted by name. Filter to one integration with
|
|
47
|
+
the `_integrationId` query parameter (equivalent to
|
|
48
|
+
`GET /v1/integrations/{_integrationId}/syncs`).
|
|
49
|
+
operationId: listSyncs
|
|
50
|
+
tags:
|
|
51
|
+
- Syncs
|
|
52
|
+
parameters:
|
|
53
|
+
- name: _integrationId
|
|
54
|
+
in: query
|
|
55
|
+
required: false
|
|
56
|
+
description: Only return syncs that belong to this integration.
|
|
57
|
+
schema:
|
|
58
|
+
type: string
|
|
59
|
+
format: objectId
|
|
60
|
+
x-celigo-refModel: integrations
|
|
61
|
+
examples:
|
|
62
|
+
- 69f4ffd395ec28be9cb8c12e
|
|
63
|
+
- name: limit
|
|
64
|
+
in: query
|
|
65
|
+
required: false
|
|
66
|
+
description: Maximum number of syncs to return per page.
|
|
67
|
+
schema:
|
|
68
|
+
type: integer
|
|
69
|
+
minimum: 1
|
|
70
|
+
maximum: 1000
|
|
71
|
+
default: 1000
|
|
72
|
+
examples:
|
|
73
|
+
- 100
|
|
74
|
+
- name: after
|
|
75
|
+
in: query
|
|
76
|
+
required: false
|
|
77
|
+
description: |-
|
|
78
|
+
Opaque pagination cursor for the next page. Take it from the `after` value in
|
|
79
|
+
the `Link` response header's `rel="next"` URL rather than constructing it.
|
|
80
|
+
schema:
|
|
81
|
+
type: string
|
|
82
|
+
examples:
|
|
83
|
+
- WyIiLCI2OTdiZDAwNDFhMWJiMDdhZWY4NmRmNDciXQ
|
|
84
|
+
- $ref: '#/components/parameters/Include'
|
|
85
|
+
- $ref: '#/components/parameters/Exclude'
|
|
86
|
+
responses:
|
|
87
|
+
'200':
|
|
88
|
+
description: Array of sync objects.
|
|
89
|
+
headers:
|
|
90
|
+
Link:
|
|
91
|
+
description: |-
|
|
92
|
+
RFC 5988 pagination links. When more pages remain, includes a
|
|
93
|
+
`<...>; rel="next"` entry with an `after` cursor; absent on the
|
|
94
|
+
final page.
|
|
95
|
+
schema:
|
|
96
|
+
type: string
|
|
97
|
+
content:
|
|
98
|
+
application/json:
|
|
99
|
+
schema:
|
|
100
|
+
type: array
|
|
101
|
+
items:
|
|
102
|
+
$ref: '#/components/schemas/Sync'
|
|
103
|
+
examples:
|
|
104
|
+
default:
|
|
105
|
+
value:
|
|
106
|
+
- _id: 6a4b8bfb731a7a5cae9bd364
|
|
107
|
+
_userId: 68c821306f5d848c881da205
|
|
108
|
+
_integrationId: 69f4ffd395ec28be9cb8c12e
|
|
109
|
+
name: Salesforce Demo Sync
|
|
110
|
+
disabled: false
|
|
111
|
+
schedule: '? 0 */8 * * *'
|
|
112
|
+
timezone: Asia/Calcutta
|
|
113
|
+
historicDateTime: '2022-07-04T18:30:00.000Z'
|
|
114
|
+
source:
|
|
115
|
+
_connectionId: 6a2a95909e994395f3c2a4e6
|
|
116
|
+
destination:
|
|
117
|
+
_connectionId: 68d02dbe0839a514623c1d6d
|
|
118
|
+
database: ANALYTICS_DB
|
|
119
|
+
schema: salesforce_raw
|
|
120
|
+
driftPolicy:
|
|
121
|
+
dataset:
|
|
122
|
+
added: automate
|
|
123
|
+
removed: automate
|
|
124
|
+
element:
|
|
125
|
+
added: automate
|
|
126
|
+
objectAdded: preserve
|
|
127
|
+
arrayAdded: preserve
|
|
128
|
+
removed: automate
|
|
129
|
+
reduced: automate
|
|
130
|
+
expanded: automate
|
|
131
|
+
- _id: 6966b5bd344490b470099978
|
|
132
|
+
_userId: 68c821306f5d848c881da205
|
|
133
|
+
_integrationId: 6966b587dfb77eaae13110c7
|
|
134
|
+
name: Order Analytics
|
|
135
|
+
disabled: true
|
|
136
|
+
historicDateTime: '1970-01-01T00:00:00.000Z'
|
|
137
|
+
source:
|
|
138
|
+
_connectionId: 68db4afe97bf4f4942a3b92c
|
|
139
|
+
destination: {}
|
|
140
|
+
driftPolicy:
|
|
141
|
+
dataset: {}
|
|
142
|
+
element: {}
|
|
143
|
+
'204':
|
|
144
|
+
description: No syncs exist in the account.
|
|
145
|
+
'401':
|
|
146
|
+
$ref: '#/components/responses/401-unauthorized'
|
|
147
|
+
'422':
|
|
148
|
+
$ref: '#/components/responses/422-unprocessable-entity'
|
|
149
|
+
post:
|
|
150
|
+
x-internal: false
|
|
151
|
+
summary: Create a sync
|
|
152
|
+
description: |-
|
|
153
|
+
Creates a sync inside an integration. Only `_integrationId` and
|
|
154
|
+
`source._connectionId` are required — new syncs start as disabled drafts, so the
|
|
155
|
+
destination, datasets, and schedule can be configured with later requests. Creating
|
|
156
|
+
a sync also registers its connections for the platform's replication runtime.
|
|
157
|
+
operationId: createSync
|
|
158
|
+
tags:
|
|
159
|
+
- Syncs
|
|
160
|
+
requestBody:
|
|
161
|
+
required: true
|
|
162
|
+
content:
|
|
163
|
+
application/json:
|
|
164
|
+
schema:
|
|
165
|
+
$ref: '#/components/schemas/Request'
|
|
166
|
+
examples:
|
|
167
|
+
draft:
|
|
168
|
+
summary: Minimal draft sync
|
|
169
|
+
value:
|
|
170
|
+
_integrationId: 6966b587dfb77eaae13110c7
|
|
171
|
+
source:
|
|
172
|
+
_connectionId: 6a2a95909e994395f3c2a4e6
|
|
173
|
+
configured:
|
|
174
|
+
summary: Fully configured sync
|
|
175
|
+
value:
|
|
176
|
+
_integrationId: 6966b587dfb77eaae13110c7
|
|
177
|
+
name: Salesforce Demo Sync
|
|
178
|
+
schedule: '? 0 */6 * * *'
|
|
179
|
+
timezone: America/New_York
|
|
180
|
+
historicDateTime: '2022-07-04T18:30:00.000Z'
|
|
181
|
+
source:
|
|
182
|
+
_connectionId: 6a2a95909e994395f3c2a4e6
|
|
183
|
+
destination:
|
|
184
|
+
_connectionId: 68d02dbe0839a514623c1d6d
|
|
185
|
+
database: ANALYTICS_DB
|
|
186
|
+
schema: salesforce_raw
|
|
187
|
+
driftPolicy:
|
|
188
|
+
dataset:
|
|
189
|
+
added: automate
|
|
190
|
+
removed: automate
|
|
191
|
+
element:
|
|
192
|
+
added: automate
|
|
193
|
+
objectAdded: preserve
|
|
194
|
+
arrayAdded: preserve
|
|
195
|
+
removed: automate
|
|
196
|
+
reduced: automate
|
|
197
|
+
expanded: automate
|
|
198
|
+
responses:
|
|
199
|
+
'201':
|
|
200
|
+
description: Created sync.
|
|
201
|
+
content:
|
|
202
|
+
application/json:
|
|
203
|
+
schema:
|
|
204
|
+
$ref: '#/components/schemas/Sync'
|
|
205
|
+
examples:
|
|
206
|
+
draft:
|
|
207
|
+
summary: Created draft sync
|
|
208
|
+
value:
|
|
209
|
+
_id: 6a559b5185efa7502eefd439
|
|
210
|
+
_userId: 68c821306f5d848c881da205
|
|
211
|
+
_integrationId: 6966b587dfb77eaae13110c7
|
|
212
|
+
name: ''
|
|
213
|
+
disabled: true
|
|
214
|
+
source:
|
|
215
|
+
_connectionId: 6a2a95909e994395f3c2a4e6
|
|
216
|
+
destination: {}
|
|
217
|
+
driftPolicy:
|
|
218
|
+
dataset: {}
|
|
219
|
+
element: {}
|
|
220
|
+
'400':
|
|
221
|
+
description: |-
|
|
222
|
+
Bad request. `_integrationId` is missing (`missing_integration_id`), the body
|
|
223
|
+
contains `_id` or `_userId` (`id_and_userId_in_request`), or a connection
|
|
224
|
+
reference is not a valid id.
|
|
225
|
+
content:
|
|
226
|
+
application/json:
|
|
227
|
+
schema:
|
|
228
|
+
$ref: '#/components/schemas/Error'
|
|
229
|
+
examples:
|
|
230
|
+
missing_integration_id:
|
|
231
|
+
summary: Missing _integrationId
|
|
232
|
+
value:
|
|
233
|
+
errors:
|
|
234
|
+
- code: missing_integration_id
|
|
235
|
+
message: To create sync integration id is required. Not provided in request body.
|
|
236
|
+
'401':
|
|
237
|
+
$ref: '#/components/responses/401-unauthorized'
|
|
238
|
+
'422':
|
|
239
|
+
description: |-
|
|
240
|
+
Validation failed. `source._connectionId` is missing
|
|
241
|
+
(`missing_source_connection`), the destination duplicates another sync
|
|
242
|
+
(`duplicate_destination_host`), the destination connector rejected the
|
|
243
|
+
sync configuration (`invalid_destination_sync_config`), two enabled
|
|
244
|
+
datasets resolve to the same destination table
|
|
245
|
+
(`conflicting_table_name`), a field exceeds its size limit
|
|
246
|
+
(`size_limit_exceeded`), or the drift policy is inconsistent
|
|
247
|
+
(`drift_policy_invalid_setup`).
|
|
248
|
+
content:
|
|
249
|
+
application/json:
|
|
250
|
+
schema:
|
|
251
|
+
$ref: '#/components/schemas/Error'
|
|
252
|
+
examples:
|
|
253
|
+
missing_source_connection:
|
|
254
|
+
summary: Missing source connection
|
|
255
|
+
value:
|
|
256
|
+
errors:
|
|
257
|
+
- code: missing_source_connection
|
|
258
|
+
message: Source connection is missing in the request
|
|
259
|
+
/v1/syncs/{_id}:
|
|
260
|
+
get:
|
|
261
|
+
x-internal: false
|
|
262
|
+
summary: Get a sync
|
|
263
|
+
description: Returns a single sync by ID.
|
|
264
|
+
operationId: getSync
|
|
265
|
+
tags:
|
|
266
|
+
- Syncs
|
|
267
|
+
parameters:
|
|
268
|
+
- name: _id
|
|
269
|
+
in: path
|
|
270
|
+
required: true
|
|
271
|
+
description: Sync id.
|
|
272
|
+
schema:
|
|
273
|
+
type: string
|
|
274
|
+
format: objectId
|
|
275
|
+
x-celigo-refModel: syncs
|
|
276
|
+
examples:
|
|
277
|
+
- 6a4b8bfb731a7a5cae9bd364
|
|
278
|
+
responses:
|
|
279
|
+
'200':
|
|
280
|
+
description: Sync object.
|
|
281
|
+
content:
|
|
282
|
+
application/json:
|
|
283
|
+
schema:
|
|
284
|
+
$ref: '#/components/schemas/Sync'
|
|
285
|
+
examples:
|
|
286
|
+
configured:
|
|
287
|
+
summary: Configured, enabled sync
|
|
288
|
+
value:
|
|
289
|
+
_id: 6a4b8bfb731a7a5cae9bd364
|
|
290
|
+
_userId: 68c821306f5d848c881da205
|
|
291
|
+
_integrationId: 69f4ffd395ec28be9cb8c12e
|
|
292
|
+
name: Salesforce Demo Sync
|
|
293
|
+
disabled: false
|
|
294
|
+
schedule: '? 0 */8 * * *'
|
|
295
|
+
timezone: Asia/Calcutta
|
|
296
|
+
historicDateTime: '2022-07-04T18:30:00.000Z'
|
|
297
|
+
source:
|
|
298
|
+
_connectionId: 6a2a95909e994395f3c2a4e6
|
|
299
|
+
destination:
|
|
300
|
+
_connectionId: 68d02dbe0839a514623c1d6d
|
|
301
|
+
database: ANALYTICS_DB
|
|
302
|
+
schema: salesforce_raw
|
|
303
|
+
driftPolicy:
|
|
304
|
+
dataset:
|
|
305
|
+
added: automate
|
|
306
|
+
removed: automate
|
|
307
|
+
element:
|
|
308
|
+
added: automate
|
|
309
|
+
objectAdded: preserve
|
|
310
|
+
arrayAdded: preserve
|
|
311
|
+
removed: automate
|
|
312
|
+
reduced: automate
|
|
313
|
+
expanded: automate
|
|
314
|
+
'401':
|
|
315
|
+
$ref: '#/components/responses/401-unauthorized'
|
|
316
|
+
'404':
|
|
317
|
+
$ref: '#/components/responses/404-not-found'
|
|
318
|
+
put:
|
|
319
|
+
x-internal: false
|
|
320
|
+
summary: Update a sync
|
|
321
|
+
description: |-
|
|
322
|
+
Replaces a sync's configuration. Send the complete desired state: omitted optional
|
|
323
|
+
fields (`schedule`, `timezone`, destination details, `driftPolicy`) are cleared, not
|
|
324
|
+
preserved. `_integrationId` cannot be sent — the integration is fixed at creation.
|
|
325
|
+
|
|
326
|
+
Set `disabled: false` to enable the sync once its source, destination, datasets, and
|
|
327
|
+
`historicDateTime` are configured; enabling an incomplete sync fails with
|
|
328
|
+
`422 sync_not_enabled`.
|
|
329
|
+
operationId: updateSync
|
|
330
|
+
tags:
|
|
331
|
+
- Syncs
|
|
332
|
+
parameters:
|
|
333
|
+
- name: _id
|
|
334
|
+
in: path
|
|
335
|
+
required: true
|
|
336
|
+
description: Sync id.
|
|
337
|
+
schema:
|
|
338
|
+
type: string
|
|
339
|
+
format: objectId
|
|
340
|
+
x-celigo-refModel: syncs
|
|
341
|
+
examples:
|
|
342
|
+
- 6a4b8bfb731a7a5cae9bd364
|
|
343
|
+
requestBody:
|
|
344
|
+
required: true
|
|
345
|
+
content:
|
|
346
|
+
application/json:
|
|
347
|
+
schema:
|
|
348
|
+
$ref: '#/components/schemas/Request'
|
|
349
|
+
examples:
|
|
350
|
+
configure:
|
|
351
|
+
summary: Name the sync and set its destination
|
|
352
|
+
value:
|
|
353
|
+
name: Salesforce Demo Sync
|
|
354
|
+
schedule: '? 0 */6 * * *'
|
|
355
|
+
timezone: America/New_York
|
|
356
|
+
historicDateTime: '2022-07-04T18:30:00.000Z'
|
|
357
|
+
source:
|
|
358
|
+
_connectionId: 6a2a95909e994395f3c2a4e6
|
|
359
|
+
destination:
|
|
360
|
+
_connectionId: 68d02dbe0839a514623c1d6d
|
|
361
|
+
database: ANALYTICS_DB
|
|
362
|
+
schema: salesforce_raw
|
|
363
|
+
driftPolicy:
|
|
364
|
+
dataset:
|
|
365
|
+
added: automate
|
|
366
|
+
removed: automate
|
|
367
|
+
element:
|
|
368
|
+
added: automate
|
|
369
|
+
objectAdded: preserve
|
|
370
|
+
arrayAdded: preserve
|
|
371
|
+
removed: automate
|
|
372
|
+
reduced: automate
|
|
373
|
+
expanded: automate
|
|
374
|
+
responses:
|
|
375
|
+
'200':
|
|
376
|
+
description: Updated sync.
|
|
377
|
+
content:
|
|
378
|
+
application/json:
|
|
379
|
+
schema:
|
|
380
|
+
$ref: '#/components/schemas/Sync'
|
|
381
|
+
examples:
|
|
382
|
+
configured:
|
|
383
|
+
summary: Updated sync
|
|
384
|
+
value:
|
|
385
|
+
_id: 6a4b8bfb731a7a5cae9bd364
|
|
386
|
+
_userId: 68c821306f5d848c881da205
|
|
387
|
+
_integrationId: 69f4ffd395ec28be9cb8c12e
|
|
388
|
+
name: Salesforce Demo Sync
|
|
389
|
+
disabled: true
|
|
390
|
+
schedule: '? 0 */6 * * *'
|
|
391
|
+
timezone: America/New_York
|
|
392
|
+
historicDateTime: '2022-07-04T18:30:00.000Z'
|
|
393
|
+
source:
|
|
394
|
+
_connectionId: 6a2a95909e994395f3c2a4e6
|
|
395
|
+
destination:
|
|
396
|
+
_connectionId: 68d02dbe0839a514623c1d6d
|
|
397
|
+
database: ANALYTICS_DB
|
|
398
|
+
schema: salesforce_raw
|
|
399
|
+
driftPolicy:
|
|
400
|
+
dataset:
|
|
401
|
+
added: automate
|
|
402
|
+
removed: automate
|
|
403
|
+
element:
|
|
404
|
+
added: automate
|
|
405
|
+
objectAdded: preserve
|
|
406
|
+
arrayAdded: preserve
|
|
407
|
+
removed: automate
|
|
408
|
+
reduced: automate
|
|
409
|
+
expanded: automate
|
|
410
|
+
'400':
|
|
411
|
+
description: |-
|
|
412
|
+
Bad request. The body contains `_integrationId` (`sync_integration_id_update`)
|
|
413
|
+
or `_id`/`_userId` (`id_and_userId_in_request`).
|
|
414
|
+
content:
|
|
415
|
+
application/json:
|
|
416
|
+
schema:
|
|
417
|
+
$ref: '#/components/schemas/Error'
|
|
418
|
+
examples:
|
|
419
|
+
integration_locked:
|
|
420
|
+
summary: Attempt to change the integration
|
|
421
|
+
value:
|
|
422
|
+
errors:
|
|
423
|
+
- code: sync_integration_id_update
|
|
424
|
+
message: Integration Id cannot be updated in sync once assigned.
|
|
425
|
+
'401':
|
|
426
|
+
$ref: '#/components/responses/401-unauthorized'
|
|
427
|
+
'404':
|
|
428
|
+
$ref: '#/components/responses/404-not-found'
|
|
429
|
+
'422':
|
|
430
|
+
description: |-
|
|
431
|
+
Validation failed. `source._connectionId` is missing
|
|
432
|
+
(`missing_source_connection`), the sync is not ready to enable
|
|
433
|
+
(`sync_not_enabled`), the destination duplicates another sync
|
|
434
|
+
(`duplicate_destination_host`), the destination connector rejected the
|
|
435
|
+
sync configuration (`invalid_destination_sync_config`), two enabled
|
|
436
|
+
datasets resolve to the same destination table
|
|
437
|
+
(`conflicting_table_name`), a field exceeds its size limit
|
|
438
|
+
(`size_limit_exceeded`), or the drift policy is inconsistent
|
|
439
|
+
(`drift_policy_invalid_setup`).
|
|
440
|
+
content:
|
|
441
|
+
application/json:
|
|
442
|
+
schema:
|
|
443
|
+
$ref: '#/components/schemas/Error'
|
|
444
|
+
examples:
|
|
445
|
+
not_ready_to_enable:
|
|
446
|
+
summary: Enabling an incomplete sync
|
|
447
|
+
value:
|
|
448
|
+
errors:
|
|
449
|
+
- field: disabled
|
|
450
|
+
code: sync_not_enabled
|
|
451
|
+
message: Sync can be enabled only when source, destinations are properly defined.
|
|
452
|
+
delete:
|
|
453
|
+
x-internal: false
|
|
454
|
+
summary: Delete a sync
|
|
455
|
+
description: |-
|
|
456
|
+
Deletes a sync and tears down its replication resources, including its datasets.
|
|
457
|
+
The sync must be disabled first — deleting an enabled sync fails with
|
|
458
|
+
`400 sync_delete_not_allowed`. Syncs are not recoverable through the recycle bin.
|
|
459
|
+
operationId: deleteSync
|
|
460
|
+
tags:
|
|
461
|
+
- Syncs
|
|
462
|
+
parameters:
|
|
463
|
+
- name: _id
|
|
464
|
+
in: path
|
|
465
|
+
required: true
|
|
466
|
+
description: Sync id.
|
|
467
|
+
schema:
|
|
468
|
+
type: string
|
|
469
|
+
format: objectId
|
|
470
|
+
x-celigo-refModel: syncs
|
|
471
|
+
examples:
|
|
472
|
+
- 6a559b5185efa7502eefd439
|
|
473
|
+
responses:
|
|
474
|
+
'204':
|
|
475
|
+
description: Sync deleted.
|
|
476
|
+
'400':
|
|
477
|
+
description: |-
|
|
478
|
+
The sync is still enabled.
|
|
479
|
+
Error code: `sync_delete_not_allowed`.
|
|
480
|
+
content:
|
|
481
|
+
application/json:
|
|
482
|
+
schema:
|
|
483
|
+
$ref: '#/components/schemas/Error'
|
|
484
|
+
examples:
|
|
485
|
+
enabled:
|
|
486
|
+
summary: Sync still enabled
|
|
487
|
+
value:
|
|
488
|
+
errors:
|
|
489
|
+
- code: sync_delete_not_allowed
|
|
490
|
+
message: Cannot delete an enabled sync. Please disable the sync before deletion.
|
|
491
|
+
'401':
|
|
492
|
+
$ref: '#/components/responses/401-unauthorized'
|
|
493
|
+
'404':
|
|
494
|
+
$ref: '#/components/responses/404-not-found'
|
|
495
|
+
/v1/integrations/{_integrationId}/syncs:
|
|
496
|
+
get:
|
|
497
|
+
x-internal: false
|
|
498
|
+
summary: List syncs in an integration
|
|
499
|
+
description: |-
|
|
500
|
+
Returns the syncs that belong to one integration, sorted by name. Equivalent to
|
|
501
|
+
`GET /v1/syncs?_integrationId={_integrationId}`.
|
|
502
|
+
operationId: listSyncsForIntegration
|
|
503
|
+
tags:
|
|
504
|
+
- Syncs
|
|
505
|
+
parameters:
|
|
506
|
+
- name: _integrationId
|
|
507
|
+
in: path
|
|
508
|
+
required: true
|
|
509
|
+
description: Integration id.
|
|
510
|
+
schema:
|
|
511
|
+
type: string
|
|
512
|
+
format: objectId
|
|
513
|
+
x-celigo-refModel: integrations
|
|
514
|
+
examples:
|
|
515
|
+
- 6966b587dfb77eaae13110c7
|
|
516
|
+
- name: limit
|
|
517
|
+
in: query
|
|
518
|
+
required: false
|
|
519
|
+
description: Maximum number of syncs to return per page.
|
|
520
|
+
schema:
|
|
521
|
+
type: integer
|
|
522
|
+
minimum: 1
|
|
523
|
+
maximum: 1000
|
|
524
|
+
default: 1000
|
|
525
|
+
examples:
|
|
526
|
+
- 100
|
|
527
|
+
- name: after
|
|
528
|
+
in: query
|
|
529
|
+
required: false
|
|
530
|
+
description: |-
|
|
531
|
+
Opaque pagination cursor for the next page. Take it from the `after` value in
|
|
532
|
+
the `Link` response header's `rel="next"` URL rather than constructing it.
|
|
533
|
+
schema:
|
|
534
|
+
type: string
|
|
535
|
+
examples:
|
|
536
|
+
- WyIiLCI2OTdiZDAwNDFhMWJiMDdhZWY4NmRmNDciXQ
|
|
537
|
+
- $ref: '#/components/parameters/Include'
|
|
538
|
+
- $ref: '#/components/parameters/Exclude'
|
|
539
|
+
responses:
|
|
540
|
+
'200':
|
|
541
|
+
description: Array of sync objects.
|
|
542
|
+
headers:
|
|
543
|
+
Link:
|
|
544
|
+
description: |-
|
|
545
|
+
RFC 5988 pagination links. When more pages remain, includes a
|
|
546
|
+
`<...>; rel="next"` entry with an `after` cursor; absent on the
|
|
547
|
+
final page.
|
|
548
|
+
schema:
|
|
549
|
+
type: string
|
|
550
|
+
content:
|
|
551
|
+
application/json:
|
|
552
|
+
schema:
|
|
553
|
+
type: array
|
|
554
|
+
items:
|
|
555
|
+
$ref: '#/components/schemas/Sync'
|
|
556
|
+
examples:
|
|
557
|
+
default:
|
|
558
|
+
value:
|
|
559
|
+
- _id: 6966b5bd344490b470099978
|
|
560
|
+
_userId: 68c821306f5d848c881da205
|
|
561
|
+
_integrationId: 6966b587dfb77eaae13110c7
|
|
562
|
+
name: Order Analytics
|
|
563
|
+
disabled: true
|
|
564
|
+
schedule: '? 0 */1 * * *'
|
|
565
|
+
timezone: America/New_York
|
|
566
|
+
historicDateTime: '1970-01-01T00:00:00.000Z'
|
|
567
|
+
source:
|
|
568
|
+
_connectionId: 68db4afe97bf4f4942a3b92c
|
|
569
|
+
destination:
|
|
570
|
+
_connectionId: 68d02dbe0839a514623c1d6d
|
|
571
|
+
database: ANALYTICS_DB
|
|
572
|
+
schema: orders_raw
|
|
573
|
+
driftPolicy:
|
|
574
|
+
dataset: {}
|
|
575
|
+
element: {}
|
|
576
|
+
'204':
|
|
577
|
+
description: The integration has no syncs, or the integration does not exist.
|
|
578
|
+
'401':
|
|
579
|
+
$ref: '#/components/responses/401-unauthorized'
|
|
580
|
+
'422':
|
|
581
|
+
$ref: '#/components/responses/422-unprocessable-entity'
|
|
582
|
+
/v1/syncs/{_syncId}/datasets:
|
|
583
|
+
get:
|
|
584
|
+
x-internal: false
|
|
585
|
+
summary: List datasets for a sync
|
|
586
|
+
description: |-
|
|
587
|
+
Returns the datasets configured on a sync — the tables/objects it replicates —
|
|
588
|
+
sorted by name. Export-backed datasets whose export no longer uses the sync's
|
|
589
|
+
source connection carry `mismatchSyncConnection: true`.
|
|
590
|
+
operationId: listDatasetsForSync
|
|
591
|
+
tags:
|
|
592
|
+
- Syncs
|
|
593
|
+
parameters:
|
|
594
|
+
- name: _syncId
|
|
595
|
+
in: path
|
|
596
|
+
required: true
|
|
597
|
+
description: Sync id.
|
|
598
|
+
schema:
|
|
599
|
+
type: string
|
|
600
|
+
format: objectId
|
|
601
|
+
x-celigo-refModel: syncs
|
|
602
|
+
examples:
|
|
603
|
+
- 6a55970bdb54be366c858bc9
|
|
604
|
+
- name: limit
|
|
605
|
+
in: query
|
|
606
|
+
required: false
|
|
607
|
+
description: Maximum number of datasets to return per page.
|
|
608
|
+
schema:
|
|
609
|
+
type: integer
|
|
610
|
+
minimum: 1
|
|
611
|
+
maximum: 1000
|
|
612
|
+
default: 1000
|
|
613
|
+
examples:
|
|
614
|
+
- 100
|
|
615
|
+
- name: after
|
|
616
|
+
in: query
|
|
617
|
+
required: false
|
|
618
|
+
description: |-
|
|
619
|
+
Opaque pagination cursor for the next page. Take it from the `after` value in
|
|
620
|
+
the `Link` response header's `rel="next"` URL rather than constructing it.
|
|
621
|
+
schema:
|
|
622
|
+
type: string
|
|
623
|
+
examples:
|
|
624
|
+
- WyJBY2NvdW50IiwiNmE1NTk3MGM1Zjk0OThhMTc1OGEwYWQzIl0
|
|
625
|
+
- $ref: '#/components/parameters/Include'
|
|
626
|
+
- $ref: '#/components/parameters/Exclude'
|
|
627
|
+
responses:
|
|
628
|
+
'200':
|
|
629
|
+
description: Array of dataset objects.
|
|
630
|
+
headers:
|
|
631
|
+
Link:
|
|
632
|
+
description: |-
|
|
633
|
+
RFC 5988 pagination links. When more pages remain, includes a
|
|
634
|
+
`<...>; rel="next"` entry with an `after` cursor; absent on the
|
|
635
|
+
final page.
|
|
636
|
+
schema:
|
|
637
|
+
type: string
|
|
638
|
+
content:
|
|
639
|
+
application/json:
|
|
640
|
+
schema:
|
|
641
|
+
type: array
|
|
642
|
+
items:
|
|
643
|
+
$ref: '#/components/schemas/Dataset'
|
|
644
|
+
examples:
|
|
645
|
+
default:
|
|
646
|
+
value:
|
|
647
|
+
- _id: 6a559b547885d8f93921c2ba
|
|
648
|
+
_userId: 68c821306f5d848c881da205
|
|
649
|
+
_syncId: 6a55970bdb54be366c858bc9
|
|
650
|
+
name: Account
|
|
651
|
+
externalId: Account
|
|
652
|
+
enable: true
|
|
653
|
+
enableAllDataElements: false
|
|
654
|
+
ingestionMode: merge
|
|
655
|
+
userActionRequired: false
|
|
656
|
+
exportProperties:
|
|
657
|
+
type: delta
|
|
658
|
+
delta: {}
|
|
659
|
+
driftPolicy:
|
|
660
|
+
element: {}
|
|
661
|
+
dataElements:
|
|
662
|
+
- name: Id
|
|
663
|
+
enable: true
|
|
664
|
+
mask: false
|
|
665
|
+
isPrimaryKey: true
|
|
666
|
+
children: []
|
|
667
|
+
- name: Name
|
|
668
|
+
enable: true
|
|
669
|
+
mask: false
|
|
670
|
+
children: []
|
|
671
|
+
- _id: 6a55974edb54be366c858d26
|
|
672
|
+
_userId: 68c821306f5d848c881da205
|
|
673
|
+
_syncId: 6a55970bdb54be366c858bc9
|
|
674
|
+
name: Pull Salesforce Records
|
|
675
|
+
externalId: 6a3e7c54c2387aaa87881b80
|
|
676
|
+
enable: true
|
|
677
|
+
enableAllDataElements: false
|
|
678
|
+
ingestionMode: merge
|
|
679
|
+
tableName: pull_salesforce_records
|
|
680
|
+
isExport: true
|
|
681
|
+
userActionRequired: false
|
|
682
|
+
exportProperties:
|
|
683
|
+
delta: {}
|
|
684
|
+
driftPolicy:
|
|
685
|
+
element: {}
|
|
686
|
+
dataElements:
|
|
687
|
+
- name: Id
|
|
688
|
+
enable: true
|
|
689
|
+
mask: false
|
|
690
|
+
isPrimaryKey: true
|
|
691
|
+
children: []
|
|
692
|
+
mismatchSyncConnection: true
|
|
693
|
+
'204':
|
|
694
|
+
description: The sync has no datasets, or the sync does not exist.
|
|
695
|
+
'401':
|
|
696
|
+
$ref: '#/components/responses/401-unauthorized'
|
|
697
|
+
'422':
|
|
698
|
+
$ref: '#/components/responses/422-unprocessable-entity'
|
|
699
|
+
put:
|
|
700
|
+
x-internal: false
|
|
701
|
+
summary: Create or update datasets for a sync
|
|
702
|
+
description: |-
|
|
703
|
+
Creates and updates a sync's datasets in one batch. Each array item either creates
|
|
704
|
+
a dataset (identified by `externalId`) or updates one (identified by `_id`); a
|
|
705
|
+
single request can mix both. Updates fully replace each dataset's writable fields.
|
|
706
|
+
The response body is empty — read back the saved datasets with
|
|
707
|
+
`GET /v1/syncs/{_syncId}/datasets`.
|
|
708
|
+
operationId: upsertDatasetsForSync
|
|
709
|
+
tags:
|
|
710
|
+
- Syncs
|
|
711
|
+
parameters:
|
|
712
|
+
- name: _syncId
|
|
713
|
+
in: path
|
|
714
|
+
required: true
|
|
715
|
+
description: Sync id.
|
|
716
|
+
schema:
|
|
717
|
+
type: string
|
|
718
|
+
format: objectId
|
|
719
|
+
x-celigo-refModel: syncs
|
|
720
|
+
examples:
|
|
721
|
+
- 6a55970bdb54be366c858bc9
|
|
722
|
+
requestBody:
|
|
723
|
+
required: true
|
|
724
|
+
content:
|
|
725
|
+
application/json:
|
|
726
|
+
schema:
|
|
727
|
+
type: array
|
|
728
|
+
minItems: 1
|
|
729
|
+
items:
|
|
730
|
+
$ref: '#/components/schemas/DatasetUpsertItem'
|
|
731
|
+
examples:
|
|
732
|
+
create:
|
|
733
|
+
summary: Create two datasets
|
|
734
|
+
value:
|
|
735
|
+
- name: Account
|
|
736
|
+
externalId: Account
|
|
737
|
+
enable: true
|
|
738
|
+
ingestionMode: merge
|
|
739
|
+
exportProperties:
|
|
740
|
+
type: all
|
|
741
|
+
dataElements:
|
|
742
|
+
- name: Id
|
|
743
|
+
enable: true
|
|
744
|
+
mask: false
|
|
745
|
+
isPrimaryKey: true
|
|
746
|
+
- name: Name
|
|
747
|
+
enable: true
|
|
748
|
+
mask: false
|
|
749
|
+
- name: Contact
|
|
750
|
+
externalId: Contact
|
|
751
|
+
enable: false
|
|
752
|
+
ingestionMode: merge
|
|
753
|
+
exportProperties:
|
|
754
|
+
type: delta
|
|
755
|
+
update:
|
|
756
|
+
summary: Switch an existing dataset to append mode
|
|
757
|
+
value:
|
|
758
|
+
- _id: 6a559b547885d8f93921c2ba
|
|
759
|
+
name: Account
|
|
760
|
+
enable: true
|
|
761
|
+
ingestionMode: append
|
|
762
|
+
dataElements:
|
|
763
|
+
- name: Id
|
|
764
|
+
enable: true
|
|
765
|
+
isPrimaryKey: true
|
|
766
|
+
- name: Name
|
|
767
|
+
enable: true
|
|
768
|
+
responses:
|
|
769
|
+
'201':
|
|
770
|
+
description: Datasets created/updated. The response has no body.
|
|
771
|
+
'400':
|
|
772
|
+
description: |-
|
|
773
|
+
Bad request. The body is not a non-empty array (`INVALID_REQUEST_BODY` /
|
|
774
|
+
`EMPTY_REQUEST_BODY`), an item has both or neither of `_id`/`externalId`
|
|
775
|
+
(`dataset_externalId_id_required`), an `externalId` already exists or an `_id`
|
|
776
|
+
does not belong to the sync, `tableName` values collide
|
|
777
|
+
(`duplicate_dataset_table_names`), or an export dataset's export uses a
|
|
778
|
+
different connection than the sync (`connection_mismatch`).
|
|
779
|
+
content:
|
|
780
|
+
application/json:
|
|
781
|
+
schema:
|
|
782
|
+
$ref: '#/components/schemas/Error'
|
|
783
|
+
examples:
|
|
784
|
+
both_ids:
|
|
785
|
+
summary: Item with both _id and externalId
|
|
786
|
+
value:
|
|
787
|
+
errors:
|
|
788
|
+
- code: dataset_externalId_id_required
|
|
789
|
+
message: For creation externalId should be provide and for update dataset id should be provided but not both.
|
|
790
|
+
'401':
|
|
791
|
+
$ref: '#/components/responses/401-unauthorized'
|
|
792
|
+
'422':
|
|
793
|
+
description: |-
|
|
794
|
+
Validation failed. An enabled dataset is missing `ingestionMode`
|
|
795
|
+
(`ingestion_mode_required_for_enabled_datasets`), a `merge` dataset has no
|
|
796
|
+
primary key, a `tableName` is already taken, two source columns sanitize to
|
|
797
|
+
the same destination column name (`duplicate_sanitized_column_names` — rename
|
|
798
|
+
or disable the conflicting source columns), or a data-element combination is
|
|
799
|
+
invalid (e.g. `transformMode` without children, or `isPrimaryKey` with `mask`).
|
|
800
|
+
content:
|
|
801
|
+
application/json:
|
|
802
|
+
schema:
|
|
803
|
+
$ref: '#/components/schemas/Error'
|
|
804
|
+
examples:
|
|
805
|
+
missing_ingestion_mode:
|
|
806
|
+
summary: Enabled dataset without ingestionMode
|
|
807
|
+
value:
|
|
808
|
+
errors:
|
|
809
|
+
- field: ingestionMode
|
|
810
|
+
code: ingestion_mode_required_for_enabled_datasets
|
|
811
|
+
message: ingestionMode field is required for enabled datasets.
|
|
812
|
+
/v1/syncs/{_syncId}/datasets/{_id}:
|
|
813
|
+
get:
|
|
814
|
+
x-internal: false
|
|
815
|
+
summary: Get a dataset
|
|
816
|
+
description: Returns a single dataset of a sync by ID.
|
|
817
|
+
operationId: getDataset
|
|
818
|
+
tags:
|
|
819
|
+
- Syncs
|
|
820
|
+
parameters:
|
|
821
|
+
- name: _syncId
|
|
822
|
+
in: path
|
|
823
|
+
required: true
|
|
824
|
+
description: Sync id.
|
|
825
|
+
schema:
|
|
826
|
+
type: string
|
|
827
|
+
format: objectId
|
|
828
|
+
x-celigo-refModel: syncs
|
|
829
|
+
examples:
|
|
830
|
+
- 6a55970bdb54be366c858bc9
|
|
831
|
+
- name: _id
|
|
832
|
+
in: path
|
|
833
|
+
required: true
|
|
834
|
+
description: Dataset id.
|
|
835
|
+
schema:
|
|
836
|
+
type: string
|
|
837
|
+
format: objectId
|
|
838
|
+
examples:
|
|
839
|
+
- 6a559b547885d8f93921c2ba
|
|
840
|
+
responses:
|
|
841
|
+
'200':
|
|
842
|
+
description: Dataset object.
|
|
843
|
+
content:
|
|
844
|
+
application/json:
|
|
845
|
+
schema:
|
|
846
|
+
$ref: '#/components/schemas/Dataset'
|
|
847
|
+
examples:
|
|
848
|
+
selectedColumns:
|
|
849
|
+
summary: Dataset with an explicit column selection
|
|
850
|
+
value:
|
|
851
|
+
_id: 6a559b547885d8f93921c2ba
|
|
852
|
+
_userId: 68c821306f5d848c881da205
|
|
853
|
+
_syncId: 6a55970bdb54be366c858bc9
|
|
854
|
+
name: Account
|
|
855
|
+
externalId: Account
|
|
856
|
+
enable: true
|
|
857
|
+
enableAllDataElements: false
|
|
858
|
+
ingestionMode: merge
|
|
859
|
+
userActionRequired: false
|
|
860
|
+
exportProperties:
|
|
861
|
+
type: delta
|
|
862
|
+
delta: {}
|
|
863
|
+
driftPolicy:
|
|
864
|
+
element: {}
|
|
865
|
+
dataElements:
|
|
866
|
+
- name: Id
|
|
867
|
+
enable: true
|
|
868
|
+
mask: false
|
|
869
|
+
isPrimaryKey: true
|
|
870
|
+
children: []
|
|
871
|
+
- name: Name
|
|
872
|
+
enable: true
|
|
873
|
+
mask: false
|
|
874
|
+
children: []
|
|
875
|
+
'401':
|
|
876
|
+
$ref: '#/components/responses/401-unauthorized'
|
|
877
|
+
'404':
|
|
878
|
+
$ref: '#/components/responses/404-not-found'
|
|
879
|
+
/v1/syncs/{_syncId}/run:
|
|
880
|
+
post:
|
|
881
|
+
x-internal: false
|
|
882
|
+
operationId: runSync
|
|
883
|
+
tags:
|
|
884
|
+
- Sync Jobs
|
|
885
|
+
summary: Trigger a sync run
|
|
886
|
+
description: |-
|
|
887
|
+
Queues an on-demand run of a sync and returns identifiers for the new sync job. The
|
|
888
|
+
run is **asynchronous**: the response returns as soon as the job is queued. Use
|
|
889
|
+
`GET /v1/syncJobs/{_syncJobId}` or `GET /v1/syncs/{_syncId}/syncJobs` to poll for terminal status.
|
|
890
|
+
|
|
891
|
+
By default the run type is `"normal"` (incremental delta). Pass `runType: "resync"` to force a
|
|
892
|
+
full re-extraction from the source, which drops the delta checkpoint and reloads all data.
|
|
893
|
+
|
|
894
|
+
Preconditions enforced by the platform:
|
|
895
|
+
- The sync must not be disabled (`422 invalid_sync`).
|
|
896
|
+
- There must not be a job already queued for this sync (`409 sync_job_already_queued`).
|
|
897
|
+
|
|
898
|
+
The returned `flowExecutionGroupId` is a correlation key across jobs and errors. For
|
|
899
|
+
multi-table syncs, a single run creates one parent job with per-table children visible via
|
|
900
|
+
`GET /v1/syncJobs/{_syncJobId}/family`.
|
|
901
|
+
parameters:
|
|
902
|
+
- name: _syncId
|
|
903
|
+
in: path
|
|
904
|
+
required: true
|
|
905
|
+
description: Sync id.
|
|
906
|
+
schema:
|
|
907
|
+
type: string
|
|
908
|
+
format: objectId
|
|
909
|
+
x-celigo-refModel: syncs
|
|
910
|
+
requestBody:
|
|
911
|
+
required: false
|
|
912
|
+
content:
|
|
913
|
+
application/json:
|
|
914
|
+
schema:
|
|
915
|
+
$ref: '#/components/schemas/SyncRunRequest'
|
|
916
|
+
examples:
|
|
917
|
+
default:
|
|
918
|
+
summary: Default incremental run
|
|
919
|
+
value: {}
|
|
920
|
+
resync:
|
|
921
|
+
summary: Full resync from source
|
|
922
|
+
value:
|
|
923
|
+
runType: resync
|
|
924
|
+
responses:
|
|
925
|
+
'200':
|
|
926
|
+
description: Sync run accepted and queued.
|
|
927
|
+
content:
|
|
928
|
+
application/json:
|
|
929
|
+
schema:
|
|
930
|
+
$ref: '#/components/schemas/SyncRunResponse'
|
|
931
|
+
examples:
|
|
932
|
+
default:
|
|
933
|
+
summary: Successful run trigger
|
|
934
|
+
value:
|
|
935
|
+
syncId: 682094fa7eb7fc3e7ab7a4a0
|
|
936
|
+
flowExecutionGroupId: 6821c01c39db7c2b9cdc0e29
|
|
937
|
+
'400':
|
|
938
|
+
description: |-
|
|
939
|
+
Bad request. Invalid `runType` value.
|
|
940
|
+
Error code: `invalid_parameter`.
|
|
941
|
+
content:
|
|
942
|
+
application/json:
|
|
943
|
+
schema:
|
|
944
|
+
$ref: '#/components/schemas/Error'
|
|
945
|
+
examples:
|
|
946
|
+
invalid_run_type:
|
|
947
|
+
summary: Invalid runType parameter
|
|
948
|
+
value:
|
|
949
|
+
errors:
|
|
950
|
+
- code: invalid_parameter
|
|
951
|
+
message: Invalid value for runType.
|
|
952
|
+
'401':
|
|
953
|
+
$ref: '#/components/responses/401-unauthorized'
|
|
954
|
+
'404':
|
|
955
|
+
description: |-
|
|
956
|
+
Sync not found.
|
|
957
|
+
Error code: `invalid_ref`.
|
|
958
|
+
content:
|
|
959
|
+
application/json:
|
|
960
|
+
schema:
|
|
961
|
+
$ref: '#/components/schemas/Error'
|
|
962
|
+
examples:
|
|
963
|
+
sync_not_found:
|
|
964
|
+
summary: Sync does not exist
|
|
965
|
+
value:
|
|
966
|
+
errors:
|
|
967
|
+
- code: invalid_ref
|
|
968
|
+
message: Sync not found.
|
|
969
|
+
'409':
|
|
970
|
+
description: |-
|
|
971
|
+
A sync job is already queued or running for this sync.
|
|
972
|
+
Error code: `sync_job_already_queued`.
|
|
973
|
+
content:
|
|
974
|
+
application/json:
|
|
975
|
+
schema:
|
|
976
|
+
$ref: '#/components/schemas/Error'
|
|
977
|
+
examples:
|
|
978
|
+
already_queued:
|
|
979
|
+
summary: Job already in progress
|
|
980
|
+
value:
|
|
981
|
+
errors:
|
|
982
|
+
- code: sync_job_already_queued
|
|
983
|
+
message: A sync job is already queued for this sync.
|
|
984
|
+
'422':
|
|
985
|
+
description: |-
|
|
986
|
+
The sync is disabled and cannot be run.
|
|
987
|
+
Error code: `invalid_sync`.
|
|
988
|
+
content:
|
|
989
|
+
application/json:
|
|
990
|
+
schema:
|
|
991
|
+
$ref: '#/components/schemas/Error'
|
|
992
|
+
examples:
|
|
993
|
+
disabled:
|
|
994
|
+
summary: Sync is disabled
|
|
995
|
+
value:
|
|
996
|
+
errors:
|
|
997
|
+
- code: invalid_sync
|
|
998
|
+
message: The sync is disabled.
|
|
999
|
+
/v1/syncs/{_syncId}/syncJobs:
|
|
1000
|
+
get:
|
|
1001
|
+
x-internal: false
|
|
1002
|
+
operationId: listSyncJobs
|
|
1003
|
+
tags:
|
|
1004
|
+
- Sync Jobs
|
|
1005
|
+
summary: List sync jobs for a sync
|
|
1006
|
+
description: |-
|
|
1007
|
+
Returns all sync job records for the given sync, ordered by creation time (most recent first).
|
|
1008
|
+
The response wraps the array in a `data` field alongside a `totalCount`.
|
|
1009
|
+
|
|
1010
|
+
Note: although the response shape suggests pagination (`totalCount`), the `limit`, `offset`,
|
|
1011
|
+
and `status` query parameters are silently ignored by the server as of this writing. The
|
|
1012
|
+
endpoint always returns the complete list of jobs.
|
|
1013
|
+
parameters:
|
|
1014
|
+
- name: _syncId
|
|
1015
|
+
in: path
|
|
1016
|
+
required: true
|
|
1017
|
+
description: Sync id.
|
|
1018
|
+
schema:
|
|
1019
|
+
type: string
|
|
1020
|
+
format: objectId
|
|
1021
|
+
x-celigo-refModel: syncs
|
|
1022
|
+
responses:
|
|
1023
|
+
'200':
|
|
1024
|
+
description: List of sync jobs.
|
|
1025
|
+
content:
|
|
1026
|
+
application/json:
|
|
1027
|
+
schema:
|
|
1028
|
+
$ref: '#/components/schemas/SyncJobsResponse'
|
|
1029
|
+
examples:
|
|
1030
|
+
with_jobs:
|
|
1031
|
+
summary: Sync with two completed jobs
|
|
1032
|
+
value:
|
|
1033
|
+
data:
|
|
1034
|
+
- _id: 6821c01c39db7c2b9cdc0e30
|
|
1035
|
+
flowExecutionGroupId: 6821c01c39db7c2b9cdc0e29
|
|
1036
|
+
_integrationId: 67d7b6e69e4b1371e5d1e2a1
|
|
1037
|
+
_syncId: 682094fa7eb7fc3e7ab7a4a0
|
|
1038
|
+
createdAt: '2026-04-28T14:30:00.000Z'
|
|
1039
|
+
startedAt: '2026-04-28T14:30:01.123Z'
|
|
1040
|
+
endedAt: '2026-04-28T14:35:12.456Z'
|
|
1041
|
+
purgeAt: '2026-07-28T14:35:12.456Z'
|
|
1042
|
+
status: completed
|
|
1043
|
+
numErrors: 0
|
|
1044
|
+
numLoadedRecords: 12450
|
|
1045
|
+
numExtractedRecords: 12450
|
|
1046
|
+
numTablesSynced: 3
|
|
1047
|
+
triggeredBy: user:tyler.lamparter@celigo.com
|
|
1048
|
+
runType: normal
|
|
1049
|
+
- _id: 6821b00a39db7c2b9cdc0d10
|
|
1050
|
+
flowExecutionGroupId: 6821b00a39db7c2b9cdc0d09
|
|
1051
|
+
_integrationId: 67d7b6e69e4b1371e5d1e2a1
|
|
1052
|
+
_syncId: 682094fa7eb7fc3e7ab7a4a0
|
|
1053
|
+
createdAt: '2026-04-27T08:00:00.000Z'
|
|
1054
|
+
startedAt: '2026-04-27T08:00:02.000Z'
|
|
1055
|
+
endedAt: '2026-04-27T08:12:45.000Z'
|
|
1056
|
+
purgeAt: '2026-07-27T08:12:45.000Z'
|
|
1057
|
+
status: completed
|
|
1058
|
+
numErrors: 2
|
|
1059
|
+
numLoadedRecords: 11980
|
|
1060
|
+
numExtractedRecords: 11982
|
|
1061
|
+
numTablesSynced: 3
|
|
1062
|
+
triggeredBy: schedule
|
|
1063
|
+
runType: normal
|
|
1064
|
+
totalCount: 2
|
|
1065
|
+
'401':
|
|
1066
|
+
$ref: '#/components/responses/401-unauthorized'
|
|
1067
|
+
'404':
|
|
1068
|
+
description: |-
|
|
1069
|
+
Sync not found.
|
|
1070
|
+
Error code: `invalid_ref`.
|
|
1071
|
+
content:
|
|
1072
|
+
application/json:
|
|
1073
|
+
schema:
|
|
1074
|
+
$ref: '#/components/schemas/Error'
|
|
1075
|
+
examples:
|
|
1076
|
+
not_found:
|
|
1077
|
+
summary: Invalid sync id
|
|
1078
|
+
value:
|
|
1079
|
+
errors:
|
|
1080
|
+
- code: invalid_ref
|
|
1081
|
+
message: Sync not found.
|
|
1082
|
+
/v1/syncs/{_syncId}/syncJobs/cancel:
|
|
1083
|
+
put:
|
|
1084
|
+
x-internal: false
|
|
1085
|
+
operationId: cancelSyncJobs
|
|
1086
|
+
tags:
|
|
1087
|
+
- Sync Jobs
|
|
1088
|
+
summary: Cancel all running sync jobs for a sync
|
|
1089
|
+
description: |-
|
|
1090
|
+
Cancels all currently running or queued sync jobs for the given sync. This is a bulk cancel
|
|
1091
|
+
that affects every in-progress job associated with the sync.
|
|
1092
|
+
|
|
1093
|
+
If there are no cancellable jobs (all jobs are already in a terminal state), the request
|
|
1094
|
+
is rejected. To cancel a single specific job instead, use
|
|
1095
|
+
`PUT /v1/syncJobs/{_syncJobId}/cancel`.
|
|
1096
|
+
parameters:
|
|
1097
|
+
- name: _syncId
|
|
1098
|
+
in: path
|
|
1099
|
+
required: true
|
|
1100
|
+
description: Sync id.
|
|
1101
|
+
schema:
|
|
1102
|
+
type: string
|
|
1103
|
+
format: objectId
|
|
1104
|
+
x-celigo-refModel: syncs
|
|
1105
|
+
responses:
|
|
1106
|
+
'204':
|
|
1107
|
+
description: All running sync jobs have been canceled. No response body.
|
|
1108
|
+
'401':
|
|
1109
|
+
$ref: '#/components/responses/401-unauthorized'
|
|
1110
|
+
'404':
|
|
1111
|
+
description: |-
|
|
1112
|
+
No cancellable jobs found for this sync.
|
|
1113
|
+
Error code: `sync_jobs_not_found`.
|
|
1114
|
+
content:
|
|
1115
|
+
application/json:
|
|
1116
|
+
schema:
|
|
1117
|
+
$ref: '#/components/schemas/Error'
|
|
1118
|
+
examples:
|
|
1119
|
+
no_jobs:
|
|
1120
|
+
summary: No running jobs to cancel
|
|
1121
|
+
value:
|
|
1122
|
+
errors:
|
|
1123
|
+
- code: sync_jobs_not_found
|
|
1124
|
+
message: No cancellable sync jobs found.
|
|
1125
|
+
/v1/syncJobs/{_syncJobId}:
|
|
1126
|
+
get:
|
|
1127
|
+
x-internal: false
|
|
1128
|
+
operationId: getSyncJobById
|
|
1129
|
+
tags:
|
|
1130
|
+
- Sync Jobs
|
|
1131
|
+
summary: Get a sync job
|
|
1132
|
+
description: |-
|
|
1133
|
+
Returns a single sync job record. Sync jobs are read-only records created by the platform when
|
|
1134
|
+
a sync run is triggered. The record includes status, timing, record counts, and error counts.
|
|
1135
|
+
A gap between `numExtractedRecords` and `numLoadedRecords` indicates records that failed
|
|
1136
|
+
during loading -- see `numErrors`.
|
|
1137
|
+
parameters:
|
|
1138
|
+
- name: _syncJobId
|
|
1139
|
+
in: path
|
|
1140
|
+
required: true
|
|
1141
|
+
description: Sync job id.
|
|
1142
|
+
schema:
|
|
1143
|
+
type: string
|
|
1144
|
+
format: objectId
|
|
1145
|
+
x-celigo-refModel: syncJobs
|
|
1146
|
+
responses:
|
|
1147
|
+
'200':
|
|
1148
|
+
description: The sync job record.
|
|
1149
|
+
content:
|
|
1150
|
+
application/json:
|
|
1151
|
+
schema:
|
|
1152
|
+
$ref: '#/components/schemas/SyncJob'
|
|
1153
|
+
examples:
|
|
1154
|
+
completed:
|
|
1155
|
+
summary: A completed sync job
|
|
1156
|
+
value:
|
|
1157
|
+
_id: 6821c01c39db7c2b9cdc0e30
|
|
1158
|
+
flowExecutionGroupId: 6821c01c39db7c2b9cdc0e29
|
|
1159
|
+
_integrationId: 67d7b6e69e4b1371e5d1e2a1
|
|
1160
|
+
_syncId: 682094fa7eb7fc3e7ab7a4a0
|
|
1161
|
+
createdAt: '2026-04-28T14:30:00.000Z'
|
|
1162
|
+
startedAt: '2026-04-28T14:30:01.123Z'
|
|
1163
|
+
endedAt: '2026-04-28T14:35:12.456Z'
|
|
1164
|
+
purgeAt: '2026-07-28T14:35:12.456Z'
|
|
1165
|
+
status: completed
|
|
1166
|
+
numErrors: 0
|
|
1167
|
+
numLoadedRecords: 12450
|
|
1168
|
+
numExtractedRecords: 12450
|
|
1169
|
+
numTablesSynced: 3
|
|
1170
|
+
triggeredBy: user:tyler.lamparter@celigo.com
|
|
1171
|
+
runType: normal
|
|
1172
|
+
running:
|
|
1173
|
+
summary: A currently running sync job
|
|
1174
|
+
value:
|
|
1175
|
+
_id: 6821d11d39db7c2b9cdc0f40
|
|
1176
|
+
flowExecutionGroupId: 6821d11d39db7c2b9cdc0f39
|
|
1177
|
+
_integrationId: 67d7b6e69e4b1371e5d1e2a1
|
|
1178
|
+
_syncId: 682094fa7eb7fc3e7ab7a4a0
|
|
1179
|
+
createdAt: '2026-04-30T09:00:00.000Z'
|
|
1180
|
+
startedAt: '2026-04-30T09:00:01.500Z'
|
|
1181
|
+
purgeAt: '2026-07-30T09:00:00.000Z'
|
|
1182
|
+
status: running
|
|
1183
|
+
numErrors: 0
|
|
1184
|
+
numLoadedRecords: 3200
|
|
1185
|
+
numExtractedRecords: 5100
|
|
1186
|
+
numTablesSynced: 2
|
|
1187
|
+
triggeredBy: schedule
|
|
1188
|
+
runType: normal
|
|
1189
|
+
'401':
|
|
1190
|
+
$ref: '#/components/responses/401-unauthorized'
|
|
1191
|
+
'404':
|
|
1192
|
+
$ref: '#/components/responses/404-not-found'
|
|
1193
|
+
/v1/syncJobs/{_syncJobId}/family:
|
|
1194
|
+
get:
|
|
1195
|
+
x-internal: false
|
|
1196
|
+
operationId: getSyncJobFamily
|
|
1197
|
+
tags:
|
|
1198
|
+
- Sync Jobs
|
|
1199
|
+
summary: Get a sync job and its table-level children
|
|
1200
|
+
description: |-
|
|
1201
|
+
Returns the parent sync job with all of its per-table child jobs inlined under a `tables` array.
|
|
1202
|
+
Each table entry contains its own status, record counts, error counts, and timing.
|
|
1203
|
+
|
|
1204
|
+
A sync job family maps to one sync execution: the parent is the overall sync job and the children
|
|
1205
|
+
represent each table that was synced as part of that run. Parent-level counters are the
|
|
1206
|
+
authoritative totals; `tables[]` provides the per-table breakdown. `tables` may be empty if
|
|
1207
|
+
the job was canceled before any table work started.
|
|
1208
|
+
parameters:
|
|
1209
|
+
- name: _syncJobId
|
|
1210
|
+
in: path
|
|
1211
|
+
required: true
|
|
1212
|
+
description: Sync job id (parent job).
|
|
1213
|
+
schema:
|
|
1214
|
+
type: string
|
|
1215
|
+
format: objectId
|
|
1216
|
+
x-celigo-refModel: syncJobs
|
|
1217
|
+
responses:
|
|
1218
|
+
'200':
|
|
1219
|
+
description: Sync job family (parent with per-table children).
|
|
1220
|
+
content:
|
|
1221
|
+
application/json:
|
|
1222
|
+
schema:
|
|
1223
|
+
$ref: '#/components/schemas/SyncJobFamily'
|
|
1224
|
+
examples:
|
|
1225
|
+
completed_family:
|
|
1226
|
+
summary: Completed sync with two tables
|
|
1227
|
+
value:
|
|
1228
|
+
_id: 6821c01c39db7c2b9cdc0e30
|
|
1229
|
+
flowExecutionGroupId: 6821c01c39db7c2b9cdc0e29
|
|
1230
|
+
_integrationId: 67d7b6e69e4b1371e5d1e2a1
|
|
1231
|
+
_syncId: 682094fa7eb7fc3e7ab7a4a0
|
|
1232
|
+
createdAt: '2026-04-28T14:30:00.000Z'
|
|
1233
|
+
startedAt: '2026-04-28T14:30:01.123Z'
|
|
1234
|
+
endedAt: '2026-04-28T14:35:12.456Z'
|
|
1235
|
+
purgeAt: '2026-07-28T14:35:12.456Z'
|
|
1236
|
+
status: completed
|
|
1237
|
+
numErrors: 0
|
|
1238
|
+
numLoadedRecords: 12450
|
|
1239
|
+
numExtractedRecords: 12450
|
|
1240
|
+
numTablesSynced: 2
|
|
1241
|
+
triggeredBy: schedule
|
|
1242
|
+
runType: normal
|
|
1243
|
+
tables:
|
|
1244
|
+
- _id: 6821c01c39db7c2b9cdc0e31
|
|
1245
|
+
tableName: contacts
|
|
1246
|
+
createdAt: '2026-04-28T14:30:01.200Z'
|
|
1247
|
+
status: completed
|
|
1248
|
+
numErrors: 0
|
|
1249
|
+
numLoadedRecords: 8200
|
|
1250
|
+
numExtractedRecords: 8200
|
|
1251
|
+
startedAt: '2026-04-28T14:30:01.300Z'
|
|
1252
|
+
endedAt: '2026-04-28T14:33:45.100Z'
|
|
1253
|
+
- _id: 6821c01c39db7c2b9cdc0e32
|
|
1254
|
+
tableName: accounts
|
|
1255
|
+
createdAt: '2026-04-28T14:30:01.250Z'
|
|
1256
|
+
status: completed
|
|
1257
|
+
numErrors: 0
|
|
1258
|
+
numLoadedRecords: 4250
|
|
1259
|
+
numExtractedRecords: 4250
|
|
1260
|
+
startedAt: '2026-04-28T14:30:01.350Z'
|
|
1261
|
+
endedAt: '2026-04-28T14:35:12.400Z'
|
|
1262
|
+
'401':
|
|
1263
|
+
$ref: '#/components/responses/401-unauthorized'
|
|
1264
|
+
'404':
|
|
1265
|
+
$ref: '#/components/responses/404-not-found'
|
|
1266
|
+
/v1/syncJobs/{_parentJobId}/errors:
|
|
1267
|
+
get:
|
|
1268
|
+
x-internal: false
|
|
1269
|
+
operationId: listSyncJobErrors
|
|
1270
|
+
tags:
|
|
1271
|
+
- Sync Jobs
|
|
1272
|
+
summary: List errors for a sync job
|
|
1273
|
+
description: |-
|
|
1274
|
+
Returns an array of error records for the given parent sync job. Errors are produced during
|
|
1275
|
+
extraction or loading and are scoped to individual tables.
|
|
1276
|
+
|
|
1277
|
+
The response includes an `x-total-count` header with the total number of errors (useful when
|
|
1278
|
+
filtering by child job).
|
|
1279
|
+
|
|
1280
|
+
Use the `_childJobId` query parameter to filter errors to a single table's child job. Without
|
|
1281
|
+
it, errors across all tables in the run are returned. To find a child job id, call
|
|
1282
|
+
`GET /v1/syncJobs/{_syncJobId}/family` and read `tables[]._id`. Each error also carries a
|
|
1283
|
+
`tableName` field for client-side grouping. The response is a bare array, not wrapped in a
|
|
1284
|
+
`data` envelope.
|
|
1285
|
+
parameters:
|
|
1286
|
+
- name: _parentJobId
|
|
1287
|
+
in: path
|
|
1288
|
+
required: true
|
|
1289
|
+
description: Parent sync job id.
|
|
1290
|
+
schema:
|
|
1291
|
+
type: string
|
|
1292
|
+
format: objectId
|
|
1293
|
+
x-celigo-refModel: syncJobs
|
|
1294
|
+
- name: _childJobId
|
|
1295
|
+
in: query
|
|
1296
|
+
required: false
|
|
1297
|
+
description: |-
|
|
1298
|
+
Optional child (table-level) job id to filter errors to a single table.
|
|
1299
|
+
Obtain this from the `tables[]._id` field in the job family response.
|
|
1300
|
+
schema:
|
|
1301
|
+
type: string
|
|
1302
|
+
format: objectId
|
|
1303
|
+
examples:
|
|
1304
|
+
- 6821c01c39db7c2b9cdc0e31
|
|
1305
|
+
responses:
|
|
1306
|
+
'200':
|
|
1307
|
+
description: Array of sync error records.
|
|
1308
|
+
headers:
|
|
1309
|
+
x-total-count:
|
|
1310
|
+
description: Total number of errors matching the query.
|
|
1311
|
+
schema:
|
|
1312
|
+
type: integer
|
|
1313
|
+
content:
|
|
1314
|
+
application/json:
|
|
1315
|
+
schema:
|
|
1316
|
+
type: array
|
|
1317
|
+
items:
|
|
1318
|
+
$ref: '#/components/schemas/SyncError'
|
|
1319
|
+
examples:
|
|
1320
|
+
with_errors:
|
|
1321
|
+
summary: Two errors from different tables
|
|
1322
|
+
value:
|
|
1323
|
+
- scope: extract
|
|
1324
|
+
source: salesforce
|
|
1325
|
+
code: INVALID_FIELD
|
|
1326
|
+
message: No such column 'Custom_Field__c' on entity 'Account'.
|
|
1327
|
+
_datasetId: 6821c01c39db7c2b9cdc0e35
|
|
1328
|
+
_syncId: 682094fa7eb7fc3e7ab7a4a0
|
|
1329
|
+
_parentSyncJobId: 6821c01c39db7c2b9cdc0e30
|
|
1330
|
+
_childSyncJobId: 6821c01c39db7c2b9cdc0e31
|
|
1331
|
+
flowExecutionGroupId: 6821c01c39db7c2b9cdc0e29
|
|
1332
|
+
stage: extraction
|
|
1333
|
+
datasetName: Salesforce Accounts
|
|
1334
|
+
tableName: accounts
|
|
1335
|
+
occurredAt: '2026-04-28T14:31:22.789Z'
|
|
1336
|
+
- scope: load
|
|
1337
|
+
source: snowflake
|
|
1338
|
+
code: DUPLICATE_KEY
|
|
1339
|
+
message: Duplicate key value violates unique constraint on 'contacts.email'.
|
|
1340
|
+
_datasetId: 6821c01c39db7c2b9cdc0e36
|
|
1341
|
+
_syncId: 682094fa7eb7fc3e7ab7a4a0
|
|
1342
|
+
_parentSyncJobId: 6821c01c39db7c2b9cdc0e30
|
|
1343
|
+
_childSyncJobId: 6821c01c39db7c2b9cdc0e32
|
|
1344
|
+
flowExecutionGroupId: 6821c01c39db7c2b9cdc0e29
|
|
1345
|
+
stage: loading
|
|
1346
|
+
datasetName: Salesforce Contacts
|
|
1347
|
+
tableName: contacts
|
|
1348
|
+
occurredAt: '2026-04-28T14:32:05.123Z'
|
|
1349
|
+
empty:
|
|
1350
|
+
summary: No errors
|
|
1351
|
+
value: []
|
|
1352
|
+
'401':
|
|
1353
|
+
$ref: '#/components/responses/401-unauthorized'
|
|
1354
|
+
'404':
|
|
1355
|
+
$ref: '#/components/responses/404-not-found'
|
|
1356
|
+
/v1/syncJobs/{_syncJobId}/cancel:
|
|
1357
|
+
put:
|
|
1358
|
+
x-internal: false
|
|
1359
|
+
operationId: cancelSyncJob
|
|
1360
|
+
tags:
|
|
1361
|
+
- Sync Jobs
|
|
1362
|
+
summary: Cancel a single sync job
|
|
1363
|
+
description: |-
|
|
1364
|
+
Cancels a specific sync job by id.
|
|
1365
|
+
|
|
1366
|
+
Only jobs that are still in progress (`running`) can be canceled. Jobs already in a terminal
|
|
1367
|
+
state (`completed`, `failed`, `canceled`) cannot be canceled. To cancel all running jobs for
|
|
1368
|
+
a sync at once, use `PUT /v1/syncs/{_syncId}/syncJobs/cancel` instead.
|
|
1369
|
+
parameters:
|
|
1370
|
+
- name: _syncJobId
|
|
1371
|
+
in: path
|
|
1372
|
+
required: true
|
|
1373
|
+
description: Sync job id to cancel.
|
|
1374
|
+
schema:
|
|
1375
|
+
type: string
|
|
1376
|
+
format: objectId
|
|
1377
|
+
x-celigo-refModel: syncJobs
|
|
1378
|
+
responses:
|
|
1379
|
+
'204':
|
|
1380
|
+
description: Sync job canceled successfully. No response body.
|
|
1381
|
+
'401':
|
|
1382
|
+
$ref: '#/components/responses/401-unauthorized'
|
|
1383
|
+
'403':
|
|
1384
|
+
description: |-
|
|
1385
|
+
The sync job is already in a terminal state and cannot be canceled.
|
|
1386
|
+
Error code: `sync_job_not_cancellable`.
|
|
1387
|
+
content:
|
|
1388
|
+
application/json:
|
|
1389
|
+
schema:
|
|
1390
|
+
$ref: '#/components/schemas/Error'
|
|
1391
|
+
examples:
|
|
1392
|
+
not_cancellable:
|
|
1393
|
+
summary: Job already completed
|
|
1394
|
+
value:
|
|
1395
|
+
errors:
|
|
1396
|
+
- code: sync_job_not_cancellable
|
|
1397
|
+
message: The sync job is not in a cancellable state.
|
|
1398
|
+
'404':
|
|
1399
|
+
$ref: '#/components/responses/404-not-found'
|
|
1400
|
+
/v1/integrations/{_integrationId}/syncJobs/latest:
|
|
1401
|
+
get:
|
|
1402
|
+
x-internal: false
|
|
1403
|
+
operationId: getLatestSyncJobsForIntegration
|
|
1404
|
+
tags:
|
|
1405
|
+
- Sync Jobs
|
|
1406
|
+
summary: Get the latest sync job for each sync in an integration
|
|
1407
|
+
description: |-
|
|
1408
|
+
Returns the most recent sync job for each sync resource belonging to the given integration.
|
|
1409
|
+
The response is a bare JSON array with one `SyncJob` entry per sync.
|
|
1410
|
+
|
|
1411
|
+
Returns an empty response when no sync jobs exist for any sync in the integration. Each entry
|
|
1412
|
+
in the array represents the latest run of a different sync; use `_syncId` on each returned job
|
|
1413
|
+
to correlate back to the sync resource. The response is a bare array, not wrapped in a `data`
|
|
1414
|
+
envelope.
|
|
1415
|
+
parameters:
|
|
1416
|
+
- name: _integrationId
|
|
1417
|
+
in: path
|
|
1418
|
+
required: true
|
|
1419
|
+
description: Integration id.
|
|
1420
|
+
schema:
|
|
1421
|
+
type: string
|
|
1422
|
+
format: objectId
|
|
1423
|
+
x-celigo-refModel: integrations
|
|
1424
|
+
responses:
|
|
1425
|
+
'200':
|
|
1426
|
+
description: Array of latest sync jobs (one per sync in the integration).
|
|
1427
|
+
content:
|
|
1428
|
+
application/json:
|
|
1429
|
+
schema:
|
|
1430
|
+
type: array
|
|
1431
|
+
items:
|
|
1432
|
+
$ref: '#/components/schemas/SyncJob'
|
|
1433
|
+
examples:
|
|
1434
|
+
two_syncs:
|
|
1435
|
+
summary: Integration with two syncs
|
|
1436
|
+
value:
|
|
1437
|
+
- _id: 6821c01c39db7c2b9cdc0e30
|
|
1438
|
+
flowExecutionGroupId: 6821c01c39db7c2b9cdc0e29
|
|
1439
|
+
_integrationId: 67d7b6e69e4b1371e5d1e2a1
|
|
1440
|
+
_syncId: 682094fa7eb7fc3e7ab7a4a0
|
|
1441
|
+
createdAt: '2026-04-28T14:30:00.000Z'
|
|
1442
|
+
startedAt: '2026-04-28T14:30:01.123Z'
|
|
1443
|
+
endedAt: '2026-04-28T14:35:12.456Z'
|
|
1444
|
+
purgeAt: '2026-07-28T14:35:12.456Z'
|
|
1445
|
+
status: completed
|
|
1446
|
+
numErrors: 0
|
|
1447
|
+
numLoadedRecords: 12450
|
|
1448
|
+
numExtractedRecords: 12450
|
|
1449
|
+
numTablesSynced: 3
|
|
1450
|
+
triggeredBy: schedule
|
|
1451
|
+
runType: normal
|
|
1452
|
+
- _id: 6821d22e39db7c2b9cdc1050
|
|
1453
|
+
flowExecutionGroupId: 6821d22e39db7c2b9cdc1049
|
|
1454
|
+
_integrationId: 67d7b6e69e4b1371e5d1e2a1
|
|
1455
|
+
_syncId: 682094fb7eb7fc3e7ab7a4b1
|
|
1456
|
+
createdAt: '2026-04-29T02:00:00.000Z'
|
|
1457
|
+
startedAt: '2026-04-29T02:00:01.000Z'
|
|
1458
|
+
endedAt: '2026-04-29T02:08:33.000Z'
|
|
1459
|
+
purgeAt: '2026-07-29T02:08:33.000Z'
|
|
1460
|
+
status: completed
|
|
1461
|
+
numErrors: 1
|
|
1462
|
+
numLoadedRecords: 5600
|
|
1463
|
+
numExtractedRecords: 5601
|
|
1464
|
+
numTablesSynced: 2
|
|
1465
|
+
triggeredBy: schedule
|
|
1466
|
+
runType: normal
|
|
1467
|
+
'204':
|
|
1468
|
+
description: No sync jobs exist for any sync in this integration.
|
|
1469
|
+
'401':
|
|
1470
|
+
$ref: '#/components/responses/401-unauthorized'
|
|
1471
|
+
'404':
|
|
1472
|
+
description: |-
|
|
1473
|
+
Integration not found or not sync-enabled.
|
|
1474
|
+
Error codes: `sync_job_invalid_integration_id` (integration exists but has no syncs),
|
|
1475
|
+
`sync_job_missing_integration` (integration does not exist).
|
|
1476
|
+
content:
|
|
1477
|
+
application/json:
|
|
1478
|
+
schema:
|
|
1479
|
+
$ref: '#/components/schemas/Error'
|
|
1480
|
+
examples:
|
|
1481
|
+
not_sync_enabled:
|
|
1482
|
+
summary: Integration has no syncs
|
|
1483
|
+
value:
|
|
1484
|
+
errors:
|
|
1485
|
+
- code: sync_job_invalid_integration_id
|
|
1486
|
+
message: The integration is not sync-enabled.
|
|
1487
|
+
missing:
|
|
1488
|
+
summary: Integration does not exist
|
|
1489
|
+
value:
|
|
1490
|
+
errors:
|
|
1491
|
+
- code: sync_job_missing_integration
|
|
1492
|
+
message: Integration not found.
|
|
1493
|
+
/v1/syncs/{_syncId}/audit:
|
|
1494
|
+
get:
|
|
1495
|
+
x-internal: false
|
|
1496
|
+
summary: Get audit log for a sync
|
|
1497
|
+
description: |-
|
|
1498
|
+
Returns the change history for a sync. Entries cover the sync itself **and** the related
|
|
1499
|
+
resources it depends on — its datasets (the tables being replicated) and the source and
|
|
1500
|
+
destination connections it uses — so a single response interleaves `sync`, `dataset`, and
|
|
1501
|
+
`connection` events. Read `resourceType` on each entry to tell them apart.
|
|
1502
|
+
tags:
|
|
1503
|
+
- Syncs
|
|
1504
|
+
operationId: getSyncAudit
|
|
1505
|
+
parameters:
|
|
1506
|
+
- name: _syncId
|
|
1507
|
+
in: path
|
|
1508
|
+
description: Sync id.
|
|
1509
|
+
required: true
|
|
1510
|
+
schema:
|
|
1511
|
+
type: string
|
|
1512
|
+
format: objectId
|
|
1513
|
+
x-celigo-refModel: syncs
|
|
1514
|
+
examples:
|
|
1515
|
+
- 6a1889b0c7b977adc441bc0d
|
|
1516
|
+
- name: limit
|
|
1517
|
+
in: query
|
|
1518
|
+
description: Maximum number of audit entries to return per page.
|
|
1519
|
+
required: false
|
|
1520
|
+
schema:
|
|
1521
|
+
type: integer
|
|
1522
|
+
minimum: 1
|
|
1523
|
+
maximum: 1000
|
|
1524
|
+
default: 1000
|
|
1525
|
+
examples:
|
|
1526
|
+
- 100
|
|
1527
|
+
- name: after
|
|
1528
|
+
in: query
|
|
1529
|
+
required: false
|
|
1530
|
+
description: |-
|
|
1531
|
+
Opaque pagination cursor for the next page. Take it from the `after` value in the `Link`
|
|
1532
|
+
response header's `rel="next"` URL rather than constructing it.
|
|
1533
|
+
schema:
|
|
1534
|
+
type: string
|
|
1535
|
+
examples:
|
|
1536
|
+
- W3siJGRhdGUiOiIyMDI2LTA1LTAxVDAwOjAwOjAwLjAwMFoifSwiNjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIl0
|
|
1537
|
+
- name: from
|
|
1538
|
+
in: query
|
|
1539
|
+
required: false
|
|
1540
|
+
description: Only return entries at or after this timestamp.
|
|
1541
|
+
schema:
|
|
1542
|
+
type: string
|
|
1543
|
+
format: date-time
|
|
1544
|
+
examples:
|
|
1545
|
+
- '2026-05-01T00:00:00.000Z'
|
|
1546
|
+
- name: to
|
|
1547
|
+
in: query
|
|
1548
|
+
required: false
|
|
1549
|
+
description: Only return entries at or before this timestamp.
|
|
1550
|
+
schema:
|
|
1551
|
+
type: string
|
|
1552
|
+
format: date-time
|
|
1553
|
+
examples:
|
|
1554
|
+
- '2026-05-31T23:59:59.999Z'
|
|
1555
|
+
- name: action
|
|
1556
|
+
in: query
|
|
1557
|
+
required: false
|
|
1558
|
+
description: Filter by the change type. Maps to the `event` field on each entry.
|
|
1559
|
+
schema:
|
|
1560
|
+
type: string
|
|
1561
|
+
enum:
|
|
1562
|
+
- create
|
|
1563
|
+
- update
|
|
1564
|
+
- delete
|
|
1565
|
+
- view
|
|
1566
|
+
- restore
|
|
1567
|
+
- purge
|
|
1568
|
+
- signin
|
|
1569
|
+
- signout
|
|
1570
|
+
- purgelogs
|
|
1571
|
+
examples:
|
|
1572
|
+
- update
|
|
1573
|
+
x-enumDescriptions:
|
|
1574
|
+
create: A resource was created.
|
|
1575
|
+
update: A resource was modified.
|
|
1576
|
+
delete: A resource was deleted (moved to recycle bin).
|
|
1577
|
+
view: A resource was viewed or accessed.
|
|
1578
|
+
restore: A resource was restored from the recycle bin.
|
|
1579
|
+
purge: A resource was permanently purged from the recycle bin.
|
|
1580
|
+
signin: A user signed in to the account.
|
|
1581
|
+
signout: A user signed out of the account.
|
|
1582
|
+
purgelogs: Execution logs were purged for a resource.
|
|
1583
|
+
- name: source
|
|
1584
|
+
in: query
|
|
1585
|
+
required: false
|
|
1586
|
+
description: Filter by how the change was initiated.
|
|
1587
|
+
schema:
|
|
1588
|
+
type: string
|
|
1589
|
+
enum:
|
|
1590
|
+
- ui
|
|
1591
|
+
- api
|
|
1592
|
+
- system
|
|
1593
|
+
- connector
|
|
1594
|
+
- script
|
|
1595
|
+
- sso
|
|
1596
|
+
examples:
|
|
1597
|
+
- ui
|
|
1598
|
+
x-enumDescriptions:
|
|
1599
|
+
ui: Change made through the Celigo web UI.
|
|
1600
|
+
api: Change made via the REST API.
|
|
1601
|
+
system: Change made automatically by the platform.
|
|
1602
|
+
connector: Change made by an Integration App (connector) process.
|
|
1603
|
+
script: Change made by a custom script execution.
|
|
1604
|
+
sso: Change triggered by an SSO authentication event.
|
|
1605
|
+
- name: _byUserId
|
|
1606
|
+
in: query
|
|
1607
|
+
required: false
|
|
1608
|
+
description: Filter to changes performed by a single user.
|
|
1609
|
+
schema:
|
|
1610
|
+
type: string
|
|
1611
|
+
format: objectId
|
|
1612
|
+
x-celigo-refModel: users
|
|
1613
|
+
examples:
|
|
1614
|
+
- 624cb0346309dc3a543733a2
|
|
1615
|
+
- name: resourceType
|
|
1616
|
+
in: query
|
|
1617
|
+
required: false
|
|
1618
|
+
description: |-
|
|
1619
|
+
Narrow the aggregated results to a single resource kind — e.g. `sync` for only the sync's
|
|
1620
|
+
own changes, excluding its datasets and connections.
|
|
1621
|
+
schema:
|
|
1622
|
+
type: string
|
|
1623
|
+
enum:
|
|
1624
|
+
- sync
|
|
1625
|
+
- dataset
|
|
1626
|
+
- connection
|
|
1627
|
+
examples:
|
|
1628
|
+
- sync
|
|
1629
|
+
x-enumDescriptions:
|
|
1630
|
+
sync: Only changes to the sync resource itself.
|
|
1631
|
+
dataset: Only changes to the sync's datasets.
|
|
1632
|
+
connection: Only changes to the sync's source or destination connections.
|
|
1633
|
+
- name: _resourceId
|
|
1634
|
+
in: query
|
|
1635
|
+
required: false
|
|
1636
|
+
description: |-
|
|
1637
|
+
Filter to a single resource's entries. Must be sent together with `resourceType`;
|
|
1638
|
+
sending it alone returns `400 invalid_id`.
|
|
1639
|
+
schema:
|
|
1640
|
+
type: string
|
|
1641
|
+
format: objectId
|
|
1642
|
+
examples:
|
|
1643
|
+
- 682094fa7eb7fc3e7ab7a4a0
|
|
1644
|
+
responses:
|
|
1645
|
+
'200':
|
|
1646
|
+
description: Array of audit entries, newest first.
|
|
1647
|
+
headers:
|
|
1648
|
+
Link:
|
|
1649
|
+
description: |-
|
|
1650
|
+
RFC 5988 pagination link. Includes `<...>; rel="next"` with an
|
|
1651
|
+
`after` cursor when more entries exist; absent on the final page.
|
|
1652
|
+
schema:
|
|
1653
|
+
type: string
|
|
1654
|
+
content:
|
|
1655
|
+
application/json:
|
|
1656
|
+
schema:
|
|
1657
|
+
type: array
|
|
1658
|
+
items:
|
|
1659
|
+
type: object
|
|
1660
|
+
description: A single change recorded against the sync or one of its related resources.
|
|
1661
|
+
properties:
|
|
1662
|
+
_id:
|
|
1663
|
+
type: string
|
|
1664
|
+
format: objectId
|
|
1665
|
+
description: Unique identifier for this audit entry.
|
|
1666
|
+
examples:
|
|
1667
|
+
- 6a1889e4c7b977adc441cb3f
|
|
1668
|
+
resourceType:
|
|
1669
|
+
type: string
|
|
1670
|
+
description: |-
|
|
1671
|
+
Which resource the entry describes. The endpoint aggregates the sync and the
|
|
1672
|
+
resources it references, so a single response mixes all three values.
|
|
1673
|
+
enum:
|
|
1674
|
+
- sync
|
|
1675
|
+
- dataset
|
|
1676
|
+
- connection
|
|
1677
|
+
examples:
|
|
1678
|
+
- sync
|
|
1679
|
+
x-enumDescriptions:
|
|
1680
|
+
sync: A change to the sync resource itself (name, schedule, drift policy, etc.).
|
|
1681
|
+
dataset: A change to one of the sync's datasets (the tables being replicated).
|
|
1682
|
+
connection: A change to a source or destination connection the sync uses.
|
|
1683
|
+
_resourceId:
|
|
1684
|
+
type: string
|
|
1685
|
+
format: objectId
|
|
1686
|
+
description: ID of the resource this entry belongs to. Matches `resourceType`.
|
|
1687
|
+
examples:
|
|
1688
|
+
- 682094fa7eb7fc3e7ab7a4a0
|
|
1689
|
+
event:
|
|
1690
|
+
type: string
|
|
1691
|
+
description: Type of change that occurred.
|
|
1692
|
+
enum:
|
|
1693
|
+
- create
|
|
1694
|
+
- update
|
|
1695
|
+
- delete
|
|
1696
|
+
examples:
|
|
1697
|
+
- update
|
|
1698
|
+
x-enumDescriptions:
|
|
1699
|
+
create: Resource was created.
|
|
1700
|
+
update: Resource was modified.
|
|
1701
|
+
delete: Resource was soft-deleted (moved to recycle bin).
|
|
1702
|
+
source:
|
|
1703
|
+
type: string
|
|
1704
|
+
description: How the change was initiated.
|
|
1705
|
+
enum:
|
|
1706
|
+
- ui
|
|
1707
|
+
- system
|
|
1708
|
+
examples:
|
|
1709
|
+
- ui
|
|
1710
|
+
x-enumDescriptions:
|
|
1711
|
+
ui: Change made through the Celigo UI.
|
|
1712
|
+
system: Change made by an automated platform process.
|
|
1713
|
+
time:
|
|
1714
|
+
type: string
|
|
1715
|
+
format: date-time
|
|
1716
|
+
description: When the change occurred.
|
|
1717
|
+
examples:
|
|
1718
|
+
- '2026-05-28T18:31:00.861Z'
|
|
1719
|
+
byUser:
|
|
1720
|
+
type: object
|
|
1721
|
+
description: |-
|
|
1722
|
+
User the change is attributed to; always present. For `ui` changes this is the
|
|
1723
|
+
user who made it; for `system` changes it is the account owner the automated
|
|
1724
|
+
process ran as.
|
|
1725
|
+
properties:
|
|
1726
|
+
_id:
|
|
1727
|
+
type: string
|
|
1728
|
+
format: objectId
|
|
1729
|
+
x-celigo-refModel: users
|
|
1730
|
+
description: User ID.
|
|
1731
|
+
examples:
|
|
1732
|
+
- 624cb0346309dc3a543733a2
|
|
1733
|
+
email:
|
|
1734
|
+
type: string
|
|
1735
|
+
format: email
|
|
1736
|
+
description: User email address.
|
|
1737
|
+
examples:
|
|
1738
|
+
- user@example.com
|
|
1739
|
+
name:
|
|
1740
|
+
type: string
|
|
1741
|
+
description: User display name.
|
|
1742
|
+
examples:
|
|
1743
|
+
- Tyler Lamparter
|
|
1744
|
+
fieldChanges:
|
|
1745
|
+
type: array
|
|
1746
|
+
description: Fields that were modified. Dot-notation paths reach into nested objects.
|
|
1747
|
+
items:
|
|
1748
|
+
type: object
|
|
1749
|
+
description: One modified field, with its values before and after the change.
|
|
1750
|
+
properties:
|
|
1751
|
+
fieldPath:
|
|
1752
|
+
type: string
|
|
1753
|
+
description: Dot-notation path of the changed field.
|
|
1754
|
+
examples:
|
|
1755
|
+
- schedule
|
|
1756
|
+
oldValue:
|
|
1757
|
+
description: The field's value before the change. Absent on `create` events. Type matches the changed field.
|
|
1758
|
+
newValue:
|
|
1759
|
+
description: The field's value after the change. Absent on `delete` events. Type matches the changed field.
|
|
1760
|
+
deletedInfo:
|
|
1761
|
+
type: object
|
|
1762
|
+
description: Metadata about the deleted resource. Present on `delete` events.
|
|
1763
|
+
properties:
|
|
1764
|
+
name:
|
|
1765
|
+
type: string
|
|
1766
|
+
description: Name of the resource at the time of deletion.
|
|
1767
|
+
examples:
|
|
1768
|
+
- Order Analytics
|
|
1769
|
+
_integrationId:
|
|
1770
|
+
type: string
|
|
1771
|
+
format: objectId
|
|
1772
|
+
x-celigo-refModel: integrations
|
|
1773
|
+
description: Integration the deleted resource belonged to.
|
|
1774
|
+
examples:
|
|
1775
|
+
- 6985ccd4dab90f9cbe9080dd
|
|
1776
|
+
examples:
|
|
1777
|
+
default:
|
|
1778
|
+
summary: A sync update and a connection update
|
|
1779
|
+
value:
|
|
1780
|
+
- _id: 6a1889e4c7b977adc441cb3f
|
|
1781
|
+
resourceType: sync
|
|
1782
|
+
_resourceId: 682094fa7eb7fc3e7ab7a4a0
|
|
1783
|
+
source: ui
|
|
1784
|
+
event: update
|
|
1785
|
+
time: '2026-05-28T18:31:00.861Z'
|
|
1786
|
+
byUser:
|
|
1787
|
+
_id: 624cb0346309dc3a543733a2
|
|
1788
|
+
email: user@example.com
|
|
1789
|
+
name: Tyler Lamparter
|
|
1790
|
+
fieldChanges:
|
|
1791
|
+
- fieldPath: name
|
|
1792
|
+
oldValue: ''
|
|
1793
|
+
newValue: Order Analytics
|
|
1794
|
+
- fieldPath: schedule
|
|
1795
|
+
newValue: '? 0 */1 * * *'
|
|
1796
|
+
- fieldPath: timezone
|
|
1797
|
+
newValue: Etc/UTC
|
|
1798
|
+
- _id: 6a1889c9c7b977adc441c27a
|
|
1799
|
+
resourceType: connection
|
|
1800
|
+
_resourceId: 68c8213f8ece256d4c9fa351
|
|
1801
|
+
source: system
|
|
1802
|
+
event: update
|
|
1803
|
+
time: '2026-05-28T18:30:32.891Z'
|
|
1804
|
+
byUser:
|
|
1805
|
+
_id: 624cb0346309dc3a543733a2
|
|
1806
|
+
email: user@example.com
|
|
1807
|
+
name: Tyler Lamparter
|
|
1808
|
+
fieldChanges:
|
|
1809
|
+
- fieldPath: salesforce.refreshToken
|
|
1810
|
+
newValue: '********'
|
|
1811
|
+
'204':
|
|
1812
|
+
description: No audit entries match the query.
|
|
1813
|
+
'400':
|
|
1814
|
+
$ref: '#/components/responses/400-bad-request'
|
|
1815
|
+
'401':
|
|
1816
|
+
$ref: '#/components/responses/401-unauthorized'
|
|
1817
|
+
'404':
|
|
1818
|
+
$ref: '#/components/responses/404-not-found'
|
|
1819
|
+
'422':
|
|
1820
|
+
$ref: '#/components/responses/422-unprocessable-entity'
|
|
1821
|
+
/v1/di/resource/syncs/{_syncId}/events:
|
|
1822
|
+
get:
|
|
1823
|
+
x-internal: false
|
|
1824
|
+
summary: List events for a sync
|
|
1825
|
+
description: |-
|
|
1826
|
+
Returns the events recorded for a sync across all of its runs — schema drift the
|
|
1827
|
+
platform detected or applied, and data-catalog activity — newest first. Events are
|
|
1828
|
+
retained per the account's data retention period; a `time_lte` older than the
|
|
1829
|
+
retention window returns an empty list.
|
|
1830
|
+
operationId: listSyncEvents
|
|
1831
|
+
tags:
|
|
1832
|
+
- Syncs
|
|
1833
|
+
parameters:
|
|
1834
|
+
- name: _syncId
|
|
1835
|
+
in: path
|
|
1836
|
+
required: true
|
|
1837
|
+
description: Sync id.
|
|
1838
|
+
schema:
|
|
1839
|
+
type: string
|
|
1840
|
+
format: objectId
|
|
1841
|
+
x-celigo-refModel: syncs
|
|
1842
|
+
examples:
|
|
1843
|
+
- 6a4b8bfb731a7a5cae9bd364
|
|
1844
|
+
- name: limit
|
|
1845
|
+
in: query
|
|
1846
|
+
required: false
|
|
1847
|
+
description: Maximum number of events to return per page.
|
|
1848
|
+
schema:
|
|
1849
|
+
type: integer
|
|
1850
|
+
minimum: 1
|
|
1851
|
+
maximum: 1000
|
|
1852
|
+
default: 100
|
|
1853
|
+
examples:
|
|
1854
|
+
- 25
|
|
1855
|
+
- name: page
|
|
1856
|
+
in: query
|
|
1857
|
+
required: false
|
|
1858
|
+
description: 1-based page number. Combine with `limit` to page through results.
|
|
1859
|
+
schema:
|
|
1860
|
+
type: integer
|
|
1861
|
+
minimum: 1
|
|
1862
|
+
default: 1
|
|
1863
|
+
examples:
|
|
1864
|
+
- 2
|
|
1865
|
+
- name: time_lte
|
|
1866
|
+
in: query
|
|
1867
|
+
required: false
|
|
1868
|
+
description: Only return events recorded at or before this timestamp.
|
|
1869
|
+
schema:
|
|
1870
|
+
type: string
|
|
1871
|
+
format: date-time
|
|
1872
|
+
examples:
|
|
1873
|
+
- '2026-07-14T00:00:00.000Z'
|
|
1874
|
+
- name: time_gt
|
|
1875
|
+
in: query
|
|
1876
|
+
required: false
|
|
1877
|
+
description: |-
|
|
1878
|
+
Only return events recorded after this timestamp. Must not be in the future
|
|
1879
|
+
(`422 future_time_gt_not_allowed`).
|
|
1880
|
+
schema:
|
|
1881
|
+
type: string
|
|
1882
|
+
format: date-time
|
|
1883
|
+
examples:
|
|
1884
|
+
- '2026-07-07T00:00:00.000Z'
|
|
1885
|
+
- name: type
|
|
1886
|
+
in: query
|
|
1887
|
+
required: false
|
|
1888
|
+
description: Only return events of one category.
|
|
1889
|
+
schema:
|
|
1890
|
+
type: string
|
|
1891
|
+
enum:
|
|
1892
|
+
- Schema Drift
|
|
1893
|
+
- Data Catalog
|
|
1894
|
+
examples:
|
|
1895
|
+
- Schema Drift
|
|
1896
|
+
x-enumDescriptions:
|
|
1897
|
+
Schema Drift: Changes to the source schema that were detected or applied.
|
|
1898
|
+
Data Catalog: Dataset metadata activity recorded while cataloging the source.
|
|
1899
|
+
- name: resourceName
|
|
1900
|
+
in: query
|
|
1901
|
+
required: false
|
|
1902
|
+
description: Only return events for one source table/object.
|
|
1903
|
+
schema:
|
|
1904
|
+
type: string
|
|
1905
|
+
examples:
|
|
1906
|
+
- Account
|
|
1907
|
+
- name: flowExecutionGroupId
|
|
1908
|
+
in: query
|
|
1909
|
+
required: false
|
|
1910
|
+
description: |-
|
|
1911
|
+
Only return events from one run. Use the `flowExecutionGroupId` returned by
|
|
1912
|
+
`POST /v1/syncs/{_syncId}/run`.
|
|
1913
|
+
schema:
|
|
1914
|
+
type: string
|
|
1915
|
+
examples:
|
|
1916
|
+
- d0f875a575bd4b8c944533da773f350a
|
|
1917
|
+
responses:
|
|
1918
|
+
'200':
|
|
1919
|
+
description: Events matching the filters, newest first.
|
|
1920
|
+
headers:
|
|
1921
|
+
Link:
|
|
1922
|
+
description: |-
|
|
1923
|
+
RFC 5988 pagination links with page-based navigation: `rel="first"`,
|
|
1924
|
+
`rel="last"`, and — where applicable — `rel="prev"` and `rel="next"`.
|
|
1925
|
+
schema:
|
|
1926
|
+
type: string
|
|
1927
|
+
X-Total-Count:
|
|
1928
|
+
description: Total number of events matching the current filters.
|
|
1929
|
+
schema:
|
|
1930
|
+
type: string
|
|
1931
|
+
examples:
|
|
1932
|
+
- '18'
|
|
1933
|
+
content:
|
|
1934
|
+
application/json:
|
|
1935
|
+
schema:
|
|
1936
|
+
type: object
|
|
1937
|
+
required:
|
|
1938
|
+
- events
|
|
1939
|
+
properties:
|
|
1940
|
+
events:
|
|
1941
|
+
type: array
|
|
1942
|
+
items:
|
|
1943
|
+
$ref: '#/components/schemas/SyncEvent'
|
|
1944
|
+
examples:
|
|
1945
|
+
drift:
|
|
1946
|
+
summary: Schema drift recorded during extraction
|
|
1947
|
+
value:
|
|
1948
|
+
events:
|
|
1949
|
+
- id: 80ba31fe-b66d-4777-9b12-3177c55aab13
|
|
1950
|
+
_syncId: 6a4b8bfb731a7a5cae9bd364
|
|
1951
|
+
_userId: 68c821306f5d848c881da205
|
|
1952
|
+
flowExecutionGroupId: d0f875a575bd4b8c944533da773f350a
|
|
1953
|
+
resourceName: RelatedListDefinition
|
|
1954
|
+
severity: INFO
|
|
1955
|
+
eventTime: '2026-07-13T12:36:06.225Z'
|
|
1956
|
+
type: Schema Drift
|
|
1957
|
+
stage: Extract
|
|
1958
|
+
metadata:
|
|
1959
|
+
action: Table removed
|
|
1960
|
+
resourceType: Table
|
|
1961
|
+
'401':
|
|
1962
|
+
$ref: '#/components/responses/401-unauthorized'
|
|
1963
|
+
'403':
|
|
1964
|
+
description: The sync belongs to a different account owner.
|
|
1965
|
+
content:
|
|
1966
|
+
application/json:
|
|
1967
|
+
schema:
|
|
1968
|
+
$ref: '#/components/schemas/Error'
|
|
1969
|
+
'404':
|
|
1970
|
+
description: |-
|
|
1971
|
+
Sync not found.
|
|
1972
|
+
Error code: `invalid_ref`.
|
|
1973
|
+
content:
|
|
1974
|
+
application/json:
|
|
1975
|
+
schema:
|
|
1976
|
+
$ref: '#/components/schemas/Error'
|
|
1977
|
+
examples:
|
|
1978
|
+
sync_not_found:
|
|
1979
|
+
summary: Sync does not exist
|
|
1980
|
+
value:
|
|
1981
|
+
errors:
|
|
1982
|
+
- code: invalid_ref
|
|
1983
|
+
message: Sync doc not found for the given id '000000000000000000000000'.
|
|
1984
|
+
'422':
|
|
1985
|
+
description: |-
|
|
1986
|
+
Invalid filter. A timestamp value cannot be parsed, or `time_gt` is in the
|
|
1987
|
+
future (`future_time_gt_not_allowed`).
|
|
1988
|
+
content:
|
|
1989
|
+
application/json:
|
|
1990
|
+
schema:
|
|
1991
|
+
$ref: '#/components/schemas/Error'
|
|
1992
|
+
examples:
|
|
1993
|
+
future_time_gt:
|
|
1994
|
+
summary: time_gt in the future
|
|
1995
|
+
value:
|
|
1996
|
+
errors:
|
|
1997
|
+
- code: future_time_gt_not_allowed
|
|
1998
|
+
message: time_gt cannot be in the future
|
|
1999
|
+
/v1/syncs/usage:
|
|
2000
|
+
get:
|
|
2001
|
+
x-internal: false
|
|
2002
|
+
summary: Get per-sync usage for the current month
|
|
2003
|
+
description: |-
|
|
2004
|
+
Returns the number of records each sync loaded during the current calendar month
|
|
2005
|
+
(UTC), for the current environment. Only syncs that ran this month appear.
|
|
2006
|
+
Requires account-administration permission (the same level that manages account
|
|
2007
|
+
users); accounts without a Data Ingestion entitlement get an empty `usage` array.
|
|
2008
|
+
operationId: getSyncUsage
|
|
2009
|
+
tags:
|
|
2010
|
+
- Syncs
|
|
2011
|
+
responses:
|
|
2012
|
+
'200':
|
|
2013
|
+
description: Per-sync loaded-record volumes for the current month.
|
|
2014
|
+
content:
|
|
2015
|
+
application/json:
|
|
2016
|
+
schema:
|
|
2017
|
+
type: object
|
|
2018
|
+
required:
|
|
2019
|
+
- usage
|
|
2020
|
+
properties:
|
|
2021
|
+
usage:
|
|
2022
|
+
type: array
|
|
2023
|
+
items:
|
|
2024
|
+
type: object
|
|
2025
|
+
description: One sync's loaded-record volume this month.
|
|
2026
|
+
properties:
|
|
2027
|
+
_id:
|
|
2028
|
+
type: string
|
|
2029
|
+
format: objectId
|
|
2030
|
+
x-celigo-refModel: syncs
|
|
2031
|
+
description: Sync the volume belongs to.
|
|
2032
|
+
examples:
|
|
2033
|
+
- 6a4b8bfb731a7a5cae9bd364
|
|
2034
|
+
name:
|
|
2035
|
+
type:
|
|
2036
|
+
- string
|
|
2037
|
+
- 'null'
|
|
2038
|
+
description: Sync display name. Null when the sync has since been deleted.
|
|
2039
|
+
examples:
|
|
2040
|
+
- Salesforce Demo Sync
|
|
2041
|
+
source:
|
|
2042
|
+
type:
|
|
2043
|
+
- object
|
|
2044
|
+
- 'null'
|
|
2045
|
+
description: |-
|
|
2046
|
+
The sync's source connection. Null when the sync no longer
|
|
2047
|
+
resolves to a source.
|
|
2048
|
+
properties:
|
|
2049
|
+
_id:
|
|
2050
|
+
type: string
|
|
2051
|
+
format: objectId
|
|
2052
|
+
x-celigo-refModel: connections
|
|
2053
|
+
description: Source connection id.
|
|
2054
|
+
examples:
|
|
2055
|
+
- 6a2a95909e994395f3c2a4e6
|
|
2056
|
+
name:
|
|
2057
|
+
type:
|
|
2058
|
+
- string
|
|
2059
|
+
- 'null'
|
|
2060
|
+
description: Source connection display name.
|
|
2061
|
+
examples:
|
|
2062
|
+
- Salesforce Production
|
|
2063
|
+
destination:
|
|
2064
|
+
type:
|
|
2065
|
+
- object
|
|
2066
|
+
- 'null'
|
|
2067
|
+
description: |-
|
|
2068
|
+
The sync's destination connection. Null when the sync has no
|
|
2069
|
+
destination configured.
|
|
2070
|
+
properties:
|
|
2071
|
+
_id:
|
|
2072
|
+
type: string
|
|
2073
|
+
format: objectId
|
|
2074
|
+
x-celigo-refModel: connections
|
|
2075
|
+
description: Destination connection id.
|
|
2076
|
+
examples:
|
|
2077
|
+
- 68d02dbe0839a514623c1d6d
|
|
2078
|
+
name:
|
|
2079
|
+
type:
|
|
2080
|
+
- string
|
|
2081
|
+
- 'null'
|
|
2082
|
+
description: Destination connection display name.
|
|
2083
|
+
examples:
|
|
2084
|
+
- Snowflake
|
|
2085
|
+
volume:
|
|
2086
|
+
type: number
|
|
2087
|
+
description: Records the sync loaded this month.
|
|
2088
|
+
examples:
|
|
2089
|
+
- 1458
|
|
2090
|
+
examples:
|
|
2091
|
+
default:
|
|
2092
|
+
value:
|
|
2093
|
+
usage:
|
|
2094
|
+
- _id: 6a4b8bfb731a7a5cae9bd364
|
|
2095
|
+
name: Salesforce Demo Sync
|
|
2096
|
+
source:
|
|
2097
|
+
_id: 6a2a95909e994395f3c2a4e6
|
|
2098
|
+
name: Salesforce Production
|
|
2099
|
+
destination:
|
|
2100
|
+
_id: 68d02dbe0839a514623c1d6d
|
|
2101
|
+
name: Snowflake
|
|
2102
|
+
volume: 1458
|
|
2103
|
+
'401':
|
|
2104
|
+
$ref: '#/components/responses/401-unauthorized'
|
|
2105
|
+
/v1/syncs/usage/summary:
|
|
2106
|
+
get:
|
|
2107
|
+
x-internal: false
|
|
2108
|
+
summary: Get monthly sync usage history
|
|
2109
|
+
description: |-
|
|
2110
|
+
Returns account-wide sync usage by calendar month, newest first — the records
|
|
2111
|
+
loaded across all syncs and environments, alongside the account's Data Ingestion
|
|
2112
|
+
entitlement for each month. History reaches back at most 14 months. Requires
|
|
2113
|
+
account-administration permission (the same level that manages account users);
|
|
2114
|
+
accounts without a Data Ingestion entitlement get an empty array.
|
|
2115
|
+
operationId: getSyncUsageSummary
|
|
2116
|
+
tags:
|
|
2117
|
+
- Syncs
|
|
2118
|
+
parameters:
|
|
2119
|
+
- name: from
|
|
2120
|
+
in: query
|
|
2121
|
+
required: false
|
|
2122
|
+
description: |-
|
|
2123
|
+
First month to include, as `YYYY-MM`. Cannot be more than 14 months back
|
|
2124
|
+
(`400 invalid_date_range`). Defaults to 14 months before the current month.
|
|
2125
|
+
schema:
|
|
2126
|
+
type: string
|
|
2127
|
+
pattern: ^\d{4}-(0[1-9]|1[0-2])$
|
|
2128
|
+
examples:
|
|
2129
|
+
- 2026-05
|
|
2130
|
+
- name: to
|
|
2131
|
+
in: query
|
|
2132
|
+
required: false
|
|
2133
|
+
description: |-
|
|
2134
|
+
Last month to include, as `YYYY-MM`. Cannot be in the future. Defaults to the
|
|
2135
|
+
current month.
|
|
2136
|
+
schema:
|
|
2137
|
+
type: string
|
|
2138
|
+
pattern: ^\d{4}-(0[1-9]|1[0-2])$
|
|
2139
|
+
examples:
|
|
2140
|
+
- 2026-07
|
|
2141
|
+
responses:
|
|
2142
|
+
'200':
|
|
2143
|
+
description: Monthly usage totals, newest month first.
|
|
2144
|
+
content:
|
|
2145
|
+
application/json:
|
|
2146
|
+
schema:
|
|
2147
|
+
type: array
|
|
2148
|
+
items:
|
|
2149
|
+
type: object
|
|
2150
|
+
description: One month's account-wide sync usage.
|
|
2151
|
+
required:
|
|
2152
|
+
- year
|
|
2153
|
+
- month
|
|
2154
|
+
- volume
|
|
2155
|
+
- entitlement
|
|
2156
|
+
properties:
|
|
2157
|
+
year:
|
|
2158
|
+
type: integer
|
|
2159
|
+
description: Calendar year of the usage month.
|
|
2160
|
+
examples:
|
|
2161
|
+
- 2026
|
|
2162
|
+
month:
|
|
2163
|
+
type: integer
|
|
2164
|
+
minimum: 1
|
|
2165
|
+
maximum: 12
|
|
2166
|
+
description: Calendar month (1-12) of the usage.
|
|
2167
|
+
examples:
|
|
2168
|
+
- 7
|
|
2169
|
+
volume:
|
|
2170
|
+
type: string
|
|
2171
|
+
description: |-
|
|
2172
|
+
Records loaded across all syncs that month, serialized as a string
|
|
2173
|
+
to avoid precision loss at high volumes.
|
|
2174
|
+
examples:
|
|
2175
|
+
- '292460'
|
|
2176
|
+
entitlement:
|
|
2177
|
+
type: string
|
|
2178
|
+
description: |-
|
|
2179
|
+
Records per month the account's Data Ingestion license allows,
|
|
2180
|
+
serialized as a string.
|
|
2181
|
+
examples:
|
|
2182
|
+
- '100000000'
|
|
2183
|
+
examples:
|
|
2184
|
+
default:
|
|
2185
|
+
value:
|
|
2186
|
+
- year: 2026
|
|
2187
|
+
month: 7
|
|
2188
|
+
volume: '1537'
|
|
2189
|
+
entitlement: '100000000'
|
|
2190
|
+
- year: 2026
|
|
2191
|
+
month: 6
|
|
2192
|
+
volume: '292460'
|
|
2193
|
+
entitlement: '100000000'
|
|
2194
|
+
- year: 2026
|
|
2195
|
+
month: 5
|
|
2196
|
+
volume: '127448244'
|
|
2197
|
+
entitlement: '100000000'
|
|
2198
|
+
'400':
|
|
2199
|
+
description: |-
|
|
2200
|
+
Invalid date range. `from`/`to` is malformed (`invalid_date_format`), or the
|
|
2201
|
+
range is older than 14 months, in the future, or reversed
|
|
2202
|
+
(`invalid_date_range`).
|
|
2203
|
+
content:
|
|
2204
|
+
application/json:
|
|
2205
|
+
schema:
|
|
2206
|
+
$ref: '#/components/schemas/Error'
|
|
2207
|
+
examples:
|
|
2208
|
+
bad_format:
|
|
2209
|
+
summary: Malformed month value
|
|
2210
|
+
value:
|
|
2211
|
+
errors:
|
|
2212
|
+
- code: invalid_date_format
|
|
2213
|
+
message: Invalid date format. Expected YYYY-MM.
|
|
2214
|
+
'401':
|
|
2215
|
+
$ref: '#/components/responses/401-unauthorized'
|
|
2216
|
+
/v1/syncs/usage/environments:
|
|
2217
|
+
get:
|
|
2218
|
+
x-internal: false
|
|
2219
|
+
summary: Get sync usage by environment
|
|
2220
|
+
description: |-
|
|
2221
|
+
Returns the records loaded by syncs during the current calendar month (UTC), broken
|
|
2222
|
+
down by environment — production plus every additional environment in the account.
|
|
2223
|
+
Environments with no runs this month report a volume of 0. Requires
|
|
2224
|
+
account-administration permission (the same level that manages account users);
|
|
2225
|
+
accounts without a Data Ingestion entitlement get an empty `usage` array.
|
|
2226
|
+
operationId: getSyncUsageByEnvironment
|
|
2227
|
+
tags:
|
|
2228
|
+
- Syncs
|
|
2229
|
+
responses:
|
|
2230
|
+
'200':
|
|
2231
|
+
description: Per-environment loaded-record volumes for the current month.
|
|
2232
|
+
content:
|
|
2233
|
+
application/json:
|
|
2234
|
+
schema:
|
|
2235
|
+
type: object
|
|
2236
|
+
required:
|
|
2237
|
+
- usage
|
|
2238
|
+
properties:
|
|
2239
|
+
usage:
|
|
2240
|
+
type: array
|
|
2241
|
+
items:
|
|
2242
|
+
type: object
|
|
2243
|
+
description: One environment's loaded-record volume this month.
|
|
2244
|
+
required:
|
|
2245
|
+
- environment
|
|
2246
|
+
- volume
|
|
2247
|
+
properties:
|
|
2248
|
+
environment:
|
|
2249
|
+
type: object
|
|
2250
|
+
description: Environment the volume belongs to.
|
|
2251
|
+
properties:
|
|
2252
|
+
_id:
|
|
2253
|
+
type: string
|
|
2254
|
+
format: objectId
|
|
2255
|
+
description: |-
|
|
2256
|
+
Environment id. For the production entry this is the
|
|
2257
|
+
account owner's user id rather than an environment
|
|
2258
|
+
resource id.
|
|
2259
|
+
examples:
|
|
2260
|
+
- 69cc38111c25db1bb3468a62
|
|
2261
|
+
name:
|
|
2262
|
+
type: string
|
|
2263
|
+
description: Environment display name.
|
|
2264
|
+
examples:
|
|
2265
|
+
- Sandbox
|
|
2266
|
+
volume:
|
|
2267
|
+
type: number
|
|
2268
|
+
description: Records loaded in this environment this month.
|
|
2269
|
+
examples:
|
|
2270
|
+
- 1537
|
|
2271
|
+
examples:
|
|
2272
|
+
default:
|
|
2273
|
+
value:
|
|
2274
|
+
usage:
|
|
2275
|
+
- environment:
|
|
2276
|
+
_id: 68c821306f5d848c881da205
|
|
2277
|
+
name: Production
|
|
2278
|
+
volume: 1537
|
|
2279
|
+
- environment:
|
|
2280
|
+
_id: 69cc38111c25db1bb3468a62
|
|
2281
|
+
name: Sandbox
|
|
2282
|
+
volume: 0
|
|
2283
|
+
'401':
|
|
2284
|
+
$ref: '#/components/responses/401-unauthorized'
|
|
2285
|
+
/v1/di/metadata/sources:
|
|
2286
|
+
get:
|
|
2287
|
+
x-internal: false
|
|
2288
|
+
summary: List supported sync source applications
|
|
2289
|
+
description: |-
|
|
2290
|
+
Returns the catalog of applications that can be used as the **source** of a sync — the system
|
|
2291
|
+
a sync extracts records from. Use the returned `id` as the source application when building a
|
|
2292
|
+
sync, and `category` to group the options in a picker.
|
|
2293
|
+
tags:
|
|
2294
|
+
- Syncs
|
|
2295
|
+
operationId: listSyncSources
|
|
2296
|
+
responses:
|
|
2297
|
+
'200':
|
|
2298
|
+
description: Array of supported source applications.
|
|
2299
|
+
content:
|
|
2300
|
+
application/json:
|
|
2301
|
+
schema:
|
|
2302
|
+
type: array
|
|
2303
|
+
items:
|
|
2304
|
+
type: object
|
|
2305
|
+
description: A supported source application.
|
|
2306
|
+
required:
|
|
2307
|
+
- id
|
|
2308
|
+
properties:
|
|
2309
|
+
id:
|
|
2310
|
+
type: string
|
|
2311
|
+
description: Application identifier to use as the sync source.
|
|
2312
|
+
examples:
|
|
2313
|
+
- salesforce
|
|
2314
|
+
category:
|
|
2315
|
+
type: string
|
|
2316
|
+
description: |-
|
|
2317
|
+
Display grouping for the application in selection UIs.
|
|
2318
|
+
HTTP-connector-backed sources use the category
|
|
2319
|
+
`HTTP Connector`.
|
|
2320
|
+
examples:
|
|
2321
|
+
- Sales & Marketing
|
|
2322
|
+
displayName:
|
|
2323
|
+
type: string
|
|
2324
|
+
description: |-
|
|
2325
|
+
Human-readable application name. Present on
|
|
2326
|
+
HTTP-connector-backed sources.
|
|
2327
|
+
examples:
|
|
2328
|
+
- Stripe
|
|
2329
|
+
source:
|
|
2330
|
+
type: string
|
|
2331
|
+
description: |-
|
|
2332
|
+
Where the source's metadata comes from. Present on
|
|
2333
|
+
HTTP-connector-backed sources with the value
|
|
2334
|
+
`httpConnectorMetadata`.
|
|
2335
|
+
examples:
|
|
2336
|
+
- httpConnectorMetadata
|
|
2337
|
+
httpConnector:
|
|
2338
|
+
type: object
|
|
2339
|
+
description: |-
|
|
2340
|
+
Identifies the HTTP connector serving this source's
|
|
2341
|
+
metadata. Present only on HTTP-connector-backed sources.
|
|
2342
|
+
properties:
|
|
2343
|
+
_id:
|
|
2344
|
+
type: string
|
|
2345
|
+
format: objectId
|
|
2346
|
+
x-celigo-refModel: httpconnectors
|
|
2347
|
+
description: HTTP connector id.
|
|
2348
|
+
examples:
|
|
2349
|
+
- 63987132784a39b73aae63cd
|
|
2350
|
+
_apiId:
|
|
2351
|
+
type:
|
|
2352
|
+
- string
|
|
2353
|
+
- 'null'
|
|
2354
|
+
format: objectId
|
|
2355
|
+
description: API group id within the connector. Null for single-API connectors.
|
|
2356
|
+
_versionId:
|
|
2357
|
+
type: string
|
|
2358
|
+
format: objectId
|
|
2359
|
+
description: Connector version id used for metadata resolution.
|
|
2360
|
+
examples:
|
|
2361
|
+
default:
|
|
2362
|
+
value:
|
|
2363
|
+
- id: salesforce
|
|
2364
|
+
category: Sales & Marketing
|
|
2365
|
+
- id: netsuite
|
|
2366
|
+
category: Sales & Marketing
|
|
2367
|
+
- id: stripe
|
|
2368
|
+
category: HTTP Connector
|
|
2369
|
+
displayName: Stripe
|
|
2370
|
+
source: httpConnectorMetadata
|
|
2371
|
+
httpConnector:
|
|
2372
|
+
_id: 63987132784a39b73aae63cd
|
|
2373
|
+
_apiId: null
|
|
2374
|
+
_versionId: 63987132784a39b73aae63ce
|
|
2375
|
+
'401':
|
|
2376
|
+
$ref: '#/components/responses/401-unauthorized'
|
|
2377
|
+
/v1/di/metadata/destinations:
|
|
2378
|
+
get:
|
|
2379
|
+
x-internal: false
|
|
2380
|
+
summary: List supported sync destination applications
|
|
2381
|
+
description: |-
|
|
2382
|
+
Returns the catalog of applications that can be used as the **destination** of a sync — the
|
|
2383
|
+
data warehouse a sync loads records into. Use the returned `id` as the destination application
|
|
2384
|
+
when building a sync. Identifiers include `snowflake` (Snowflake), `nsaw` (NetSuite
|
|
2385
|
+
Analytics Warehouse), and `bigquery` (Google BigQuery).
|
|
2386
|
+
tags:
|
|
2387
|
+
- Syncs
|
|
2388
|
+
operationId: listSyncDestinations
|
|
2389
|
+
responses:
|
|
2390
|
+
'200':
|
|
2391
|
+
description: Array of supported destination applications.
|
|
2392
|
+
content:
|
|
2393
|
+
application/json:
|
|
2394
|
+
schema:
|
|
2395
|
+
type: array
|
|
2396
|
+
items:
|
|
2397
|
+
type: object
|
|
2398
|
+
description: A supported destination application.
|
|
2399
|
+
required:
|
|
2400
|
+
- id
|
|
2401
|
+
properties:
|
|
2402
|
+
id:
|
|
2403
|
+
type: string
|
|
2404
|
+
description: Application identifier to use as the sync destination.
|
|
2405
|
+
examples:
|
|
2406
|
+
- snowflake
|
|
2407
|
+
examples:
|
|
2408
|
+
default:
|
|
2409
|
+
value:
|
|
2410
|
+
- id: snowflake
|
|
2411
|
+
- id: nsaw
|
|
2412
|
+
'401':
|
|
2413
|
+
$ref: '#/components/responses/401-unauthorized'
|
|
2414
|
+
/v1/di/metadata/connections/{_connectionId}/datasets:
|
|
2415
|
+
get:
|
|
2416
|
+
x-internal: false
|
|
2417
|
+
summary: List datasets available on a connection
|
|
2418
|
+
description: |-
|
|
2419
|
+
Returns the catalog of tables/objects a connection's application exposes for
|
|
2420
|
+
syncing, plus the connection's existing export resources that can back
|
|
2421
|
+
export-based datasets. Use the returned `name` values as `externalId` when
|
|
2422
|
+
creating datasets via `PUT /v1/syncs/{_syncId}/datasets`.
|
|
2423
|
+
operationId: listConnectionDatasets
|
|
2424
|
+
tags:
|
|
2425
|
+
- Syncs
|
|
2426
|
+
parameters:
|
|
2427
|
+
- name: _connectionId
|
|
2428
|
+
in: path
|
|
2429
|
+
required: true
|
|
2430
|
+
description: Source connection id.
|
|
2431
|
+
schema:
|
|
2432
|
+
type: string
|
|
2433
|
+
format: objectId
|
|
2434
|
+
x-celigo-refModel: connections
|
|
2435
|
+
examples:
|
|
2436
|
+
- 6a2a95909e994395f3c2a4e6
|
|
2437
|
+
- name: type
|
|
2438
|
+
in: query
|
|
2439
|
+
required: false
|
|
2440
|
+
description: |-
|
|
2441
|
+
Restrict the response to one catalog. With `datasets`, only source
|
|
2442
|
+
tables/objects are returned; with `exports`, only export resources.
|
|
2443
|
+
schema:
|
|
2444
|
+
type: string
|
|
2445
|
+
enum:
|
|
2446
|
+
- datasets
|
|
2447
|
+
- exports
|
|
2448
|
+
- all
|
|
2449
|
+
default: all
|
|
2450
|
+
examples:
|
|
2451
|
+
- datasets
|
|
2452
|
+
x-enumDescriptions:
|
|
2453
|
+
datasets: Only the source application's tables/objects.
|
|
2454
|
+
exports: Only the connection's export resources usable as export-backed datasets.
|
|
2455
|
+
all: Both catalogs.
|
|
2456
|
+
- name: refreshCache
|
|
2457
|
+
in: query
|
|
2458
|
+
required: false
|
|
2459
|
+
description: |-
|
|
2460
|
+
When `true`, re-reads the catalog from the source application instead of
|
|
2461
|
+
serving the platform's cached copy. Slower; use after making schema changes
|
|
2462
|
+
in the source.
|
|
2463
|
+
schema:
|
|
2464
|
+
type: string
|
|
2465
|
+
enum:
|
|
2466
|
+
- 'true'
|
|
2467
|
+
- 'false'
|
|
2468
|
+
x-enumDescriptions:
|
|
2469
|
+
'true': Re-read the catalog from the source application.
|
|
2470
|
+
'false': Serve the platform's cached copy.
|
|
2471
|
+
examples:
|
|
2472
|
+
- 'true'
|
|
2473
|
+
responses:
|
|
2474
|
+
'200':
|
|
2475
|
+
description: Dataset and/or export catalogs, keyed by type.
|
|
2476
|
+
content:
|
|
2477
|
+
application/json:
|
|
2478
|
+
schema:
|
|
2479
|
+
type: object
|
|
2480
|
+
properties:
|
|
2481
|
+
datasets:
|
|
2482
|
+
type: array
|
|
2483
|
+
description: Tables/objects the source application exposes. Present unless `type` is `exports`.
|
|
2484
|
+
items:
|
|
2485
|
+
type: object
|
|
2486
|
+
description: One syncable table/object in the source application.
|
|
2487
|
+
required:
|
|
2488
|
+
- name
|
|
2489
|
+
properties:
|
|
2490
|
+
name:
|
|
2491
|
+
type: string
|
|
2492
|
+
description: |-
|
|
2493
|
+
Identifier of the table/object in the source system. Use as the
|
|
2494
|
+
dataset `externalId`.
|
|
2495
|
+
examples:
|
|
2496
|
+
- Account
|
|
2497
|
+
displayName:
|
|
2498
|
+
type: string
|
|
2499
|
+
description: Human-readable label for the table/object.
|
|
2500
|
+
examples:
|
|
2501
|
+
- Account
|
|
2502
|
+
exports:
|
|
2503
|
+
type: array
|
|
2504
|
+
description: |-
|
|
2505
|
+
Export resources on the connection, usable as export-backed datasets
|
|
2506
|
+
(`isExport: true`). Present unless `type` is `datasets`.
|
|
2507
|
+
items:
|
|
2508
|
+
type: object
|
|
2509
|
+
description: One export resource usable as a sync dataset.
|
|
2510
|
+
properties:
|
|
2511
|
+
_id:
|
|
2512
|
+
type: string
|
|
2513
|
+
format: objectId
|
|
2514
|
+
x-celigo-refModel: exports
|
|
2515
|
+
description: |-
|
|
2516
|
+
Export id. Use as the dataset `externalId` when creating an
|
|
2517
|
+
export-backed dataset.
|
|
2518
|
+
examples:
|
|
2519
|
+
- 6a3e7c54c2387aaa87881b80
|
|
2520
|
+
name:
|
|
2521
|
+
type: string
|
|
2522
|
+
description: Export display name.
|
|
2523
|
+
examples:
|
|
2524
|
+
- Pull Salesforce Records
|
|
2525
|
+
type:
|
|
2526
|
+
type: string
|
|
2527
|
+
description: Export extraction type (e.g. `delta`, `all`, `once`).
|
|
2528
|
+
examples:
|
|
2529
|
+
- delta
|
|
2530
|
+
adaptorType:
|
|
2531
|
+
type: string
|
|
2532
|
+
description: Adaptor the export runs on (e.g. `SalesforceExport`).
|
|
2533
|
+
examples:
|
|
2534
|
+
- SalesforceExport
|
|
2535
|
+
examples:
|
|
2536
|
+
default:
|
|
2537
|
+
value:
|
|
2538
|
+
datasets:
|
|
2539
|
+
- name: Account
|
|
2540
|
+
displayName: Account
|
|
2541
|
+
- name: Contact
|
|
2542
|
+
displayName: Contact
|
|
2543
|
+
exports:
|
|
2544
|
+
- name: Pull Salesforce Records
|
|
2545
|
+
_id: 6a3e7c54c2387aaa87881b80
|
|
2546
|
+
type: delta
|
|
2547
|
+
adaptorType: SalesforceExport
|
|
2548
|
+
'400':
|
|
2549
|
+
description: |-
|
|
2550
|
+
Bad request. The connection id is not a valid id, or `type` is not one of the
|
|
2551
|
+
allowed values.
|
|
2552
|
+
content:
|
|
2553
|
+
application/json:
|
|
2554
|
+
schema:
|
|
2555
|
+
$ref: '#/components/schemas/Error'
|
|
2556
|
+
examples:
|
|
2557
|
+
invalid_type:
|
|
2558
|
+
summary: Invalid type value
|
|
2559
|
+
value:
|
|
2560
|
+
errors:
|
|
2561
|
+
- source: DI-MANAGEMENT-SERVICE
|
|
2562
|
+
code: invalid_request
|
|
2563
|
+
message: '"query.type" must be one of [datasets, exports, all]'
|
|
2564
|
+
resolved: false
|
|
2565
|
+
'401':
|
|
2566
|
+
$ref: '#/components/responses/401-unauthorized'
|
|
2567
|
+
'422':
|
|
2568
|
+
description: |-
|
|
2569
|
+
The catalog could not be fetched from the source application — e.g. the
|
|
2570
|
+
connection is offline or rejects the request.
|
|
2571
|
+
Error code: `di_fetch_datasets_failure`.
|
|
2572
|
+
content:
|
|
2573
|
+
application/json:
|
|
2574
|
+
schema:
|
|
2575
|
+
$ref: '#/components/schemas/Error'
|
|
2576
|
+
/v1/di/metadata/connections/{_connectionId}/datasets/{datasetName}/details:
|
|
2577
|
+
get:
|
|
2578
|
+
x-internal: false
|
|
2579
|
+
summary: Get column details for a dataset on a connection
|
|
2580
|
+
description: |-
|
|
2581
|
+
Returns the full column/field catalog for one table/object on a connection, as read
|
|
2582
|
+
from the source application. Use it to build the `dataElements` selection before
|
|
2583
|
+
saving a dataset via `PUT /v1/syncs/{_syncId}/datasets` — each element's `name` here
|
|
2584
|
+
is the `name` to reference there.
|
|
2585
|
+
operationId: getConnectionDatasetDetails
|
|
2586
|
+
tags:
|
|
2587
|
+
- Syncs
|
|
2588
|
+
parameters:
|
|
2589
|
+
- name: _connectionId
|
|
2590
|
+
in: path
|
|
2591
|
+
required: true
|
|
2592
|
+
description: Source connection id.
|
|
2593
|
+
schema:
|
|
2594
|
+
type: string
|
|
2595
|
+
format: objectId
|
|
2596
|
+
x-celigo-refModel: connections
|
|
2597
|
+
examples:
|
|
2598
|
+
- 6a2a95909e994395f3c2a4e6
|
|
2599
|
+
- name: datasetName
|
|
2600
|
+
in: path
|
|
2601
|
+
required: true
|
|
2602
|
+
description: |-
|
|
2603
|
+
Table/object name from `GET /v1/di/metadata/connections/{_connectionId}/datasets`.
|
|
2604
|
+
When `isExport` is `true`, pass the export id instead.
|
|
2605
|
+
schema:
|
|
2606
|
+
type: string
|
|
2607
|
+
examples:
|
|
2608
|
+
- Account
|
|
2609
|
+
- name: isExport
|
|
2610
|
+
in: query
|
|
2611
|
+
required: false
|
|
2612
|
+
description: |-
|
|
2613
|
+
Set to `true` when `datasetName` is an export id, to read the export's record
|
|
2614
|
+
structure instead of a source table.
|
|
2615
|
+
schema:
|
|
2616
|
+
type: string
|
|
2617
|
+
enum:
|
|
2618
|
+
- 'true'
|
|
2619
|
+
- 'false'
|
|
2620
|
+
x-enumDescriptions:
|
|
2621
|
+
'true': Treat `datasetName` as an export id and read the export's record structure.
|
|
2622
|
+
'false': Treat `datasetName` as a source table/object name.
|
|
2623
|
+
examples:
|
|
2624
|
+
- 'false'
|
|
2625
|
+
- name: refreshCache
|
|
2626
|
+
in: query
|
|
2627
|
+
required: false
|
|
2628
|
+
description: |-
|
|
2629
|
+
When `true`, re-reads the columns from the source application instead of the
|
|
2630
|
+
platform's cached copy. Use after making schema changes in the source.
|
|
2631
|
+
schema:
|
|
2632
|
+
type: string
|
|
2633
|
+
enum:
|
|
2634
|
+
- 'true'
|
|
2635
|
+
- 'false'
|
|
2636
|
+
x-enumDescriptions:
|
|
2637
|
+
'true': Re-read the columns from the source application.
|
|
2638
|
+
'false': Serve the platform's cached copy.
|
|
2639
|
+
examples:
|
|
2640
|
+
- 'true'
|
|
2641
|
+
- name: recordType
|
|
2642
|
+
in: query
|
|
2643
|
+
required: false
|
|
2644
|
+
description: |-
|
|
2645
|
+
NetSuite record type backing the dataset, for saved-search datasets. Omit for
|
|
2646
|
+
other sources.
|
|
2647
|
+
schema:
|
|
2648
|
+
type: string
|
|
2649
|
+
examples:
|
|
2650
|
+
- salesorder
|
|
2651
|
+
- name: displayName
|
|
2652
|
+
in: query
|
|
2653
|
+
required: false
|
|
2654
|
+
description: NetSuite saved-search display name, sent together with `recordType`.
|
|
2655
|
+
schema:
|
|
2656
|
+
type: string
|
|
2657
|
+
examples:
|
|
2658
|
+
- Sales Orders
|
|
2659
|
+
responses:
|
|
2660
|
+
'200':
|
|
2661
|
+
description: The dataset's column catalog.
|
|
2662
|
+
content:
|
|
2663
|
+
application/json:
|
|
2664
|
+
schema:
|
|
2665
|
+
type: object
|
|
2666
|
+
required:
|
|
2667
|
+
- dataset
|
|
2668
|
+
properties:
|
|
2669
|
+
dataset:
|
|
2670
|
+
type: object
|
|
2671
|
+
description: Source-side description of one table/object and its columns.
|
|
2672
|
+
properties:
|
|
2673
|
+
name:
|
|
2674
|
+
type: string
|
|
2675
|
+
description: Identifier of the table/object in the source system.
|
|
2676
|
+
examples:
|
|
2677
|
+
- Account
|
|
2678
|
+
displayName:
|
|
2679
|
+
type: string
|
|
2680
|
+
description: Human-readable label for the table/object.
|
|
2681
|
+
examples:
|
|
2682
|
+
- Account
|
|
2683
|
+
platform:
|
|
2684
|
+
type: string
|
|
2685
|
+
description: Source application the metadata was read from.
|
|
2686
|
+
examples:
|
|
2687
|
+
- salesforce
|
|
2688
|
+
dataSetType:
|
|
2689
|
+
type: string
|
|
2690
|
+
description: Source-specific dataset classification (e.g. `Regular`).
|
|
2691
|
+
examples:
|
|
2692
|
+
- Regular
|
|
2693
|
+
href:
|
|
2694
|
+
type: string
|
|
2695
|
+
description: Source API path the metadata was read from.
|
|
2696
|
+
examples:
|
|
2697
|
+
- /services/data/v61.0/sobjects/Account
|
|
2698
|
+
nativeTerminology:
|
|
2699
|
+
type: object
|
|
2700
|
+
description: |-
|
|
2701
|
+
What the source application calls datasets and their columns, for
|
|
2702
|
+
display purposes (e.g. Salesforce "Object" / "Fields").
|
|
2703
|
+
properties:
|
|
2704
|
+
dataset:
|
|
2705
|
+
type: string
|
|
2706
|
+
description: Source term for a dataset.
|
|
2707
|
+
examples:
|
|
2708
|
+
- Object
|
|
2709
|
+
dataElements:
|
|
2710
|
+
type: string
|
|
2711
|
+
description: Source term for a dataset's columns.
|
|
2712
|
+
examples:
|
|
2713
|
+
- Fields
|
|
2714
|
+
description:
|
|
2715
|
+
type: string
|
|
2716
|
+
description: Source field that supplies column descriptions.
|
|
2717
|
+
examples:
|
|
2718
|
+
- inlineHelpText
|
|
2719
|
+
deltaFields:
|
|
2720
|
+
type: array
|
|
2721
|
+
description: |-
|
|
2722
|
+
Column names usable as the incremental-extraction cursor
|
|
2723
|
+
(`exportProperties.delta.dateField`).
|
|
2724
|
+
items:
|
|
2725
|
+
type: string
|
|
2726
|
+
examples:
|
|
2727
|
+
- - LastModifiedDate
|
|
2728
|
+
- SystemModstamp
|
|
2729
|
+
datasetConstraints:
|
|
2730
|
+
type: array
|
|
2731
|
+
description: Table-level constraints reported by the source.
|
|
2732
|
+
items:
|
|
2733
|
+
type: object
|
|
2734
|
+
properties:
|
|
2735
|
+
constraintType:
|
|
2736
|
+
type: string
|
|
2737
|
+
description: Constraint kind (e.g. `PRIMARY_KEY`).
|
|
2738
|
+
examples:
|
|
2739
|
+
- PRIMARY_KEY
|
|
2740
|
+
columns:
|
|
2741
|
+
type: array
|
|
2742
|
+
description: Columns the constraint spans.
|
|
2743
|
+
items:
|
|
2744
|
+
type: string
|
|
2745
|
+
examples:
|
|
2746
|
+
- - Id
|
|
2747
|
+
dataElements:
|
|
2748
|
+
type: array
|
|
2749
|
+
description: Every column/field the source exposes on this dataset.
|
|
2750
|
+
items:
|
|
2751
|
+
type: object
|
|
2752
|
+
description: One source column/field.
|
|
2753
|
+
properties:
|
|
2754
|
+
name:
|
|
2755
|
+
type: string
|
|
2756
|
+
description: Column/field identifier in the source system.
|
|
2757
|
+
examples:
|
|
2758
|
+
- Id
|
|
2759
|
+
displayName:
|
|
2760
|
+
type: string
|
|
2761
|
+
description: Human-readable label for the column.
|
|
2762
|
+
examples:
|
|
2763
|
+
- Account ID
|
|
2764
|
+
dataType:
|
|
2765
|
+
type: string
|
|
2766
|
+
description: Normalized platform data type.
|
|
2767
|
+
examples:
|
|
2768
|
+
- String
|
|
2769
|
+
nativeDataType:
|
|
2770
|
+
type: string
|
|
2771
|
+
description: Data type as reported by the source application.
|
|
2772
|
+
examples:
|
|
2773
|
+
- id
|
|
2774
|
+
dataLength:
|
|
2775
|
+
type: integer
|
|
2776
|
+
description: Maximum length for string-like columns; 0 when not applicable.
|
|
2777
|
+
examples:
|
|
2778
|
+
- 18
|
|
2779
|
+
precision:
|
|
2780
|
+
type: integer
|
|
2781
|
+
description: Numeric precision; 0 when not applicable.
|
|
2782
|
+
examples:
|
|
2783
|
+
- 0
|
|
2784
|
+
scale:
|
|
2785
|
+
type: integer
|
|
2786
|
+
description: Numeric scale; 0 when not applicable.
|
|
2787
|
+
examples:
|
|
2788
|
+
- 0
|
|
2789
|
+
constraint:
|
|
2790
|
+
type: string
|
|
2791
|
+
description: |-
|
|
2792
|
+
Column-level constraint reported by the source (e.g.
|
|
2793
|
+
`PRIMARY_KEY`, `FOREIGN_KEY`). Absent for unconstrained
|
|
2794
|
+
columns.
|
|
2795
|
+
examples:
|
|
2796
|
+
- PRIMARY_KEY
|
|
2797
|
+
isPrimaryKey:
|
|
2798
|
+
type: boolean
|
|
2799
|
+
description: Only present (as `true`) on the source's key column(s).
|
|
2800
|
+
examples:
|
|
2801
|
+
- true
|
|
2802
|
+
description:
|
|
2803
|
+
type:
|
|
2804
|
+
- string
|
|
2805
|
+
- 'null'
|
|
2806
|
+
description: Column help text from the source; null when the source has none.
|
|
2807
|
+
fullyQualifiedName:
|
|
2808
|
+
type: string
|
|
2809
|
+
description: Globally unique column identifier in the platform's data catalog.
|
|
2810
|
+
examples:
|
|
2811
|
+
- salesforce.00D30000000LHK8EAO.Account.Id
|
|
2812
|
+
appSpecificProperties:
|
|
2813
|
+
type: object
|
|
2814
|
+
description: Source-specific column attributes (e.g. Salesforce `calculated`).
|
|
2815
|
+
additionalProperties: true
|
|
2816
|
+
children:
|
|
2817
|
+
type:
|
|
2818
|
+
- array
|
|
2819
|
+
- 'null'
|
|
2820
|
+
description: Nested fields for object/array columns; null for scalar columns.
|
|
2821
|
+
items:
|
|
2822
|
+
type: object
|
|
2823
|
+
additionalProperties: true
|
|
2824
|
+
examples:
|
|
2825
|
+
account:
|
|
2826
|
+
summary: Salesforce Account (truncated)
|
|
2827
|
+
value:
|
|
2828
|
+
dataset:
|
|
2829
|
+
name: Account
|
|
2830
|
+
displayName: Account
|
|
2831
|
+
platform: salesforce
|
|
2832
|
+
dataSetType: Regular
|
|
2833
|
+
href: /services/data/v61.0/sobjects/Account
|
|
2834
|
+
nativeTerminology:
|
|
2835
|
+
dataset: Object
|
|
2836
|
+
dataElements: Fields
|
|
2837
|
+
description: inlineHelpText
|
|
2838
|
+
dataElements:
|
|
2839
|
+
- name: Id
|
|
2840
|
+
displayName: Account ID
|
|
2841
|
+
dataType: String
|
|
2842
|
+
nativeDataType: id
|
|
2843
|
+
dataLength: 18
|
|
2844
|
+
precision: 0
|
|
2845
|
+
scale: 0
|
|
2846
|
+
constraint: PRIMARY_KEY
|
|
2847
|
+
isPrimaryKey: true
|
|
2848
|
+
fullyQualifiedName: salesforce.00D30000000LHK8EAO.Account.Id
|
|
2849
|
+
appSpecificProperties:
|
|
2850
|
+
calculated: false
|
|
2851
|
+
children: null
|
|
2852
|
+
- name: Name
|
|
2853
|
+
displayName: Account Name
|
|
2854
|
+
dataType: String
|
|
2855
|
+
nativeDataType: string
|
|
2856
|
+
dataLength: 255
|
|
2857
|
+
precision: 0
|
|
2858
|
+
scale: 0
|
|
2859
|
+
fullyQualifiedName: salesforce.00D30000000LHK8EAO.Account.Name
|
|
2860
|
+
appSpecificProperties:
|
|
2861
|
+
calculated: false
|
|
2862
|
+
children: null
|
|
2863
|
+
'400':
|
|
2864
|
+
$ref: '#/components/responses/400-bad-request'
|
|
2865
|
+
'401':
|
|
2866
|
+
$ref: '#/components/responses/401-unauthorized'
|
|
2867
|
+
'422':
|
|
2868
|
+
description: |-
|
|
2869
|
+
The columns could not be fetched from the source application — e.g. the
|
|
2870
|
+
table/object does not exist or the connection rejects the request.
|
|
2871
|
+
Error code: `di_fetch_data_elements_failure`.
|
|
2872
|
+
content:
|
|
2873
|
+
application/json:
|
|
2874
|
+
schema:
|
|
2875
|
+
$ref: '#/components/schemas/Error'
|
|
2876
|
+
examples:
|
|
2877
|
+
unknown_dataset:
|
|
2878
|
+
summary: Table does not exist in the source
|
|
2879
|
+
value:
|
|
2880
|
+
errors:
|
|
2881
|
+
- source: application
|
|
2882
|
+
code: di_fetch_data_elements_failure
|
|
2883
|
+
message: 'Failed to fetch metadata for ''NoSuchObject123'' because: The requested resource does not exist'
|
|
2884
|
+
resolved: false
|
|
2885
|
+
/v1/di/metadata/sync/{_syncId}/connections/{_connectionId}/datasets:
|
|
2886
|
+
get:
|
|
2887
|
+
x-internal: false
|
|
2888
|
+
summary: List a connection's datasets merged with a sync's configuration
|
|
2889
|
+
description: |-
|
|
2890
|
+
Returns the connection's full dataset catalog with the sync's saved configuration
|
|
2891
|
+
merged in: catalog entries the sync already replicates carry their stored dataset
|
|
2892
|
+
fields (`_id`, `enable`, `ingestionMode`, …) plus computed `totalFieldCount` and
|
|
2893
|
+
`selectedFieldCount`, while unsaved entries appear with catalog fields only.
|
|
2894
|
+
`dataElements` arrays are stripped from every item to keep the payload small — read
|
|
2895
|
+
one item's columns with the sync-scoped details endpoint.
|
|
2896
|
+
|
|
2897
|
+
Use this to render or reconcile a sync's dataset selection; for just the saved
|
|
2898
|
+
datasets, `GET /v1/syncs/{_syncId}/datasets` is lighter.
|
|
2899
|
+
operationId: listSyncConnectionDatasets
|
|
2900
|
+
tags:
|
|
2901
|
+
- Syncs
|
|
2902
|
+
parameters:
|
|
2903
|
+
- name: _syncId
|
|
2904
|
+
in: path
|
|
2905
|
+
required: true
|
|
2906
|
+
description: Sync id.
|
|
2907
|
+
schema:
|
|
2908
|
+
type: string
|
|
2909
|
+
format: objectId
|
|
2910
|
+
x-celigo-refModel: syncs
|
|
2911
|
+
examples:
|
|
2912
|
+
- 6a55970bdb54be366c858bc9
|
|
2913
|
+
- name: _connectionId
|
|
2914
|
+
in: path
|
|
2915
|
+
required: true
|
|
2916
|
+
description: The sync's source connection id.
|
|
2917
|
+
schema:
|
|
2918
|
+
type: string
|
|
2919
|
+
format: objectId
|
|
2920
|
+
x-celigo-refModel: connections
|
|
2921
|
+
examples:
|
|
2922
|
+
- 6a2a95909e994395f3c2a4e6
|
|
2923
|
+
- name: type
|
|
2924
|
+
in: query
|
|
2925
|
+
required: false
|
|
2926
|
+
description: |-
|
|
2927
|
+
Restrict the response to one catalog. With `datasets`, only source
|
|
2928
|
+
tables/objects are returned; with `exports`, only export-backed entries.
|
|
2929
|
+
schema:
|
|
2930
|
+
type: string
|
|
2931
|
+
enum:
|
|
2932
|
+
- datasets
|
|
2933
|
+
- exports
|
|
2934
|
+
- all
|
|
2935
|
+
default: all
|
|
2936
|
+
examples:
|
|
2937
|
+
- datasets
|
|
2938
|
+
x-enumDescriptions:
|
|
2939
|
+
datasets: Only the source application's tables/objects.
|
|
2940
|
+
exports: Only export-backed entries.
|
|
2941
|
+
all: Both catalogs.
|
|
2942
|
+
- name: refreshCache
|
|
2943
|
+
in: query
|
|
2944
|
+
required: false
|
|
2945
|
+
description: |-
|
|
2946
|
+
When `true`, re-reads the catalog from the source application instead of the
|
|
2947
|
+
platform's cached copy.
|
|
2948
|
+
schema:
|
|
2949
|
+
type: string
|
|
2950
|
+
enum:
|
|
2951
|
+
- 'true'
|
|
2952
|
+
- 'false'
|
|
2953
|
+
x-enumDescriptions:
|
|
2954
|
+
'true': Re-read the catalog from the source application.
|
|
2955
|
+
'false': Serve the platform's cached copy.
|
|
2956
|
+
examples:
|
|
2957
|
+
- 'true'
|
|
2958
|
+
responses:
|
|
2959
|
+
'200':
|
|
2960
|
+
description: Merged dataset and/or export lists, keyed by type.
|
|
2961
|
+
content:
|
|
2962
|
+
application/json:
|
|
2963
|
+
schema:
|
|
2964
|
+
type: object
|
|
2965
|
+
properties:
|
|
2966
|
+
datasets:
|
|
2967
|
+
type: array
|
|
2968
|
+
description: |-
|
|
2969
|
+
Source tables/objects merged with the sync's saved datasets. Present
|
|
2970
|
+
unless `type` is `exports`.
|
|
2971
|
+
items:
|
|
2972
|
+
type: object
|
|
2973
|
+
description: |-
|
|
2974
|
+
One table/object. Catalog-only entries carry `name`/`displayName`
|
|
2975
|
+
(and default `exportProperties`); entries the sync has saved also
|
|
2976
|
+
carry the stored dataset fields and field counts.
|
|
2977
|
+
required:
|
|
2978
|
+
- name
|
|
2979
|
+
properties:
|
|
2980
|
+
name:
|
|
2981
|
+
type: string
|
|
2982
|
+
description: Display name of the table/object.
|
|
2983
|
+
examples:
|
|
2984
|
+
- Account
|
|
2985
|
+
displayName:
|
|
2986
|
+
type: string
|
|
2987
|
+
description: Human-readable label for the table/object.
|
|
2988
|
+
examples:
|
|
2989
|
+
- Account
|
|
2990
|
+
externalId:
|
|
2991
|
+
type: string
|
|
2992
|
+
description: Identifier of the table/object in the source system.
|
|
2993
|
+
examples:
|
|
2994
|
+
- Account
|
|
2995
|
+
_id:
|
|
2996
|
+
type: string
|
|
2997
|
+
format: objectId
|
|
2998
|
+
description: |-
|
|
2999
|
+
Only present when the sync has saved this dataset. Use with
|
|
3000
|
+
`GET /v1/syncs/{_syncId}/datasets/{_id}`.
|
|
3001
|
+
examples:
|
|
3002
|
+
- 6a55970c5f9498a1758a0ad3
|
|
3003
|
+
enable:
|
|
3004
|
+
type: boolean
|
|
3005
|
+
description: When true, the sync replicates this dataset.
|
|
3006
|
+
examples:
|
|
3007
|
+
- true
|
|
3008
|
+
enableAllDataElements:
|
|
3009
|
+
type: boolean
|
|
3010
|
+
description: When true, every column is replicated (no explicit selection saved).
|
|
3011
|
+
examples:
|
|
3012
|
+
- false
|
|
3013
|
+
ingestionMode:
|
|
3014
|
+
type: string
|
|
3015
|
+
enum:
|
|
3016
|
+
- append
|
|
3017
|
+
- replace
|
|
3018
|
+
- merge
|
|
3019
|
+
description: How extracted records are written into the destination table.
|
|
3020
|
+
x-enumDescriptions:
|
|
3021
|
+
append: Add extracted records to the destination table, keeping prior rows.
|
|
3022
|
+
replace: Drop and reload the destination table with each run's records.
|
|
3023
|
+
merge: Upsert records into the destination table by primary key.
|
|
3024
|
+
examples:
|
|
3025
|
+
- merge
|
|
3026
|
+
exportProperties:
|
|
3027
|
+
type: object
|
|
3028
|
+
description: |-
|
|
3029
|
+
Extraction behavior. Catalog-only entries carry the source's
|
|
3030
|
+
default (e.g. `{type: delta}`).
|
|
3031
|
+
properties:
|
|
3032
|
+
type:
|
|
3033
|
+
type: string
|
|
3034
|
+
enum:
|
|
3035
|
+
- delta
|
|
3036
|
+
- all
|
|
3037
|
+
description: Extraction strategy for each run.
|
|
3038
|
+
x-enumDescriptions:
|
|
3039
|
+
delta: Extract only records changed since the previous run.
|
|
3040
|
+
all: Extract every record on every run.
|
|
3041
|
+
examples:
|
|
3042
|
+
- delta
|
|
3043
|
+
userActionRequired:
|
|
3044
|
+
type: boolean
|
|
3045
|
+
description: |-
|
|
3046
|
+
When true, unhandled schema drift needs a user decision before
|
|
3047
|
+
the dataset can be modified or replicated again.
|
|
3048
|
+
examples:
|
|
3049
|
+
- false
|
|
3050
|
+
totalFieldCount:
|
|
3051
|
+
type: integer
|
|
3052
|
+
description: |-
|
|
3053
|
+
Total number of columns in the dataset, counted recursively
|
|
3054
|
+
through nested children. 0 for saved datasets that replicate
|
|
3055
|
+
all columns without an explicit selection.
|
|
3056
|
+
examples:
|
|
3057
|
+
- 49
|
|
3058
|
+
selectedFieldCount:
|
|
3059
|
+
type: integer
|
|
3060
|
+
description: |-
|
|
3061
|
+
Number of enabled columns, counted recursively through nested
|
|
3062
|
+
children.
|
|
3063
|
+
examples:
|
|
3064
|
+
- 35
|
|
3065
|
+
exports:
|
|
3066
|
+
type: array
|
|
3067
|
+
description: |-
|
|
3068
|
+
Export-backed entries merged with the sync's saved export datasets.
|
|
3069
|
+
Present unless `type` is `datasets`.
|
|
3070
|
+
items:
|
|
3071
|
+
type: object
|
|
3072
|
+
description: One export usable as (or already saved as) an export-backed dataset.
|
|
3073
|
+
properties:
|
|
3074
|
+
name:
|
|
3075
|
+
type: string
|
|
3076
|
+
description: Export display name.
|
|
3077
|
+
examples:
|
|
3078
|
+
- Pull Salesforce Records
|
|
3079
|
+
externalId:
|
|
3080
|
+
type: string
|
|
3081
|
+
description: Export id backing this entry.
|
|
3082
|
+
examples:
|
|
3083
|
+
- 6a3e7c54c2387aaa87881b80
|
|
3084
|
+
_id:
|
|
3085
|
+
type: string
|
|
3086
|
+
format: objectId
|
|
3087
|
+
description: Only present when the sync has saved this export as a dataset.
|
|
3088
|
+
examples:
|
|
3089
|
+
- 6a55974edb54be366c858d26
|
|
3090
|
+
type:
|
|
3091
|
+
type: string
|
|
3092
|
+
description: Export extraction type (e.g. `delta`).
|
|
3093
|
+
examples:
|
|
3094
|
+
- delta
|
|
3095
|
+
adaptorType:
|
|
3096
|
+
type: string
|
|
3097
|
+
description: Adaptor the export runs on (e.g. `SalesforceExport`).
|
|
3098
|
+
examples:
|
|
3099
|
+
- SalesforceExport
|
|
3100
|
+
tableName:
|
|
3101
|
+
type: string
|
|
3102
|
+
description: Destination table the export dataset loads into.
|
|
3103
|
+
examples:
|
|
3104
|
+
- pull_salesforce_records
|
|
3105
|
+
enable:
|
|
3106
|
+
type: boolean
|
|
3107
|
+
description: When true, the sync replicates this export dataset.
|
|
3108
|
+
examples:
|
|
3109
|
+
- true
|
|
3110
|
+
ingestionMode:
|
|
3111
|
+
type: string
|
|
3112
|
+
enum:
|
|
3113
|
+
- append
|
|
3114
|
+
- replace
|
|
3115
|
+
- merge
|
|
3116
|
+
description: How extracted records are written into the destination table.
|
|
3117
|
+
x-enumDescriptions:
|
|
3118
|
+
append: Add extracted records to the destination table, keeping prior rows.
|
|
3119
|
+
replace: Drop and reload the destination table with each run's records.
|
|
3120
|
+
merge: Upsert records into the destination table by primary key.
|
|
3121
|
+
examples:
|
|
3122
|
+
- merge
|
|
3123
|
+
isExport:
|
|
3124
|
+
type: boolean
|
|
3125
|
+
description: Always true for entries in this list.
|
|
3126
|
+
examples:
|
|
3127
|
+
- true
|
|
3128
|
+
userActionRequired:
|
|
3129
|
+
type: boolean
|
|
3130
|
+
description: |-
|
|
3131
|
+
When true, unhandled schema drift needs a user decision before
|
|
3132
|
+
the dataset can be modified or replicated again.
|
|
3133
|
+
examples:
|
|
3134
|
+
- false
|
|
3135
|
+
mismatchSyncConnection:
|
|
3136
|
+
type: boolean
|
|
3137
|
+
description: |-
|
|
3138
|
+
Only present (as `true`) when the export no longer uses the
|
|
3139
|
+
sync's source connection.
|
|
3140
|
+
examples:
|
|
3141
|
+
- true
|
|
3142
|
+
totalFieldCount:
|
|
3143
|
+
type: integer
|
|
3144
|
+
description: Total number of fields in the export's record structure.
|
|
3145
|
+
examples:
|
|
3146
|
+
- 16
|
|
3147
|
+
selectedFieldCount:
|
|
3148
|
+
type: integer
|
|
3149
|
+
description: Number of enabled fields.
|
|
3150
|
+
examples:
|
|
3151
|
+
- 16
|
|
3152
|
+
examples:
|
|
3153
|
+
merged:
|
|
3154
|
+
summary: Saved and unsaved entries side by side
|
|
3155
|
+
value:
|
|
3156
|
+
datasets:
|
|
3157
|
+
- name: Account
|
|
3158
|
+
displayName: Account
|
|
3159
|
+
externalId: Account
|
|
3160
|
+
_id: 6a55970c5f9498a1758a0ad3
|
|
3161
|
+
enable: true
|
|
3162
|
+
enableAllDataElements: false
|
|
3163
|
+
ingestionMode: append
|
|
3164
|
+
exportProperties:
|
|
3165
|
+
type: all
|
|
3166
|
+
userActionRequired: false
|
|
3167
|
+
totalFieldCount: 49
|
|
3168
|
+
selectedFieldCount: 35
|
|
3169
|
+
- name: Contact
|
|
3170
|
+
displayName: Contact
|
|
3171
|
+
exportProperties:
|
|
3172
|
+
type: delta
|
|
3173
|
+
exports:
|
|
3174
|
+
- name: Pull Salesforce Records
|
|
3175
|
+
externalId: 6a3e7c54c2387aaa87881b80
|
|
3176
|
+
_id: 6a55974edb54be366c858d26
|
|
3177
|
+
type: delta
|
|
3178
|
+
adaptorType: SalesforceExport
|
|
3179
|
+
tableName: pull_salesforce_records
|
|
3180
|
+
enable: true
|
|
3181
|
+
ingestionMode: merge
|
|
3182
|
+
isExport: true
|
|
3183
|
+
userActionRequired: false
|
|
3184
|
+
totalFieldCount: 16
|
|
3185
|
+
selectedFieldCount: 16
|
|
3186
|
+
'400':
|
|
3187
|
+
$ref: '#/components/responses/400-bad-request'
|
|
3188
|
+
'401':
|
|
3189
|
+
$ref: '#/components/responses/401-unauthorized'
|
|
3190
|
+
'403':
|
|
3191
|
+
description: The sync or connection belongs to a different account owner.
|
|
3192
|
+
content:
|
|
3193
|
+
application/json:
|
|
3194
|
+
schema:
|
|
3195
|
+
$ref: '#/components/schemas/Error'
|
|
3196
|
+
'422':
|
|
3197
|
+
description: |-
|
|
3198
|
+
The catalog could not be fetched or merged — e.g. the connection is offline or
|
|
3199
|
+
the sync/connection pair does not match.
|
|
3200
|
+
content:
|
|
3201
|
+
application/json:
|
|
3202
|
+
schema:
|
|
3203
|
+
$ref: '#/components/schemas/Error'
|
|
3204
|
+
/v1/di/metadata/sync/{_syncId}/connections/{_connectionId}/datasets/{datasetName}/details:
|
|
3205
|
+
get:
|
|
3206
|
+
x-internal: false
|
|
3207
|
+
summary: Get column details for a dataset in a sync's context
|
|
3208
|
+
description: |-
|
|
3209
|
+
Returns one table/object's full column catalog from the source, merged with the
|
|
3210
|
+
sync's saved dataset state — enablement, `ingestionMode`, `exportProperties`, drift
|
|
3211
|
+
policy, and per-column selections. Use it to edit a dataset's `dataElements` with
|
|
3212
|
+
the current source schema and saved selections in one payload.
|
|
3213
|
+
operationId: getSyncConnectionDatasetDetails
|
|
3214
|
+
tags:
|
|
3215
|
+
- Syncs
|
|
3216
|
+
parameters:
|
|
3217
|
+
- name: _syncId
|
|
3218
|
+
in: path
|
|
3219
|
+
required: true
|
|
3220
|
+
description: Sync id.
|
|
3221
|
+
schema:
|
|
3222
|
+
type: string
|
|
3223
|
+
format: objectId
|
|
3224
|
+
x-celigo-refModel: syncs
|
|
3225
|
+
examples:
|
|
3226
|
+
- 6a55970bdb54be366c858bc9
|
|
3227
|
+
- name: _connectionId
|
|
3228
|
+
in: path
|
|
3229
|
+
required: true
|
|
3230
|
+
description: The sync's source connection id.
|
|
3231
|
+
schema:
|
|
3232
|
+
type: string
|
|
3233
|
+
format: objectId
|
|
3234
|
+
x-celigo-refModel: connections
|
|
3235
|
+
examples:
|
|
3236
|
+
- 6a2a95909e994395f3c2a4e6
|
|
3237
|
+
- name: datasetName
|
|
3238
|
+
in: path
|
|
3239
|
+
required: true
|
|
3240
|
+
description: |-
|
|
3241
|
+
Table/object name from the merged catalog. When `isExport` is `true`, pass the
|
|
3242
|
+
saved dataset's `_id` instead.
|
|
3243
|
+
schema:
|
|
3244
|
+
type: string
|
|
3245
|
+
examples:
|
|
3246
|
+
- Account
|
|
3247
|
+
- name: isExport
|
|
3248
|
+
in: query
|
|
3249
|
+
required: false
|
|
3250
|
+
description: |-
|
|
3251
|
+
Set to `true` when `datasetName` identifies an export-backed dataset, to read
|
|
3252
|
+
the export's record structure instead of a source table.
|
|
3253
|
+
schema:
|
|
3254
|
+
type: string
|
|
3255
|
+
enum:
|
|
3256
|
+
- 'true'
|
|
3257
|
+
- 'false'
|
|
3258
|
+
x-enumDescriptions:
|
|
3259
|
+
'true': Treat `datasetName` as an export-backed dataset and read the export's record structure.
|
|
3260
|
+
'false': Treat `datasetName` as a source table/object name.
|
|
3261
|
+
examples:
|
|
3262
|
+
- 'false'
|
|
3263
|
+
- name: refreshCache
|
|
3264
|
+
in: query
|
|
3265
|
+
required: false
|
|
3266
|
+
description: |-
|
|
3267
|
+
When `true`, re-reads the columns from the source application instead of the
|
|
3268
|
+
platform's cached copy.
|
|
3269
|
+
schema:
|
|
3270
|
+
type: string
|
|
3271
|
+
enum:
|
|
3272
|
+
- 'true'
|
|
3273
|
+
- 'false'
|
|
3274
|
+
x-enumDescriptions:
|
|
3275
|
+
'true': Re-read the columns from the source application.
|
|
3276
|
+
'false': Serve the platform's cached copy.
|
|
3277
|
+
examples:
|
|
3278
|
+
- 'true'
|
|
3279
|
+
- name: recordType
|
|
3280
|
+
in: query
|
|
3281
|
+
required: false
|
|
3282
|
+
description: |-
|
|
3283
|
+
NetSuite record type backing the dataset, for saved-search datasets. Omit for
|
|
3284
|
+
other sources.
|
|
3285
|
+
schema:
|
|
3286
|
+
type: string
|
|
3287
|
+
examples:
|
|
3288
|
+
- salesorder
|
|
3289
|
+
- name: displayName
|
|
3290
|
+
in: query
|
|
3291
|
+
required: false
|
|
3292
|
+
description: NetSuite saved-search display name, sent together with `recordType`.
|
|
3293
|
+
schema:
|
|
3294
|
+
type: string
|
|
3295
|
+
examples:
|
|
3296
|
+
- Sales Orders
|
|
3297
|
+
responses:
|
|
3298
|
+
'200':
|
|
3299
|
+
description: The dataset's column catalog merged with the sync's saved state.
|
|
3300
|
+
content:
|
|
3301
|
+
application/json:
|
|
3302
|
+
schema:
|
|
3303
|
+
type: object
|
|
3304
|
+
required:
|
|
3305
|
+
- dataset
|
|
3306
|
+
properties:
|
|
3307
|
+
dataset:
|
|
3308
|
+
type: object
|
|
3309
|
+
description: |-
|
|
3310
|
+
The source column catalog (same shape as
|
|
3311
|
+
`GET /v1/di/metadata/connections/{_connectionId}/datasets/{datasetName}/details`)
|
|
3312
|
+
extended with the sync's saved dataset state when one exists: `_id`,
|
|
3313
|
+
`enable`, `isExport`, `ingestionMode`, `exportProperties`,
|
|
3314
|
+
`driftPolicy`, `tableName`, and per-element `enable`/`mask`/
|
|
3315
|
+
`isPrimaryKey`/`transformMode` selections merged into `dataElements`.
|
|
3316
|
+
additionalProperties: true
|
|
3317
|
+
examples:
|
|
3318
|
+
merged:
|
|
3319
|
+
summary: Account merged with saved selections (truncated)
|
|
3320
|
+
value:
|
|
3321
|
+
dataset:
|
|
3322
|
+
_id: 6a55970c5f9498a1758a0ad3
|
|
3323
|
+
name: Account
|
|
3324
|
+
displayName: Account
|
|
3325
|
+
platform: salesforce
|
|
3326
|
+
enable: true
|
|
3327
|
+
isExport: false
|
|
3328
|
+
ingestionMode: append
|
|
3329
|
+
exportProperties:
|
|
3330
|
+
type: all
|
|
3331
|
+
dataElements:
|
|
3332
|
+
- name: Id
|
|
3333
|
+
displayName: Account ID
|
|
3334
|
+
dataType: String
|
|
3335
|
+
nativeDataType: id
|
|
3336
|
+
dataLength: 18
|
|
3337
|
+
enable: true
|
|
3338
|
+
isPrimaryKey: true
|
|
3339
|
+
- name: Name
|
|
3340
|
+
displayName: Account Name
|
|
3341
|
+
dataType: String
|
|
3342
|
+
nativeDataType: string
|
|
3343
|
+
dataLength: 255
|
|
3344
|
+
enable: true
|
|
3345
|
+
'400':
|
|
3346
|
+
$ref: '#/components/responses/400-bad-request'
|
|
3347
|
+
'401':
|
|
3348
|
+
$ref: '#/components/responses/401-unauthorized'
|
|
3349
|
+
'403':
|
|
3350
|
+
description: The sync or connection belongs to a different account owner.
|
|
3351
|
+
content:
|
|
3352
|
+
application/json:
|
|
3353
|
+
schema:
|
|
3354
|
+
$ref: '#/components/schemas/Error'
|
|
3355
|
+
'422':
|
|
3356
|
+
description: |-
|
|
3357
|
+
The columns could not be fetched or merged — e.g. the table/object does not
|
|
3358
|
+
exist in the source or the connection rejects the request.
|
|
3359
|
+
Error code: `di_fetch_data_elements_failure`.
|
|
3360
|
+
content:
|
|
3361
|
+
application/json:
|
|
3362
|
+
schema:
|
|
3363
|
+
$ref: '#/components/schemas/Error'
|
|
3364
|
+
components:
|
|
3365
|
+
securitySchemes:
|
|
3366
|
+
bearerAuth:
|
|
3367
|
+
type: http
|
|
3368
|
+
scheme: bearer
|
|
3369
|
+
parameters:
|
|
3370
|
+
Include:
|
|
3371
|
+
name: include
|
|
3372
|
+
in: query
|
|
3373
|
+
required: false
|
|
3374
|
+
description: |-
|
|
3375
|
+
Comma-separated list of fields to project into each returned record.
|
|
3376
|
+
Triggers summary projection: the response contains a minimal identity
|
|
3377
|
+
set (`_id`, `name`, plus resource-specific fields) with the requested
|
|
3378
|
+
fields added on top. Supports dot notation for nested fields.
|
|
3379
|
+
Mutually exclusive with `exclude`.
|
|
3380
|
+
schema:
|
|
3381
|
+
type: string
|
|
3382
|
+
example: _integrationId,disabled,lastModified
|
|
3383
|
+
Exclude:
|
|
3384
|
+
name: exclude
|
|
3385
|
+
in: query
|
|
3386
|
+
required: false
|
|
3387
|
+
description: |-
|
|
3388
|
+
Comma-separated list of fields to strip from the default response.
|
|
3389
|
+
Unlike `include`, does not trigger summary projection — returns the
|
|
3390
|
+
full record with the named fields removed. Protected identity fields
|
|
3391
|
+
(e.g. `name`) cannot be stripped. Mutually exclusive with `include`.
|
|
3392
|
+
schema:
|
|
3393
|
+
type: string
|
|
3394
|
+
example: createdAt,lastModified
|
|
3395
|
+
schemas:
|
|
3396
|
+
ElementDriftPolicy:
|
|
3397
|
+
type: object
|
|
3398
|
+
description: |-
|
|
3399
|
+
How the sync reacts when columns/fields change in the source schema between runs.
|
|
3400
|
+
`objectAdded` and `arrayAdded` refine what "automate" means for new nested structures and
|
|
3401
|
+
are only valid when `added` is `automate` — otherwise the save fails with
|
|
3402
|
+
`422 drift_policy_invalid_setup`.
|
|
3403
|
+
properties:
|
|
3404
|
+
added:
|
|
3405
|
+
type: string
|
|
3406
|
+
enum:
|
|
3407
|
+
- automate
|
|
3408
|
+
- ignore
|
|
3409
|
+
description: |-
|
|
3410
|
+
Handling for columns/fields that appear in the source after the sync
|
|
3411
|
+
was configured. Choose `ignore` to keep destination tables stable and
|
|
3412
|
+
opt in to new fields manually.
|
|
3413
|
+
x-enumDescriptions:
|
|
3414
|
+
automate: Automatically add the new column to the destination and start loading it.
|
|
3415
|
+
ignore: Skip new columns until a user enables them explicitly.
|
|
3416
|
+
examples:
|
|
3417
|
+
- automate
|
|
3418
|
+
objectAdded:
|
|
3419
|
+
type: string
|
|
3420
|
+
enum:
|
|
3421
|
+
- preserve
|
|
3422
|
+
- flatten
|
|
3423
|
+
description: Shape given to a newly added **object** field when `added` is `automate`.
|
|
3424
|
+
x-enumDescriptions:
|
|
3425
|
+
preserve: Load the object as a single semi-structured column.
|
|
3426
|
+
flatten: Expand the object's keys into individual columns.
|
|
3427
|
+
examples:
|
|
3428
|
+
- preserve
|
|
3429
|
+
arrayAdded:
|
|
3430
|
+
type: string
|
|
3431
|
+
enum:
|
|
3432
|
+
- preserve
|
|
3433
|
+
- normalize
|
|
3434
|
+
description: Shape given to a newly added **array** field when `added` is `automate`.
|
|
3435
|
+
x-enumDescriptions:
|
|
3436
|
+
preserve: Load the array as a single semi-structured column.
|
|
3437
|
+
normalize: Split the array into a child table keyed back to the parent record.
|
|
3438
|
+
examples:
|
|
3439
|
+
- preserve
|
|
3440
|
+
removed:
|
|
3441
|
+
type: string
|
|
3442
|
+
enum:
|
|
3443
|
+
- automate
|
|
3444
|
+
description: |-
|
|
3445
|
+
Handling for columns/fields deleted from the source. Only automatic
|
|
3446
|
+
propagation is supported.
|
|
3447
|
+
x-enumDescriptions:
|
|
3448
|
+
automate: Stop loading the column and reflect the removal downstream.
|
|
3449
|
+
examples:
|
|
3450
|
+
- automate
|
|
3451
|
+
reduced:
|
|
3452
|
+
type: string
|
|
3453
|
+
enum:
|
|
3454
|
+
- automate
|
|
3455
|
+
description: |-
|
|
3456
|
+
Handling for columns whose source data type shrank (e.g. a shorter
|
|
3457
|
+
string length). Only automatic propagation is supported.
|
|
3458
|
+
x-enumDescriptions:
|
|
3459
|
+
automate: Adjust the destination column to the reduced type automatically.
|
|
3460
|
+
examples:
|
|
3461
|
+
- automate
|
|
3462
|
+
expanded:
|
|
3463
|
+
type: string
|
|
3464
|
+
enum:
|
|
3465
|
+
- automate
|
|
3466
|
+
description: |-
|
|
3467
|
+
Handling for columns whose source data type grew (e.g. a wider numeric
|
|
3468
|
+
precision). Only automatic propagation is supported.
|
|
3469
|
+
x-enumDescriptions:
|
|
3470
|
+
automate: Widen the destination column automatically.
|
|
3471
|
+
examples:
|
|
3472
|
+
- automate
|
|
3473
|
+
if:
|
|
3474
|
+
anyOf:
|
|
3475
|
+
- required:
|
|
3476
|
+
- objectAdded
|
|
3477
|
+
- required:
|
|
3478
|
+
- arrayAdded
|
|
3479
|
+
then:
|
|
3480
|
+
properties:
|
|
3481
|
+
added:
|
|
3482
|
+
const: automate
|
|
3483
|
+
required:
|
|
3484
|
+
- added
|
|
3485
|
+
SyncDriftPolicy:
|
|
3486
|
+
type: object
|
|
3487
|
+
description: |-
|
|
3488
|
+
How the sync reacts when the source schema changes between runs (schema drift).
|
|
3489
|
+
`dataset` covers whole tables/objects appearing or disappearing; `element` covers
|
|
3490
|
+
individual columns/fields. Drift the policy automates is logged as `Schema Drift`
|
|
3491
|
+
events, readable via `GET /v1/di/resource/syncs/{_syncId}/events`.
|
|
3492
|
+
properties:
|
|
3493
|
+
dataset:
|
|
3494
|
+
type: object
|
|
3495
|
+
description: Drift handling for whole tables/objects in the source.
|
|
3496
|
+
properties:
|
|
3497
|
+
added:
|
|
3498
|
+
type: string
|
|
3499
|
+
enum:
|
|
3500
|
+
- automate
|
|
3501
|
+
- ignore
|
|
3502
|
+
description: |-
|
|
3503
|
+
Handling for tables/objects that appear in the source after the sync was
|
|
3504
|
+
configured. Choose `ignore` to keep the replicated set fixed and add new
|
|
3505
|
+
tables manually.
|
|
3506
|
+
x-enumDescriptions:
|
|
3507
|
+
automate: Automatically add newly discovered tables to the sync and start replicating them.
|
|
3508
|
+
ignore: Leave newly discovered tables out of the sync until a user enables them.
|
|
3509
|
+
examples:
|
|
3510
|
+
- automate
|
|
3511
|
+
removed:
|
|
3512
|
+
type: string
|
|
3513
|
+
enum:
|
|
3514
|
+
- automate
|
|
3515
|
+
description: |-
|
|
3516
|
+
Handling for tables/objects deleted from the source. Only automatic
|
|
3517
|
+
propagation is supported.
|
|
3518
|
+
x-enumDescriptions:
|
|
3519
|
+
automate: Stop replicating the removed table automatically.
|
|
3520
|
+
examples:
|
|
3521
|
+
- automate
|
|
3522
|
+
element:
|
|
3523
|
+
$ref: '#/components/schemas/ElementDriftPolicy'
|
|
3524
|
+
Sync:
|
|
3525
|
+
type: object
|
|
3526
|
+
description: |-
|
|
3527
|
+
A sync continuously replicates data from a source application into a data warehouse.
|
|
3528
|
+
New syncs start as disabled drafts; a sync can only be enabled once its source,
|
|
3529
|
+
destination, and datasets are fully configured.
|
|
3530
|
+
required:
|
|
3531
|
+
- _id
|
|
3532
|
+
- _userId
|
|
3533
|
+
- _integrationId
|
|
3534
|
+
- name
|
|
3535
|
+
- disabled
|
|
3536
|
+
- source
|
|
3537
|
+
- destination
|
|
3538
|
+
- driftPolicy
|
|
3539
|
+
properties:
|
|
3540
|
+
_id:
|
|
3541
|
+
type: string
|
|
3542
|
+
format: objectId
|
|
3543
|
+
readOnly: true
|
|
3544
|
+
description: Unique identifier for the sync.
|
|
3545
|
+
examples:
|
|
3546
|
+
- 6a4b8bfb731a7a5cae9bd364
|
|
3547
|
+
_userId:
|
|
3548
|
+
type: string
|
|
3549
|
+
format: objectId
|
|
3550
|
+
x-celigo-refModel: users
|
|
3551
|
+
readOnly: true
|
|
3552
|
+
description: Account owner the sync belongs to.
|
|
3553
|
+
examples:
|
|
3554
|
+
- 68c821306f5d848c881da205
|
|
3555
|
+
_integrationId:
|
|
3556
|
+
type: string
|
|
3557
|
+
format: objectId
|
|
3558
|
+
x-celigo-refModel: integrations
|
|
3559
|
+
description: |-
|
|
3560
|
+
Integration the sync lives in. Required when creating; cannot be changed
|
|
3561
|
+
afterwards — sending it on an update fails with `400 sync_integration_id_update`.
|
|
3562
|
+
examples:
|
|
3563
|
+
- 69f4ffd395ec28be9cb8c12e
|
|
3564
|
+
name:
|
|
3565
|
+
type: string
|
|
3566
|
+
maxLength: 150
|
|
3567
|
+
description: |-
|
|
3568
|
+
Display name shown in the UI. Defaults to an empty string when not
|
|
3569
|
+
provided at creation.
|
|
3570
|
+
examples:
|
|
3571
|
+
- Salesforce Demo Sync
|
|
3572
|
+
description:
|
|
3573
|
+
type: string
|
|
3574
|
+
maxLength: 5120
|
|
3575
|
+
description: Free-form notes about what the sync replicates and why.
|
|
3576
|
+
examples:
|
|
3577
|
+
- Replicates core CRM objects into the analytics warehouse.
|
|
3578
|
+
disabled:
|
|
3579
|
+
type: boolean
|
|
3580
|
+
default: true
|
|
3581
|
+
description: |-
|
|
3582
|
+
When true, the sync neither runs on schedule nor accepts on-demand runs. New syncs
|
|
3583
|
+
start disabled. Enabling requires a fully configured sync — source and destination
|
|
3584
|
+
connections plus a destination database and schema — and a `historicDateTime`;
|
|
3585
|
+
otherwise the update fails with `422 sync_not_enabled`.
|
|
3586
|
+
examples:
|
|
3587
|
+
- false
|
|
3588
|
+
schedule:
|
|
3589
|
+
type: string
|
|
3590
|
+
description: |-
|
|
3591
|
+
Cron expression that controls automatic runs, e.g. `? 0 */6 * * *` for every
|
|
3592
|
+
six hours. Empty or omitted means the sync only runs on demand via
|
|
3593
|
+
`POST /v1/syncs/{_syncId}/run`. Evaluated in the sync's `timezone`.
|
|
3594
|
+
examples:
|
|
3595
|
+
- '? 0 */6 * * *'
|
|
3596
|
+
timezone:
|
|
3597
|
+
type: string
|
|
3598
|
+
description: IANA time zone name (e.g. `America/New_York`) the `schedule` is evaluated in.
|
|
3599
|
+
examples:
|
|
3600
|
+
- America/New_York
|
|
3601
|
+
historicDateTime:
|
|
3602
|
+
type: string
|
|
3603
|
+
format: date-time
|
|
3604
|
+
description: |-
|
|
3605
|
+
Earliest record timestamp to backfill from the source. The first run extracts
|
|
3606
|
+
history from this point forward; later runs are incremental. Must be set before
|
|
3607
|
+
the sync can be enabled.
|
|
3608
|
+
examples:
|
|
3609
|
+
- '2022-07-04T18:30:00.000Z'
|
|
3610
|
+
source:
|
|
3611
|
+
type: object
|
|
3612
|
+
description: Application the sync extracts records from.
|
|
3613
|
+
required:
|
|
3614
|
+
- _connectionId
|
|
3615
|
+
properties:
|
|
3616
|
+
_connectionId:
|
|
3617
|
+
type: string
|
|
3618
|
+
format: objectId
|
|
3619
|
+
x-celigo-refModel: connections
|
|
3620
|
+
description: |-
|
|
3621
|
+
Connection to the source application. The application must be one of the
|
|
3622
|
+
supported sync sources returned by `GET /v1/di/metadata/sources`.
|
|
3623
|
+
examples:
|
|
3624
|
+
- 6a2a95909e994395f3c2a4e6
|
|
3625
|
+
destination:
|
|
3626
|
+
type: object
|
|
3627
|
+
description: |-
|
|
3628
|
+
Data warehouse the sync loads records into. Empty (`{}`) on a draft that has no
|
|
3629
|
+
destination yet. Each source + destination host/database/schema combination must
|
|
3630
|
+
be unique across syncs — reusing one fails with `422 duplicate_destination_host` —
|
|
3631
|
+
and all syncs in an integration must target the same destination application type.
|
|
3632
|
+
properties:
|
|
3633
|
+
_connectionId:
|
|
3634
|
+
type: string
|
|
3635
|
+
format: objectId
|
|
3636
|
+
x-celigo-refModel: connections
|
|
3637
|
+
description: |-
|
|
3638
|
+
Connection to the destination warehouse. The application must be one of the
|
|
3639
|
+
supported sync destinations returned by `GET /v1/di/metadata/destinations`.
|
|
3640
|
+
examples:
|
|
3641
|
+
- 68d02dbe0839a514623c1d6d
|
|
3642
|
+
database:
|
|
3643
|
+
type: string
|
|
3644
|
+
description: Database in the destination warehouse the sync loads into.
|
|
3645
|
+
examples:
|
|
3646
|
+
- ANALYTICS_DB
|
|
3647
|
+
schema:
|
|
3648
|
+
type: string
|
|
3649
|
+
description: Schema within `database` where the sync creates and loads tables.
|
|
3650
|
+
examples:
|
|
3651
|
+
- salesforce_raw
|
|
3652
|
+
tablePrefix:
|
|
3653
|
+
type: string
|
|
3654
|
+
description: |-
|
|
3655
|
+
Prefix prepended to the name of every table the sync creates in the
|
|
3656
|
+
destination schema. Omit to use unprefixed table names.
|
|
3657
|
+
examples:
|
|
3658
|
+
- sf_
|
|
3659
|
+
driftPolicy:
|
|
3660
|
+
$ref: '#/components/schemas/SyncDriftPolicy'
|
|
3661
|
+
Error:
|
|
3662
|
+
type: object
|
|
3663
|
+
description: Standard error response envelope returned by integrator.io APIs.
|
|
3664
|
+
properties:
|
|
3665
|
+
errors:
|
|
3666
|
+
type: array
|
|
3667
|
+
description: List of errors that occurred while processing the request.
|
|
3668
|
+
items:
|
|
3669
|
+
type: object
|
|
3670
|
+
properties:
|
|
3671
|
+
code:
|
|
3672
|
+
oneOf:
|
|
3673
|
+
- type: string
|
|
3674
|
+
- type: integer
|
|
3675
|
+
description: |-
|
|
3676
|
+
Machine-readable error code. Usually a string like
|
|
3677
|
+
`invalid_ref`, `missing_required_field`, or `unauthorized`;
|
|
3678
|
+
may be an **integer** when the error mirrors an upstream HTTP
|
|
3679
|
+
status (e.g. `500`) — most commonly returned by connection-ping
|
|
3680
|
+
and adaptor-proxy responses.
|
|
3681
|
+
message:
|
|
3682
|
+
type: string
|
|
3683
|
+
description: Human-readable description of the error.
|
|
3684
|
+
field:
|
|
3685
|
+
type: string
|
|
3686
|
+
description: |-
|
|
3687
|
+
Optional pointer to the document field that caused the error.
|
|
3688
|
+
Used by structural validation errors (`missing_required_field`,
|
|
3689
|
+
`invalid_ref`) to indicate which field is at fault
|
|
3690
|
+
(e.g. `_id`, `type`, `http.baseURI`).
|
|
3691
|
+
source:
|
|
3692
|
+
type: string
|
|
3693
|
+
description: |-
|
|
3694
|
+
Optional origin layer for the error — e.g. `application` when
|
|
3695
|
+
the error came from the remote system the adaptor called,
|
|
3696
|
+
`connector` when the adaptor itself rejected the request.
|
|
3697
|
+
required:
|
|
3698
|
+
- message
|
|
3699
|
+
required:
|
|
3700
|
+
- errors
|
|
3701
|
+
Request:
|
|
3702
|
+
type: object
|
|
3703
|
+
description: |-
|
|
3704
|
+
Writable sync fields for `POST /v1/syncs` and `PUT /v1/syncs/{_id}`. Updates are full
|
|
3705
|
+
replacements: omitted optional fields (`schedule`, `timezone`, `destination` details,
|
|
3706
|
+
`driftPolicy`) are cleared, not preserved, so send the complete desired configuration
|
|
3707
|
+
on every PUT.
|
|
3708
|
+
required:
|
|
3709
|
+
- source
|
|
3710
|
+
x-celigo-ai-guidance:
|
|
3711
|
+
- |-
|
|
3712
|
+
POST requires _integrationId (omitting it fails with 400 "To create sync integration id
|
|
3713
|
+
is required") and source._connectionId (omitting it fails with 422 "Source connection is
|
|
3714
|
+
missing in the request"). PUT requires source._connectionId too, and rejects
|
|
3715
|
+
_integrationId with 400 sync_integration_id_update.
|
|
3716
|
+
- |-
|
|
3717
|
+
Never send _id or _userId in the body — the API rejects the request with
|
|
3718
|
+
400 id_and_userId_in_request.
|
|
3719
|
+
- |-
|
|
3720
|
+
When scaffolding a draft sync before the destination is known, send only
|
|
3721
|
+
_integrationId and source._connectionId; the sync is created disabled and the
|
|
3722
|
+
destination can be filled in with a later PUT.
|
|
3723
|
+
properties:
|
|
3724
|
+
_integrationId:
|
|
3725
|
+
type: string
|
|
3726
|
+
format: objectId
|
|
3727
|
+
x-celigo-refModel: integrations
|
|
3728
|
+
description: |-
|
|
3729
|
+
Integration to create the sync in. Required on create; forbidden on update —
|
|
3730
|
+
the integration cannot be changed once assigned (`400 sync_integration_id_update`).
|
|
3731
|
+
examples:
|
|
3732
|
+
- 69f4ffd395ec28be9cb8c12e
|
|
3733
|
+
name:
|
|
3734
|
+
type: string
|
|
3735
|
+
maxLength: 150
|
|
3736
|
+
description: |-
|
|
3737
|
+
Display name shown in the UI. Values over 150 characters fail with
|
|
3738
|
+
`422 size_limit_exceeded`.
|
|
3739
|
+
examples:
|
|
3740
|
+
- Salesforce Demo Sync
|
|
3741
|
+
description:
|
|
3742
|
+
type: string
|
|
3743
|
+
maxLength: 5120
|
|
3744
|
+
description: Free-form notes about what the sync replicates and why.
|
|
3745
|
+
examples:
|
|
3746
|
+
- Replicates core CRM objects into the analytics warehouse.
|
|
3747
|
+
disabled:
|
|
3748
|
+
type: boolean
|
|
3749
|
+
default: true
|
|
3750
|
+
description: |-
|
|
3751
|
+
When true, the sync neither runs on schedule nor accepts on-demand runs. Set to
|
|
3752
|
+
false only once source, destination, datasets, and `historicDateTime` are all
|
|
3753
|
+
configured; enabling an incomplete sync fails with `422 sync_not_enabled`.
|
|
3754
|
+
examples:
|
|
3755
|
+
- false
|
|
3756
|
+
schedule:
|
|
3757
|
+
type: string
|
|
3758
|
+
description: |-
|
|
3759
|
+
Cron expression that controls automatic runs, e.g. `? 0 */6 * * *` for every six
|
|
3760
|
+
hours. Send an empty string (or omit) for a sync that only runs on demand.
|
|
3761
|
+
Evaluated in `timezone`.
|
|
3762
|
+
examples:
|
|
3763
|
+
- '? 0 */6 * * *'
|
|
3764
|
+
timezone:
|
|
3765
|
+
type: string
|
|
3766
|
+
description: IANA time zone name (e.g. `America/New_York`) the `schedule` is evaluated in.
|
|
3767
|
+
examples:
|
|
3768
|
+
- America/New_York
|
|
3769
|
+
historicDateTime:
|
|
3770
|
+
type: string
|
|
3771
|
+
format: date-time
|
|
3772
|
+
description: |-
|
|
3773
|
+
Earliest record timestamp to backfill from the source. Must be set before the
|
|
3774
|
+
sync can be enabled.
|
|
3775
|
+
examples:
|
|
3776
|
+
- '2022-07-04T18:30:00.000Z'
|
|
3777
|
+
source:
|
|
3778
|
+
type: object
|
|
3779
|
+
description: Application the sync extracts records from.
|
|
3780
|
+
required:
|
|
3781
|
+
- _connectionId
|
|
3782
|
+
properties:
|
|
3783
|
+
_connectionId:
|
|
3784
|
+
type: string
|
|
3785
|
+
format: objectId
|
|
3786
|
+
x-celigo-refModel: connections
|
|
3787
|
+
description: |-
|
|
3788
|
+
Connection to the source application. The application must be one of the
|
|
3789
|
+
supported sync sources returned by `GET /v1/di/metadata/sources`. Omitting
|
|
3790
|
+
it fails with `422 missing_source_connection`.
|
|
3791
|
+
examples:
|
|
3792
|
+
- 6a2a95909e994395f3c2a4e6
|
|
3793
|
+
destination:
|
|
3794
|
+
type: object
|
|
3795
|
+
description: |-
|
|
3796
|
+
Data warehouse the sync loads records into. Omit while drafting; a complete
|
|
3797
|
+
destination (connection, database, schema) is required before the sync can be
|
|
3798
|
+
enabled. The source + destination host/database/schema combination must be unique
|
|
3799
|
+
across syncs (`422 duplicate_destination_host`), and all syncs in an integration
|
|
3800
|
+
must target the same destination application type.
|
|
3801
|
+
properties:
|
|
3802
|
+
_connectionId:
|
|
3803
|
+
type: string
|
|
3804
|
+
format: objectId
|
|
3805
|
+
x-celigo-refModel: connections
|
|
3806
|
+
description: |-
|
|
3807
|
+
Connection to the destination warehouse. The application must be one of the
|
|
3808
|
+
supported sync destinations returned by `GET /v1/di/metadata/destinations`.
|
|
3809
|
+
examples:
|
|
3810
|
+
- 68d02dbe0839a514623c1d6d
|
|
3811
|
+
database:
|
|
3812
|
+
type: string
|
|
3813
|
+
description: Database in the destination warehouse the sync loads into.
|
|
3814
|
+
examples:
|
|
3815
|
+
- ANALYTICS_DB
|
|
3816
|
+
schema:
|
|
3817
|
+
type: string
|
|
3818
|
+
description: Schema within `database` where the sync creates and loads tables.
|
|
3819
|
+
examples:
|
|
3820
|
+
- salesforce_raw
|
|
3821
|
+
tablePrefix:
|
|
3822
|
+
type: string
|
|
3823
|
+
description: |-
|
|
3824
|
+
Prefix prepended to the name of every table the sync creates in the
|
|
3825
|
+
destination schema. Omit to use unprefixed table names.
|
|
3826
|
+
examples:
|
|
3827
|
+
- sf_
|
|
3828
|
+
driftPolicy:
|
|
3829
|
+
$ref: '#/components/schemas/SyncDriftPolicy'
|
|
3830
|
+
DataElement:
|
|
3831
|
+
type: object
|
|
3832
|
+
description: |-
|
|
3833
|
+
Per-column/field replication settings inside a dataset. Elements with nested
|
|
3834
|
+
structure (objects or arrays) carry a `transformMode` and a `children` array;
|
|
3835
|
+
scalar elements carry neither.
|
|
3836
|
+
properties:
|
|
3837
|
+
name:
|
|
3838
|
+
type: string
|
|
3839
|
+
description: |-
|
|
3840
|
+
Column/field name exactly as it appears in the source dataset. Discover the
|
|
3841
|
+
available names via
|
|
3842
|
+
`GET /v1/di/metadata/connections/{_connectionId}/datasets/{datasetName}/details`.
|
|
3843
|
+
examples:
|
|
3844
|
+
- Id
|
|
3845
|
+
enable:
|
|
3846
|
+
type: boolean
|
|
3847
|
+
description: |-
|
|
3848
|
+
When true, the sync extracts and loads this column. Disabled columns are left
|
|
3849
|
+
out of the destination table.
|
|
3850
|
+
examples:
|
|
3851
|
+
- true
|
|
3852
|
+
mask:
|
|
3853
|
+
type: boolean
|
|
3854
|
+
description: |-
|
|
3855
|
+
When true, the value is masked before loading so the raw source value never
|
|
3856
|
+
lands in the destination. Cannot be combined with `isPrimaryKey`.
|
|
3857
|
+
examples:
|
|
3858
|
+
- false
|
|
3859
|
+
isPrimaryKey:
|
|
3860
|
+
type: boolean
|
|
3861
|
+
description: |-
|
|
3862
|
+
When true, marks the column as (part of) the record key. Required on at least
|
|
3863
|
+
one enabled scalar column when the dataset's `ingestionMode` is `merge`, and
|
|
3864
|
+
used as the parent key for arrays normalized into child tables under `append`
|
|
3865
|
+
and `replace`. The element must also be enabled, and cannot carry `mask` or a
|
|
3866
|
+
`transformMode`.
|
|
3867
|
+
examples:
|
|
3868
|
+
- true
|
|
3869
|
+
transformMode:
|
|
3870
|
+
type: string
|
|
3871
|
+
enum:
|
|
3872
|
+
- preserve
|
|
3873
|
+
- flatten
|
|
3874
|
+
- normalize
|
|
3875
|
+
description: |-
|
|
3876
|
+
Only set on elements with `children` — it controls how the nested structure is
|
|
3877
|
+
loaded. Setting it on a scalar element fails validation, as does omitting it on
|
|
3878
|
+
an element that has children. Children nested under a `preserve` parent cannot
|
|
3879
|
+
override it with another mode.
|
|
3880
|
+
x-enumDescriptions:
|
|
3881
|
+
preserve: Load the nested structure as a single semi-structured column.
|
|
3882
|
+
flatten: Expand object keys into individual columns on the same table.
|
|
3883
|
+
normalize: Split array items into a child table keyed back to the parent record.
|
|
3884
|
+
examples:
|
|
3885
|
+
- flatten
|
|
3886
|
+
children:
|
|
3887
|
+
type: array
|
|
3888
|
+
description: |-
|
|
3889
|
+
Nested elements of an object or array field. Present together with
|
|
3890
|
+
`transformMode`; empty for scalar columns.
|
|
3891
|
+
items:
|
|
3892
|
+
$ref: '#/components/schemas/DataElement'
|
|
3893
|
+
Dataset:
|
|
3894
|
+
type: object
|
|
3895
|
+
description: |-
|
|
3896
|
+
One table/object a sync replicates, with its per-column selections and load behavior.
|
|
3897
|
+
Datasets are scoped to a single sync and are created and updated in bulk via
|
|
3898
|
+
`PUT /v1/syncs/{_syncId}/datasets`.
|
|
3899
|
+
required:
|
|
3900
|
+
- _id
|
|
3901
|
+
- _userId
|
|
3902
|
+
- _syncId
|
|
3903
|
+
- name
|
|
3904
|
+
- externalId
|
|
3905
|
+
- enable
|
|
3906
|
+
- enableAllDataElements
|
|
3907
|
+
- userActionRequired
|
|
3908
|
+
- exportProperties
|
|
3909
|
+
- driftPolicy
|
|
3910
|
+
properties:
|
|
3911
|
+
_id:
|
|
3912
|
+
type: string
|
|
3913
|
+
format: objectId
|
|
3914
|
+
readOnly: true
|
|
3915
|
+
description: Unique identifier for the dataset.
|
|
3916
|
+
examples:
|
|
3917
|
+
- 6a559b547885d8f93921c2ba
|
|
3918
|
+
_userId:
|
|
3919
|
+
type: string
|
|
3920
|
+
format: objectId
|
|
3921
|
+
x-celigo-refModel: users
|
|
3922
|
+
readOnly: true
|
|
3923
|
+
description: Account owner the dataset belongs to.
|
|
3924
|
+
examples:
|
|
3925
|
+
- 68c821306f5d848c881da205
|
|
3926
|
+
_syncId:
|
|
3927
|
+
type: string
|
|
3928
|
+
format: objectId
|
|
3929
|
+
x-celigo-refModel: syncs
|
|
3930
|
+
readOnly: true
|
|
3931
|
+
description: Sync this dataset belongs to. Assigned from the request path at creation.
|
|
3932
|
+
examples:
|
|
3933
|
+
- 6a559b5185efa7502eefd439
|
|
3934
|
+
name:
|
|
3935
|
+
type: string
|
|
3936
|
+
description: |-
|
|
3937
|
+
Display name of the dataset, typically the source's human-readable label
|
|
3938
|
+
(e.g. a Salesforce object's display name). Empty string when never set.
|
|
3939
|
+
examples:
|
|
3940
|
+
- Account
|
|
3941
|
+
externalId:
|
|
3942
|
+
type: string
|
|
3943
|
+
description: |-
|
|
3944
|
+
Identifier of the dataset in the source system — the table/object name for
|
|
3945
|
+
application sources, or the export ID when `isExport` is true. Immutable after
|
|
3946
|
+
creation.
|
|
3947
|
+
examples:
|
|
3948
|
+
- Account
|
|
3949
|
+
enable:
|
|
3950
|
+
type: boolean
|
|
3951
|
+
description: |-
|
|
3952
|
+
When true, the sync replicates this dataset on each run. Disabled datasets stay
|
|
3953
|
+
configured but are skipped.
|
|
3954
|
+
examples:
|
|
3955
|
+
- true
|
|
3956
|
+
enableAllDataElements:
|
|
3957
|
+
type: boolean
|
|
3958
|
+
readOnly: true
|
|
3959
|
+
description: |-
|
|
3960
|
+
When true, every column in the source dataset is replicated. Computed by the
|
|
3961
|
+
platform: true while the dataset has no explicit `dataElements` selection,
|
|
3962
|
+
false once one is saved.
|
|
3963
|
+
examples:
|
|
3964
|
+
- false
|
|
3965
|
+
ingestionMode:
|
|
3966
|
+
type: string
|
|
3967
|
+
enum:
|
|
3968
|
+
- append
|
|
3969
|
+
- replace
|
|
3970
|
+
- merge
|
|
3971
|
+
description: |-
|
|
3972
|
+
How each run's extracted records are written into the destination table.
|
|
3973
|
+
Required once the dataset is enabled (`422
|
|
3974
|
+
ingestion_mode_required_for_enabled_datasets`). `merge` additionally requires a
|
|
3975
|
+
primary-key column in `dataElements`.
|
|
3976
|
+
x-enumDescriptions:
|
|
3977
|
+
append: Add extracted records to the destination table, keeping prior rows.
|
|
3978
|
+
replace: Drop and reload the destination table with each run's records.
|
|
3979
|
+
merge: Upsert records into the destination table by primary key.
|
|
3980
|
+
examples:
|
|
3981
|
+
- merge
|
|
3982
|
+
tableName:
|
|
3983
|
+
type: string
|
|
3984
|
+
description: |-
|
|
3985
|
+
Destination table name override. Must be unique among the sync's datasets
|
|
3986
|
+
(`422 table_name_already_exists`); required when `isExport` is true. Omit to
|
|
3987
|
+
let the platform derive the table name from the dataset.
|
|
3988
|
+
examples:
|
|
3989
|
+
- account
|
|
3990
|
+
isExport:
|
|
3991
|
+
type: boolean
|
|
3992
|
+
description: |-
|
|
3993
|
+
When true, the dataset's records come from an existing export resource instead
|
|
3994
|
+
of a source table; `externalId` then holds the export ID, and the export must
|
|
3995
|
+
use the sync's source connection. Export datasets require `tableName` and an
|
|
3996
|
+
explicit `dataElements` selection, and do not accept `exportProperties`.
|
|
3997
|
+
examples:
|
|
3998
|
+
- false
|
|
3999
|
+
exportProperties:
|
|
4000
|
+
type: object
|
|
4001
|
+
description: |-
|
|
4002
|
+
Extraction behavior for the dataset. Only configurable on source-table
|
|
4003
|
+
datasets — sending it on an export dataset (`isExport: true`) fails
|
|
4004
|
+
validation; export-backed datasets return a platform-generated stub
|
|
4005
|
+
(`{"delta": {}}`, no `type`) because extraction follows the export's own
|
|
4006
|
+
configuration.
|
|
4007
|
+
properties:
|
|
4008
|
+
type:
|
|
4009
|
+
type: string
|
|
4010
|
+
enum:
|
|
4011
|
+
- delta
|
|
4012
|
+
- all
|
|
4013
|
+
description: |-
|
|
4014
|
+
Extraction strategy for each run. Use `delta` for incremental extraction of
|
|
4015
|
+
changed records and `all` to re-extract every record on every run.
|
|
4016
|
+
x-enumDescriptions:
|
|
4017
|
+
delta: Extract only records changed since the previous run.
|
|
4018
|
+
all: Extract every record on every run.
|
|
4019
|
+
examples:
|
|
4020
|
+
- delta
|
|
4021
|
+
delta:
|
|
4022
|
+
type: object
|
|
4023
|
+
description: Incremental-extraction settings. Only used when `type` is `delta`.
|
|
4024
|
+
properties:
|
|
4025
|
+
dateField:
|
|
4026
|
+
type: string
|
|
4027
|
+
description: |-
|
|
4028
|
+
Source field that carries each record's last-modified timestamp, used as
|
|
4029
|
+
the delta cursor. Required for NetSuite datasets that extract via a
|
|
4030
|
+
`netsuite.recordType`; Salesforce datasets derive it automatically.
|
|
4031
|
+
examples:
|
|
4032
|
+
- lastmodifieddate
|
|
4033
|
+
netsuite:
|
|
4034
|
+
type: object
|
|
4035
|
+
description: NetSuite-specific extraction settings. Omit for other sources.
|
|
4036
|
+
properties:
|
|
4037
|
+
recordType:
|
|
4038
|
+
type: string
|
|
4039
|
+
description: |-
|
|
4040
|
+
NetSuite record type backing a saved-search dataset. When set with
|
|
4041
|
+
`exportProperties.type: delta`, a `delta.dateField` is required.
|
|
4042
|
+
examples:
|
|
4043
|
+
- salesorder
|
|
4044
|
+
driftPolicy:
|
|
4045
|
+
type: object
|
|
4046
|
+
description: |-
|
|
4047
|
+
Per-dataset override of the sync's `driftPolicy` for column/field drift. Empty
|
|
4048
|
+
(`{element: {}}`) when the dataset follows the sync-level policy.
|
|
4049
|
+
properties:
|
|
4050
|
+
element:
|
|
4051
|
+
$ref: '#/components/schemas/ElementDriftPolicy'
|
|
4052
|
+
dataElements:
|
|
4053
|
+
type: array
|
|
4054
|
+
description: |-
|
|
4055
|
+
Per-column replication selections. Absent while `enableAllDataElements` is true
|
|
4056
|
+
(every column replicated).
|
|
4057
|
+
items:
|
|
4058
|
+
$ref: '#/components/schemas/DataElement'
|
|
4059
|
+
userActionRequired:
|
|
4060
|
+
type: boolean
|
|
4061
|
+
readOnly: true
|
|
4062
|
+
description: |-
|
|
4063
|
+
When true, the platform detected a schema change that needs a user decision
|
|
4064
|
+
before the dataset can be modified or replicated again — typically drift the
|
|
4065
|
+
`driftPolicy` does not automate. Updates to the dataset are rejected until the
|
|
4066
|
+
conflict is resolved (in the UI) in the same save that clears the flag.
|
|
4067
|
+
examples:
|
|
4068
|
+
- false
|
|
4069
|
+
mismatchSyncConnection:
|
|
4070
|
+
type: boolean
|
|
4071
|
+
readOnly: true
|
|
4072
|
+
description: |-
|
|
4073
|
+
Only present (as `true`) in list responses, on export-backed datasets whose
|
|
4074
|
+
export no longer uses the sync's source connection. Repoint the export or
|
|
4075
|
+
recreate the dataset to resume replicating it.
|
|
4076
|
+
examples:
|
|
4077
|
+
- true
|
|
4078
|
+
DatasetUpsertItem:
|
|
4079
|
+
type: object
|
|
4080
|
+
description: |-
|
|
4081
|
+
One dataset to create or update in a `PUT /v1/syncs/{_syncId}/datasets` batch.
|
|
4082
|
+
Send `externalId` (without `_id`) to create, or `_id` (without `externalId`) to
|
|
4083
|
+
update — providing both or neither fails with `400 dataset_externalId_id_required`.
|
|
4084
|
+
Updates are full replacements of the writable fields.
|
|
4085
|
+
x-celigo-ai-guidance:
|
|
4086
|
+
- |-
|
|
4087
|
+
Create items with externalId only; update items with _id only. Sending both on one
|
|
4088
|
+
item fails the whole batch with 400 dataset_externalId_id_required, as does creating
|
|
4089
|
+
a dataset whose externalId already exists on the sync (400) or updating an _id that
|
|
4090
|
+
does not belong to the sync (400).
|
|
4091
|
+
- |-
|
|
4092
|
+
enable: true requires ingestionMode (422 ingestion_mode_required_for_enabled_datasets),
|
|
4093
|
+
and ingestionMode merge requires at least one enabled dataElement with
|
|
4094
|
+
isPrimaryKey: true (422).
|
|
4095
|
+
- |-
|
|
4096
|
+
To scaffold a dataset without replicating it yet, send name, externalId, enable: false
|
|
4097
|
+
and no dataElements — the platform then replicates all columns once enabled.
|
|
4098
|
+
properties:
|
|
4099
|
+
_id:
|
|
4100
|
+
type: string
|
|
4101
|
+
format: objectId
|
|
4102
|
+
description: |-
|
|
4103
|
+
Dataset to update. The dataset must already belong to the sync in the request
|
|
4104
|
+
path. Omit when creating.
|
|
4105
|
+
examples:
|
|
4106
|
+
- 6a559b547885d8f93921c2ba
|
|
4107
|
+
externalId:
|
|
4108
|
+
type: string
|
|
4109
|
+
description: |-
|
|
4110
|
+
Identifier of the dataset in the source system — the table/object name from
|
|
4111
|
+
`GET /v1/di/metadata/connections/{_connectionId}/datasets`, or an export ID when
|
|
4112
|
+
`isExport` is true. Set when creating; immutable afterwards. A dataset with the
|
|
4113
|
+
same `externalId` must not already exist on the sync.
|
|
4114
|
+
examples:
|
|
4115
|
+
- Account
|
|
4116
|
+
name:
|
|
4117
|
+
type: string
|
|
4118
|
+
description: Display name of the dataset, typically the source's human-readable label.
|
|
4119
|
+
examples:
|
|
4120
|
+
- Account
|
|
4121
|
+
enable:
|
|
4122
|
+
type: boolean
|
|
4123
|
+
description: |-
|
|
4124
|
+
When true, the sync replicates this dataset on each run. Required (with an
|
|
4125
|
+
`ingestionMode`) to activate the dataset; datasets created with `enable: false`
|
|
4126
|
+
stay configured but skipped.
|
|
4127
|
+
examples:
|
|
4128
|
+
- true
|
|
4129
|
+
ingestionMode:
|
|
4130
|
+
type: string
|
|
4131
|
+
enum:
|
|
4132
|
+
- append
|
|
4133
|
+
- replace
|
|
4134
|
+
- merge
|
|
4135
|
+
description: |-
|
|
4136
|
+
How extracted records are written into the destination table. Required when
|
|
4137
|
+
`enable` is true. `merge` requires a primary key in `dataElements`.
|
|
4138
|
+
x-enumDescriptions:
|
|
4139
|
+
append: Add extracted records to the destination table, keeping prior rows.
|
|
4140
|
+
replace: Drop and reload the destination table with each run's records.
|
|
4141
|
+
merge: Upsert records into the destination table by primary key.
|
|
4142
|
+
examples:
|
|
4143
|
+
- merge
|
|
4144
|
+
tableName:
|
|
4145
|
+
type: string
|
|
4146
|
+
description: |-
|
|
4147
|
+
Destination table name override. Must be unique among the sync's datasets —
|
|
4148
|
+
duplicates within the batch or with existing datasets fail with `400
|
|
4149
|
+
duplicate_dataset_table_names` / `422 table_name_already_exists`. Required when
|
|
4150
|
+
`isExport` is true.
|
|
4151
|
+
examples:
|
|
4152
|
+
- account
|
|
4153
|
+
isExport:
|
|
4154
|
+
type: boolean
|
|
4155
|
+
description: |-
|
|
4156
|
+
When true, the dataset's records come from an existing export resource:
|
|
4157
|
+
`externalId` must be the export's ID, the export must use the sync's source
|
|
4158
|
+
connection (`400 connection_mismatch`), and the item must include `tableName`
|
|
4159
|
+
and `dataElements` but no `exportProperties`.
|
|
4160
|
+
examples:
|
|
4161
|
+
- false
|
|
4162
|
+
exportProperties:
|
|
4163
|
+
type: object
|
|
4164
|
+
description: |-
|
|
4165
|
+
Extraction behavior for the dataset. Only for source-table datasets — sending it
|
|
4166
|
+
with `isExport: true` fails validation.
|
|
4167
|
+
properties:
|
|
4168
|
+
type:
|
|
4169
|
+
type: string
|
|
4170
|
+
enum:
|
|
4171
|
+
- delta
|
|
4172
|
+
- all
|
|
4173
|
+
description: |-
|
|
4174
|
+
Extraction strategy for each run. Use `delta` for incremental extraction of
|
|
4175
|
+
changed records and `all` to re-extract every record on every run.
|
|
4176
|
+
x-enumDescriptions:
|
|
4177
|
+
delta: Extract only records changed since the previous run.
|
|
4178
|
+
all: Extract every record on every run.
|
|
4179
|
+
examples:
|
|
4180
|
+
- delta
|
|
4181
|
+
delta:
|
|
4182
|
+
type: object
|
|
4183
|
+
description: Incremental-extraction settings. Only used when `type` is `delta`.
|
|
4184
|
+
properties:
|
|
4185
|
+
dateField:
|
|
4186
|
+
type: string
|
|
4187
|
+
description: |-
|
|
4188
|
+
Source field carrying each record's last-modified timestamp, used as the
|
|
4189
|
+
delta cursor. Required for NetSuite datasets extracted via a
|
|
4190
|
+
`netsuite.recordType`; Salesforce datasets derive it automatically.
|
|
4191
|
+
examples:
|
|
4192
|
+
- lastmodifieddate
|
|
4193
|
+
netsuite:
|
|
4194
|
+
type: object
|
|
4195
|
+
description: NetSuite-specific extraction settings. Omit for other sources.
|
|
4196
|
+
properties:
|
|
4197
|
+
recordType:
|
|
4198
|
+
type: string
|
|
4199
|
+
description: |-
|
|
4200
|
+
NetSuite record type backing a saved-search dataset. When set with
|
|
4201
|
+
`exportProperties.type: delta`, a `delta.dateField` is required.
|
|
4202
|
+
examples:
|
|
4203
|
+
- salesorder
|
|
4204
|
+
driftPolicy:
|
|
4205
|
+
type: object
|
|
4206
|
+
description: |-
|
|
4207
|
+
Per-dataset override of the sync's `driftPolicy` for column/field drift. Omit
|
|
4208
|
+
to follow the sync-level policy.
|
|
4209
|
+
properties:
|
|
4210
|
+
element:
|
|
4211
|
+
$ref: '#/components/schemas/ElementDriftPolicy'
|
|
4212
|
+
dataElements:
|
|
4213
|
+
type: array
|
|
4214
|
+
description: |-
|
|
4215
|
+
Per-column replication selections. Omit to replicate every column
|
|
4216
|
+
(`enableAllDataElements` stays true). When provided, the array replaces the
|
|
4217
|
+
dataset's previous selection entirely.
|
|
4218
|
+
items:
|
|
4219
|
+
$ref: '#/components/schemas/DataElement'
|
|
4220
|
+
SyncRunRequest:
|
|
4221
|
+
type: object
|
|
4222
|
+
description: |-
|
|
4223
|
+
Optional request body for triggering a sync run. When omitted or sent as `{}`, the sync runs
|
|
4224
|
+
with `runType: "normal"` (incremental delta). Pass `runType: "resync"` to force a full re-extraction
|
|
4225
|
+
from the source system, discarding the current delta checkpoint.
|
|
4226
|
+
properties:
|
|
4227
|
+
runType:
|
|
4228
|
+
type: string
|
|
4229
|
+
description: Controls whether the run is incremental or a full resync.
|
|
4230
|
+
enum:
|
|
4231
|
+
- normal
|
|
4232
|
+
- resync
|
|
4233
|
+
x-enumDescriptions:
|
|
4234
|
+
normal: Incremental delta sync extracting only records modified since the last run.
|
|
4235
|
+
resync: Full resync re-extracting all records from the source system.
|
|
4236
|
+
default: normal
|
|
4237
|
+
examples:
|
|
4238
|
+
- runType: normal
|
|
4239
|
+
- runType: resync
|
|
4240
|
+
SyncRunResponse:
|
|
4241
|
+
type: object
|
|
4242
|
+
description: |-
|
|
4243
|
+
Response from `POST /v1/syncs/{_syncId}/run`. Contains identifiers for the newly queued sync run.
|
|
4244
|
+
Use `syncId` with `GET /v1/syncs/{_syncId}/syncJobs` or `flowExecutionGroupId` with
|
|
4245
|
+
`GET /v1/syncJobs/{_syncJobId}` to poll for run completion.
|
|
4246
|
+
properties:
|
|
4247
|
+
syncId:
|
|
4248
|
+
type: string
|
|
4249
|
+
format: objectId
|
|
4250
|
+
x-celigo-refModel: syncs
|
|
4251
|
+
readOnly: true
|
|
4252
|
+
description: The sync resource id that was triggered.
|
|
4253
|
+
examples:
|
|
4254
|
+
- 682094fa7eb7fc3e7ab7a4a0
|
|
4255
|
+
flowExecutionGroupId:
|
|
4256
|
+
type: string
|
|
4257
|
+
readOnly: true
|
|
4258
|
+
description: |-
|
|
4259
|
+
Correlation id for this execution group. Groups the parent sync job and all child
|
|
4260
|
+
table-level jobs spawned by this run.
|
|
4261
|
+
examples:
|
|
4262
|
+
- 6821c01c39db7c2b9cdc0e29
|
|
4263
|
+
examples:
|
|
4264
|
+
- syncId: 682094fa7eb7fc3e7ab7a4a0
|
|
4265
|
+
flowExecutionGroupId: 6821c01c39db7c2b9cdc0e29
|
|
4266
|
+
SyncJob:
|
|
4267
|
+
type: object
|
|
4268
|
+
required:
|
|
4269
|
+
- _id
|
|
4270
|
+
- _syncId
|
|
4271
|
+
- _integrationId
|
|
4272
|
+
- status
|
|
4273
|
+
- runType
|
|
4274
|
+
- createdAt
|
|
4275
|
+
description: |-
|
|
4276
|
+
A sync job represents one execution of a sync. Sync jobs are read-only records
|
|
4277
|
+
created by the platform when a sync run is triggered (manually or on schedule). The job tracks
|
|
4278
|
+
extraction, loading, and error counts across all tables in the sync. `numTablesSynced` reflects
|
|
4279
|
+
only the tables that actively participated in this run -- for a delta run it may be lower than
|
|
4280
|
+
the total table count.
|
|
4281
|
+
properties:
|
|
4282
|
+
_id:
|
|
4283
|
+
type: string
|
|
4284
|
+
format: objectId
|
|
4285
|
+
readOnly: true
|
|
4286
|
+
description: Sync job id.
|
|
4287
|
+
examples:
|
|
4288
|
+
- 6821c01c39db7c2b9cdc0e30
|
|
4289
|
+
flowExecutionGroupId:
|
|
4290
|
+
type: string
|
|
4291
|
+
readOnly: true
|
|
4292
|
+
description: Correlation id grouping this job with its child table jobs.
|
|
4293
|
+
examples:
|
|
4294
|
+
- 6821c01c39db7c2b9cdc0e29
|
|
4295
|
+
_integrationId:
|
|
4296
|
+
type: string
|
|
4297
|
+
format: objectId
|
|
4298
|
+
x-celigo-refModel: integrations
|
|
4299
|
+
readOnly: true
|
|
4300
|
+
description: Integration id this sync belongs to.
|
|
4301
|
+
examples:
|
|
4302
|
+
- 67d7b6e69e4b1371e5d1e2a1
|
|
4303
|
+
_syncId:
|
|
4304
|
+
type: string
|
|
4305
|
+
format: objectId
|
|
4306
|
+
x-celigo-refModel: syncs
|
|
4307
|
+
readOnly: true
|
|
4308
|
+
description: Sync resource id.
|
|
4309
|
+
examples:
|
|
4310
|
+
- 682094fa7eb7fc3e7ab7a4a0
|
|
4311
|
+
createdAt:
|
|
4312
|
+
type: string
|
|
4313
|
+
format: date-time
|
|
4314
|
+
readOnly: true
|
|
4315
|
+
description: When the sync job record was created (queued).
|
|
4316
|
+
examples:
|
|
4317
|
+
- '2026-04-28T14:30:00.000Z'
|
|
4318
|
+
startedAt:
|
|
4319
|
+
type: string
|
|
4320
|
+
format: date-time
|
|
4321
|
+
readOnly: true
|
|
4322
|
+
description: When execution actually began. Absent while the job is still queued.
|
|
4323
|
+
examples:
|
|
4324
|
+
- '2026-04-28T14:30:01.123Z'
|
|
4325
|
+
endedAt:
|
|
4326
|
+
type: string
|
|
4327
|
+
format: date-time
|
|
4328
|
+
readOnly: true
|
|
4329
|
+
description: When execution completed. Absent while the job is still running.
|
|
4330
|
+
examples:
|
|
4331
|
+
- '2026-04-28T14:35:12.456Z'
|
|
4332
|
+
purgeAt:
|
|
4333
|
+
type: string
|
|
4334
|
+
format: date-time
|
|
4335
|
+
readOnly: true
|
|
4336
|
+
description: When the job record will be purged from storage.
|
|
4337
|
+
examples:
|
|
4338
|
+
- '2026-07-28T14:35:12.456Z'
|
|
4339
|
+
status:
|
|
4340
|
+
type: string
|
|
4341
|
+
readOnly: true
|
|
4342
|
+
description: |-
|
|
4343
|
+
Current lifecycle state. Jobs start as `queued` when a run is accepted, move to
|
|
4344
|
+
`running` once a worker picks them up, and end as `completed`, `failed`, or
|
|
4345
|
+
`canceled`.
|
|
4346
|
+
enum:
|
|
4347
|
+
- queued
|
|
4348
|
+
- running
|
|
4349
|
+
- completed
|
|
4350
|
+
- failed
|
|
4351
|
+
- canceled
|
|
4352
|
+
x-enumDescriptions:
|
|
4353
|
+
queued: Run accepted and waiting for a worker to start execution.
|
|
4354
|
+
running: Sync is currently executing.
|
|
4355
|
+
completed: Sync finished successfully.
|
|
4356
|
+
failed: Sync finished with a fatal error.
|
|
4357
|
+
canceled: Sync was canceled by a user or the system.
|
|
4358
|
+
numErrors:
|
|
4359
|
+
type: integer
|
|
4360
|
+
readOnly: true
|
|
4361
|
+
description: Total number of errors produced across all tables in this run.
|
|
4362
|
+
examples:
|
|
4363
|
+
- 0
|
|
4364
|
+
numLoadedRecords:
|
|
4365
|
+
type: integer
|
|
4366
|
+
readOnly: true
|
|
4367
|
+
description: Total number of records loaded (written) to the data warehouse.
|
|
4368
|
+
examples:
|
|
4369
|
+
- 12450
|
|
4370
|
+
numExtractedRecords:
|
|
4371
|
+
type: integer
|
|
4372
|
+
readOnly: true
|
|
4373
|
+
description: Total number of records extracted from the source system.
|
|
4374
|
+
examples:
|
|
4375
|
+
- 12450
|
|
4376
|
+
numTablesSynced:
|
|
4377
|
+
type: integer
|
|
4378
|
+
readOnly: true
|
|
4379
|
+
description: Number of tables that were synced in this run.
|
|
4380
|
+
examples:
|
|
4381
|
+
- 3
|
|
4382
|
+
triggeredBy:
|
|
4383
|
+
type: string
|
|
4384
|
+
readOnly: true
|
|
4385
|
+
description: Who or what triggered this sync run (e.g. `"user:email"`, `"schedule"`).
|
|
4386
|
+
examples:
|
|
4387
|
+
- user:tyler.lamparter@celigo.com
|
|
4388
|
+
canceledBy:
|
|
4389
|
+
type: string
|
|
4390
|
+
readOnly: true
|
|
4391
|
+
description: Who or what canceled this run. Only present when `status` is `canceled`.
|
|
4392
|
+
examples:
|
|
4393
|
+
- user:tyler.lamparter@celigo.com
|
|
4394
|
+
runType:
|
|
4395
|
+
type: string
|
|
4396
|
+
readOnly: true
|
|
4397
|
+
description: Whether this was a normal (delta) or full resync run.
|
|
4398
|
+
enum:
|
|
4399
|
+
- normal
|
|
4400
|
+
- resync
|
|
4401
|
+
x-enumDescriptions:
|
|
4402
|
+
normal: Incremental delta sync extracting only records modified since the last run.
|
|
4403
|
+
resync: Full resync re-extracting all records from the source system.
|
|
4404
|
+
examples:
|
|
4405
|
+
- _id: 6821c01c39db7c2b9cdc0e30
|
|
4406
|
+
flowExecutionGroupId: 6821c01c39db7c2b9cdc0e29
|
|
4407
|
+
_integrationId: 67d7b6e69e4b1371e5d1e2a1
|
|
4408
|
+
_syncId: 682094fa7eb7fc3e7ab7a4a0
|
|
4409
|
+
createdAt: '2026-04-28T14:30:00.000Z'
|
|
4410
|
+
startedAt: '2026-04-28T14:30:01.123Z'
|
|
4411
|
+
endedAt: '2026-04-28T14:35:12.456Z'
|
|
4412
|
+
purgeAt: '2026-07-28T14:35:12.456Z'
|
|
4413
|
+
status: completed
|
|
4414
|
+
numErrors: 0
|
|
4415
|
+
numLoadedRecords: 12450
|
|
4416
|
+
numExtractedRecords: 12450
|
|
4417
|
+
numTablesSynced: 3
|
|
4418
|
+
triggeredBy: user:tyler.lamparter@celigo.com
|
|
4419
|
+
runType: normal
|
|
4420
|
+
SyncJobsResponse:
|
|
4421
|
+
type: object
|
|
4422
|
+
description: |-
|
|
4423
|
+
Paginated list of sync jobs for a given sync. Contains the array of job records and a total count.
|
|
4424
|
+
|
|
4425
|
+
Note: although the response includes `totalCount`, the `limit` and `offset` query parameters
|
|
4426
|
+
on the list endpoint are silently ignored by the server as of this writing. The response always
|
|
4427
|
+
returns all jobs.
|
|
4428
|
+
properties:
|
|
4429
|
+
data:
|
|
4430
|
+
type: array
|
|
4431
|
+
description: Array of sync job records.
|
|
4432
|
+
items:
|
|
4433
|
+
$ref: '#/components/schemas/SyncJob'
|
|
4434
|
+
totalCount:
|
|
4435
|
+
type: integer
|
|
4436
|
+
readOnly: true
|
|
4437
|
+
description: Total number of sync jobs for this sync (across all pages).
|
|
4438
|
+
examples:
|
|
4439
|
+
- 1
|
|
4440
|
+
examples:
|
|
4441
|
+
- data:
|
|
4442
|
+
- _id: 6821c01c39db7c2b9cdc0e30
|
|
4443
|
+
flowExecutionGroupId: 6821c01c39db7c2b9cdc0e29
|
|
4444
|
+
_integrationId: 67d7b6e69e4b1371e5d1e2a1
|
|
4445
|
+
_syncId: 682094fa7eb7fc3e7ab7a4a0
|
|
4446
|
+
createdAt: '2026-04-28T14:30:00.000Z'
|
|
4447
|
+
startedAt: '2026-04-28T14:30:01.123Z'
|
|
4448
|
+
endedAt: '2026-04-28T14:35:12.456Z'
|
|
4449
|
+
purgeAt: '2026-07-28T14:35:12.456Z'
|
|
4450
|
+
status: completed
|
|
4451
|
+
numErrors: 0
|
|
4452
|
+
numLoadedRecords: 12450
|
|
4453
|
+
numExtractedRecords: 12450
|
|
4454
|
+
numTablesSynced: 3
|
|
4455
|
+
triggeredBy: user:tyler.lamparter@celigo.com
|
|
4456
|
+
runType: normal
|
|
4457
|
+
totalCount: 1
|
|
4458
|
+
SyncTableJob:
|
|
4459
|
+
type: object
|
|
4460
|
+
description: |-
|
|
4461
|
+
A child job representing one table's extraction and load within a parent sync run. Each table
|
|
4462
|
+
job tracks its own record counts, error counts, and timing independently.
|
|
4463
|
+
properties:
|
|
4464
|
+
_id:
|
|
4465
|
+
type: string
|
|
4466
|
+
format: objectId
|
|
4467
|
+
readOnly: true
|
|
4468
|
+
description: Child table job id.
|
|
4469
|
+
examples:
|
|
4470
|
+
- 6821c01c39db7c2b9cdc0e31
|
|
4471
|
+
tableName:
|
|
4472
|
+
type: string
|
|
4473
|
+
readOnly: true
|
|
4474
|
+
description: Name of the table being synced (e.g. `"contacts"`, `"orders"`).
|
|
4475
|
+
examples:
|
|
4476
|
+
- contacts
|
|
4477
|
+
createdAt:
|
|
4478
|
+
type: string
|
|
4479
|
+
format: date-time
|
|
4480
|
+
readOnly: true
|
|
4481
|
+
description: When this child job was created.
|
|
4482
|
+
examples:
|
|
4483
|
+
- '2026-04-28T14:30:01.200Z'
|
|
4484
|
+
status:
|
|
4485
|
+
type: string
|
|
4486
|
+
readOnly: true
|
|
4487
|
+
description: |-
|
|
4488
|
+
Current lifecycle state of this table's sync. Table jobs start as `queued`, move
|
|
4489
|
+
to `running` when extraction begins, and end as `completed`, `failed`, or
|
|
4490
|
+
`canceled`.
|
|
4491
|
+
enum:
|
|
4492
|
+
- queued
|
|
4493
|
+
- running
|
|
4494
|
+
- completed
|
|
4495
|
+
- failed
|
|
4496
|
+
- canceled
|
|
4497
|
+
x-enumDescriptions:
|
|
4498
|
+
queued: Table sync is waiting for a worker to start.
|
|
4499
|
+
running: Table sync is currently executing.
|
|
4500
|
+
completed: Table sync finished successfully.
|
|
4501
|
+
failed: Table sync finished with a fatal error.
|
|
4502
|
+
canceled: Table sync was canceled.
|
|
4503
|
+
numErrors:
|
|
4504
|
+
type: integer
|
|
4505
|
+
readOnly: true
|
|
4506
|
+
description: Number of errors encountered syncing this table.
|
|
4507
|
+
examples:
|
|
4508
|
+
- 0
|
|
4509
|
+
numLoadedRecords:
|
|
4510
|
+
type: integer
|
|
4511
|
+
readOnly: true
|
|
4512
|
+
description: Number of records loaded into the warehouse for this table.
|
|
4513
|
+
examples:
|
|
4514
|
+
- 8200
|
|
4515
|
+
numExtractedRecords:
|
|
4516
|
+
type: integer
|
|
4517
|
+
readOnly: true
|
|
4518
|
+
description: Number of records extracted from the source for this table.
|
|
4519
|
+
examples:
|
|
4520
|
+
- 8200
|
|
4521
|
+
isNormalizedTable:
|
|
4522
|
+
type: boolean
|
|
4523
|
+
readOnly: true
|
|
4524
|
+
description: |-
|
|
4525
|
+
When true, this table is a normalized child table split out from
|
|
4526
|
+
nested data in the source dataset rather than a source table itself.
|
|
4527
|
+
Present only when true — omitted from the response when false.
|
|
4528
|
+
startedAt:
|
|
4529
|
+
type: string
|
|
4530
|
+
format: date-time
|
|
4531
|
+
readOnly: true
|
|
4532
|
+
description: When extraction began for this table. Absent if not yet started.
|
|
4533
|
+
examples:
|
|
4534
|
+
- '2026-04-28T14:30:01.300Z'
|
|
4535
|
+
endedAt:
|
|
4536
|
+
type: string
|
|
4537
|
+
format: date-time
|
|
4538
|
+
readOnly: true
|
|
4539
|
+
description: When loading completed for this table. Absent if still running.
|
|
4540
|
+
examples:
|
|
4541
|
+
- '2026-04-28T14:33:45.100Z'
|
|
4542
|
+
examples:
|
|
4543
|
+
- _id: 6821c01c39db7c2b9cdc0e31
|
|
4544
|
+
tableName: contacts
|
|
4545
|
+
createdAt: '2026-04-28T14:30:01.200Z'
|
|
4546
|
+
status: completed
|
|
4547
|
+
numErrors: 0
|
|
4548
|
+
numLoadedRecords: 8200
|
|
4549
|
+
numExtractedRecords: 8200
|
|
4550
|
+
startedAt: '2026-04-28T14:30:01.300Z'
|
|
4551
|
+
endedAt: '2026-04-28T14:33:45.100Z'
|
|
4552
|
+
SyncJobFamily:
|
|
4553
|
+
type: object
|
|
4554
|
+
description: |-
|
|
4555
|
+
A sync job family consisting of the parent sync job and its per-table child jobs. Each entry in
|
|
4556
|
+
`tables` represents one table that was synced as part of this run, with its own status, record
|
|
4557
|
+
counts, and timing. The parent-level counters are the authoritative totals; `tables[]` provides
|
|
4558
|
+
the per-table breakdown. `tables` may be empty if the job was canceled before any table work
|
|
4559
|
+
started.
|
|
4560
|
+
allOf:
|
|
4561
|
+
- $ref: '#/components/schemas/SyncJob'
|
|
4562
|
+
- type: object
|
|
4563
|
+
properties:
|
|
4564
|
+
tables:
|
|
4565
|
+
type: array
|
|
4566
|
+
description: Per-table child job records for this sync run.
|
|
4567
|
+
items:
|
|
4568
|
+
$ref: '#/components/schemas/SyncTableJob'
|
|
4569
|
+
SyncError:
|
|
4570
|
+
type: object
|
|
4571
|
+
description: |-
|
|
4572
|
+
An individual error record from a sync run. Errors are scoped to a specific table (identified by
|
|
4573
|
+
`tableName` and `_datasetId`) within a sync execution. `_parentSyncJobId` links to the parent
|
|
4574
|
+
sync job and `_childSyncJobId` links to the table-level child.
|
|
4575
|
+
properties:
|
|
4576
|
+
scope:
|
|
4577
|
+
type: string
|
|
4578
|
+
readOnly: true
|
|
4579
|
+
description: Pipeline scope where the error occurred (e.g. `"extract"`, `"load"`).
|
|
4580
|
+
examples:
|
|
4581
|
+
- extract
|
|
4582
|
+
source:
|
|
4583
|
+
type: string
|
|
4584
|
+
readOnly: true
|
|
4585
|
+
description: System or component that produced the error.
|
|
4586
|
+
examples:
|
|
4587
|
+
- salesforce
|
|
4588
|
+
code:
|
|
4589
|
+
type: string
|
|
4590
|
+
readOnly: true
|
|
4591
|
+
description: Machine-readable error code.
|
|
4592
|
+
examples:
|
|
4593
|
+
- INVALID_FIELD
|
|
4594
|
+
message:
|
|
4595
|
+
type: string
|
|
4596
|
+
readOnly: true
|
|
4597
|
+
description: Human-readable error message.
|
|
4598
|
+
examples:
|
|
4599
|
+
- No such column 'Custom_Field__c' on entity 'Account'.
|
|
4600
|
+
_datasetId:
|
|
4601
|
+
type: string
|
|
4602
|
+
format: objectId
|
|
4603
|
+
readOnly: true
|
|
4604
|
+
description: Dataset id associated with this error.
|
|
4605
|
+
examples:
|
|
4606
|
+
- 6821c01c39db7c2b9cdc0e35
|
|
4607
|
+
_syncId:
|
|
4608
|
+
type: string
|
|
4609
|
+
format: objectId
|
|
4610
|
+
x-celigo-refModel: syncs
|
|
4611
|
+
readOnly: true
|
|
4612
|
+
description: Sync resource id.
|
|
4613
|
+
examples:
|
|
4614
|
+
- 682094fa7eb7fc3e7ab7a4a0
|
|
4615
|
+
_parentSyncJobId:
|
|
4616
|
+
type: string
|
|
4617
|
+
format: objectId
|
|
4618
|
+
readOnly: true
|
|
4619
|
+
description: Parent sync job id.
|
|
4620
|
+
examples:
|
|
4621
|
+
- 6821c01c39db7c2b9cdc0e30
|
|
4622
|
+
_childSyncJobId:
|
|
4623
|
+
type: string
|
|
4624
|
+
format: objectId
|
|
4625
|
+
readOnly: true
|
|
4626
|
+
description: Child (table-level) sync job id.
|
|
4627
|
+
examples:
|
|
4628
|
+
- 6821c01c39db7c2b9cdc0e31
|
|
4629
|
+
flowExecutionGroupId:
|
|
4630
|
+
type: string
|
|
4631
|
+
readOnly: true
|
|
4632
|
+
description: Correlation id for the execution group.
|
|
4633
|
+
examples:
|
|
4634
|
+
- 6821c01c39db7c2b9cdc0e29
|
|
4635
|
+
stage:
|
|
4636
|
+
type: string
|
|
4637
|
+
readOnly: true
|
|
4638
|
+
description: Pipeline stage where the error occurred.
|
|
4639
|
+
examples:
|
|
4640
|
+
- extraction
|
|
4641
|
+
datasetName:
|
|
4642
|
+
type: string
|
|
4643
|
+
readOnly: true
|
|
4644
|
+
description: Human-readable dataset name.
|
|
4645
|
+
examples:
|
|
4646
|
+
- Salesforce Accounts
|
|
4647
|
+
tableName:
|
|
4648
|
+
type: string
|
|
4649
|
+
readOnly: true
|
|
4650
|
+
description: Table name where the error occurred.
|
|
4651
|
+
examples:
|
|
4652
|
+
- accounts
|
|
4653
|
+
occurredAt:
|
|
4654
|
+
type: string
|
|
4655
|
+
format: date-time
|
|
4656
|
+
readOnly: true
|
|
4657
|
+
description: When the error occurred.
|
|
4658
|
+
examples:
|
|
4659
|
+
- '2026-04-28T14:31:22.789Z'
|
|
4660
|
+
examples:
|
|
4661
|
+
- scope: extract
|
|
4662
|
+
source: salesforce
|
|
4663
|
+
code: INVALID_FIELD
|
|
4664
|
+
message: No such column 'Custom_Field__c' on entity 'Account'.
|
|
4665
|
+
_datasetId: 6821c01c39db7c2b9cdc0e35
|
|
4666
|
+
_syncId: 682094fa7eb7fc3e7ab7a4a0
|
|
4667
|
+
_parentSyncJobId: 6821c01c39db7c2b9cdc0e30
|
|
4668
|
+
_childSyncJobId: 6821c01c39db7c2b9cdc0e31
|
|
4669
|
+
flowExecutionGroupId: 6821c01c39db7c2b9cdc0e29
|
|
4670
|
+
stage: extraction
|
|
4671
|
+
datasetName: Salesforce Accounts
|
|
4672
|
+
tableName: accounts
|
|
4673
|
+
occurredAt: '2026-04-28T14:31:22.789Z'
|
|
4674
|
+
SyncEvent:
|
|
4675
|
+
type: object
|
|
4676
|
+
description: |-
|
|
4677
|
+
One event recorded while a sync runs — schema drift the platform detected or
|
|
4678
|
+
handled, and data-catalog activity. Events are retained per the account's data
|
|
4679
|
+
retention period and ordered newest first.
|
|
4680
|
+
properties:
|
|
4681
|
+
id:
|
|
4682
|
+
type: string
|
|
4683
|
+
format: uuid
|
|
4684
|
+
description: Unique identifier for the event.
|
|
4685
|
+
examples:
|
|
4686
|
+
- 80ba31fe-b66d-4777-9b12-3177c55aab13
|
|
4687
|
+
_userId:
|
|
4688
|
+
type: string
|
|
4689
|
+
format: objectId
|
|
4690
|
+
x-celigo-refModel: users
|
|
4691
|
+
description: Account owner the event belongs to.
|
|
4692
|
+
examples:
|
|
4693
|
+
- 68c821306f5d848c881da205
|
|
4694
|
+
_syncId:
|
|
4695
|
+
type: string
|
|
4696
|
+
format: objectId
|
|
4697
|
+
x-celigo-refModel: syncs
|
|
4698
|
+
description: Sync the event was recorded for.
|
|
4699
|
+
examples:
|
|
4700
|
+
- 6a4b8bfb731a7a5cae9bd364
|
|
4701
|
+
flowExecutionGroupId:
|
|
4702
|
+
type: string
|
|
4703
|
+
description: |-
|
|
4704
|
+
Run the event belongs to. Matches the `flowExecutionGroupId` returned by
|
|
4705
|
+
`POST /v1/syncs/{_syncId}/run` and carried on the run's sync jobs, so events
|
|
4706
|
+
can be correlated with jobs and errors from the same execution.
|
|
4707
|
+
examples:
|
|
4708
|
+
- d0f875a575bd4b8c944533da773f350a
|
|
4709
|
+
resourceName:
|
|
4710
|
+
type: string
|
|
4711
|
+
description: Source table/object the event is about.
|
|
4712
|
+
examples:
|
|
4713
|
+
- Account
|
|
4714
|
+
severity:
|
|
4715
|
+
type: string
|
|
4716
|
+
enum:
|
|
4717
|
+
- INFO
|
|
4718
|
+
- WARN
|
|
4719
|
+
- ERROR
|
|
4720
|
+
description: |-
|
|
4721
|
+
How much attention the event needs. Informational drift the policy handled
|
|
4722
|
+
automatically is `INFO`; conditions requiring user action surface as `WARN`
|
|
4723
|
+
or `ERROR`.
|
|
4724
|
+
x-enumDescriptions:
|
|
4725
|
+
INFO: Informational; the platform handled the event automatically.
|
|
4726
|
+
WARN: The event may need review but did not stop the sync.
|
|
4727
|
+
ERROR: The event blocked part of the sync and needs user action.
|
|
4728
|
+
examples:
|
|
4729
|
+
- INFO
|
|
4730
|
+
eventTime:
|
|
4731
|
+
type: string
|
|
4732
|
+
format: date-time
|
|
4733
|
+
description: Timestamp when the event was recorded.
|
|
4734
|
+
examples:
|
|
4735
|
+
- '2026-07-13T12:36:06.225Z'
|
|
4736
|
+
type:
|
|
4737
|
+
type: string
|
|
4738
|
+
enum:
|
|
4739
|
+
- Schema Drift
|
|
4740
|
+
- Data Catalog
|
|
4741
|
+
description: |-
|
|
4742
|
+
Event category. Filter the list to one category with the `type` query
|
|
4743
|
+
parameter.
|
|
4744
|
+
x-enumDescriptions:
|
|
4745
|
+
Schema Drift: A change to the source schema was detected or applied (e.g. table added, column removed).
|
|
4746
|
+
Data Catalog: Dataset metadata activity recorded while cataloging the source.
|
|
4747
|
+
examples:
|
|
4748
|
+
- Schema Drift
|
|
4749
|
+
stage:
|
|
4750
|
+
type: string
|
|
4751
|
+
enum:
|
|
4752
|
+
- Extract
|
|
4753
|
+
- Transform
|
|
4754
|
+
- Load
|
|
4755
|
+
- ''
|
|
4756
|
+
description: |-
|
|
4757
|
+
Pipeline stage the event was recorded in. Empty when the event is not tied to
|
|
4758
|
+
a specific stage.
|
|
4759
|
+
x-enumDescriptions:
|
|
4760
|
+
Extract: While reading records or schema from the source.
|
|
4761
|
+
Transform: While reshaping records between source and destination.
|
|
4762
|
+
Load: While writing records or applying schema changes in the destination.
|
|
4763
|
+
'': Not tied to a specific pipeline stage.
|
|
4764
|
+
examples:
|
|
4765
|
+
- Extract
|
|
4766
|
+
metadata:
|
|
4767
|
+
description: |-
|
|
4768
|
+
Event-specific detail. For `Schema Drift` events this is an object with an
|
|
4769
|
+
`action` (e.g. `Table added`, `Table removed`, `Column added`, `Column removed`,
|
|
4770
|
+
`Column expanded`, `Column reduced`, `Column constraint updated`), the
|
|
4771
|
+
`resourceType` affected, and — for column-level drift — fields like `fieldName`,
|
|
4772
|
+
`oldValue`, `newValue`, or the applied DDL under `query`.
|
|
4773
|
+
oneOf:
|
|
4774
|
+
- title: object
|
|
4775
|
+
type: object
|
|
4776
|
+
additionalProperties: true
|
|
4777
|
+
- title: string
|
|
4778
|
+
type: string
|
|
4779
|
+
examples:
|
|
4780
|
+
- action: Table removed
|
|
4781
|
+
resourceType: Table
|
|
4782
|
+
responses:
|
|
4783
|
+
401-unauthorized:
|
|
4784
|
+
description: |-
|
|
4785
|
+
Unauthorized. The request lacks a valid bearer token, or the provided token
|
|
4786
|
+
failed to authenticate.
|
|
4787
|
+
|
|
4788
|
+
Note: the 401 response is produced by the auth middleware **before** the
|
|
4789
|
+
request reaches the endpoint handler, so it does **not** follow the
|
|
4790
|
+
standard `{errors: [...]}` envelope. Instead the body is a bare
|
|
4791
|
+
`{message: string}` object with no `code`, no `errors` array. Callers
|
|
4792
|
+
handling 401s should key off the HTTP status and the `message` string,
|
|
4793
|
+
not try to destructure an `errors[]`.
|
|
4794
|
+
content:
|
|
4795
|
+
application/json:
|
|
4796
|
+
schema:
|
|
4797
|
+
type: object
|
|
4798
|
+
properties:
|
|
4799
|
+
message:
|
|
4800
|
+
type: string
|
|
4801
|
+
description: |-
|
|
4802
|
+
Human-readable description of the auth failure. Known values:
|
|
4803
|
+
- `"Unauthorized"` — no `Authorization` header on the request.
|
|
4804
|
+
- `"Bearer Authentication Failed"` — header present but token
|
|
4805
|
+
is invalid, revoked, or expired.
|
|
4806
|
+
required:
|
|
4807
|
+
- message
|
|
4808
|
+
examples:
|
|
4809
|
+
missing_token:
|
|
4810
|
+
summary: No Authorization header sent
|
|
4811
|
+
value:
|
|
4812
|
+
message: Unauthorized
|
|
4813
|
+
invalid_token:
|
|
4814
|
+
summary: Bearer token invalid or revoked
|
|
4815
|
+
value:
|
|
4816
|
+
message: Bearer Authentication Failed
|
|
4817
|
+
422-unprocessable-entity:
|
|
4818
|
+
description: |
|
|
4819
|
+
Unprocessable entity. The request was well-formed but was unable to be followed due to semantic errors.
|
|
4820
|
+
content:
|
|
4821
|
+
application/json:
|
|
4822
|
+
schema:
|
|
4823
|
+
$ref: '#/components/schemas/Error'
|
|
4824
|
+
examples:
|
|
4825
|
+
default:
|
|
4826
|
+
value:
|
|
4827
|
+
errors:
|
|
4828
|
+
- code: unprocessable_entity
|
|
4829
|
+
message: The request could not be processed due to a semantic error.
|
|
4830
|
+
404-not-found:
|
|
4831
|
+
description: |
|
|
4832
|
+
Not found. The requested resource does not exist or is not visible to the caller.
|
|
4833
|
+
content:
|
|
4834
|
+
application/json:
|
|
4835
|
+
schema:
|
|
4836
|
+
$ref: '#/components/schemas/Error'
|
|
4837
|
+
examples:
|
|
4838
|
+
default:
|
|
4839
|
+
value:
|
|
4840
|
+
errors:
|
|
4841
|
+
- code: not_found
|
|
4842
|
+
message: The requested resource was not found.
|
|
4843
|
+
400-bad-request:
|
|
4844
|
+
description: |
|
|
4845
|
+
Bad request. The server could not understand the request because of malformed syntax or invalid parameters.
|
|
4846
|
+
content:
|
|
4847
|
+
application/json:
|
|
4848
|
+
schema:
|
|
4849
|
+
$ref: '#/components/schemas/Error'
|
|
4850
|
+
examples:
|
|
4851
|
+
default:
|
|
4852
|
+
value:
|
|
4853
|
+
errors:
|
|
4854
|
+
- code: invalid_request
|
|
4855
|
+
message: The request body failed validation.
|
|
4856
|
+
x-enable-proxy: true
|
|
4857
|
+
x-internal: false
|