@celigo/api-specs 0.2.202 → 0.2.204

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:
@@ -220,6 +220,7 @@ paths:
220
220
  policies: []
221
221
  createdAt: '2026-04-24T16:52:05.607Z'
222
222
  lastModified: '2026-04-24T16:52:05.607Z'
223
+ enabledItemCount: 0
223
224
  '400':
224
225
  $ref: '#/components/responses/400-bad-request'
225
226
  '401':
@@ -347,8 +348,8 @@ paths:
347
348
  prompts, resources, connections, upstream MCP connections, and OAuth
348
349
  settings. Each upstream connection row is enriched with the connection's
349
350
  current `name` and each upstream capability with its effective `title`,
350
- `annotations`, and (when overridden) `name`; `enabledItemCount` is
351
- computed on this response and the list response only.
351
+ `annotations`, and (when overridden) `name`, and `enabledItemCount` is
352
+ computed. The list, POST, and PUT responses carry the same enrichment.
352
353
  operationId: getMcpServerById
353
354
  tags:
354
355
  - MCP Servers
@@ -596,6 +597,7 @@ paths:
596
597
  useCeligoOauth: true
597
598
  createdAt: '2026-04-24T16:52:05.607Z'
598
599
  lastModified: '2026-05-07T15:22:16.985Z'
600
+ enabledItemCount: 3
599
601
  '400':
600
602
  $ref: '#/components/responses/400-bad-request'
601
603
  '401':
@@ -3704,11 +3706,6 @@ components:
3704
3706
  resources combined: the 501st row fails the whole PUT with 422
3705
3707
  "mcp_upstream_max_capabilities" on upstreamMcpConnections[{index}].
3706
3708
  The cap is per attachment, so a second connection gets its own 500.
3707
- - |-
3708
- Set alias explicitly when the connection name is longer than 32
3709
- characters: the alias derived from the name on first attach fails the
3710
- PUT with 422 "size_limit_exceeded" on upstreamMcpConnections.{index}.alias,
3711
- the same response an explicit alias of 33 or more characters gets.
3712
3709
  required:
3713
3710
  - _connectionId
3714
3711
  properties:
@@ -3728,11 +3725,14 @@ components:
3728
3725
  description: |-
3729
3726
  Short handle that namespaces the upstream's capabilities on this
3730
3727
  server. Lowercased on save and unique per server (case-insensitive) —
3731
- a duplicate is rejected with 422 `mcp_upstream_duplicate_alias`, an
3732
- invalid character with 422 `mcp_upstream_invalid_alias_charset`, and
3733
- an over-long value with 422 `size_limit_exceeded`.
3734
- Derived from the connection name when omitted on the first attach, so
3735
- a name longer than the alias cap needs an explicit alias.
3728
+ a duplicate is rejected with 422 `mcp_upstream_duplicate_alias` and an
3729
+ invalid character with 422 `mcp_upstream_invalid_alias_charset`.
3730
+ Derived from the connection name when omitted on the first attach,
3731
+ with every character other than a letter, digit, `-`, or `_` turned
3732
+ into `_`. POST, PUT, and PATCH shorten a sent or derived value over 32
3733
+ characters to 32 instead of rejecting it: the cut drops trailing `_`
3734
+ (and, for a sent value, trailing `-`), and a `_2`, `_3`, … suffix
3735
+ within the 32 settles a collision with another alias on the server.
3736
3736
  examples:
3737
3737
  - deepwiki
3738
3738
  - crm_tools
@@ -3741,7 +3741,7 @@ components:
3741
3741
  readOnly: true
3742
3742
  description: |-
3743
3743
  Current display name of the attached connection, joined from the
3744
- connection record on GET and list responses.
3744
+ connection record on GET, list, POST, and PUT responses.
3745
3745
  examples:
3746
3746
  - DeepWiki MCP
3747
3747
  discoveryStatus:
@@ -4419,9 +4419,9 @@ components:
4419
4419
  description: |-
4420
4420
  Number of capabilities currently served — enabled `tools`, `apis`,
4421
4421
  `prompts`, and `resources` plus every enabled and available upstream
4422
- tool, prompt, and resource row. Computed on GET and list responses
4423
- only (it is absent from create and update responses) and reported
4424
- even when `include` omits the arrays it counts.
4422
+ tool, prompt, and resource row. Computed on GET, list, POST, and
4423
+ PUT responses, and reported even when `include` omits the arrays
4424
+ it counts.
4425
4425
  examples:
4426
4426
  - 5
4427
4427
  draft:
@@ -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':
@@ -74,6 +74,9 @@ paths:
74
74
  total bytes a statement may read are each capped; the 422 that reports an exceeded
75
75
  cap names the current limit. Requires the account's license to include the Storage
76
76
  Query entitlement (`filesql`).
77
+ parameters:
78
+ - $ref: '#/components/parameters/AShareIdHeader'
79
+ - $ref: '#/components/parameters/EnvIdHeader'
77
80
  requestBody:
78
81
  required: true
79
82
  content:
@@ -150,8 +153,13 @@ paths:
150
153
  '403':
151
154
  description: |-
152
155
  The account's license does not include the Storage Query entitlement
153
- (`STORAGE_QUERY_NOT_ENTITLED`). Also returned when the caller's role,
154
- environment, or account-share context does not permit the query.
156
+ (`STORAGE_QUERY_NOT_ENTITLED`), or the account context is refused: the caller
157
+ has accepted an account share but sent no `integrator-ashareid`
158
+ (`STORAGE_QUERY_ASHARE_HEADER_REQUIRED`), `integrator-ashareid` and
159
+ `integrator-envid` were both sent (`STORAGE_QUERY_CONFLICTING_ACCOUNT_HEADERS`),
160
+ `integrator-envid` is not an environment of the caller's account
161
+ (`STORAGE_QUERY_INVALID_ENVIRONMENT`), or `integrator-ashareid` is not a share
162
+ accepted by the caller (`STORAGE_QUERY_ACCESS_REFUSED`).
155
163
  content:
156
164
  application/json:
157
165
  schema:
@@ -162,6 +170,30 @@ paths:
162
170
  errors:
163
171
  - code: STORAGE_QUERY_NOT_ENTITLED
164
172
  message: Storage query is not enabled for this account
173
+ ashareHeaderRequired:
174
+ summary: Caller has an accepted share but sent no integrator-ashareid
175
+ value:
176
+ errors:
177
+ - code: STORAGE_QUERY_ASHARE_HEADER_REQUIRED
178
+ message: This account is shared with you; resend the query with the integrator-ashareid header
179
+ conflictingAccountHeaders:
180
+ summary: integrator-ashareid and integrator-envid sent together
181
+ value:
182
+ errors:
183
+ - code: STORAGE_QUERY_CONFLICTING_ACCOUNT_HEADERS
184
+ message: integrator-ashareid and integrator-envid cannot be combined; send only the one that names the account for this query
185
+ invalidEnvironment:
186
+ summary: integrator-envid is not an environment of this account
187
+ value:
188
+ errors:
189
+ - code: STORAGE_QUERY_INVALID_ENVIRONMENT
190
+ message: The requested environment is not available for this account
191
+ accessRefused:
192
+ summary: integrator-ashareid is not a share accepted by the caller
193
+ value:
194
+ errors:
195
+ - code: STORAGE_QUERY_ACCESS_REFUSED
196
+ message: Your role, environment or account sharing does not permit this query
165
197
  '404':
166
198
  description: |-
167
199
  A referenced storage path did not resolve to a file the caller can read
@@ -189,16 +221,18 @@ paths:
189
221
  whose first argument is not a literal path or list of paths
190
222
  (`STORAGE_QUERY_READER_PATH_NOT_LITERAL`); a reader that does not match the
191
223
  file's format (`STORAGE_QUERY_READER_FORMAT_MISMATCH`); a row generator with no
192
- file reference (`STORAGE_QUERY_NO_STORAGE_REFERENCE`) or one that would generate
193
- more rows than allowed (`STORAGE_QUERY_GENERATOR_TOO_LARGE`); a schema- or
224
+ file reference (`STORAGE_QUERY_NO_STORAGE_REFERENCE`), one whose arguments are
225
+ not all whole-number literals (`STORAGE_QUERY_GENERATOR_ARGUMENT_NOT_LITERAL`),
226
+ or one that would generate more rows than allowed
227
+ (`STORAGE_QUERY_GENERATOR_TOO_LARGE`); a schema- or
194
228
  catalog-qualified table name, or a path carrying a wildcard
195
229
  (`STORAGE_QUERY_INVALID_SOURCE`); a folder path without its trailing slash
196
230
  (`STORAGE_NOT_A_FILE`) or a file path with one (`STORAGE_ITEM_NOT_FOLDER`); an
197
231
  unsupported file type (`STORAGE_QUERY_UNSUPPORTED_FILE_TYPE`) — a compressed
198
232
  file is refused too, with "Querying `<name>` is not supported; supported formats
199
- are CSV, JSON, NDJSON, and Parquet"; a file still uploading ("Upload for `<path>`
200
- is not yet complete"); a folder that is
201
- empty, mixes formats, or holds too many files (`STORAGE_QUERY_FOLDER_EMPTY`,
233
+ are CSV, JSON, NDJSON, and Parquet"; a file still uploading
234
+ (`STORAGE_ITEM_NOT_ACTIVE`, "Upload for `<path>` is not yet complete"); a folder
235
+ that is empty, mixes formats, or holds too many files (`STORAGE_QUERY_FOLDER_EMPTY`,
202
236
  `STORAGE_QUERY_MIXED_FORMAT_FOLDER`, `STORAGE_QUERY_FOLDER_TOO_MANY_FILES`); too
203
237
  many distinct files (`STORAGE_QUERY_TOO_MANY_SOURCES`); or more input bytes than
204
238
  the cap (`STORAGE_QUERY_INPUT_TOO_LARGE`).
@@ -243,6 +277,18 @@ paths:
243
277
  errors:
244
278
  - code: STORAGE_QUERY_NO_STORAGE_REFERENCE
245
279
  message: A query that generates rows must read at least one Celigo Storage file; only constant expressions may omit a file reference
280
+ generatorArgumentNotLiteral:
281
+ summary: Row generator argument that is an expression
282
+ value:
283
+ errors:
284
+ - code: STORAGE_QUERY_GENERATOR_ARGUMENT_NOT_LITERAL
285
+ message: Every argument of generate_series must be a whole-number literal so the row count can be checked before the query runs
286
+ fileStillUploading:
287
+ summary: File whose upload has not finished
288
+ value:
289
+ errors:
290
+ - code: STORAGE_ITEM_NOT_ACTIVE
291
+ message: Upload for "/orders/2026/batch-07.csv" is not yet complete
246
292
  wildcardPath:
247
293
  summary: Wildcard in a storage path
248
294
  value:
@@ -311,6 +357,8 @@ paths:
311
357
  format: objectId
312
358
  examples:
313
359
  - 6ab5a7d0c772d334c44701be
360
+ - $ref: '#/components/parameters/AShareIdHeader'
361
+ - $ref: '#/components/parameters/EnvIdHeader'
314
362
  responses:
315
363
  '200':
316
364
  description: Current state of the job.
@@ -376,7 +424,15 @@ paths:
376
424
  '401':
377
425
  $ref: '#/components/responses/401-unauthorized'
378
426
  '403':
379
- description: The account's license does not include the Storage Query entitlement (`STORAGE_QUERY_NOT_ENTITLED`).
427
+ description: |-
428
+ The account's license does not include the Storage Query entitlement
429
+ (`STORAGE_QUERY_NOT_ENTITLED`), or the account context is refused: the caller
430
+ has accepted an account share but sent no `integrator-ashareid`
431
+ (`STORAGE_QUERY_ASHARE_HEADER_REQUIRED`), `integrator-ashareid` and
432
+ `integrator-envid` were both sent (`STORAGE_QUERY_CONFLICTING_ACCOUNT_HEADERS`),
433
+ `integrator-envid` is not an environment of the caller's account
434
+ (`STORAGE_QUERY_INVALID_ENVIRONMENT`), or `integrator-ashareid` is not a share
435
+ accepted by the caller (`STORAGE_QUERY_ACCESS_REFUSED`).
380
436
  content:
381
437
  application/json:
382
438
  schema:
@@ -387,6 +443,30 @@ paths:
387
443
  errors:
388
444
  - code: STORAGE_QUERY_NOT_ENTITLED
389
445
  message: Storage query is not enabled for this account
446
+ ashareHeaderRequired:
447
+ summary: Caller has an accepted share but sent no integrator-ashareid
448
+ value:
449
+ errors:
450
+ - code: STORAGE_QUERY_ASHARE_HEADER_REQUIRED
451
+ message: This account is shared with you; resend the query with the integrator-ashareid header
452
+ conflictingAccountHeaders:
453
+ summary: integrator-ashareid and integrator-envid sent together
454
+ value:
455
+ errors:
456
+ - code: STORAGE_QUERY_CONFLICTING_ACCOUNT_HEADERS
457
+ message: integrator-ashareid and integrator-envid cannot be combined; send only the one that names the account for this query
458
+ invalidEnvironment:
459
+ summary: integrator-envid is not an environment of this account
460
+ value:
461
+ errors:
462
+ - code: STORAGE_QUERY_INVALID_ENVIRONMENT
463
+ message: The requested environment is not available for this account
464
+ accessRefused:
465
+ summary: integrator-ashareid is not a share accepted by the caller
466
+ value:
467
+ errors:
468
+ - code: STORAGE_QUERY_ACCESS_REFUSED
469
+ message: Your role, environment or account sharing does not permit this query
390
470
  '404':
391
471
  description: No job with this id is visible to the caller (`STORAGE_QUERY_JOB_NOT_FOUND`) — unknown, expired, or submitted by another account.
392
472
  content:
@@ -446,6 +526,8 @@ paths:
446
526
  format: objectId
447
527
  examples:
448
528
  - 6ab5a7d0c772d334c44701be
529
+ - $ref: '#/components/parameters/AShareIdHeader'
530
+ - $ref: '#/components/parameters/EnvIdHeader'
449
531
  - name: page
450
532
  in: query
451
533
  required: false
@@ -510,7 +592,15 @@ paths:
510
592
  '401':
511
593
  $ref: '#/components/responses/401-unauthorized'
512
594
  '403':
513
- description: The account's license does not include the Storage Query entitlement (`STORAGE_QUERY_NOT_ENTITLED`).
595
+ description: |-
596
+ The account's license does not include the Storage Query entitlement
597
+ (`STORAGE_QUERY_NOT_ENTITLED`), or the account context is refused: the caller
598
+ has accepted an account share but sent no `integrator-ashareid`
599
+ (`STORAGE_QUERY_ASHARE_HEADER_REQUIRED`), `integrator-ashareid` and
600
+ `integrator-envid` were both sent (`STORAGE_QUERY_CONFLICTING_ACCOUNT_HEADERS`),
601
+ `integrator-envid` is not an environment of the caller's account
602
+ (`STORAGE_QUERY_INVALID_ENVIRONMENT`), or `integrator-ashareid` is not a share
603
+ accepted by the caller (`STORAGE_QUERY_ACCESS_REFUSED`).
514
604
  content:
515
605
  application/json:
516
606
  schema:
@@ -521,6 +611,30 @@ paths:
521
611
  errors:
522
612
  - code: STORAGE_QUERY_NOT_ENTITLED
523
613
  message: Storage query is not enabled for this account
614
+ ashareHeaderRequired:
615
+ summary: Caller has an accepted share but sent no integrator-ashareid
616
+ value:
617
+ errors:
618
+ - code: STORAGE_QUERY_ASHARE_HEADER_REQUIRED
619
+ message: This account is shared with you; resend the query with the integrator-ashareid header
620
+ conflictingAccountHeaders:
621
+ summary: integrator-ashareid and integrator-envid sent together
622
+ value:
623
+ errors:
624
+ - code: STORAGE_QUERY_CONFLICTING_ACCOUNT_HEADERS
625
+ message: integrator-ashareid and integrator-envid cannot be combined; send only the one that names the account for this query
626
+ invalidEnvironment:
627
+ summary: integrator-envid is not an environment of this account
628
+ value:
629
+ errors:
630
+ - code: STORAGE_QUERY_INVALID_ENVIRONMENT
631
+ message: The requested environment is not available for this account
632
+ accessRefused:
633
+ summary: integrator-ashareid is not a share accepted by the caller
634
+ value:
635
+ errors:
636
+ - code: STORAGE_QUERY_ACCESS_REFUSED
637
+ message: Your role, environment or account sharing does not permit this query
524
638
  '404':
525
639
  description: No job with this id is visible to the caller (`STORAGE_QUERY_JOB_NOT_FOUND`) — unknown, expired, or submitted by another account.
526
640
  content:
@@ -575,6 +689,38 @@ components:
575
689
  bearerAuth:
576
690
  type: http
577
691
  scheme: bearer
692
+ parameters:
693
+ AShareIdHeader:
694
+ name: integrator-ashareid
695
+ in: header
696
+ required: false
697
+ description: |-
698
+ Account share to run the call as. Required when the caller has accepted a share
699
+ of any account: without it every Storage Query route answers
700
+ `403 STORAGE_QUERY_ASHARE_HEADER_REQUIRED`. A value that is not a share the caller
701
+ has accepted answers `403 STORAGE_QUERY_ACCESS_REFUSED`. Cannot be sent together
702
+ with `integrator-envid`.
703
+ schema:
704
+ type: string
705
+ format: objectId
706
+ x-celigo-refModel: ashares
707
+ examples:
708
+ - 6ab5a7d0c772d334c44701aa
709
+ EnvIdHeader:
710
+ name: integrator-envid
711
+ in: header
712
+ required: false
713
+ description: |-
714
+ Environment of the caller's own account to run the call in. Omit it to use the
715
+ environment the token belongs to. An id that is malformed or not an environment
716
+ of the caller's account answers `403 STORAGE_QUERY_INVALID_ENVIRONMENT`. Cannot be
717
+ sent together with `integrator-ashareid`.
718
+ schema:
719
+ type: string
720
+ format: objectId
721
+ x-celigo-refModel: environments
722
+ examples:
723
+ - 6ab5a7d0c772d334c44701bb
578
724
  schemas:
579
725
  StorageQueryRequest:
580
726
  type: object