@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/job.yml
ADDED
|
@@ -0,0 +1,2014 @@
|
|
|
1
|
+
openapi: 3.2.0
|
|
2
|
+
info:
|
|
3
|
+
version: 1.0.0
|
|
4
|
+
title: Jobs
|
|
5
|
+
description: API for querying Celigo job execution state, retrieving job families and artifacts, and cancelling or purging jobs.
|
|
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: Jobs
|
|
19
|
+
description: |-
|
|
20
|
+
Jobs are read-only records of flow, export, and import executions, created by the
|
|
21
|
+
platform whenever a run occurs. A parent flow job aggregates the run's counters while
|
|
22
|
+
child export/import jobs carry per-step counts, errors, and artifacts. Use these
|
|
23
|
+
endpoints to monitor running jobs, inspect job families, download result files, and
|
|
24
|
+
cancel or purge runs.
|
|
25
|
+
|
|
26
|
+
## Job schema
|
|
27
|
+
|
|
28
|
+
{% openapi-schemas spec="job" schemas="Job" grouped="true" %}
|
|
29
|
+
paths:
|
|
30
|
+
/v1/jobs:
|
|
31
|
+
get:
|
|
32
|
+
x-internal: false
|
|
33
|
+
operationId: listJobs
|
|
34
|
+
tags:
|
|
35
|
+
- Jobs
|
|
36
|
+
summary: List all jobs
|
|
37
|
+
description: |-
|
|
38
|
+
Returns jobs matching the given query-parameter filters, up to 1001 per
|
|
39
|
+
page in descending `createdAt` order. Use `createdAt_lte` on the last
|
|
40
|
+
record's `createdAt` (minus 1 ms) to page forward.
|
|
41
|
+
|
|
42
|
+
There are two query modes depending on the `type` parameter:
|
|
43
|
+
|
|
44
|
+
- **Parent jobs** (`type` omitted, `flow`, `retry`, or `bulk_retry`) —
|
|
45
|
+
pass at least one of `_integrationId`, `_flowId`, `_exportId`,
|
|
46
|
+
`_importId`, `_flowJobId`, `createdAt_gte`, or `createdAt_lte` to
|
|
47
|
+
scope the query. Omitting all filters returns all jobs in the account.
|
|
48
|
+
- **Child jobs** (`type=export` or `type=import`) — requires
|
|
49
|
+
`_flowJobId` or a resource ID filter (`_exportId` / `_importId`).
|
|
50
|
+
Returns the export/import sub-jobs within a parent flow job.
|
|
51
|
+
|
|
52
|
+
Date filters accept ISO 8601, plain date, or epoch milliseconds. When
|
|
53
|
+
combining `numError_gte`/`numError_lte` with `_integrationId`, use full
|
|
54
|
+
ISO 8601 with millis (plain-date format may be rejected). To page
|
|
55
|
+
forward, take the `createdAt` of the last record, subtract 1 ms, and
|
|
56
|
+
pass it as `createdAt_lte`.
|
|
57
|
+
|
|
58
|
+
Active jobs (`queued` or `running`) are pinned to the top of the first
|
|
59
|
+
page even when they fall outside the date filters; `canceling` jobs are
|
|
60
|
+
not pinned. Account for this when paging — the first page can contain
|
|
61
|
+
records older filters would otherwise exclude.
|
|
62
|
+
parameters:
|
|
63
|
+
- name: _integrationId
|
|
64
|
+
in: query
|
|
65
|
+
schema:
|
|
66
|
+
type: string
|
|
67
|
+
x-celigo-refModel: integrations
|
|
68
|
+
examples:
|
|
69
|
+
- 6842261335b64c0bcb308e4f
|
|
70
|
+
description: Filter by integration ID. Satisfies the required-param check.
|
|
71
|
+
- name: _exportId
|
|
72
|
+
in: query
|
|
73
|
+
schema:
|
|
74
|
+
type: string
|
|
75
|
+
x-celigo-refModel: exports
|
|
76
|
+
examples:
|
|
77
|
+
- 69f54d6a3469e3f5597848a1
|
|
78
|
+
description: Filter by export ID. Satisfies the required-param check.
|
|
79
|
+
- name: _importId
|
|
80
|
+
in: query
|
|
81
|
+
schema:
|
|
82
|
+
type: string
|
|
83
|
+
x-celigo-refModel: imports
|
|
84
|
+
examples:
|
|
85
|
+
- 69e9953d7a8373d88147b5ec
|
|
86
|
+
description: Filter by import ID. Satisfies the required-param check.
|
|
87
|
+
- name: _flowId
|
|
88
|
+
in: query
|
|
89
|
+
schema:
|
|
90
|
+
type: string
|
|
91
|
+
x-celigo-refModel: flows
|
|
92
|
+
examples:
|
|
93
|
+
- 69f54d6b7009ea11abad707a
|
|
94
|
+
description: Filter by flow ID. Satisfies the required-param check.
|
|
95
|
+
- name: _flowJobId
|
|
96
|
+
in: query
|
|
97
|
+
schema:
|
|
98
|
+
type: string
|
|
99
|
+
x-celigo-refModel: jobs
|
|
100
|
+
examples:
|
|
101
|
+
- 69f54d6f47185f8c7a500597
|
|
102
|
+
description: |-
|
|
103
|
+
Filter by parent flow-job ID. Satisfies the required-param check.
|
|
104
|
+
Required when querying child jobs (`type=export` or `type=import`).
|
|
105
|
+
- name: _flowId_in
|
|
106
|
+
in: query
|
|
107
|
+
schema:
|
|
108
|
+
type: string
|
|
109
|
+
examples:
|
|
110
|
+
- 69f54d6b7009ea11abad707a,69e83e7a75f7f8c14a12916e
|
|
111
|
+
description: |-
|
|
112
|
+
Comma-separated list of flow IDs to match. Works as an additional
|
|
113
|
+
filter but does **not** satisfy the required-param check alone.
|
|
114
|
+
`flowId_in` (without underscore) is accepted as an alias.
|
|
115
|
+
- name: status_in
|
|
116
|
+
in: query
|
|
117
|
+
schema:
|
|
118
|
+
type: string
|
|
119
|
+
examples:
|
|
120
|
+
- completed,failed
|
|
121
|
+
description: |-
|
|
122
|
+
Comma-separated list of status values to match (e.g.
|
|
123
|
+
`completed,failed`). Works as an additional filter but does
|
|
124
|
+
**not** satisfy the required-param check alone.
|
|
125
|
+
- name: createdAt_lte
|
|
126
|
+
in: query
|
|
127
|
+
schema:
|
|
128
|
+
type: string
|
|
129
|
+
examples:
|
|
130
|
+
- '2026-05-02T01:03:51.757Z'
|
|
131
|
+
description: |-
|
|
132
|
+
Return jobs created at or before this timestamp. Accepts ISO 8601,
|
|
133
|
+
plain date, or epoch milliseconds. Satisfies the required-param
|
|
134
|
+
check.
|
|
135
|
+
- name: createdAt_gte
|
|
136
|
+
in: query
|
|
137
|
+
schema:
|
|
138
|
+
type: string
|
|
139
|
+
examples:
|
|
140
|
+
- '2026-05-01T00:00:00.000Z'
|
|
141
|
+
description: |-
|
|
142
|
+
Return jobs created at or after this timestamp. Accepts ISO 8601,
|
|
143
|
+
plain date, or epoch milliseconds. Satisfies the required-param
|
|
144
|
+
check.
|
|
145
|
+
- name: status
|
|
146
|
+
in: query
|
|
147
|
+
schema:
|
|
148
|
+
type: string
|
|
149
|
+
enum:
|
|
150
|
+
- queued
|
|
151
|
+
- running
|
|
152
|
+
- completed
|
|
153
|
+
- failed
|
|
154
|
+
- canceled
|
|
155
|
+
- canceling
|
|
156
|
+
- retrying
|
|
157
|
+
x-enumDescriptions:
|
|
158
|
+
queued: Job is waiting to be picked up for execution.
|
|
159
|
+
running: Job is currently executing.
|
|
160
|
+
completed: Job finished successfully.
|
|
161
|
+
failed: Job finished with a fatal error.
|
|
162
|
+
canceled: Job was canceled by a user or the system.
|
|
163
|
+
canceling: Job cancellation has been requested but execution has not yet stopped.
|
|
164
|
+
retrying: Job is being retried after a previous failure.
|
|
165
|
+
description: Filter by job status.
|
|
166
|
+
- name: numSuccess_lte
|
|
167
|
+
in: query
|
|
168
|
+
schema:
|
|
169
|
+
type: integer
|
|
170
|
+
examples:
|
|
171
|
+
- 100
|
|
172
|
+
description: Filter to jobs with success count ≤ this value.
|
|
173
|
+
- name: numSuccess_gte
|
|
174
|
+
in: query
|
|
175
|
+
schema:
|
|
176
|
+
type: integer
|
|
177
|
+
examples:
|
|
178
|
+
- 1
|
|
179
|
+
description: Filter to jobs with success count ≥ this value.
|
|
180
|
+
- name: numIgnore_lte
|
|
181
|
+
in: query
|
|
182
|
+
schema:
|
|
183
|
+
type: integer
|
|
184
|
+
examples:
|
|
185
|
+
- 10
|
|
186
|
+
description: Filter to jobs with ignore count ≤ this value.
|
|
187
|
+
- name: numIgnore_gte
|
|
188
|
+
in: query
|
|
189
|
+
schema:
|
|
190
|
+
type: integer
|
|
191
|
+
examples:
|
|
192
|
+
- 1
|
|
193
|
+
description: Filter to jobs with ignore count ≥ this value.
|
|
194
|
+
- name: numError_gte
|
|
195
|
+
in: query
|
|
196
|
+
schema:
|
|
197
|
+
type: integer
|
|
198
|
+
examples:
|
|
199
|
+
- 1
|
|
200
|
+
description: |-
|
|
201
|
+
Filter to jobs with error count ≥ this value. When combined with
|
|
202
|
+
`_integrationId`, the query may reject plain-date `createdAt`
|
|
203
|
+
values — use full ISO 8601.
|
|
204
|
+
- name: numError_lte
|
|
205
|
+
in: query
|
|
206
|
+
schema:
|
|
207
|
+
type: integer
|
|
208
|
+
examples:
|
|
209
|
+
- 10
|
|
210
|
+
description: |-
|
|
211
|
+
Filter to jobs with error count ≤ this value. Same date-format
|
|
212
|
+
caveat as `numError_gte`.
|
|
213
|
+
- name: type
|
|
214
|
+
in: query
|
|
215
|
+
schema:
|
|
216
|
+
type: string
|
|
217
|
+
enum:
|
|
218
|
+
- flow
|
|
219
|
+
- export
|
|
220
|
+
- import
|
|
221
|
+
- retry
|
|
222
|
+
- bulk_retry
|
|
223
|
+
x-enumDescriptions:
|
|
224
|
+
flow: A parent flow-run job that orchestrates the full pipeline.
|
|
225
|
+
export: A child job for an export step within a flow run.
|
|
226
|
+
import: A child job for an import step within a flow run.
|
|
227
|
+
retry: A retry of a single failed record from a previous job.
|
|
228
|
+
bulk_retry: A bulk retry of multiple failed records from a previous job.
|
|
229
|
+
description: |-
|
|
230
|
+
Filter by job type. `flow`, `retry`, and `bulk_retry` are
|
|
231
|
+
parent-level jobs; `export` and `import` are child jobs (require
|
|
232
|
+
`_flowJobId` or a resource-ID filter). Unrecognized values silently
|
|
233
|
+
return an empty response.
|
|
234
|
+
responses:
|
|
235
|
+
'200':
|
|
236
|
+
description: Array of job records matching the filters.
|
|
237
|
+
content:
|
|
238
|
+
application/json:
|
|
239
|
+
schema:
|
|
240
|
+
type: array
|
|
241
|
+
items:
|
|
242
|
+
$ref: '#/components/schemas/Job'
|
|
243
|
+
examples:
|
|
244
|
+
parent_flow_jobs:
|
|
245
|
+
summary: Two completed flow runs
|
|
246
|
+
value:
|
|
247
|
+
- _id: 69f54d6f47185f8c7a500597
|
|
248
|
+
type: flow
|
|
249
|
+
status: completed
|
|
250
|
+
_integrationId: 6842261335b64c0bcb308e4f
|
|
251
|
+
_flowId: 69f54d6b7009ea11abad707a
|
|
252
|
+
_exportId: 69f54d6a3469e3f5597848a1
|
|
253
|
+
startedAt: '2026-05-02T01:03:43.640Z'
|
|
254
|
+
endedAt: '2026-05-02T01:03:51.757Z'
|
|
255
|
+
createdAt: '2026-05-02T01:03:43.640Z'
|
|
256
|
+
lastModified: '2026-05-02T01:03:51.757Z'
|
|
257
|
+
lastExecutedAt: '2026-05-02T01:03:51.757Z'
|
|
258
|
+
numSuccess: 10
|
|
259
|
+
numError: 10
|
|
260
|
+
numOpenError: 10
|
|
261
|
+
numResolved: 0
|
|
262
|
+
numIgnore: 0
|
|
263
|
+
numExport: 0
|
|
264
|
+
numPagesGenerated: 10
|
|
265
|
+
numPagesProcessed: 10
|
|
266
|
+
doneExporting: false
|
|
267
|
+
logMode: basic
|
|
268
|
+
flowExecutionGroupId: 70f3bd04a01142b29031e36ccff9242b
|
|
269
|
+
purgeAt: '2026-06-01T01:03:43.577Z'
|
|
270
|
+
clickhousePurgeAt: '2026-06-01T01:03:43.577Z'
|
|
271
|
+
- _id: 69e9820a12e2a80e73166a8a
|
|
272
|
+
type: flow
|
|
273
|
+
status: failed
|
|
274
|
+
_integrationId: 6842261335b64c0bcb308e4f
|
|
275
|
+
_flowId: 69f54d6b7009ea11abad707a
|
|
276
|
+
_exportId: 69f54d6a3469e3f5597848a1
|
|
277
|
+
startedAt: '2026-04-20T14:22:18.000Z'
|
|
278
|
+
endedAt: '2026-04-20T14:22:25.412Z'
|
|
279
|
+
createdAt: '2026-04-20T14:22:18.000Z'
|
|
280
|
+
lastModified: '2026-04-20T14:22:25.412Z'
|
|
281
|
+
lastExecutedAt: '2026-04-20T14:22:25.412Z'
|
|
282
|
+
numSuccess: 0
|
|
283
|
+
numError: 5
|
|
284
|
+
numOpenError: 5
|
|
285
|
+
numResolved: 0
|
|
286
|
+
numIgnore: 0
|
|
287
|
+
numExport: 0
|
|
288
|
+
numPagesGenerated: 1
|
|
289
|
+
numPagesProcessed: 1
|
|
290
|
+
doneExporting: true
|
|
291
|
+
logMode: basic
|
|
292
|
+
flowExecutionGroupId: a3b1c2d4e5f6071829304050
|
|
293
|
+
purgeAt: '2026-05-20T14:22:18.000Z'
|
|
294
|
+
'204':
|
|
295
|
+
description: No jobs match the given filters.
|
|
296
|
+
'400':
|
|
297
|
+
description: Required query parameters are missing or invalid.
|
|
298
|
+
content:
|
|
299
|
+
application/json:
|
|
300
|
+
schema:
|
|
301
|
+
$ref: '#/components/schemas/Error'
|
|
302
|
+
examples:
|
|
303
|
+
parent_job_missing_params:
|
|
304
|
+
summary: Parent job query missing required filter
|
|
305
|
+
value:
|
|
306
|
+
errors:
|
|
307
|
+
- code: invalid_query
|
|
308
|
+
message: For parent jobs, query parameters must contain either "_integrationId" or "_jobId" or "createdAt"
|
|
309
|
+
child_job_missing_params:
|
|
310
|
+
summary: Child job query missing required filter
|
|
311
|
+
value:
|
|
312
|
+
errors:
|
|
313
|
+
- code: invalid_query
|
|
314
|
+
message: For child jobs, query parameters must contain either "_flowJobId" or "resourceId"
|
|
315
|
+
invalid_status:
|
|
316
|
+
summary: Invalid status enum value
|
|
317
|
+
value:
|
|
318
|
+
errors:
|
|
319
|
+
- code: invalid_query_param
|
|
320
|
+
message: The query parameter "status" has invalid value.
|
|
321
|
+
'401':
|
|
322
|
+
$ref: '#/components/responses/401-unauthorized'
|
|
323
|
+
/v1/jobs/current:
|
|
324
|
+
post:
|
|
325
|
+
x-internal: false
|
|
326
|
+
operationId: listCurrentJobs
|
|
327
|
+
tags:
|
|
328
|
+
- Jobs
|
|
329
|
+
summary: List in-progress jobs (dashboard)
|
|
330
|
+
description: |-
|
|
331
|
+
Returns a paginated list of currently in-progress jobs for the dashboard -- jobs whose `status` is one of
|
|
332
|
+
`queued`, `running`, or `canceling`. Jobs that have reached a terminal state (`completed`, `failed`,
|
|
333
|
+
`canceled`, `retried`) are not returned; use `POST /v1/flows/runs/stats` for run history.
|
|
334
|
+
|
|
335
|
+
The request body contains all filters -- there are no query-string parameters. Narrow to a specific flow or
|
|
336
|
+
integration with `_flowIds` / `_integrationIds` (AND-combined).
|
|
337
|
+
requestBody:
|
|
338
|
+
required: true
|
|
339
|
+
content:
|
|
340
|
+
application/json:
|
|
341
|
+
schema:
|
|
342
|
+
$ref: '#/components/schemas/JobsCurrentRequest'
|
|
343
|
+
examples:
|
|
344
|
+
production_all:
|
|
345
|
+
summary: All in-progress production jobs
|
|
346
|
+
value: {}
|
|
347
|
+
specific_flow_queued:
|
|
348
|
+
summary: In-progress jobs for a specific flow
|
|
349
|
+
value:
|
|
350
|
+
_flowIds:
|
|
351
|
+
- 69497fc443fc1f9a03d31bd9
|
|
352
|
+
status:
|
|
353
|
+
- queued
|
|
354
|
+
- running
|
|
355
|
+
responses:
|
|
356
|
+
'200':
|
|
357
|
+
description: One page of in-progress jobs.
|
|
358
|
+
content:
|
|
359
|
+
application/json:
|
|
360
|
+
schema:
|
|
361
|
+
$ref: '#/components/schemas/JobsCurrentResponse'
|
|
362
|
+
examples:
|
|
363
|
+
one_page:
|
|
364
|
+
summary: One queued retry job — single page, so no pagingPostBody
|
|
365
|
+
value:
|
|
366
|
+
jobs:
|
|
367
|
+
- _id: 69e9958f815ae7eae3d9146b
|
|
368
|
+
type: retry
|
|
369
|
+
_importId: 69e9953d7a8373d88147b5ec
|
|
370
|
+
_flowId: 69e99544f3a2ac489d0f7953
|
|
371
|
+
status: queued
|
|
372
|
+
numSuccess: 0
|
|
373
|
+
numError: 0
|
|
374
|
+
numResolved: 0
|
|
375
|
+
numOpenError: 0
|
|
376
|
+
createdAt: '2026-04-23T03:44:15.515Z'
|
|
377
|
+
lastModified: '2026-04-23T03:44:15.532Z'
|
|
378
|
+
'204':
|
|
379
|
+
description: No in-progress jobs match the filter.
|
|
380
|
+
'400':
|
|
381
|
+
$ref: '#/components/responses/400-bad-request'
|
|
382
|
+
'401':
|
|
383
|
+
$ref: '#/components/responses/401-unauthorized'
|
|
384
|
+
x-celigo-ai-guidance:
|
|
385
|
+
- |-
|
|
386
|
+
Returns a paged collection of currently running jobs for the dashboard.
|
|
387
|
+
The request body supports filtering by integration, flow, status, and
|
|
388
|
+
application. The platform requires ``sandbox`` in the body; Ora is
|
|
389
|
+
production-only so it always sends ``false``.
|
|
390
|
+
/v1/flows/runs/stats:
|
|
391
|
+
post:
|
|
392
|
+
x-internal: false
|
|
393
|
+
operationId: getFlowRunsStats
|
|
394
|
+
tags:
|
|
395
|
+
- Jobs
|
|
396
|
+
summary: Get per-flow run statistics (dashboard aggregates)
|
|
397
|
+
description: |-
|
|
398
|
+
Returns **per-flow aggregate** run statistics — one element of `stats[]` per flow that has at least
|
|
399
|
+
one run matching the request filter. Each aggregate carries totals (`numRuns`, `numSuccess`,
|
|
400
|
+
`numError`, `numIgnore`), the currently-open error count (`numOpenError`), resolution attribution
|
|
401
|
+
(`numResolvedByAuto` / `numResolvedByUser`), average runtime (`avgRuntime`), and timestamps
|
|
402
|
+
(`lastExecutedAt`, `lastErrorAt`) plus a minimal inlined `flow{}` object for rendering.
|
|
403
|
+
|
|
404
|
+
The Celigo dashboard uses this to paint its "All flows" summary in one call. Filters (`_flowIds`,
|
|
405
|
+
`_integrationIds`, `time_gt`, `time_lte`, …) narrow which runs are rolled up into each aggregate —
|
|
406
|
+
they do **not** filter which flows appear; flows with zero matching runs are simply omitted.
|
|
407
|
+
|
|
408
|
+
**The window is the contract.** When `time_gt` is omitted the endpoint applies its default
|
|
409
|
+
window (approximately the last 24 hours) rather than aggregating all history — runs older than
|
|
410
|
+
the window silently drop out of every aggregate. Send `time_gt` explicitly for any other range.
|
|
411
|
+
|
|
412
|
+
For individual job records rather than aggregates, use `GET /v1/jobs?_flowId=...`. For in-progress
|
|
413
|
+
jobs, use `POST /v1/jobs/current`.
|
|
414
|
+
requestBody:
|
|
415
|
+
required: true
|
|
416
|
+
content:
|
|
417
|
+
application/json:
|
|
418
|
+
schema:
|
|
419
|
+
$ref: '#/components/schemas/FlowRunsStatsRequest'
|
|
420
|
+
examples:
|
|
421
|
+
default_window:
|
|
422
|
+
summary: Default window (approximately the last 24 hours)
|
|
423
|
+
value: {}
|
|
424
|
+
last_15d_all_flows:
|
|
425
|
+
summary: All flows, runs in the last 15 days
|
|
426
|
+
value:
|
|
427
|
+
time_gt: 1744070400000
|
|
428
|
+
last_24h_for_flow:
|
|
429
|
+
summary: One flow, runs in the last 24 hours
|
|
430
|
+
value:
|
|
431
|
+
_flowIds:
|
|
432
|
+
- 69497fc443fc1f9a03d31bd9
|
|
433
|
+
time_gt: 1745366400000
|
|
434
|
+
responses:
|
|
435
|
+
'200':
|
|
436
|
+
description: One page of per-flow aggregates.
|
|
437
|
+
content:
|
|
438
|
+
application/json:
|
|
439
|
+
schema:
|
|
440
|
+
$ref: '#/components/schemas/FlowRunsStatsResponse'
|
|
441
|
+
examples:
|
|
442
|
+
two_flows:
|
|
443
|
+
summary: Two flows — one healthy, one with open errors
|
|
444
|
+
value:
|
|
445
|
+
stats:
|
|
446
|
+
- _flowId: 69497fc443fc1f9a03d31bd9
|
|
447
|
+
_integrationId: 69496f01615f724066afaac2
|
|
448
|
+
numRuns: 91
|
|
449
|
+
numPages: 92
|
|
450
|
+
numSuccess: 184
|
|
451
|
+
numError: 0
|
|
452
|
+
numIgnore: 0
|
|
453
|
+
numOpenError: 3
|
|
454
|
+
numResolvedByAuto: 7
|
|
455
|
+
numResolvedByUser: 0
|
|
456
|
+
avgRuntime: 172327.86
|
|
457
|
+
lastExecutedAt: '2026-04-23T02:51:52.551Z'
|
|
458
|
+
lastErrorAt: '2026-04-21T10:51:13.221Z'
|
|
459
|
+
flow:
|
|
460
|
+
_id: 69497fc443fc1f9a03d31bd9
|
|
461
|
+
name: Shopee
|
|
462
|
+
_integrationId: 69496f01615f724066afaac2
|
|
463
|
+
integrationName: Shopee
|
|
464
|
+
- _flowId: 69e83e7a75f7f8c14a12916e
|
|
465
|
+
numRuns: 2
|
|
466
|
+
numPages: 8
|
|
467
|
+
numSuccess: 276
|
|
468
|
+
numError: 0
|
|
469
|
+
numIgnore: 0
|
|
470
|
+
numOpenError: 0
|
|
471
|
+
numResolvedByAuto: 0
|
|
472
|
+
numResolvedByUser: 0
|
|
473
|
+
avgRuntime: 20904.5
|
|
474
|
+
lastExecutedAt: '2026-04-22T03:27:00.491Z'
|
|
475
|
+
flow:
|
|
476
|
+
_id: 69e83e7a75f7f8c14a12916e
|
|
477
|
+
name: New flow
|
|
478
|
+
'204':
|
|
479
|
+
description: No runs match the filter on any flow within the queried window (the ~24-hour default when no `time_gt` was sent).
|
|
480
|
+
'400':
|
|
481
|
+
$ref: '#/components/responses/400-bad-request'
|
|
482
|
+
'401':
|
|
483
|
+
$ref: '#/components/responses/401-unauthorized'
|
|
484
|
+
/v1/jobs/family:
|
|
485
|
+
post:
|
|
486
|
+
x-internal: false
|
|
487
|
+
operationId: getJobFamilyBatch
|
|
488
|
+
tags:
|
|
489
|
+
- Jobs
|
|
490
|
+
summary: Batch-fetch job families
|
|
491
|
+
description: |-
|
|
492
|
+
Returns job families for an array of job ids, in one request. Each item in the response array has the same
|
|
493
|
+
shape as a single `GET /v1/jobs/{_id}/family` call (a parent job with inlined `children`).
|
|
494
|
+
|
|
495
|
+
**Size limit: 1000 ids per request.** The server rejects requests with more than 1000 entries with HTTP
|
|
496
|
+
**403** (not 400) and `{code: "invalid_request", message: "Number of objects in the request exceeds
|
|
497
|
+
maximum allowed limit 1000"}`. The Celigo UI chunks at 50 for its own UX reasons, but the API ceiling
|
|
498
|
+
is 1000.
|
|
499
|
+
|
|
500
|
+
**Mixed-id behavior (asymmetric):**
|
|
501
|
+
- Valid + unknown 24-hex ids in the same array → **200** with only the resolved entries; unknown ids are
|
|
502
|
+
silently dropped (no `errors[]` alongside).
|
|
503
|
+
- All ids unknown → **404** with `{errors: [{code: "invalid_ref", source: "internal", message: "Job not
|
|
504
|
+
found: <id>"}]}`.
|
|
505
|
+
- Any id that isn't a 24-char hex string anywhere in the array → **400** `invalid_ref "Please provide
|
|
506
|
+
a valid _id."` — the whole request fails.
|
|
507
|
+
- Duplicate ids are **deduped** server-side (same id ×N → one entry).
|
|
508
|
+
- Empty array `[]` or non-array body (e.g. `{}`) → **400** `invalid_request "Request body should be an
|
|
509
|
+
ObjectID array."`.
|
|
510
|
+
- Missing `Content-Type: application/json` → **415** `{message: "Content-Type should equal
|
|
511
|
+
application/json"}`.
|
|
512
|
+
|
|
513
|
+
The response array has no guaranteed ordering; match items by `_id` rather than by index. Unknown ids are
|
|
514
|
+
silently dropped -- callers that need to detect missing ids must diff the request and response id sets.
|
|
515
|
+
requestBody:
|
|
516
|
+
required: true
|
|
517
|
+
content:
|
|
518
|
+
application/json:
|
|
519
|
+
schema:
|
|
520
|
+
$ref: '#/components/schemas/JobsFamilyBatchRequest'
|
|
521
|
+
examples:
|
|
522
|
+
default:
|
|
523
|
+
value:
|
|
524
|
+
- 69e981ee18808f3e5ed1b2fd
|
|
525
|
+
- 69e9820a12e2a80e73166a8a
|
|
526
|
+
responses:
|
|
527
|
+
'200':
|
|
528
|
+
description: An array of job families, one per **resolved** id (unknown ids silently dropped).
|
|
529
|
+
content:
|
|
530
|
+
application/json:
|
|
531
|
+
schema:
|
|
532
|
+
type: array
|
|
533
|
+
items:
|
|
534
|
+
$ref: '#/components/schemas/JobWithChildren'
|
|
535
|
+
examples:
|
|
536
|
+
resolved_families:
|
|
537
|
+
summary: Families for both requested ids (children trimmed for brevity)
|
|
538
|
+
value:
|
|
539
|
+
- _id: 69e981ee18808f3e5ed1b2fd
|
|
540
|
+
type: flow
|
|
541
|
+
status: completed
|
|
542
|
+
_flowId: 69a9aa5c54e3d9bd11b86d82
|
|
543
|
+
createdAt: '2026-04-23T02:51:39.812Z'
|
|
544
|
+
lastModified: '2026-04-23T02:52:10.115Z'
|
|
545
|
+
startedAt: '2026-04-23T02:51:40.000Z'
|
|
546
|
+
endedAt: '2026-04-23T02:52:10.000Z'
|
|
547
|
+
numSuccess: 42
|
|
548
|
+
numError: 0
|
|
549
|
+
numIgnore: 1
|
|
550
|
+
children: []
|
|
551
|
+
- _id: 69e9820a12e2a80e73166a8a
|
|
552
|
+
type: flow
|
|
553
|
+
status: failed
|
|
554
|
+
_integrationId: 6842261335b64c0bcb308e4f
|
|
555
|
+
_flowId: 69f54d6b7009ea11abad707a
|
|
556
|
+
_exportId: 69f54d6a3469e3f5597848a1
|
|
557
|
+
createdAt: '2026-04-20T14:22:17.804Z'
|
|
558
|
+
lastModified: '2026-04-20T14:22:25.598Z'
|
|
559
|
+
startedAt: '2026-04-20T14:22:18.000Z'
|
|
560
|
+
endedAt: '2026-04-20T14:22:25.412Z'
|
|
561
|
+
numSuccess: 0
|
|
562
|
+
numError: 5
|
|
563
|
+
numOpenError: 5
|
|
564
|
+
numResolved: 0
|
|
565
|
+
numIgnore: 0
|
|
566
|
+
children: []
|
|
567
|
+
'400':
|
|
568
|
+
$ref: '#/components/responses/400-bad-request'
|
|
569
|
+
'401':
|
|
570
|
+
$ref: '#/components/responses/401-unauthorized'
|
|
571
|
+
'403':
|
|
572
|
+
$ref: '#/components/responses/403-forbidden'
|
|
573
|
+
'404':
|
|
574
|
+
$ref: '#/components/responses/404-not-found'
|
|
575
|
+
'415':
|
|
576
|
+
description: 'Returned when the request is missing the `Content-Type: application/json` header.'
|
|
577
|
+
content:
|
|
578
|
+
application/json:
|
|
579
|
+
schema:
|
|
580
|
+
$ref: '#/components/schemas/Error'
|
|
581
|
+
/v1/jobs/{_id}:
|
|
582
|
+
get:
|
|
583
|
+
x-internal: false
|
|
584
|
+
operationId: getJobById
|
|
585
|
+
tags:
|
|
586
|
+
- Jobs
|
|
587
|
+
summary: Get a job
|
|
588
|
+
description: |-
|
|
589
|
+
Returns a single job record. Works for both parent jobs (`type=flow`, `retry`, `bulk_retry`) and child jobs
|
|
590
|
+
(`type=export`, `type=import`). For the full parent+children view of a flow run, use
|
|
591
|
+
`GET /v1/jobs/{_id}/family` instead. For a multi-job lookup, use `POST /v1/jobs/family`.
|
|
592
|
+
parameters:
|
|
593
|
+
- name: _id
|
|
594
|
+
in: path
|
|
595
|
+
required: true
|
|
596
|
+
description: Job id.
|
|
597
|
+
schema:
|
|
598
|
+
type: string
|
|
599
|
+
format: objectId
|
|
600
|
+
x-celigo-refModel: jobs
|
|
601
|
+
examples:
|
|
602
|
+
- 69f54d6f47185f8c7a500597
|
|
603
|
+
responses:
|
|
604
|
+
'200':
|
|
605
|
+
description: The job record.
|
|
606
|
+
content:
|
|
607
|
+
application/json:
|
|
608
|
+
schema:
|
|
609
|
+
$ref: '#/components/schemas/Job'
|
|
610
|
+
examples:
|
|
611
|
+
completed_flow_job:
|
|
612
|
+
summary: A completed parent flow job
|
|
613
|
+
value:
|
|
614
|
+
_id: 69f54d6f47185f8c7a500597
|
|
615
|
+
type: flow
|
|
616
|
+
status: completed
|
|
617
|
+
_integrationId: 6842261335b64c0bcb308e4f
|
|
618
|
+
_flowId: 69f54d6b7009ea11abad707a
|
|
619
|
+
_exportId: 69f54d6a3469e3f5597848a1
|
|
620
|
+
startedAt: '2026-05-02T01:03:43.640Z'
|
|
621
|
+
endedAt: '2026-05-02T01:03:51.757Z'
|
|
622
|
+
createdAt: '2026-05-02T01:03:43.640Z'
|
|
623
|
+
lastModified: '2026-05-02T01:03:51.757Z'
|
|
624
|
+
lastExecutedAt: '2026-05-02T01:03:51.757Z'
|
|
625
|
+
numSuccess: 10
|
|
626
|
+
numError: 10
|
|
627
|
+
numOpenError: 10
|
|
628
|
+
numResolved: 0
|
|
629
|
+
numIgnore: 0
|
|
630
|
+
numExport: 0
|
|
631
|
+
numPagesGenerated: 10
|
|
632
|
+
numPagesProcessed: 10
|
|
633
|
+
doneExporting: false
|
|
634
|
+
logMode: basic
|
|
635
|
+
flowExecutionGroupId: 70f3bd04a01142b29031e36ccff9242b
|
|
636
|
+
purgeAt: '2026-06-01T01:03:43.577Z'
|
|
637
|
+
clickhousePurgeAt: '2026-06-01T01:03:43.577Z'
|
|
638
|
+
'400':
|
|
639
|
+
description: The `_id` is not a valid ObjectId.
|
|
640
|
+
content:
|
|
641
|
+
application/json:
|
|
642
|
+
schema:
|
|
643
|
+
$ref: '#/components/schemas/Error'
|
|
644
|
+
examples:
|
|
645
|
+
invalid_ref:
|
|
646
|
+
summary: Invalid ObjectId format
|
|
647
|
+
value:
|
|
648
|
+
errors:
|
|
649
|
+
- code: invalid_ref
|
|
650
|
+
message: Please provide a valid _jobId.
|
|
651
|
+
'401':
|
|
652
|
+
$ref: '#/components/responses/401-unauthorized'
|
|
653
|
+
'404':
|
|
654
|
+
description: No job exists with the given ID.
|
|
655
|
+
content:
|
|
656
|
+
application/json:
|
|
657
|
+
schema:
|
|
658
|
+
$ref: '#/components/schemas/Error'
|
|
659
|
+
examples:
|
|
660
|
+
not_found:
|
|
661
|
+
summary: Job does not exist
|
|
662
|
+
value:
|
|
663
|
+
errors:
|
|
664
|
+
- code: invalid_ref
|
|
665
|
+
message: Job not found.
|
|
666
|
+
/v1/jobs/{_id}/family:
|
|
667
|
+
get:
|
|
668
|
+
x-internal: false
|
|
669
|
+
operationId: getJobFamily
|
|
670
|
+
tags:
|
|
671
|
+
- Jobs
|
|
672
|
+
summary: Get a job and its children
|
|
673
|
+
description: |-
|
|
674
|
+
Returns a single job record (as parent) with all of its child jobs inlined under `children`.
|
|
675
|
+
|
|
676
|
+
A "job family" maps to one flow execution: the parent is a `type: "flow"` job and the children are the
|
|
677
|
+
`export` / `import` / `retry` jobs that ran as part of it. For non-flow jobs (a standalone export run, or a
|
|
678
|
+
retry), `children` may be empty.
|
|
679
|
+
|
|
680
|
+
For fetching many families at once, batch via `POST /v1/jobs/family`. The parent's counters may not include
|
|
681
|
+
bulk-retry jobs spawned after the initial run -- aggregate across `children` for an accurate per-run summary.
|
|
682
|
+
parameters:
|
|
683
|
+
- name: _id
|
|
684
|
+
in: path
|
|
685
|
+
required: true
|
|
686
|
+
description: Job id. Typically a parent flow job id, but any job id is accepted.
|
|
687
|
+
schema:
|
|
688
|
+
type: string
|
|
689
|
+
format: objectId
|
|
690
|
+
x-celigo-refModel: jobs
|
|
691
|
+
examples:
|
|
692
|
+
- 69f54d6f47185f8c7a500597
|
|
693
|
+
responses:
|
|
694
|
+
'200':
|
|
695
|
+
description: Job family (parent with inlined children).
|
|
696
|
+
content:
|
|
697
|
+
application/json:
|
|
698
|
+
schema:
|
|
699
|
+
$ref: '#/components/schemas/JobWithChildren'
|
|
700
|
+
examples:
|
|
701
|
+
flow_with_children:
|
|
702
|
+
summary: Flow run with export and import children
|
|
703
|
+
value:
|
|
704
|
+
_id: 69f54d6f47185f8c7a500597
|
|
705
|
+
type: flow
|
|
706
|
+
status: completed
|
|
707
|
+
_integrationId: 6842261335b64c0bcb308e4f
|
|
708
|
+
_flowId: 69f54d6b7009ea11abad707a
|
|
709
|
+
_exportId: 69f54d6a3469e3f5597848a1
|
|
710
|
+
startedAt: '2026-05-02T01:03:43.640Z'
|
|
711
|
+
endedAt: '2026-05-02T01:03:51.757Z'
|
|
712
|
+
createdAt: '2026-05-02T01:03:43.640Z'
|
|
713
|
+
lastModified: '2026-05-02T01:03:51.757Z'
|
|
714
|
+
lastExecutedAt: '2026-05-02T01:03:51.757Z'
|
|
715
|
+
numSuccess: 10
|
|
716
|
+
numError: 10
|
|
717
|
+
numOpenError: 10
|
|
718
|
+
numResolved: 0
|
|
719
|
+
numIgnore: 0
|
|
720
|
+
numExport: 0
|
|
721
|
+
numPagesGenerated: 10
|
|
722
|
+
numPagesProcessed: 10
|
|
723
|
+
doneExporting: false
|
|
724
|
+
logMode: basic
|
|
725
|
+
flowExecutionGroupId: 70f3bd04a01142b29031e36ccff9242b
|
|
726
|
+
purgeAt: '2026-06-01T01:03:43.577Z'
|
|
727
|
+
clickhousePurgeAt: '2026-06-01T01:03:43.577Z'
|
|
728
|
+
children:
|
|
729
|
+
- _id: 69f54d6f47185f8c7a5005e9
|
|
730
|
+
type: export
|
|
731
|
+
status: completed
|
|
732
|
+
_parentJobId: 69f54d6f47185f8c7a500597
|
|
733
|
+
_expOrImpId: 69f54d6a3469e3f5597848a1
|
|
734
|
+
startedAt: '2026-05-02T01:03:43.813Z'
|
|
735
|
+
endedAt: '2026-05-02T01:03:49.930Z'
|
|
736
|
+
createdAt: '2026-05-02T01:03:43.813Z'
|
|
737
|
+
lastModified: '2026-05-02T01:03:49.930Z'
|
|
738
|
+
lastExecutedAt: '2026-05-02T01:03:49.930Z'
|
|
739
|
+
numSuccess: 10
|
|
740
|
+
numError: 0
|
|
741
|
+
numOpenError: 0
|
|
742
|
+
numResolved: 0
|
|
743
|
+
numIgnore: 0
|
|
744
|
+
numExport: 0
|
|
745
|
+
numPagesGenerated: 10
|
|
746
|
+
numPagesProcessed: 0
|
|
747
|
+
logMode: basic
|
|
748
|
+
purgeAt: '2026-06-01T01:03:43.577Z'
|
|
749
|
+
clickhousePurgeAt: '2026-06-01T01:03:43.577Z'
|
|
750
|
+
- _id: 69f54d6f47185f8c7a500611
|
|
751
|
+
type: import
|
|
752
|
+
status: completed
|
|
753
|
+
_parentJobId: 69f54d6f47185f8c7a500597
|
|
754
|
+
_expOrImpId: 69f54d6c1e7f3a22cc7848b2
|
|
755
|
+
startedAt: '2026-05-02T01:03:43.948Z'
|
|
756
|
+
endedAt: '2026-05-02T01:03:51.736Z'
|
|
757
|
+
createdAt: '2026-05-02T01:03:43.948Z'
|
|
758
|
+
lastModified: '2026-05-02T01:03:51.736Z'
|
|
759
|
+
lastExecutedAt: '2026-05-02T01:03:51.735Z'
|
|
760
|
+
numSuccess: 0
|
|
761
|
+
numError: 10
|
|
762
|
+
numOpenError: 10
|
|
763
|
+
numResolved: 0
|
|
764
|
+
numIgnore: 0
|
|
765
|
+
numExport: 0
|
|
766
|
+
numPagesGenerated: 0
|
|
767
|
+
numPagesProcessed: 10
|
|
768
|
+
logMode: basic
|
|
769
|
+
purgeAt: '2026-06-01T01:03:43.577Z'
|
|
770
|
+
clickhousePurgeAt: '2026-06-01T01:03:43.577Z'
|
|
771
|
+
'401':
|
|
772
|
+
$ref: '#/components/responses/401-unauthorized'
|
|
773
|
+
'404':
|
|
774
|
+
$ref: '#/components/responses/404-not-found'
|
|
775
|
+
/v1/jobs/{_id}/cancel:
|
|
776
|
+
put:
|
|
777
|
+
x-internal: false
|
|
778
|
+
operationId: cancelJob
|
|
779
|
+
tags:
|
|
780
|
+
- Jobs
|
|
781
|
+
summary: Cancel a job
|
|
782
|
+
description: |-
|
|
783
|
+
Requests cancellation of a running or queued job. The job's `status` transitions to `canceling` and, once the
|
|
784
|
+
platform has stopped in-flight work, to `canceled`. This is **not** synchronous — the response returns the
|
|
785
|
+
updated job record with `status: "canceling"`; consumers should poll (e.g. `GET /v1/jobs/{_id}`) to observe
|
|
786
|
+
the final `canceled` state.
|
|
787
|
+
|
|
788
|
+
Only jobs that are still in progress (`queued`, `running`, `retrying`) can be canceled. Canceling a job
|
|
789
|
+
that is already terminal returns an error.
|
|
790
|
+
|
|
791
|
+
Cancel at the flow-run (parent) level rather than individual export/import children -- child cancellations
|
|
792
|
+
can leave the parent in an inconsistent state.
|
|
793
|
+
parameters:
|
|
794
|
+
- name: _id
|
|
795
|
+
in: path
|
|
796
|
+
required: true
|
|
797
|
+
description: Job id to cancel.
|
|
798
|
+
schema:
|
|
799
|
+
type: string
|
|
800
|
+
format: objectId
|
|
801
|
+
x-celigo-refModel: jobs
|
|
802
|
+
examples:
|
|
803
|
+
- 69e9958f815ae7eae3d9146b
|
|
804
|
+
responses:
|
|
805
|
+
'200':
|
|
806
|
+
description: 'Updated job record with `status: "canceling"`.'
|
|
807
|
+
content:
|
|
808
|
+
application/json:
|
|
809
|
+
schema:
|
|
810
|
+
$ref: '#/components/schemas/Job'
|
|
811
|
+
examples:
|
|
812
|
+
canceling:
|
|
813
|
+
summary: Queued retry job transitioning to canceling
|
|
814
|
+
value:
|
|
815
|
+
_id: 69e9958f815ae7eae3d9146b
|
|
816
|
+
type: retry
|
|
817
|
+
_importId: 69e9953d7a8373d88147b5ec
|
|
818
|
+
_flowId: 69e99544f3a2ac489d0f7953
|
|
819
|
+
status: canceling
|
|
820
|
+
numSuccess: 0
|
|
821
|
+
numError: 0
|
|
822
|
+
numResolved: 0
|
|
823
|
+
numOpenError: 0
|
|
824
|
+
createdAt: '2026-04-23T03:44:15.515Z'
|
|
825
|
+
lastModified: '2026-04-23T03:45:02.118Z'
|
|
826
|
+
'400':
|
|
827
|
+
$ref: '#/components/responses/400-bad-request'
|
|
828
|
+
'401':
|
|
829
|
+
$ref: '#/components/responses/401-unauthorized'
|
|
830
|
+
'403':
|
|
831
|
+
description: |-
|
|
832
|
+
The job is already in a terminal state and cannot be canceled.
|
|
833
|
+
Error code `job_already_ended`; the message names the job's current
|
|
834
|
+
terminal state.
|
|
835
|
+
content:
|
|
836
|
+
application/json:
|
|
837
|
+
schema:
|
|
838
|
+
$ref: '#/components/schemas/Error'
|
|
839
|
+
examples:
|
|
840
|
+
job_already_ended:
|
|
841
|
+
summary: Cancel attempted on a job that already ended
|
|
842
|
+
value:
|
|
843
|
+
errors:
|
|
844
|
+
- code: job_already_ended
|
|
845
|
+
message: The job is already in failed state.
|
|
846
|
+
source: internal
|
|
847
|
+
'404':
|
|
848
|
+
$ref: '#/components/responses/404-not-found'
|
|
849
|
+
/v1/jobs/{_id}/files/signedURL:
|
|
850
|
+
post:
|
|
851
|
+
x-internal: false
|
|
852
|
+
operationId: getJobFilesSignedUrl
|
|
853
|
+
tags:
|
|
854
|
+
- Jobs
|
|
855
|
+
summary: Get signed URL(s) to download job files
|
|
856
|
+
description: |-
|
|
857
|
+
Returns short-lived S3 pre-signed URLs for downloading files produced by the job (e.g. the rows exported to
|
|
858
|
+
a CSV, an error-record dump, or a page-processor artifact). The URLs are typically valid for ~15 minutes.
|
|
859
|
+
|
|
860
|
+
If `fileIds` is omitted in the request body, all of the job's current file artifacts are returned. If
|
|
861
|
+
provided, only the matching files are included.
|
|
862
|
+
|
|
863
|
+
Inspect the job's `files[]` array first (via `GET /v1/jobs/{_id}`) to discover available file IDs. Jobs
|
|
864
|
+
with no files (common for `import` child jobs or jobs past `purgeAt`) return `204 No Content`. File ids
|
|
865
|
+
are registered per job: if none of the requested `fileIds` are registered to this job (e.g. the file id
|
|
866
|
+
belongs to a different job's run), the endpoint also returns `204 No Content` with an empty body rather
|
|
867
|
+
than an error. The URLs expire after approximately 15 minutes -- fetch immediately, do not persist.
|
|
868
|
+
parameters:
|
|
869
|
+
- name: _id
|
|
870
|
+
in: path
|
|
871
|
+
required: true
|
|
872
|
+
description: Job id whose files should be downloaded.
|
|
873
|
+
schema:
|
|
874
|
+
type: string
|
|
875
|
+
format: objectId
|
|
876
|
+
x-celigo-refModel: jobs
|
|
877
|
+
examples:
|
|
878
|
+
- 69f54d6f47185f8c7a500597
|
|
879
|
+
requestBody:
|
|
880
|
+
required: false
|
|
881
|
+
content:
|
|
882
|
+
application/json:
|
|
883
|
+
schema:
|
|
884
|
+
$ref: '#/components/schemas/JobFilesSignedUrlRequest'
|
|
885
|
+
examples:
|
|
886
|
+
all_files:
|
|
887
|
+
summary: Download every file for the job
|
|
888
|
+
value: {}
|
|
889
|
+
specific_file:
|
|
890
|
+
summary: Download a specific file by id
|
|
891
|
+
value:
|
|
892
|
+
fileIds:
|
|
893
|
+
- 694b97c4f4f1f4a1b9d9e001
|
|
894
|
+
responses:
|
|
895
|
+
'201':
|
|
896
|
+
description: One or more signed URLs.
|
|
897
|
+
content:
|
|
898
|
+
application/json:
|
|
899
|
+
schema:
|
|
900
|
+
$ref: '#/components/schemas/JobFilesSignedUrlResponse'
|
|
901
|
+
examples:
|
|
902
|
+
single_file:
|
|
903
|
+
summary: One requested file — signedURLs array with one element
|
|
904
|
+
value:
|
|
905
|
+
signedURLs:
|
|
906
|
+
- https://integrator-templates.s3.us-east-1.amazonaws.com/694b97c4f4f1f4a1b9d9e001.csv?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=900&X-Amz-Signature=...
|
|
907
|
+
'204':
|
|
908
|
+
description: |-
|
|
909
|
+
Job has no downloadable files, or none of the requested `fileIds` are registered to this job; the
|
|
910
|
+
response body is empty.
|
|
911
|
+
'400':
|
|
912
|
+
$ref: '#/components/responses/400-bad-request'
|
|
913
|
+
'401':
|
|
914
|
+
$ref: '#/components/responses/401-unauthorized'
|
|
915
|
+
'404':
|
|
916
|
+
$ref: '#/components/responses/404-not-found'
|
|
917
|
+
/v1/jobs/{_id}/files:
|
|
918
|
+
delete:
|
|
919
|
+
x-internal: false
|
|
920
|
+
operationId: purgeJobFiles
|
|
921
|
+
tags:
|
|
922
|
+
- Jobs
|
|
923
|
+
summary: Purge a job's stored files
|
|
924
|
+
description: |-
|
|
925
|
+
Deletes **all** file artifacts associated with the job (exported rows, error-record dumps, page-processor
|
|
926
|
+
artifacts, etc.) from underlying storage. After a successful call, `GET /v1/jobs/{_id}` will show an empty
|
|
927
|
+
`files[]` array and `POST /v1/jobs/{_id}/files/signedURL` will return `204 No Content`.
|
|
928
|
+
|
|
929
|
+
The job record itself is retained -- only the files are purged. This is irreversible. The platform also
|
|
930
|
+
purges files automatically at `purgeAt` / `clickhousePurgeAt`; manual purge is only needed for
|
|
931
|
+
storage-quota management or compliance workflows.
|
|
932
|
+
parameters:
|
|
933
|
+
- name: _id
|
|
934
|
+
in: path
|
|
935
|
+
required: true
|
|
936
|
+
description: Job id whose files should be purged.
|
|
937
|
+
schema:
|
|
938
|
+
type: string
|
|
939
|
+
format: objectId
|
|
940
|
+
x-celigo-refModel: jobs
|
|
941
|
+
examples:
|
|
942
|
+
- 69f54d6f47185f8c7a500597
|
|
943
|
+
responses:
|
|
944
|
+
'204':
|
|
945
|
+
description: Files purged successfully.
|
|
946
|
+
'401':
|
|
947
|
+
$ref: '#/components/responses/401-unauthorized'
|
|
948
|
+
'404':
|
|
949
|
+
$ref: '#/components/responses/404-not-found'
|
|
950
|
+
/v1/jobs/{_id}/diagnostics:
|
|
951
|
+
get:
|
|
952
|
+
x-internal: false
|
|
953
|
+
operationId: getJobDiagnostics
|
|
954
|
+
tags:
|
|
955
|
+
- Jobs
|
|
956
|
+
summary: Get a signed URL for job diagnostics
|
|
957
|
+
description: |-
|
|
958
|
+
Returns a short-lived S3 pre-signed URL pointing to a diagnostic archive (`.zip`) for the given job. The
|
|
959
|
+
archive contains server-side traces/logs that Celigo support uses to debug execution failures.
|
|
960
|
+
|
|
961
|
+
The URL is typically valid for ~15 minutes (enforced by S3). Consumers should fetch the archive immediately
|
|
962
|
+
rather than storing the URL.
|
|
963
|
+
|
|
964
|
+
This is distinct from flow execution logs -- use `GET /v1/flows/{_id}/jobs/{_jobId}/logs` for step-level
|
|
965
|
+
execution logs. Jobs with no diagnostics (very recent, or past `purgeAt`) return 204.
|
|
966
|
+
parameters:
|
|
967
|
+
- name: _id
|
|
968
|
+
in: path
|
|
969
|
+
required: true
|
|
970
|
+
description: Job id.
|
|
971
|
+
schema:
|
|
972
|
+
type: string
|
|
973
|
+
format: objectId
|
|
974
|
+
x-celigo-refModel: jobs
|
|
975
|
+
examples:
|
|
976
|
+
- 69e981ee18808f3e5ed1b2fd
|
|
977
|
+
responses:
|
|
978
|
+
'200':
|
|
979
|
+
description: Signed URL for the diagnostics archive.
|
|
980
|
+
content:
|
|
981
|
+
application/json:
|
|
982
|
+
schema:
|
|
983
|
+
$ref: '#/components/schemas/JobDiagnosticsResponse'
|
|
984
|
+
examples:
|
|
985
|
+
default:
|
|
986
|
+
value:
|
|
987
|
+
signedURL: https://integrator-templates.s3.us-east-1.amazonaws.com/diagnostics-69e981ee18808f3e5ed1b2fd.zip?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=900&X-Amz-Signature=...
|
|
988
|
+
'204':
|
|
989
|
+
description: No diagnostics available for this job (archive may be absent or purged).
|
|
990
|
+
'400':
|
|
991
|
+
description: |-
|
|
992
|
+
The job does not support diagnostics downloads (`invalid_request`) —
|
|
993
|
+
diagnostics can only be downloaded for jobs with an associated
|
|
994
|
+
diagnostics archive.
|
|
995
|
+
content:
|
|
996
|
+
application/json:
|
|
997
|
+
schema:
|
|
998
|
+
$ref: '#/components/schemas/Error'
|
|
999
|
+
'401':
|
|
1000
|
+
$ref: '#/components/responses/401-unauthorized'
|
|
1001
|
+
'404':
|
|
1002
|
+
$ref: '#/components/responses/404-not-found'
|
|
1003
|
+
/v1/flows/{_id}/jobs/latest:
|
|
1004
|
+
get:
|
|
1005
|
+
x-internal: false
|
|
1006
|
+
operationId: getLatestFlowJobs
|
|
1007
|
+
tags:
|
|
1008
|
+
- Jobs
|
|
1009
|
+
summary: Get the most recent job(s) for a flow
|
|
1010
|
+
description: |-
|
|
1011
|
+
Returns the most recent job record(s) for the given flow. Typically one entry (the latest flow run), though
|
|
1012
|
+
the platform may include related retry jobs depending on account configuration. For a richer parent+children
|
|
1013
|
+
view, feed the returned `_id` into `GET /v1/jobs/{_id}/family`.
|
|
1014
|
+
parameters:
|
|
1015
|
+
- name: _id
|
|
1016
|
+
in: path
|
|
1017
|
+
required: true
|
|
1018
|
+
description: Flow id.
|
|
1019
|
+
schema:
|
|
1020
|
+
type: string
|
|
1021
|
+
format: objectId
|
|
1022
|
+
x-celigo-refModel: flows
|
|
1023
|
+
examples:
|
|
1024
|
+
- 69f54d6b7009ea11abad707a
|
|
1025
|
+
- $ref: '#/components/parameters/Include'
|
|
1026
|
+
- $ref: '#/components/parameters/Exclude'
|
|
1027
|
+
responses:
|
|
1028
|
+
'200':
|
|
1029
|
+
description: Most recent job(s) for the flow. May be a single-element array.
|
|
1030
|
+
content:
|
|
1031
|
+
application/json:
|
|
1032
|
+
schema:
|
|
1033
|
+
type: array
|
|
1034
|
+
items:
|
|
1035
|
+
$ref: '#/components/schemas/Job'
|
|
1036
|
+
examples:
|
|
1037
|
+
latest_run:
|
|
1038
|
+
summary: Most recent flow run
|
|
1039
|
+
value:
|
|
1040
|
+
- _id: 69f54d6f47185f8c7a500597
|
|
1041
|
+
type: flow
|
|
1042
|
+
status: completed
|
|
1043
|
+
_integrationId: 6842261335b64c0bcb308e4f
|
|
1044
|
+
_flowId: 69f54d6b7009ea11abad707a
|
|
1045
|
+
_exportId: 69f54d6a3469e3f5597848a1
|
|
1046
|
+
startedAt: '2026-05-02T01:03:43.640Z'
|
|
1047
|
+
endedAt: '2026-05-02T01:03:51.757Z'
|
|
1048
|
+
createdAt: '2026-05-02T01:03:43.640Z'
|
|
1049
|
+
lastModified: '2026-05-02T01:03:51.757Z'
|
|
1050
|
+
lastExecutedAt: '2026-05-02T01:03:51.757Z'
|
|
1051
|
+
numSuccess: 10
|
|
1052
|
+
numError: 0
|
|
1053
|
+
numOpenError: 0
|
|
1054
|
+
numResolved: 0
|
|
1055
|
+
numIgnore: 0
|
|
1056
|
+
numPagesGenerated: 10
|
|
1057
|
+
numPagesProcessed: 10
|
|
1058
|
+
doneExporting: true
|
|
1059
|
+
logMode: basic
|
|
1060
|
+
flowExecutionGroupId: 70f3bd04a01142b29031e36ccff9242b
|
|
1061
|
+
purgeAt: '2026-06-01T01:03:43.577Z'
|
|
1062
|
+
'204':
|
|
1063
|
+
description: The flow has no recorded runs.
|
|
1064
|
+
'401':
|
|
1065
|
+
$ref: '#/components/responses/401-unauthorized'
|
|
1066
|
+
'404':
|
|
1067
|
+
$ref: '#/components/responses/404-not-found'
|
|
1068
|
+
/v1/integrations/{_id}/jobs/latest:
|
|
1069
|
+
get:
|
|
1070
|
+
x-internal: false
|
|
1071
|
+
operationId: getLatestIntegrationJobs
|
|
1072
|
+
tags:
|
|
1073
|
+
- Jobs
|
|
1074
|
+
summary: Get the most recent job(s) for an integration
|
|
1075
|
+
description: |-
|
|
1076
|
+
Returns the most recent job record(s) across all flows in the given integration. Useful for a top-level
|
|
1077
|
+
status check on an integration. The result is not filtered by status -- inspect each entry's `status` to
|
|
1078
|
+
distinguish success from failure.
|
|
1079
|
+
parameters:
|
|
1080
|
+
- name: _id
|
|
1081
|
+
in: path
|
|
1082
|
+
required: true
|
|
1083
|
+
description: Integration id.
|
|
1084
|
+
schema:
|
|
1085
|
+
type: string
|
|
1086
|
+
format: objectId
|
|
1087
|
+
x-celigo-refModel: integrations
|
|
1088
|
+
examples:
|
|
1089
|
+
- 6842261335b64c0bcb308e4f
|
|
1090
|
+
responses:
|
|
1091
|
+
'200':
|
|
1092
|
+
description: Most recent job(s) for the integration.
|
|
1093
|
+
content:
|
|
1094
|
+
application/json:
|
|
1095
|
+
schema:
|
|
1096
|
+
type: array
|
|
1097
|
+
items:
|
|
1098
|
+
$ref: '#/components/schemas/Job'
|
|
1099
|
+
examples:
|
|
1100
|
+
latest_across_flows:
|
|
1101
|
+
summary: Most recent jobs from two flows in the integration
|
|
1102
|
+
value:
|
|
1103
|
+
- _id: 69f54d6f47185f8c7a500597
|
|
1104
|
+
type: flow
|
|
1105
|
+
status: completed
|
|
1106
|
+
_integrationId: 6842261335b64c0bcb308e4f
|
|
1107
|
+
_flowId: 69f54d6b7009ea11abad707a
|
|
1108
|
+
_exportId: 69f54d6a3469e3f5597848a1
|
|
1109
|
+
startedAt: '2026-05-02T01:03:43.640Z'
|
|
1110
|
+
endedAt: '2026-05-02T01:03:51.757Z'
|
|
1111
|
+
createdAt: '2026-05-02T01:03:43.640Z'
|
|
1112
|
+
lastModified: '2026-05-02T01:03:51.757Z'
|
|
1113
|
+
numSuccess: 10
|
|
1114
|
+
numError: 0
|
|
1115
|
+
numOpenError: 0
|
|
1116
|
+
numResolved: 0
|
|
1117
|
+
numIgnore: 0
|
|
1118
|
+
logMode: basic
|
|
1119
|
+
- _id: 69e9820a12e2a80e73166a8a
|
|
1120
|
+
type: flow
|
|
1121
|
+
status: failed
|
|
1122
|
+
_integrationId: 6842261335b64c0bcb308e4f
|
|
1123
|
+
_flowId: 69e83e7a75f7f8c14a12916e
|
|
1124
|
+
_exportId: 69e83e7a75f7f8c14a129170
|
|
1125
|
+
startedAt: '2026-04-20T14:22:18.000Z'
|
|
1126
|
+
endedAt: '2026-04-20T14:22:25.412Z'
|
|
1127
|
+
createdAt: '2026-04-20T14:22:18.000Z'
|
|
1128
|
+
lastModified: '2026-04-20T14:22:25.412Z'
|
|
1129
|
+
numSuccess: 0
|
|
1130
|
+
numError: 5
|
|
1131
|
+
numOpenError: 5
|
|
1132
|
+
numResolved: 0
|
|
1133
|
+
numIgnore: 0
|
|
1134
|
+
logMode: basic
|
|
1135
|
+
'204':
|
|
1136
|
+
description: The integration has no recorded runs.
|
|
1137
|
+
'401':
|
|
1138
|
+
$ref: '#/components/responses/401-unauthorized'
|
|
1139
|
+
'404':
|
|
1140
|
+
$ref: '#/components/responses/404-not-found'
|
|
1141
|
+
components:
|
|
1142
|
+
securitySchemes:
|
|
1143
|
+
bearerAuth:
|
|
1144
|
+
type: http
|
|
1145
|
+
scheme: bearer
|
|
1146
|
+
schemas:
|
|
1147
|
+
ResourceResponse:
|
|
1148
|
+
type: object
|
|
1149
|
+
description: Response
|
|
1150
|
+
x-celigo-ai-guidance:
|
|
1151
|
+
- Core response fields shared by all Celigo resources
|
|
1152
|
+
properties:
|
|
1153
|
+
_id:
|
|
1154
|
+
type: string
|
|
1155
|
+
format: objectId
|
|
1156
|
+
readOnly: true
|
|
1157
|
+
description: Unique identifier for the resource. Format is a 24-character hexadecimal string.
|
|
1158
|
+
x-celigo-ai-guidance:
|
|
1159
|
+
- |-
|
|
1160
|
+
The _id is used in:
|
|
1161
|
+
- API endpoints that operate on a specific resource (e.g., GET, PUT, DELETE)
|
|
1162
|
+
- References from other resources (e.g., flows that use this resource)
|
|
1163
|
+
- Job history and error tracking
|
|
1164
|
+
examples:
|
|
1165
|
+
- 5f8d43a1b9e5a80011a35f2c
|
|
1166
|
+
createdAt:
|
|
1167
|
+
type: string
|
|
1168
|
+
format: date-time
|
|
1169
|
+
readOnly: true
|
|
1170
|
+
description: Timestamp when the resource was created. Set automatically and cannot be modified.
|
|
1171
|
+
x-celigo-ai-guidance:
|
|
1172
|
+
- Recorded in ISO 8601 with a UTC timezone (Z suffix).
|
|
1173
|
+
examples:
|
|
1174
|
+
- '2023-04-01T09:15:32Z'
|
|
1175
|
+
lastModified:
|
|
1176
|
+
type: string
|
|
1177
|
+
format: date-time
|
|
1178
|
+
readOnly: true
|
|
1179
|
+
description: Timestamp when the resource was last updated. Changes whenever any property is modified.
|
|
1180
|
+
x-celigo-ai-guidance:
|
|
1181
|
+
- Recorded in ISO 8601 with a UTC timezone (Z suffix); always equal to or later than `createdAt`.
|
|
1182
|
+
examples:
|
|
1183
|
+
- '2023-04-15T14:30:15Z'
|
|
1184
|
+
deletedAt:
|
|
1185
|
+
type:
|
|
1186
|
+
- string
|
|
1187
|
+
- 'null'
|
|
1188
|
+
format: date-time
|
|
1189
|
+
readOnly: true
|
|
1190
|
+
description: Timestamp when the resource was soft-deleted. When null or absent, the resource is active.
|
|
1191
|
+
x-celigo-ai-guidance:
|
|
1192
|
+
- Non-null means the resource is soft-deleted (in the recycle bin) — recoverable within the retention period before permanent removal.
|
|
1193
|
+
examples:
|
|
1194
|
+
- '2023-05-20T11:45:32Z'
|
|
1195
|
+
required:
|
|
1196
|
+
- _id
|
|
1197
|
+
JobFileRef:
|
|
1198
|
+
type: object
|
|
1199
|
+
description: Reference to a file produced by a job.
|
|
1200
|
+
properties:
|
|
1201
|
+
id:
|
|
1202
|
+
type: string
|
|
1203
|
+
description: File id in the underlying storage provider.
|
|
1204
|
+
examples:
|
|
1205
|
+
- 694b97c4f4f1f4a1b9d9e001
|
|
1206
|
+
host:
|
|
1207
|
+
type: string
|
|
1208
|
+
description: Storage host/provider.
|
|
1209
|
+
enum:
|
|
1210
|
+
- netsuite
|
|
1211
|
+
- s3
|
|
1212
|
+
x-enumDescriptions:
|
|
1213
|
+
netsuite: File stored in the NetSuite file cabinet.
|
|
1214
|
+
s3: File stored in Amazon S3.
|
|
1215
|
+
name:
|
|
1216
|
+
type: string
|
|
1217
|
+
description: Display name for the file (if available).
|
|
1218
|
+
examples:
|
|
1219
|
+
- success_records.csv
|
|
1220
|
+
JobLogRef:
|
|
1221
|
+
type: object
|
|
1222
|
+
description: Reference to a job log artifact.
|
|
1223
|
+
properties:
|
|
1224
|
+
id:
|
|
1225
|
+
type: string
|
|
1226
|
+
description: Log id in the underlying storage provider.
|
|
1227
|
+
examples:
|
|
1228
|
+
- '48217'
|
|
1229
|
+
host:
|
|
1230
|
+
type: string
|
|
1231
|
+
description: Storage host/provider.
|
|
1232
|
+
enum:
|
|
1233
|
+
- netsuite
|
|
1234
|
+
x-enumDescriptions:
|
|
1235
|
+
netsuite: Log stored in the NetSuite file cabinet.
|
|
1236
|
+
JobErrorFileRef:
|
|
1237
|
+
type: object
|
|
1238
|
+
description: Reference to an error file produced by a job.
|
|
1239
|
+
properties:
|
|
1240
|
+
id:
|
|
1241
|
+
type: string
|
|
1242
|
+
description: Error file id in the underlying storage provider.
|
|
1243
|
+
examples:
|
|
1244
|
+
- 694b97c4f4f1f4a1b9d9e001
|
|
1245
|
+
host:
|
|
1246
|
+
type: string
|
|
1247
|
+
description: Storage host/provider.
|
|
1248
|
+
enum:
|
|
1249
|
+
- s3
|
|
1250
|
+
x-enumDescriptions:
|
|
1251
|
+
s3: Error file stored in Amazon S3.
|
|
1252
|
+
Job:
|
|
1253
|
+
type: object
|
|
1254
|
+
required:
|
|
1255
|
+
- _id
|
|
1256
|
+
- type
|
|
1257
|
+
- status
|
|
1258
|
+
- createdAt
|
|
1259
|
+
- lastModified
|
|
1260
|
+
description: |
|
|
1261
|
+
A job represents one execution of a flow/export/import (or a retry) in integrator.io.
|
|
1262
|
+
Jobs are read-only records created by the platform when executions occur.
|
|
1263
|
+
|
|
1264
|
+
Parent jobs (`type: flow`) carry aggregate counters; child jobs (`type: export` or `import`)
|
|
1265
|
+
carry per-step counters -- do not sum both to avoid double-counting. `_exportId` on a parent
|
|
1266
|
+
flow job references the page-generator export, not all exports in the flow.
|
|
1267
|
+
allOf:
|
|
1268
|
+
- $ref: '#/components/schemas/ResourceResponse'
|
|
1269
|
+
- type: object
|
|
1270
|
+
properties:
|
|
1271
|
+
type:
|
|
1272
|
+
type: string
|
|
1273
|
+
readOnly: true
|
|
1274
|
+
description: Job type.
|
|
1275
|
+
enum:
|
|
1276
|
+
- export
|
|
1277
|
+
- import
|
|
1278
|
+
- flow
|
|
1279
|
+
- retry
|
|
1280
|
+
- bulk_retry
|
|
1281
|
+
x-enumDescriptions:
|
|
1282
|
+
export: A child job for an export step within a flow run.
|
|
1283
|
+
import: A child job for an import step within a flow run.
|
|
1284
|
+
flow: A parent flow-run job that orchestrates the full pipeline.
|
|
1285
|
+
retry: A retry of a single failed record from a previous job.
|
|
1286
|
+
bulk_retry: A bulk retry of multiple failed records from a previous job.
|
|
1287
|
+
x-celigo-ai-guidance:
|
|
1288
|
+
- |-
|
|
1289
|
+
- `flow`: a flow run (parent job)
|
|
1290
|
+
- `export` / `import`: child jobs for an export/import step
|
|
1291
|
+
- `retry` / `bulk_retry`: error management retries
|
|
1292
|
+
status:
|
|
1293
|
+
type: string
|
|
1294
|
+
readOnly: true
|
|
1295
|
+
description: Current job status.
|
|
1296
|
+
enum:
|
|
1297
|
+
- queued
|
|
1298
|
+
- running
|
|
1299
|
+
- retrying
|
|
1300
|
+
- completed
|
|
1301
|
+
- failed
|
|
1302
|
+
- canceled
|
|
1303
|
+
- canceling
|
|
1304
|
+
x-enumDescriptions:
|
|
1305
|
+
queued: Job is waiting to be picked up for execution.
|
|
1306
|
+
running: Job is currently executing.
|
|
1307
|
+
retrying: Job is being retried after a previous failure.
|
|
1308
|
+
completed: Job finished successfully.
|
|
1309
|
+
failed: Job finished with a fatal error.
|
|
1310
|
+
canceled: Job was canceled by a user or the system.
|
|
1311
|
+
canceling: Job cancellation has been requested but execution has not yet stopped.
|
|
1312
|
+
_integrationId:
|
|
1313
|
+
type: string
|
|
1314
|
+
format: objectId
|
|
1315
|
+
x-celigo-refModel: integrations
|
|
1316
|
+
readOnly: true
|
|
1317
|
+
description: Integration id this job belongs to (if applicable).
|
|
1318
|
+
examples:
|
|
1319
|
+
- 6842261335b64c0bcb308e4f
|
|
1320
|
+
_flowId:
|
|
1321
|
+
type: string
|
|
1322
|
+
format: objectId
|
|
1323
|
+
x-celigo-refModel: flows
|
|
1324
|
+
readOnly: true
|
|
1325
|
+
description: Flow id this job belongs to (if applicable).
|
|
1326
|
+
examples:
|
|
1327
|
+
- 69f54d6b7009ea11abad707a
|
|
1328
|
+
_exportId:
|
|
1329
|
+
type: string
|
|
1330
|
+
format: objectId
|
|
1331
|
+
x-celigo-refModel: exports
|
|
1332
|
+
readOnly: true
|
|
1333
|
+
description: |-
|
|
1334
|
+
Export id. Present on child export jobs and also on parent flow
|
|
1335
|
+
jobs (where it references the first page-generator export).
|
|
1336
|
+
examples:
|
|
1337
|
+
- 69f54d6a3469e3f5597848a1
|
|
1338
|
+
_importId:
|
|
1339
|
+
type: string
|
|
1340
|
+
format: objectId
|
|
1341
|
+
x-celigo-refModel: imports
|
|
1342
|
+
readOnly: true
|
|
1343
|
+
description: Import id for import child jobs (if applicable).
|
|
1344
|
+
examples:
|
|
1345
|
+
- 69e9953d7a8373d88147b5ec
|
|
1346
|
+
_expOrImpId:
|
|
1347
|
+
type: string
|
|
1348
|
+
format: objectId
|
|
1349
|
+
readOnly: true
|
|
1350
|
+
description: |-
|
|
1351
|
+
The export or import resource ID for this child job. Present on child
|
|
1352
|
+
jobs (`type: export` or `type: import`) — check `type` to determine
|
|
1353
|
+
whether this references an export or import resource.
|
|
1354
|
+
examples:
|
|
1355
|
+
- 69f54d6c1e7f3a22cc7848b2
|
|
1356
|
+
_retryOfJobId:
|
|
1357
|
+
type: string
|
|
1358
|
+
format: objectId
|
|
1359
|
+
x-celigo-refModel: jobs
|
|
1360
|
+
readOnly: true
|
|
1361
|
+
description: If this is a retry job, the original job id being retried.
|
|
1362
|
+
examples:
|
|
1363
|
+
- 69e9820a12e2a80e73166a8a
|
|
1364
|
+
_flowJobId:
|
|
1365
|
+
type: string
|
|
1366
|
+
format: objectId
|
|
1367
|
+
x-celigo-refModel: jobs
|
|
1368
|
+
readOnly: true
|
|
1369
|
+
description: Parent flow job id (for child jobs).
|
|
1370
|
+
examples:
|
|
1371
|
+
- 69f54d6f47185f8c7a500597
|
|
1372
|
+
_userId:
|
|
1373
|
+
type: string
|
|
1374
|
+
format: objectId
|
|
1375
|
+
x-celigo-refModel: users
|
|
1376
|
+
readOnly: true
|
|
1377
|
+
description: Owner user id for the job.
|
|
1378
|
+
_parentJobId:
|
|
1379
|
+
type: string
|
|
1380
|
+
format: objectId
|
|
1381
|
+
x-celigo-refModel: jobs
|
|
1382
|
+
readOnly: true
|
|
1383
|
+
description: Parent job id (used for branched flows / hierarchy).
|
|
1384
|
+
examples:
|
|
1385
|
+
- 69f54d6f47185f8c7a500597
|
|
1386
|
+
_bulkJobId:
|
|
1387
|
+
type: string
|
|
1388
|
+
format: objectId
|
|
1389
|
+
x-celigo-refModel: jobs
|
|
1390
|
+
readOnly: true
|
|
1391
|
+
description: Bulk retry parent job id (if applicable).
|
|
1392
|
+
examples:
|
|
1393
|
+
- 69e981ee18808f3e5ed1b2fd
|
|
1394
|
+
startedAt:
|
|
1395
|
+
type: string
|
|
1396
|
+
format: date-time
|
|
1397
|
+
readOnly: true
|
|
1398
|
+
description: When execution started.
|
|
1399
|
+
examples:
|
|
1400
|
+
- '2026-05-02T01:03:43.640Z'
|
|
1401
|
+
endedAt:
|
|
1402
|
+
type: string
|
|
1403
|
+
format: date-time
|
|
1404
|
+
readOnly: true
|
|
1405
|
+
description: When execution ended.
|
|
1406
|
+
examples:
|
|
1407
|
+
- '2026-05-02T01:03:51.757Z'
|
|
1408
|
+
resolvedAt:
|
|
1409
|
+
type: string
|
|
1410
|
+
format: date-time
|
|
1411
|
+
readOnly: true
|
|
1412
|
+
description: When errors for the job were fully resolved (if applicable).
|
|
1413
|
+
examples:
|
|
1414
|
+
- '2026-05-02T02:15:00.000Z'
|
|
1415
|
+
lastExecutedAt:
|
|
1416
|
+
type: string
|
|
1417
|
+
format: date-time
|
|
1418
|
+
readOnly: true
|
|
1419
|
+
description: Last time the job executed work (may differ from createdAt/startedAt).
|
|
1420
|
+
examples:
|
|
1421
|
+
- '2026-05-02T01:03:51.757Z'
|
|
1422
|
+
purgeAt:
|
|
1423
|
+
type: string
|
|
1424
|
+
format: date-time
|
|
1425
|
+
readOnly: true
|
|
1426
|
+
description: When the job should be purged from primary storage.
|
|
1427
|
+
examples:
|
|
1428
|
+
- '2026-06-01T01:03:43.577Z'
|
|
1429
|
+
clickhousePurgeAt:
|
|
1430
|
+
type: string
|
|
1431
|
+
format: date-time
|
|
1432
|
+
readOnly: true
|
|
1433
|
+
description: When the job's analytics data expires.
|
|
1434
|
+
examples:
|
|
1435
|
+
- '2026-06-01T01:03:43.577Z'
|
|
1436
|
+
triggeredBy:
|
|
1437
|
+
type: string
|
|
1438
|
+
readOnly: true
|
|
1439
|
+
description: Who/what triggered the job (free-form string).
|
|
1440
|
+
examples:
|
|
1441
|
+
- scheduler
|
|
1442
|
+
canceledBy:
|
|
1443
|
+
type: string
|
|
1444
|
+
readOnly: true
|
|
1445
|
+
description: Who/what requested cancellation (free-form string).
|
|
1446
|
+
examples:
|
|
1447
|
+
- user
|
|
1448
|
+
flowExecutionGroupId:
|
|
1449
|
+
type: string
|
|
1450
|
+
readOnly: true
|
|
1451
|
+
description: Groups multiple related jobs for a single flow execution.
|
|
1452
|
+
examples:
|
|
1453
|
+
- 70f3bd04a01142b29031e36ccff9242b
|
|
1454
|
+
numError:
|
|
1455
|
+
type: integer
|
|
1456
|
+
readOnly: true
|
|
1457
|
+
description: |
|
|
1458
|
+
Total number of errors produced by the job (including resolved ones).
|
|
1459
|
+
Use `numOpenError` for the count of currently unresolved errors.
|
|
1460
|
+
examples:
|
|
1461
|
+
- 10
|
|
1462
|
+
numOpenError:
|
|
1463
|
+
type: integer
|
|
1464
|
+
readOnly: true
|
|
1465
|
+
description: |
|
|
1466
|
+
Number of unresolved errors (equivalent to `numError - numResolved`).
|
|
1467
|
+
This is the value dashboards surface as "errors needing attention."
|
|
1468
|
+
examples:
|
|
1469
|
+
- 10
|
|
1470
|
+
numResolved:
|
|
1471
|
+
type: integer
|
|
1472
|
+
readOnly: true
|
|
1473
|
+
description: Number of resolved errors.
|
|
1474
|
+
examples:
|
|
1475
|
+
- 0
|
|
1476
|
+
numResolvedByAdaptor:
|
|
1477
|
+
type: integer
|
|
1478
|
+
readOnly: true
|
|
1479
|
+
description: Number of errors resolved by the adaptor.
|
|
1480
|
+
examples:
|
|
1481
|
+
- 0
|
|
1482
|
+
numSuccess:
|
|
1483
|
+
type: integer
|
|
1484
|
+
readOnly: true
|
|
1485
|
+
description: Number of successful records/pages.
|
|
1486
|
+
examples:
|
|
1487
|
+
- 10
|
|
1488
|
+
numIgnore:
|
|
1489
|
+
type: integer
|
|
1490
|
+
readOnly: true
|
|
1491
|
+
description: Number of ignored records/pages.
|
|
1492
|
+
examples:
|
|
1493
|
+
- 0
|
|
1494
|
+
numExport:
|
|
1495
|
+
type: integer
|
|
1496
|
+
readOnly: true
|
|
1497
|
+
description: |
|
|
1498
|
+
Legacy field used by retry logic. May be deprecated.
|
|
1499
|
+
examples:
|
|
1500
|
+
- 0
|
|
1501
|
+
numPagesGenerated:
|
|
1502
|
+
type: integer
|
|
1503
|
+
readOnly: true
|
|
1504
|
+
description: Number of pages generated by an export/page generator.
|
|
1505
|
+
examples:
|
|
1506
|
+
- 10
|
|
1507
|
+
doneExporting:
|
|
1508
|
+
type: boolean
|
|
1509
|
+
readOnly: true
|
|
1510
|
+
description: When true, all export pages have been generated.
|
|
1511
|
+
numPagesProcessed:
|
|
1512
|
+
type: integer
|
|
1513
|
+
readOnly: true
|
|
1514
|
+
description: Number of pages processed by downstream imports.
|
|
1515
|
+
examples:
|
|
1516
|
+
- 10
|
|
1517
|
+
oIndex:
|
|
1518
|
+
type: integer
|
|
1519
|
+
readOnly: true
|
|
1520
|
+
description: Branch/router index for branched flows (if applicable).
|
|
1521
|
+
examples:
|
|
1522
|
+
- 0
|
|
1523
|
+
retriable:
|
|
1524
|
+
type: boolean
|
|
1525
|
+
readOnly: true
|
|
1526
|
+
description: When true, this job is eligible for retry.
|
|
1527
|
+
files:
|
|
1528
|
+
type: array
|
|
1529
|
+
readOnly: true
|
|
1530
|
+
description: Files produced by the job (may be empty).
|
|
1531
|
+
items:
|
|
1532
|
+
$ref: '#/components/schemas/JobFileRef'
|
|
1533
|
+
logs:
|
|
1534
|
+
type: array
|
|
1535
|
+
readOnly: true
|
|
1536
|
+
description: Log artifacts associated with the job (may be empty).
|
|
1537
|
+
items:
|
|
1538
|
+
$ref: '#/components/schemas/JobLogRef'
|
|
1539
|
+
errorFile:
|
|
1540
|
+
description: Error file artifact (if any).
|
|
1541
|
+
allOf:
|
|
1542
|
+
- $ref: '#/components/schemas/JobErrorFileRef'
|
|
1543
|
+
- description: Error file artifact (if any).
|
|
1544
|
+
logMode:
|
|
1545
|
+
type: string
|
|
1546
|
+
readOnly: true
|
|
1547
|
+
description: |-
|
|
1548
|
+
Effective logging mode for this job, resolved from the flow's `logging.mode`
|
|
1549
|
+
and the account-level logging preference. Common values: `basic` (default),
|
|
1550
|
+
`off`, `on`, `debug`.
|
|
1551
|
+
examples:
|
|
1552
|
+
- basic
|
|
1553
|
+
__lastPageGeneratorJob:
|
|
1554
|
+
type: boolean
|
|
1555
|
+
readOnly: true
|
|
1556
|
+
description: When true, indicates the last page-generator job in the sequence. Internal use only.
|
|
1557
|
+
Error:
|
|
1558
|
+
type: object
|
|
1559
|
+
description: Standard error response envelope returned by integrator.io APIs.
|
|
1560
|
+
properties:
|
|
1561
|
+
errors:
|
|
1562
|
+
type: array
|
|
1563
|
+
description: List of errors that occurred while processing the request.
|
|
1564
|
+
items:
|
|
1565
|
+
type: object
|
|
1566
|
+
properties:
|
|
1567
|
+
code:
|
|
1568
|
+
oneOf:
|
|
1569
|
+
- type: string
|
|
1570
|
+
- type: integer
|
|
1571
|
+
description: |-
|
|
1572
|
+
Machine-readable error code. Usually a string like
|
|
1573
|
+
`invalid_ref`, `missing_required_field`, or `unauthorized`;
|
|
1574
|
+
may be an **integer** when the error mirrors an upstream HTTP
|
|
1575
|
+
status (e.g. `500`) — most commonly returned by connection-ping
|
|
1576
|
+
and adaptor-proxy responses.
|
|
1577
|
+
message:
|
|
1578
|
+
type: string
|
|
1579
|
+
description: Human-readable description of the error.
|
|
1580
|
+
field:
|
|
1581
|
+
type: string
|
|
1582
|
+
description: |-
|
|
1583
|
+
Optional pointer to the document field that caused the error.
|
|
1584
|
+
Used by structural validation errors (`missing_required_field`,
|
|
1585
|
+
`invalid_ref`) to indicate which field is at fault
|
|
1586
|
+
(e.g. `_id`, `type`, `http.baseURI`).
|
|
1587
|
+
source:
|
|
1588
|
+
type: string
|
|
1589
|
+
description: |-
|
|
1590
|
+
Optional origin layer for the error — e.g. `application` when
|
|
1591
|
+
the error came from the remote system the adaptor called,
|
|
1592
|
+
`connector` when the adaptor itself rejected the request.
|
|
1593
|
+
required:
|
|
1594
|
+
- message
|
|
1595
|
+
required:
|
|
1596
|
+
- errors
|
|
1597
|
+
JobsCurrentRequest:
|
|
1598
|
+
type: object
|
|
1599
|
+
description: |
|
|
1600
|
+
Request body for `POST /v1/jobs/current`.
|
|
1601
|
+
The UI uses this to fetch in-progress jobs for the dashboard.
|
|
1602
|
+
properties:
|
|
1603
|
+
_integrationIds:
|
|
1604
|
+
type: array
|
|
1605
|
+
description: Optional filter to only return jobs for these integration ids.
|
|
1606
|
+
items:
|
|
1607
|
+
type: string
|
|
1608
|
+
format: objectId
|
|
1609
|
+
x-celigo-refModel: integrations
|
|
1610
|
+
examples:
|
|
1611
|
+
- 6842261335b64c0bcb308e4f
|
|
1612
|
+
_flowIds:
|
|
1613
|
+
type: array
|
|
1614
|
+
description: Optional filter to only return jobs for these flow ids.
|
|
1615
|
+
items:
|
|
1616
|
+
type: string
|
|
1617
|
+
format: objectId
|
|
1618
|
+
x-celigo-refModel: flows
|
|
1619
|
+
examples:
|
|
1620
|
+
- 69497fc443fc1f9a03d31bd9
|
|
1621
|
+
status:
|
|
1622
|
+
type: array
|
|
1623
|
+
description: |
|
|
1624
|
+
Optional filter for in-progress job statuses.
|
|
1625
|
+
Terminal statuses (`completed`, `failed`, `canceled`, `retried`) are rejected with HTTP 400 by this endpoint —
|
|
1626
|
+
use `POST /v1/flows/runs/stats` for completed-run history.
|
|
1627
|
+
items:
|
|
1628
|
+
type: string
|
|
1629
|
+
enum:
|
|
1630
|
+
- queued
|
|
1631
|
+
- running
|
|
1632
|
+
- canceling
|
|
1633
|
+
x-enumDescriptions:
|
|
1634
|
+
queued: Job is waiting to be picked up for execution.
|
|
1635
|
+
running: Job is currently executing.
|
|
1636
|
+
canceling: Job cancellation has been requested but execution has not yet stopped.
|
|
1637
|
+
applicationIds:
|
|
1638
|
+
type: array
|
|
1639
|
+
description: Optional filter by application ids.
|
|
1640
|
+
items:
|
|
1641
|
+
type: string
|
|
1642
|
+
examples:
|
|
1643
|
+
- netsuite
|
|
1644
|
+
category:
|
|
1645
|
+
type: string
|
|
1646
|
+
description: Optional category filter (e.g., `edi`).
|
|
1647
|
+
examples:
|
|
1648
|
+
- edi
|
|
1649
|
+
time_gt:
|
|
1650
|
+
type: integer
|
|
1651
|
+
format: int64
|
|
1652
|
+
description: Optional filter for jobs with `createdAt`/time greater than this epoch milliseconds.
|
|
1653
|
+
examples:
|
|
1654
|
+
- 1745366400000
|
|
1655
|
+
time_lte:
|
|
1656
|
+
type: integer
|
|
1657
|
+
format: int64
|
|
1658
|
+
description: Optional filter for jobs with `createdAt`/time less than or equal to this epoch milliseconds.
|
|
1659
|
+
examples:
|
|
1660
|
+
- 1746147600000
|
|
1661
|
+
required: []
|
|
1662
|
+
JobWithChildren:
|
|
1663
|
+
allOf:
|
|
1664
|
+
- $ref: '#/components/schemas/Job'
|
|
1665
|
+
- type: object
|
|
1666
|
+
description: Job plus any child jobs (job family view).
|
|
1667
|
+
properties:
|
|
1668
|
+
children:
|
|
1669
|
+
type: array
|
|
1670
|
+
readOnly: true
|
|
1671
|
+
description: Child jobs (export/import) that are part of this job family.
|
|
1672
|
+
items:
|
|
1673
|
+
$ref: '#/components/schemas/Job'
|
|
1674
|
+
JobsCurrentResponse:
|
|
1675
|
+
type: object
|
|
1676
|
+
description: Response envelope for `POST /v1/jobs/current`.
|
|
1677
|
+
properties:
|
|
1678
|
+
jobs:
|
|
1679
|
+
type: array
|
|
1680
|
+
description: Current (in-progress) jobs.
|
|
1681
|
+
items:
|
|
1682
|
+
$ref: '#/components/schemas/JobWithChildren'
|
|
1683
|
+
pagingPostBody:
|
|
1684
|
+
type: object
|
|
1685
|
+
description: |-
|
|
1686
|
+
Cursor for the next page. Absent on the last (or only) page. Pagination is **body-based**:
|
|
1687
|
+
POST this object back to the same endpoint as the next request body to fetch the next page.
|
|
1688
|
+
Echoes the caller's filter plus a server-added watermark (`endedOnOrBefore`). Single-page
|
|
1689
|
+
responses omit this field entirely.
|
|
1690
|
+
properties:
|
|
1691
|
+
endedOnOrBefore:
|
|
1692
|
+
type: string
|
|
1693
|
+
format: date-time
|
|
1694
|
+
description: Server-added cursor watermark — only jobs with `endedAt <= this` are included on the next page.
|
|
1695
|
+
examples:
|
|
1696
|
+
- '2026-05-02T01:03:51.757Z'
|
|
1697
|
+
FlowRunsStatsRequest:
|
|
1698
|
+
allOf:
|
|
1699
|
+
- $ref: '#/components/schemas/JobsCurrentRequest'
|
|
1700
|
+
- type: object
|
|
1701
|
+
description: |-
|
|
1702
|
+
Request body for `POST /v1/flows/runs/stats`. Shares its filter shape with `POST /v1/jobs/current`
|
|
1703
|
+
(`_integrationIds`, `_flowIds`, `time_gt`, `time_lte`, …), but the response is a set of
|
|
1704
|
+
**per-flow aggregates** rather than individual job records. Filters narrow which runs are rolled
|
|
1705
|
+
up into each aggregate.
|
|
1706
|
+
|
|
1707
|
+
Omitting `time_gt` does not mean "all history" — the endpoint falls back to the dashboard's
|
|
1708
|
+
default window (approximately the last 24 hours), and runs older than that silently drop out
|
|
1709
|
+
of every aggregate. Send `time_gt` (epoch milliseconds) explicitly for any other range.
|
|
1710
|
+
x-celigo-ai-guidance:
|
|
1711
|
+
- Always send an explicit time_gt matching the window you intend to report, and never present the aggregates as covering a longer period than the time filter you sent. Without time_gt the default window (~24 hours) applies — an empty result then means "nothing ran recently", never "no runs exist".
|
|
1712
|
+
- A flow absent from stats[] had no runs in the window; it does not mean the flow does not exist. numOpenError counts errors open NOW, which may predate the window.
|
|
1713
|
+
FlowRunStatsEntry:
|
|
1714
|
+
type: object
|
|
1715
|
+
description: |-
|
|
1716
|
+
Per-flow aggregate across all matching runs. Produced by `POST /v1/flows/runs/stats` and used to
|
|
1717
|
+
populate the Celigo dashboard's per-flow summary cards.
|
|
1718
|
+
properties:
|
|
1719
|
+
_flowId:
|
|
1720
|
+
type: string
|
|
1721
|
+
format: objectId
|
|
1722
|
+
description: Id of the flow this entry aggregates.
|
|
1723
|
+
x-celigo-refModel: flows
|
|
1724
|
+
examples:
|
|
1725
|
+
- 69497fc443fc1f9a03d31bd9
|
|
1726
|
+
_integrationId:
|
|
1727
|
+
type: string
|
|
1728
|
+
format: objectId
|
|
1729
|
+
description: |-
|
|
1730
|
+
Id of the flow's parent integration. Omitted for standalone flows that aren't part of an
|
|
1731
|
+
integration.
|
|
1732
|
+
x-celigo-refModel: integrations
|
|
1733
|
+
examples:
|
|
1734
|
+
- 69496f01615f724066afaac2
|
|
1735
|
+
numRuns:
|
|
1736
|
+
type: integer
|
|
1737
|
+
minimum: 0
|
|
1738
|
+
description: Total number of runs that matched the request filter.
|
|
1739
|
+
examples:
|
|
1740
|
+
- 91
|
|
1741
|
+
numPages:
|
|
1742
|
+
type: integer
|
|
1743
|
+
minimum: 0
|
|
1744
|
+
description: |-
|
|
1745
|
+
Total pages processed across those runs (one run can produce multiple pages when the source
|
|
1746
|
+
export paginates).
|
|
1747
|
+
examples:
|
|
1748
|
+
- 92
|
|
1749
|
+
numSuccess:
|
|
1750
|
+
type: integer
|
|
1751
|
+
minimum: 0
|
|
1752
|
+
description: Records that completed successfully across all matched runs.
|
|
1753
|
+
examples:
|
|
1754
|
+
- 184
|
|
1755
|
+
numError:
|
|
1756
|
+
type: integer
|
|
1757
|
+
minimum: 0
|
|
1758
|
+
description: |-
|
|
1759
|
+
Records that failed across all matched runs. Distinct from `numOpenError` — this is the
|
|
1760
|
+
lifetime-of-those-runs error count, not the currently-unresolved count.
|
|
1761
|
+
examples:
|
|
1762
|
+
- 0
|
|
1763
|
+
numIgnore:
|
|
1764
|
+
type: integer
|
|
1765
|
+
minimum: 0
|
|
1766
|
+
description: Records that were ignored (filtered out by `inputFilter` / `outputFilter`) across all matched runs.
|
|
1767
|
+
examples:
|
|
1768
|
+
- 0
|
|
1769
|
+
numOpenError:
|
|
1770
|
+
type: integer
|
|
1771
|
+
minimum: 0
|
|
1772
|
+
description: Currently **open** (unresolved) errors on this flow. Drops when errors are resolved or retried.
|
|
1773
|
+
examples:
|
|
1774
|
+
- 3
|
|
1775
|
+
numResolvedByAuto:
|
|
1776
|
+
type: integer
|
|
1777
|
+
minimum: 0
|
|
1778
|
+
description: Errors that were auto-resolved by a successful retry.
|
|
1779
|
+
examples:
|
|
1780
|
+
- 7
|
|
1781
|
+
numResolvedByUser:
|
|
1782
|
+
type: integer
|
|
1783
|
+
minimum: 0
|
|
1784
|
+
description: Errors that a user manually marked resolved.
|
|
1785
|
+
examples:
|
|
1786
|
+
- 0
|
|
1787
|
+
avgRuntime:
|
|
1788
|
+
type: number
|
|
1789
|
+
description: Mean job runtime in milliseconds across matched runs.
|
|
1790
|
+
examples:
|
|
1791
|
+
- 172327.86
|
|
1792
|
+
lastExecutedAt:
|
|
1793
|
+
type: string
|
|
1794
|
+
format: date-time
|
|
1795
|
+
description: Timestamp of the most recent matching run (any status).
|
|
1796
|
+
examples:
|
|
1797
|
+
- '2026-04-23T02:51:52.551Z'
|
|
1798
|
+
lastErrorAt:
|
|
1799
|
+
type: string
|
|
1800
|
+
format: date-time
|
|
1801
|
+
description: Timestamp of the most recent open error. Omitted when `numOpenError` is 0.
|
|
1802
|
+
examples:
|
|
1803
|
+
- '2026-04-21T10:51:13.221Z'
|
|
1804
|
+
flow:
|
|
1805
|
+
type: object
|
|
1806
|
+
description: Minimal flow metadata inlined for rendering convenience — equivalent to `GET /v1/flows/{_flowId}` with most fields stripped.
|
|
1807
|
+
properties:
|
|
1808
|
+
_id:
|
|
1809
|
+
type: string
|
|
1810
|
+
format: objectId
|
|
1811
|
+
x-celigo-refModel: flows
|
|
1812
|
+
description: Flow id (matches the outer `_flowId`).
|
|
1813
|
+
examples:
|
|
1814
|
+
- 69497fc443fc1f9a03d31bd9
|
|
1815
|
+
name:
|
|
1816
|
+
type: string
|
|
1817
|
+
description: Flow name.
|
|
1818
|
+
examples:
|
|
1819
|
+
- Shopee
|
|
1820
|
+
_integrationId:
|
|
1821
|
+
type: string
|
|
1822
|
+
format: objectId
|
|
1823
|
+
x-celigo-refModel: integrations
|
|
1824
|
+
description: Parent integration id. Omitted for standalone flows.
|
|
1825
|
+
examples:
|
|
1826
|
+
- 69496f01615f724066afaac2
|
|
1827
|
+
integrationName:
|
|
1828
|
+
type: string
|
|
1829
|
+
description: Parent integration name. Omitted for standalone flows.
|
|
1830
|
+
examples:
|
|
1831
|
+
- Shopee
|
|
1832
|
+
FlowRunsStatsResponse:
|
|
1833
|
+
type: object
|
|
1834
|
+
description: |-
|
|
1835
|
+
One page of per-flow run-statistics aggregates. Despite the endpoint's location under `flows/runs/`,
|
|
1836
|
+
each element of `stats[]` is **not** an individual job record — it's the aggregated summary for one
|
|
1837
|
+
flow across all matching runs (counts, timings, and the most recent timestamps). The dashboard uses
|
|
1838
|
+
this to render its per-flow "last run / success rate / open errors" cards in a single call.
|
|
1839
|
+
|
|
1840
|
+
To list individual job records (one per run), use `GET /v1/jobs?_flowId=...` instead.
|
|
1841
|
+
properties:
|
|
1842
|
+
stats:
|
|
1843
|
+
type: array
|
|
1844
|
+
description: |-
|
|
1845
|
+
Per-flow aggregate entries. One element per flow that has at least one run matching the request
|
|
1846
|
+
filter.
|
|
1847
|
+
items:
|
|
1848
|
+
$ref: '#/components/schemas/FlowRunStatsEntry'
|
|
1849
|
+
pagingPostBody:
|
|
1850
|
+
type: object
|
|
1851
|
+
description: |-
|
|
1852
|
+
Cursor for the next page. Absent on the last (or only) page. Pagination is **body-based**:
|
|
1853
|
+
POST this object back to the same endpoint as the next request body to fetch the next page.
|
|
1854
|
+
The object echoes the caller's filter plus a server-added watermark
|
|
1855
|
+
(`endedOnOrBefore`) that carries the cursor position. Single-page responses (typical for
|
|
1856
|
+
normal account sizes) omit this field entirely.
|
|
1857
|
+
properties:
|
|
1858
|
+
endedOnOrBefore:
|
|
1859
|
+
type: string
|
|
1860
|
+
format: date-time
|
|
1861
|
+
description: Server-added cursor watermark — only runs with `endedAt <= this` are included on the next page.
|
|
1862
|
+
examples:
|
|
1863
|
+
- '2026-04-23T02:51:52.551Z'
|
|
1864
|
+
JobsFamilyBatchRequest:
|
|
1865
|
+
type: array
|
|
1866
|
+
description: Array of job ids to fetch family information for (max 1000 ids per request).
|
|
1867
|
+
items:
|
|
1868
|
+
type: string
|
|
1869
|
+
format: objectId
|
|
1870
|
+
x-celigo-refModel: jobs
|
|
1871
|
+
examples:
|
|
1872
|
+
- 69e981ee18808f3e5ed1b2fd
|
|
1873
|
+
JobFilesSignedUrlRequest:
|
|
1874
|
+
type: object
|
|
1875
|
+
description: |
|
|
1876
|
+
Request body for `POST /v1/jobs/{_id}/files/signedURL`.
|
|
1877
|
+
Provide `fileIds` to request signed URLs for specific files.
|
|
1878
|
+
properties:
|
|
1879
|
+
fileIds:
|
|
1880
|
+
type: array
|
|
1881
|
+
description: Optional list of job file ids to download.
|
|
1882
|
+
items:
|
|
1883
|
+
type: string
|
|
1884
|
+
examples:
|
|
1885
|
+
- 694b97c4f4f1f4a1b9d9e001
|
|
1886
|
+
JobFilesSignedUrlResponse:
|
|
1887
|
+
type: object
|
|
1888
|
+
description: Signed URL response for downloading job files.
|
|
1889
|
+
properties:
|
|
1890
|
+
signedURL:
|
|
1891
|
+
type:
|
|
1892
|
+
- string
|
|
1893
|
+
- 'null'
|
|
1894
|
+
description: |-
|
|
1895
|
+
A single signed URL. Requests that pass `fileIds` return the `signedURLs` array instead, even for
|
|
1896
|
+
a single file — check both fields.
|
|
1897
|
+
examples:
|
|
1898
|
+
- https://integrator-templates.s3.us-east-1.amazonaws.com/694b97c4f4f1f4a1b9d9e001.csv?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=900&X-Amz-Credential=AKIAEXAMPLE123%2F20260613%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260613T120000Z&X-Amz-SignedHeaders=host&X-Amz-Signature=4f9b2c1e8a3d7f0b5c6e9a2d4f8b1c3e7a0d5f2b9c4e6a8d1f3b7c0e5a9d2f4b
|
|
1899
|
+
signedURLs:
|
|
1900
|
+
type: array
|
|
1901
|
+
description: |-
|
|
1902
|
+
Signed URLs for the returned files, one per file. Returned as an array even when a single file is
|
|
1903
|
+
requested via `fileIds`.
|
|
1904
|
+
items:
|
|
1905
|
+
type: string
|
|
1906
|
+
examples:
|
|
1907
|
+
- https://integrator-templates.s3.us-east-1.amazonaws.com/694b97c4f4f1f4a1b9d9e001.csv?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=900&X-Amz-Credential=AKIAEXAMPLE123%2F20260613%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260613T120000Z&X-Amz-SignedHeaders=host&X-Amz-Signature=4f9b2c1e8a3d7f0b5c6e9a2d4f8b1c3e7a0d5f2b9c4e6a8d1f3b7c0e5a9d2f4b
|
|
1908
|
+
JobDiagnosticsResponse:
|
|
1909
|
+
allOf:
|
|
1910
|
+
- $ref: '#/components/schemas/JobFilesSignedUrlResponse'
|
|
1911
|
+
- type: object
|
|
1912
|
+
description: Signed URL response for downloading diagnostics for a job.
|
|
1913
|
+
responses:
|
|
1914
|
+
401-unauthorized:
|
|
1915
|
+
description: |-
|
|
1916
|
+
Unauthorized. The request lacks a valid bearer token, or the provided token
|
|
1917
|
+
failed to authenticate.
|
|
1918
|
+
|
|
1919
|
+
Note: the 401 response is produced by the auth middleware **before** the
|
|
1920
|
+
request reaches the endpoint handler, so it does **not** follow the
|
|
1921
|
+
standard `{errors: [...]}` envelope. Instead the body is a bare
|
|
1922
|
+
`{message: string}` object with no `code`, no `errors` array. Callers
|
|
1923
|
+
handling 401s should key off the HTTP status and the `message` string,
|
|
1924
|
+
not try to destructure an `errors[]`.
|
|
1925
|
+
content:
|
|
1926
|
+
application/json:
|
|
1927
|
+
schema:
|
|
1928
|
+
type: object
|
|
1929
|
+
properties:
|
|
1930
|
+
message:
|
|
1931
|
+
type: string
|
|
1932
|
+
description: |-
|
|
1933
|
+
Human-readable description of the auth failure. Known values:
|
|
1934
|
+
- `"Unauthorized"` — no `Authorization` header on the request.
|
|
1935
|
+
- `"Bearer Authentication Failed"` — header present but token
|
|
1936
|
+
is invalid, revoked, or expired.
|
|
1937
|
+
required:
|
|
1938
|
+
- message
|
|
1939
|
+
examples:
|
|
1940
|
+
missing_token:
|
|
1941
|
+
summary: No Authorization header sent
|
|
1942
|
+
value:
|
|
1943
|
+
message: Unauthorized
|
|
1944
|
+
invalid_token:
|
|
1945
|
+
summary: Bearer token invalid or revoked
|
|
1946
|
+
value:
|
|
1947
|
+
message: Bearer Authentication Failed
|
|
1948
|
+
400-bad-request:
|
|
1949
|
+
description: |
|
|
1950
|
+
Bad request. The server could not understand the request because of malformed syntax or invalid parameters.
|
|
1951
|
+
content:
|
|
1952
|
+
application/json:
|
|
1953
|
+
schema:
|
|
1954
|
+
$ref: '#/components/schemas/Error'
|
|
1955
|
+
examples:
|
|
1956
|
+
default:
|
|
1957
|
+
value:
|
|
1958
|
+
errors:
|
|
1959
|
+
- code: invalid_request
|
|
1960
|
+
message: The request body failed validation.
|
|
1961
|
+
403-forbidden:
|
|
1962
|
+
description: |
|
|
1963
|
+
Forbidden. The authenticated caller does not have permission to perform this operation.
|
|
1964
|
+
content:
|
|
1965
|
+
application/json:
|
|
1966
|
+
schema:
|
|
1967
|
+
$ref: '#/components/schemas/Error'
|
|
1968
|
+
examples:
|
|
1969
|
+
default:
|
|
1970
|
+
value:
|
|
1971
|
+
errors:
|
|
1972
|
+
- code: forbidden
|
|
1973
|
+
message: You do not have permission to access this resource.
|
|
1974
|
+
404-not-found:
|
|
1975
|
+
description: |
|
|
1976
|
+
Not found. The requested resource does not exist or is not visible to the caller.
|
|
1977
|
+
content:
|
|
1978
|
+
application/json:
|
|
1979
|
+
schema:
|
|
1980
|
+
$ref: '#/components/schemas/Error'
|
|
1981
|
+
examples:
|
|
1982
|
+
default:
|
|
1983
|
+
value:
|
|
1984
|
+
errors:
|
|
1985
|
+
- code: not_found
|
|
1986
|
+
message: The requested resource was not found.
|
|
1987
|
+
parameters:
|
|
1988
|
+
Include:
|
|
1989
|
+
name: include
|
|
1990
|
+
in: query
|
|
1991
|
+
required: false
|
|
1992
|
+
description: |-
|
|
1993
|
+
Comma-separated list of fields to project into each returned record.
|
|
1994
|
+
Triggers summary projection: the response contains a minimal identity
|
|
1995
|
+
set (`_id`, `name`, plus resource-specific fields) with the requested
|
|
1996
|
+
fields added on top. Supports dot notation for nested fields.
|
|
1997
|
+
Mutually exclusive with `exclude`.
|
|
1998
|
+
schema:
|
|
1999
|
+
type: string
|
|
2000
|
+
example: _integrationId,disabled,lastModified
|
|
2001
|
+
Exclude:
|
|
2002
|
+
name: exclude
|
|
2003
|
+
in: query
|
|
2004
|
+
required: false
|
|
2005
|
+
description: |-
|
|
2006
|
+
Comma-separated list of fields to strip from the default response.
|
|
2007
|
+
Unlike `include`, does not trigger summary projection — returns the
|
|
2008
|
+
full record with the named fields removed. Protected identity fields
|
|
2009
|
+
(e.g. `name`) cannot be stripped. Mutually exclusive with `include`.
|
|
2010
|
+
schema:
|
|
2011
|
+
type: string
|
|
2012
|
+
example: createdAt,lastModified
|
|
2013
|
+
x-enable-proxy: true
|
|
2014
|
+
x-internal: false
|