@celigo/api-specs 0.2.202 → 0.2.203

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/dist/job.yml CHANGED
@@ -48,9 +48,10 @@ paths:
48
48
  Exception: for a caller with integration-only access, `_flowId` scopes
49
49
  a `type=flow` or `type=retry` query only together with
50
50
  `_integrationId` (below).
51
- - **Child jobs** (`type=export` or `type=import`) — requires
52
- `_flowJobId` or a resource ID filter (`_exportId` / `_importId`).
53
- Returns the export/import sub-jobs within a parent flow job.
51
+ - **Child jobs** (`type=export`, `type=import`, or `type=tool`) — requires
52
+ `_flowJobId` or a resource ID filter (`_exportId` / `_importId`; for
53
+ `tool` jobs, `_importId` is the `ToolImport`'s id). Returns the step
54
+ jobs within a parent flow job.
54
55
 
55
56
  Job reads are authorized per integration. For a caller with
56
57
  integration-only access (an account share that populates
@@ -71,6 +72,11 @@ paths:
71
72
  forward, take the `createdAt` of the last record, subtract 1 ms, and
72
73
  pass it as `createdAt_lte`.
73
74
 
75
+ The query is validated strictly: a parameter the endpoint does not support
76
+ fails with `422 invalid_query_params` naming it, and a malformed value — an
77
+ unrecognized `type` or `status`, a non-numeric count filter, an unparseable
78
+ date, or a plain string where an array is expected — fails with `400`.
79
+
74
80
  A `queued` or `running` job created outside `createdAt_gte` /
75
81
  `createdAt_lte` is left out of a date-filtered list.
76
82
  parameters:
@@ -126,27 +132,27 @@ paths:
126
132
  - 69f54d6f47185f8c7a500597
127
133
  description: |-
128
134
  Filter by parent flow-job ID. Satisfies the required-param check.
129
- Required when querying child jobs (`type=export` or `type=import`).
130
- - name: _flowId_in
135
+ Required when querying child jobs (`type=export`, `type=import`, or
136
+ `type=tool`).
137
+ - name: _flowId_in[]
131
138
  in: query
139
+ style: form
140
+ explode: true
132
141
  schema:
133
- type: string
134
- examples:
135
- - 69f54d6b7009ea11abad707a,69e83e7a75f7f8c14a12916e
136
- description: |-
137
- Comma-separated list of flow IDs to match. Works as an additional
138
- filter but does **not** satisfy the required-param check alone.
139
- `flowId_in` (without underscore) is accepted as an alias.
140
- - name: status_in
141
- in: query
142
- schema:
143
- type: string
142
+ type: array
143
+ items:
144
+ type: string
145
+ format: objectId
146
+ x-celigo-refModel: flows
144
147
  examples:
145
- - completed,failed
148
+ - - 69f54d6b7009ea11abad707a
149
+ - 69e83e7a75f7f8c14a12916e
146
150
  description: |-
147
- Comma-separated list of status values to match (e.g.
148
- `completed,failed`). Works as an additional filter but does
149
- **not** satisfy the required-param check alone.
151
+ Flow IDs to match, sent as one `_flowId_in[]=<id>` pair per ID (indexed
152
+ `_flowId_in[0]=<id>` also works). A plain `_flowId_in=<id>` value —
153
+ including a comma-separated list — fails with `400 invalid_query_param`.
154
+ Works as an additional filter but does **not** satisfy the
155
+ required-param check alone.
150
156
  - name: createdAt_lte
151
157
  in: query
152
158
  schema:
@@ -245,17 +251,19 @@ paths:
245
251
  - import
246
252
  - retry
247
253
  - bulk_retry
254
+ - tool
248
255
  x-enumDescriptions:
249
256
  flow: A parent flow-run job that orchestrates the full pipeline.
250
257
  export: A child job for an export step within a flow run.
251
258
  import: A child job for an import step within a flow run.
252
259
  retry: A retry of a single failed record from a previous job.
253
260
  bulk_retry: A bulk retry of multiple failed records from a previous job.
261
+ tool: A child job for a Tool step (a `ToolImport`) within a flow run.
254
262
  description: |-
255
263
  Filter by job type. `flow`, `retry`, and `bulk_retry` are
256
- parent-level jobs; `export` and `import` are child jobs (require
257
- `_flowJobId` or a resource-ID filter). Unrecognized values silently
258
- return an empty response.
264
+ parent-level jobs; `export`, `import`, and `tool` are child jobs
265
+ (require `_flowJobId` or a resource-ID filter). An unrecognized value
266
+ fails with `400 invalid_url` ("type is not valid.").
259
267
  responses:
260
268
  '200':
261
269
  description: Array of job records matching the filters.
@@ -319,7 +327,13 @@ paths:
319
327
  '204':
320
328
  description: No jobs match the given filters.
321
329
  '400':
322
- description: Required query parameters are missing or invalid.
330
+ description: |-
331
+ Required query parameters are missing (`invalid_query`), or a value is
332
+ malformed: an unrecognized `status` or a non-numeric `numSuccess_*` /
333
+ `numIgnore_*` filter (`invalid_query_param`), an array parameter sent as
334
+ a plain string (`invalid_query_param`), an unrecognized `type` or a
335
+ non-numeric `numError_*` filter (`invalid_url`), or an unparseable date
336
+ (`invalid_field`).
323
337
  content:
324
338
  application/json:
325
339
  schema:
@@ -349,6 +363,24 @@ paths:
349
363
  errors:
350
364
  - code: invalid_query_param
351
365
  message: The query parameter "status" has invalid value.
366
+ array_as_string:
367
+ summary: Array parameter sent as a plain value
368
+ value:
369
+ errors:
370
+ - code: invalid_query_param
371
+ message: The query parameter _flowId_in must be an array. Repeat the parameter for each value, e.g. _flowId_in[0]=value1&_flowId_in[1]=value2.
372
+ invalid_type:
373
+ summary: Unrecognized type value
374
+ value:
375
+ errors:
376
+ - code: invalid_url
377
+ message: type is not valid.
378
+ invalid_date:
379
+ summary: Unparseable date filter
380
+ value:
381
+ errors:
382
+ - code: invalid_field
383
+ message: 'The value provided for the field: ''createdAt_gte'' is invalid.'
352
384
  '401':
353
385
  $ref: '#/components/responses/401-unauthorized'
354
386
  '422':
@@ -1323,9 +1355,9 @@ components:
1323
1355
  A job represents one execution of a flow/export/import (or a retry) in integrator.io.
1324
1356
  Jobs are read-only records created by the platform when executions occur.
1325
1357
 
1326
- Parent jobs (`type: flow`) carry aggregate counters; child jobs (`type: export` or `import`)
1327
- carry per-step counters -- do not sum both to avoid double-counting. `_exportId` on a parent
1328
- flow job references the page-generator export, not all exports in the flow.
1358
+ Parent jobs (`type: flow`) carry aggregate counters; child jobs (`type: export`, `import`, or
1359
+ `tool`) carry per-step counters -- do not sum both to avoid double-counting. `_exportId` on a
1360
+ parent flow job references the page-generator export, not all exports in the flow.
1329
1361
  allOf:
1330
1362
  - $ref: '#/components/schemas/ResourceResponse'
1331
1363
  - type: object
@@ -1340,6 +1372,7 @@ components:
1340
1372
  - flow
1341
1373
  - retry
1342
1374
  - bulk_retry
1375
+ - tool
1343
1376
  x-enumDescriptions:
1344
1377
  export: |-
1345
1378
  A child job for an export step within a flow run: the flow's source export, or a
@@ -1349,10 +1382,14 @@ components:
1349
1382
  flow: A parent flow-run job that orchestrates the full pipeline.
1350
1383
  retry: A retry of a single failed record from a previous job.
1351
1384
  bulk_retry: A bulk retry of multiple failed records from a previous job.
1385
+ tool: |-
1386
+ A child job for a Tool step (a `ToolImport`) within a flow run. A lookup step inside
1387
+ the Tool gets its own `export` child job under the same flow job.
1352
1388
  x-celigo-ai-guidance:
1353
1389
  - |-
1354
1390
  - `flow`: a flow run (parent job)
1355
1391
  - `export` / `import`: child jobs for an export/import step
1392
+ - `tool`: child job for a Tool step (`ToolImport`); a lookup step inside the Tool is listed as its own `export` child job of the same flow job
1356
1393
  - `retry` / `bulk_retry`: error management retries
1357
1394
  status:
1358
1395
  type: string
@@ -1414,8 +1451,9 @@ components:
1414
1451
  readOnly: true
1415
1452
  description: |-
1416
1453
  The export or import resource ID for this child job. Present on child
1417
- jobs (`type: export` or `type: import`) — check `type` to determine
1418
- whether this references an export or import resource.
1454
+ jobs (`type: export`, `import`, or `tool`) — check `type`: an `export` job
1455
+ references an export, an `import` job an import, and a `tool` job the
1456
+ `ToolImport` that ran the Tool.
1419
1457
  examples:
1420
1458
  - 69f54d6c1e7f3a22cc7848b2
1421
1459
  _retryOfJobId:
@@ -1507,8 +1545,8 @@ components:
1507
1545
  chained into this one; absent on event-driven runs (webhook, real-time listener, and
1508
1546
  stream page generators), which the inbound event starts. On a `retry` job: `auto`
1509
1547
  for the platform's automatic intermittent-error retry, otherwise the `_id` of the
1510
- user who submitted the retry. Absent on `export` and `import` child jobs — the
1511
- parent flow job carries it.
1548
+ user who submitted the retry. Absent on `export`, `import`, and `tool` child jobs —
1549
+ the parent flow job carries it.
1512
1550
  examples:
1513
1551
  - system
1514
1552
  canceledBy:
@@ -1565,7 +1603,8 @@ components:
1565
1603
  description: |-
1566
1604
  Number of records processed successfully. On a parent flow job (`type: flow`) this is the
1567
1605
  sum across every step in the run, so one record that passes through an export and an import
1568
- counts twice. On a child job (`type: export` or `import`) it is that step's count alone.
1606
+ counts twice. On a child job (`type: export`, `import`, or `tool`) it is that step's count
1607
+ alone.
1569
1608
  For per-step counts, read the run with `GET /v1/jobs/{_id}/family` or list its children with
1570
1609
  `GET /v1/jobs?_flowJobId={_id}&type=import`.
1571
1610
  examples:
@@ -1174,8 +1174,10 @@ paths:
1174
1174
 
1175
1175
  `data` is the template's root context: `{{name}}` reads `data.name`. A template written for a
1176
1176
  step reads the record as `{{record.<field>}}`, so send the record under `record`
1177
- (`"data": {"record": {...}}`). Double braces HTML-escape the value (`&` renders as `&amp;`);
1178
- triple braces insert it unchanged. A `timestamp` with no time zone renders in UTC.
1177
+ (`"data": {"record": {...}}`). Double braces HTML-escape the value (`&` renders as `&amp;`),
1178
+ or URI-encode it when `options` carries an `http` connection and `fieldPath`
1179
+ `http.relativeURI`; triple braces insert it unchanged. A `timestamp` with no time zone
1180
+ renders in UTC.
1179
1181
 
1180
1182
  A null value, or a field under an object that is null, renders empty here. An HTTP import
1181
1183
  escapes values its own way, at run time and in the import preview: in its JSON body a
@@ -1189,6 +1191,11 @@ paths:
1189
1191
  entry's `helperFunctions`, but that list is not complete: `eq` and `truncateWords`, for
1190
1192
  example, render although it omits them, so render a doubtful helper once here before relying
1191
1193
  on it.
1194
+
1195
+ By default `lookup` doesn't resolve here: each call renders a placeholder such as
1196
+ `{$ASYNCID$0$0$}`, Handlebars' own `{{lookup object key}}` form included, and the placeholder
1197
+ is truthy, so `{{#if (lookup …)}}` always takes its first branch. `options` resolves an HTTP
1198
+ import's static lookups instead (see `options`).
1192
1199
  requestBody:
1193
1200
  required: true
1194
1201
  content:
@@ -1214,6 +1221,63 @@ paths:
1214
1221
  description: Form of the result; `text` returns the rendered string.
1215
1222
  examples:
1216
1223
  - text
1224
+ options:
1225
+ type: object
1226
+ description: |-
1227
+ Step context for a template that calls `{{lookup '<name>' <key>}}`. Send the saved
1228
+ `import`, its `connection` with `type` `http`, and `fieldPath` to resolve the
1229
+ import's static lookups (those with a `map`) instead of rendering placeholders. A
1230
+ template that also calls a dynamic lookup still renders every lookup as a
1231
+ placeholder, as does an `import` sent without `connection` or a connection of type
1232
+ `rdbms`, `rest`, `ftp`, `netsuite` or `salesforce`.
1233
+ properties:
1234
+ fieldPath:
1235
+ type: string
1236
+ description: |-
1237
+ Field the template belongs to, such as `http.body` or `http.relativeURI`. Required
1238
+ whenever `connection.type` is `http`, and with that connection `http.relativeURI`
1239
+ URI-encodes double-brace values instead of HTML-escaping them.
1240
+ examples:
1241
+ - http.body
1242
+ x-celigo-ai-guidance:
1243
+ - |-
1244
+ A 422 with an empty `{}` body from this route means `options.connection.type` is
1245
+ `http` and `options.fieldPath` is missing: every template fails that way until
1246
+ `fieldPath` names the step field the template belongs to, such as `http.body`.
1247
+ connection:
1248
+ type: object
1249
+ additionalProperties: true
1250
+ description: The import's connection; `type` `http` turns static lookup resolution on.
1251
+ properties:
1252
+ type:
1253
+ type: string
1254
+ description: Connection type of the import; static lookups resolve with `http`.
1255
+ examples:
1256
+ - http
1257
+ import:
1258
+ type: object
1259
+ additionalProperties: true
1260
+ description: |-
1261
+ The saved import whose `http.lookups` the template calls by name. A key found in
1262
+ a lookup's `map` renders the mapped value, and any other key renders the lookup's
1263
+ `default`, or empty when it has none. Failures answer 422 with an `errors` array:
1264
+ `cannot_evaluate_static_lookup` for a key not in the map when the lookup sets
1265
+ `allowFailures: false`, `lookup_not_found` for a name the import doesn't define
1266
+ (Handlebars' own `{{lookup object key}}` form included), and
1267
+ `lookup_data_not_defined` for a key that is missing, empty or the number `0`.
1268
+ if:
1269
+ properties:
1270
+ connection:
1271
+ properties:
1272
+ type:
1273
+ const: http
1274
+ required:
1275
+ - type
1276
+ required:
1277
+ - connection
1278
+ then:
1279
+ required:
1280
+ - fieldPath
1217
1281
  data:
1218
1282
  type: object
1219
1283
  additionalProperties: true
@@ -1228,6 +1292,27 @@ paths:
1228
1292
  data:
1229
1293
  record:
1230
1294
  name: Smith & Sons
1295
+ static_lookup:
1296
+ summary: Resolve an HTTP import's static lookup
1297
+ value:
1298
+ rules:
1299
+ template: '{{lookup ''statusMap'' record.status}}'
1300
+ resultMode: text
1301
+ data:
1302
+ record:
1303
+ status: '1'
1304
+ options:
1305
+ fieldPath: http.body
1306
+ connection:
1307
+ type: http
1308
+ import:
1309
+ http:
1310
+ lookups:
1311
+ - name: statusMap
1312
+ map:
1313
+ '1': active
1314
+ '2': inactive
1315
+ default: unknown
1231
1316
  responses:
1232
1317
  '200':
1233
1318
  description: The rendered template.
@@ -1256,6 +1341,12 @@ paths:
1256
1341
  mediaType: text
1257
1342
  data: Smith &amp; Sons | Smith & Sons
1258
1343
  duration: 0
1344
+ static_lookup:
1345
+ summary: Result of the static lookup request example
1346
+ value:
1347
+ mediaType: text
1348
+ data: active
1349
+ duration: 1
1259
1350
  '401':
1260
1351
  $ref: '#/components/responses/401-unauthorized'
1261
1352
  '422':
package/dist/tool.yml CHANGED
@@ -1241,8 +1241,8 @@ paths:
1241
1241
  '422':
1242
1242
  description: |-
1243
1243
  A step failed, or the Tool was refused before any step ran: a connection binding is
1244
- missing (`connection_not_overridden`) or has no `_id`, its branches don't all merge
1245
- back (`tool_dangling_branch`), or the input fails `input.schema` (a missing `required`
1244
+ missing (`connection_not_overridden`), its branches don't all merge back
1245
+ (`tool_dangling_branch`), or the input fails `input.schema` (a missing `required`
1246
1246
  property answers `tool_input_schema_validation_failed`). The output stage answers 422 too when the stored
1247
1247
  `output.schema` holds `additionalProperties: false` and the output mappings write a field
1248
1248
  it doesn't list ("Tool output validation failed: must NOT have additional properties").
@@ -1250,6 +1250,14 @@ paths:
1250
1250
  `proceedOnFailure: true`: the later steps still run, but the response carries the error,
1251
1251
  not the output. Either way the response includes `invocationId` when logging is active,
1252
1252
  so the run can be opened in the run history.
1253
+
1254
+ Once the Tool is found and has steps, a malformed `overrides` block is refused with
1255
+ `invalid_override` ("Invalid override at <path>. <reason>") before any step runs:
1256
+ `overrides` is not an object, a `connections`/`exports`/`imports`/`routers` value is not
1257
+ an array or holds a non-object entry, a connection binding has no `_abstractId`, names
1258
+ none of `_id`, `_borrowConcurrencyFromConnectionId`, or `requiresEndUserCredentials`, or
1259
+ sets both `_id` and `_borrowConcurrencyFromConnectionId`. These refusals carry only `code`
1260
+ and `message`, and no `invocationId` even with `x-log-mode: debug`.
1253
1261
  content:
1254
1262
  application/json:
1255
1263
  schema:
@@ -1259,7 +1267,7 @@ paths:
1259
1267
  properties:
1260
1268
  errors:
1261
1269
  type: array
1262
- description: Execution errors, each with a `code`, `message`, `source`, and epoch-millisecond `time`.
1270
+ description: Execution errors, each with a `code`, `message`, `source`, and epoch-millisecond `time`. An `invalid_override` refusal has only `code` and `message`.
1263
1271
  items:
1264
1272
  type: object
1265
1273
  additionalProperties: true
@@ -1280,10 +1288,23 @@ paths:
1280
1288
  message: 'Missing connection overrides. The following connection IDs must be overridden: 6ab1f5657b3d01a9084253a5.'
1281
1289
  invocationId: 6ab1f5877cd5cdd66da1cc8b
1282
1290
  binding_without_id:
1283
- summary: A connection binding without `_id`
1291
+ summary: A connection binding with only `_abstractId`
1292
+ value:
1293
+ errors:
1294
+ - code: invalid_override
1295
+ message: 'Invalid override at overrides.connections[0]. Connection override must include at least one of: _id, _borrowConcurrencyFromConnectionId, requiresEndUserCredentials.'
1296
+ binding_without_abstract_id:
1297
+ summary: A connection binding without `_abstractId`
1298
+ value:
1299
+ errors:
1300
+ - code: invalid_override
1301
+ message: Invalid override at overrides.connections[0]._abstractId. Missing required _abstractId.
1302
+ overrides_not_object:
1303
+ summary: '`overrides` sent as an array'
1284
1304
  value:
1285
1305
  errors:
1286
- - message: 'Invalid override at overrides.connections[0]. Connection override must include at least one of: _id, _borrowConcurrencyFromConnectionId, requiresEndUserCredentials.'
1306
+ - code: invalid_override
1307
+ message: Invalid override at overrides. Expected overrides to be an object.
1287
1308
  /v1/tools/{_id}/invocations:
1288
1309
  get:
1289
1310
  x-internal: false
@@ -1895,12 +1916,14 @@ paths:
1895
1916
  not landed yet; re-query before concluding nothing was stored.
1896
1917
 
1897
1918
  For nested Tools, set `stage` to `tool` with the nested ToolImport id to fetch the
1898
- composed input/output payload.
1919
+ composed input/output payload; `groupId` is not needed for that stage and is ignored.
1920
+ Until the nested Tool's payloads land, that entry carries only `_expOrImpId` and `stage`.
1899
1921
 
1900
1922
  When the invocation is missing or not visible under the caller's integration ACL,
1901
1923
  the endpoint returns `204 No Content`. `404` applies only to an unknown or inaccessible
1902
- Tool `_id`. A malformed `executionId` returns `422`, and a body missing any of the four
1903
- selector keys returns `400`. Sandbox Tools return `403`.
1924
+ Tool `_id`. A malformed `executionId` returns `422`, and a body missing a required
1925
+ selector key (`groupId` is required for every stage except `tool`) returns `400`.
1926
+ Sandbox Tools return `403`.
1904
1927
  parameters:
1905
1928
  - name: _id
1906
1929
  in: path
@@ -1947,7 +1970,6 @@ paths:
1947
1970
  value:
1948
1971
  _expOrImpId: 67ee026136f4d1eeb529ad63
1949
1972
  stage: tool
1950
- groupId: g-12345
1951
1973
  recordId: r-67890
1952
1974
  responses:
1953
1975
  '200':
@@ -2012,6 +2034,21 @@ paths:
2012
2034
  content-type: application/json; charset=utf-8
2013
2035
  body: '[{"_id":"6a50f177a8d85436a4a890db","name":"SO-1043"}]'
2014
2036
  errors: []
2037
+ nestedToolStage:
2038
+ summary: Nested Tool composed payload — the record it received and the record it returned
2039
+ value:
2040
+ logs:
2041
+ - log:
2042
+ _expOrImpId: 67ee026136f4d1eeb529ad63
2043
+ stage: tool
2044
+ input:
2045
+ record:
2046
+ orderId: SO-1043
2047
+ output:
2048
+ record:
2049
+ orderId: SO-1043
2050
+ title: Sample Slide Show
2051
+ errors: []
2015
2052
  noMatch:
2016
2053
  summary: Selector matched no stored payload
2017
2054
  value:
@@ -31247,7 +31284,8 @@ components:
31247
31284
  description: |-
31248
31285
  Provider-native ID of the storage root (e.g. a Google Drive shared-drive ID) the relative
31249
31286
  path resolves against; set when pathMode is relativePath. The provider's own ID, not a Celigo ID.
31250
- For Google Cloud Storage it is the bucket name.
31287
+ For Google Cloud Storage it is the bucket name, and a bucket that doesn't exist fails the
31288
+ export preview with 422 `gcs_bucket_not_found`.
31251
31289
  examples:
31252
31290
  - 1qU1hvFarBFMb4-twqKm1rR5o_6j9vs9g
31253
31291
  - erp-exports
@@ -39498,8 +39536,15 @@ components:
39498
39536
  required:
39499
39537
  - _expOrImpId
39500
39538
  - stage
39501
- - groupId
39502
39539
  - recordId
39540
+ if:
39541
+ properties:
39542
+ stage:
39543
+ not:
39544
+ const: tool
39545
+ then:
39546
+ required:
39547
+ - groupId
39503
39548
  properties:
39504
39549
  _expOrImpId:
39505
39550
  type: string
@@ -39526,7 +39571,7 @@ components:
39526
39571
  - tool
39527
39572
  groupId:
39528
39573
  type: string
39529
- description: Group identifier of the step record.
39574
+ description: Group identifier of the step record. Ignored when `stage` is `tool`.
39530
39575
  examples:
39531
39576
  - YYFuqOqC
39532
39577
  recordId:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@celigo/api-specs",
3
- "version": "0.2.202",
3
+ "version": "0.2.203",
4
4
  "private": false,
5
5
  "description": "Public OpenAPI bundles (dist/) and the celigo-cli lint schema pack (schemas.json).",
6
6
  "keywords": [
package/schemas.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "provenance": {
3
3
  "repo": "celigo/integrator-api-specs",
4
- "iasCommit": "4a026a0b",
4
+ "iasCommit": "d2f3a96e",
5
5
  "generatedAt": "2026-10-28"
6
6
  },
7
7
  "roots": {