@celigo/api-specs 0.2.169 → 0.2.171
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/ai-agent.yml +20 -201
- package/dist/audit.yml +82 -19
- package/dist/connection.yml +6 -3
- package/dist/export.yml +63 -24
- package/dist/fileserver.yml +59 -8
- package/dist/flow.yml +6 -3
- package/dist/guardrail.yml +22 -18
- package/dist/import.yml +56 -31
- package/dist/networkpolicy.yml +4 -0
- package/dist/tool.yml +114 -53
- package/package.json +1 -1
- package/schemas.json +1317 -1328
package/dist/ai-agent.yml
CHANGED
|
@@ -1232,7 +1232,7 @@ components:
|
|
|
1232
1232
|
x-enumDescriptions:
|
|
1233
1233
|
text: Free-form text response from the model.
|
|
1234
1234
|
json_schema: Structured JSON output conforming to a defined schema.
|
|
1235
|
-
blob:
|
|
1235
|
+
blob: Image generation — the run calls the image generation tool and returns the stored image's `blobKey`, not `_text` or `_json`.
|
|
1236
1236
|
default: text
|
|
1237
1237
|
description: Output format type.
|
|
1238
1238
|
schemaMode:
|
|
@@ -1454,11 +1454,6 @@ components:
|
|
|
1454
1454
|
an object without a non-empty name fails with a
|
|
1455
1455
|
missing-required-field error. String entries are the
|
|
1456
1456
|
legacy form and stay valid.
|
|
1457
|
-
allowedPrompts:
|
|
1458
|
-
type: array
|
|
1459
|
-
description: Specific prompts to allow from the MCP server (used for MCP prompt entries; all if omitted).
|
|
1460
|
-
items:
|
|
1461
|
-
type: string
|
|
1462
1457
|
tool:
|
|
1463
1458
|
type: object
|
|
1464
1459
|
description: |
|
|
@@ -1601,7 +1596,7 @@ components:
|
|
|
1601
1596
|
x-enumDescriptions:
|
|
1602
1597
|
text: Free-form text response from the model.
|
|
1603
1598
|
json_schema: Structured JSON output conforming to a defined schema.
|
|
1604
|
-
blob:
|
|
1599
|
+
blob: Image generation — the run returns the stored image's `blobKey`, not `_text` or `_json`.
|
|
1605
1600
|
default: text
|
|
1606
1601
|
schemaMode:
|
|
1607
1602
|
type: string
|
|
@@ -1770,11 +1765,6 @@ components:
|
|
|
1770
1765
|
description: Display description shown for the tool.
|
|
1771
1766
|
required:
|
|
1772
1767
|
- name
|
|
1773
|
-
allowedPrompts:
|
|
1774
|
-
type: array
|
|
1775
|
-
description: Specific prompts to allow from the MCP server (used for MCP prompt entries; all if omitted).
|
|
1776
|
-
items:
|
|
1777
|
-
type: string
|
|
1778
1768
|
tool:
|
|
1779
1769
|
type: object
|
|
1780
1770
|
description: Reference to a Celigo Tool resource, used when type is "tool".
|
|
@@ -4398,192 +4388,6 @@ components:
|
|
|
4398
4388
|
- lookupName
|
|
4399
4389
|
- required:
|
|
4400
4390
|
- hardCodedValue
|
|
4401
|
-
ResponseMapping:
|
|
4402
|
-
type: object
|
|
4403
|
-
description: |
|
|
4404
|
-
Merges fields from a step's response back onto the in-flight record so
|
|
4405
|
-
downstream steps can read them. Applies to both lookup steps
|
|
4406
|
-
(`type: "export"`) and import steps (`type: "import"`); without it, the
|
|
4407
|
-
step's response is discarded after the call.
|
|
4408
|
-
|
|
4409
|
-
`fields` and `lists` are plain arrays — exactly the shape GET returns.
|
|
4410
|
-
|
|
4411
|
-
Extract paths do NOT read the raw application response — the platform
|
|
4412
|
-
wraps every response in a canonical per-record envelope first, and
|
|
4413
|
-
extracts evaluate against that envelope:
|
|
4414
|
-
|
|
4415
|
-
- **Lookup steps**: `{"statusCode": 200, "data": [<result records>],
|
|
4416
|
-
"errors": []}` — `data` holds the records the lookup step returns,
|
|
4417
|
-
AFTER the export's own `transform` and output `filter` have run, so
|
|
4418
|
-
extracts must start from it and name transformed fields by their
|
|
4419
|
-
transformed name: `data[0].name` copies a field of the first result,
|
|
4420
|
-
`data` copies the whole result array. A bare result-record field name
|
|
4421
|
-
(e.g. `name`) resolves to nothing and merges nothing, and so does the
|
|
4422
|
-
raw response path a transform consumed. A lookup that groups its
|
|
4423
|
-
results returns each group as an array inside `data`
|
|
4424
|
-
(`"data": [[<row>, <row>]]`): `data[0][0].name` (or `data.0.0.name`)
|
|
4425
|
-
reads the first row of the first group, and `data[0]` copies the group.
|
|
4426
|
-
- **Import steps**: `{"id": "<destination record id>", "statusCode": 200,
|
|
4427
|
-
"ignored": false, "errors": [], "_json": <raw destination response>,
|
|
4428
|
-
...<response body fields flattened at the root>}` — use `id` for the
|
|
4429
|
-
destination-assigned id and `_json.<path>` (or the flattened
|
|
4430
|
-
`<path>`) for fields inside the destination's response body. The full
|
|
4431
|
-
envelope (including `id`) is present on real runs and in flow-builder
|
|
4432
|
-
previews; flow TEST runs never execute imports, and their envelope is
|
|
4433
|
-
built from the import's saved `mockResponse`, or from the placeholder
|
|
4434
|
-
`{"id": "1234567890", "mockResponse": "replace me"}` (numbered
|
|
4435
|
-
`1234567890-1`, `1234567890-2`, … when a page holds several records)
|
|
4436
|
-
— an `extract: "id"` in a test run merges that mock id, never a
|
|
4437
|
-
destination record id.
|
|
4438
|
-
|
|
4439
|
-
An `extract` may also be a Handlebars expression. It evaluates against
|
|
4440
|
-
the same envelope as a plain path, so every path inside `{{ }}` starts
|
|
4441
|
-
where the plain paths start — `{{data.0.name}}`,
|
|
4442
|
-
`{{#compare data.0.count "==" 1}}yes{{else}}no{{/compare}}`,
|
|
4443
|
-
`{{#if data.length}}found{{/if}}` on a lookup; `{{_json.order.id}}` or
|
|
4444
|
-
`{{id}}` on an import. Index arrays with dots inside Handlebars
|
|
4445
|
-
(`data.0.name` or `data.[0].name`; `data[0].name` renders nothing), and
|
|
4446
|
-
expect a string result (`"1"`, `"false"`). There is no `record` object in
|
|
4447
|
-
this context: `{{record.<anything>}}` renders nothing. Prefer a plain
|
|
4448
|
-
path when the value is simply copied.
|
|
4449
|
-
x-celigo-ai-guidance:
|
|
4450
|
-
- |-
|
|
4451
|
-
Handlebars is allowed in `extract` but only rooted at the envelope —
|
|
4452
|
-
`{{data.0.x}}` on a lookup, `{{_json.x}}` / `{{id}}` on an import. The
|
|
4453
|
-
`record.` root belongs to import-mapping templates; here every
|
|
4454
|
-
`{{record.…}}` form renders nothing, silently, and `{{data[0].x}}`
|
|
4455
|
-
(bracket index inside Handlebars) renders nothing too. Use Handlebars
|
|
4456
|
-
only for a derived value (a flag, a concatenation); copy values with a
|
|
4457
|
-
plain path.
|
|
4458
|
-
- |-
|
|
4459
|
-
A lookup's `data[]` is the step's output after its `transform` and
|
|
4460
|
-
`filter`, so author extracts against the transformed records — never
|
|
4461
|
-
against the raw response the transform consumed, and never against a
|
|
4462
|
-
saved `mockOutput` as stored (it is the raw response; the transform
|
|
4463
|
-
runs on top of it in a test run).
|
|
4464
|
-
- |-
|
|
4465
|
-
Send `fields` and `lists` as bare arrays, exactly as GET returns them.
|
|
4466
|
-
Never wrap either in an object (e.g. `"fields": {"type": [...]}`): the
|
|
4467
|
-
API does not reject that shape — it returns 200 and silently persists
|
|
4468
|
-
`fields: [null]` / `lists: [{"fields": []}]`, erasing the step's
|
|
4469
|
-
response mappings.
|
|
4470
|
-
- |-
|
|
4471
|
-
responseMapping is fully replaced on PUT: omitting it resets the step
|
|
4472
|
-
to empty `{"fields": [], "lists": []}`. Always send the complete
|
|
4473
|
-
intended mapping for every step.
|
|
4474
|
-
- |-
|
|
4475
|
-
To carry several lookup results onto the record, use `extract: "data"`
|
|
4476
|
-
(the whole result array) or a `lists` entry whose extracts use
|
|
4477
|
-
`data[*].x` — never `data[*].x` in `fields[].extract`, which merges
|
|
4478
|
-
nothing: the record simply never gains the field.
|
|
4479
|
-
examples:
|
|
4480
|
-
- fields:
|
|
4481
|
-
- extract: id
|
|
4482
|
-
generate: ContactId
|
|
4483
|
-
lists: []
|
|
4484
|
-
- fields:
|
|
4485
|
-
- extract: data[0].customer.name
|
|
4486
|
-
generate: customerName
|
|
4487
|
-
lists:
|
|
4488
|
-
- generate: matchedOrders
|
|
4489
|
-
fields:
|
|
4490
|
-
- extract: data[*].id
|
|
4491
|
-
generate: orderId
|
|
4492
|
-
- extract: data[*].total
|
|
4493
|
-
generate: amount
|
|
4494
|
-
properties:
|
|
4495
|
-
fields:
|
|
4496
|
-
type: array
|
|
4497
|
-
description: |
|
|
4498
|
-
Field mappings that copy individual values from the response
|
|
4499
|
-
envelope onto the in-flight record.
|
|
4500
|
-
items:
|
|
4501
|
-
type: object
|
|
4502
|
-
properties:
|
|
4503
|
-
extract:
|
|
4504
|
-
type: string
|
|
4505
|
-
x-celigo-agent:
|
|
4506
|
-
- handlebars
|
|
4507
|
-
description: |
|
|
4508
|
-
Path within the canonical response envelope to copy the value
|
|
4509
|
-
from, or a Handlebars expression over that same envelope. For
|
|
4510
|
-
lookup steps, paths start from the envelope's `data` array
|
|
4511
|
-
(`data[0].x` and `data.0.x` are equivalent; `data` alone
|
|
4512
|
-
copies every result) — a lookup result field written without
|
|
4513
|
-
the `data` prefix resolves to nothing. For import steps, use
|
|
4514
|
-
the envelope fields `id`, `statusCode`, `ignored`, `_json.<path>`
|
|
4515
|
-
for the raw response body, or the body field itself at the
|
|
4516
|
-
envelope root (`orderNumber` and `_json.orderNumber` read the
|
|
4517
|
-
same value). A `[*]` wildcard is not honored here — `data[*].x`
|
|
4518
|
-
merges nothing; iterate arrays with `lists` instead. Inside
|
|
4519
|
-
Handlebars, index with dots (`{{data.0.x}}`, never
|
|
4520
|
-
`{{data[0].x}}`) and never use a `record.` root.
|
|
4521
|
-
examples:
|
|
4522
|
-
- data[0].customer.name
|
|
4523
|
-
- data.0.fields.Product Name
|
|
4524
|
-
- data
|
|
4525
|
-
- id
|
|
4526
|
-
- _json.orderNumber
|
|
4527
|
-
- '{{#if data.length}}found{{else}}missing{{/if}}'
|
|
4528
|
-
generate:
|
|
4529
|
-
type: string
|
|
4530
|
-
description: |
|
|
4531
|
-
Field path on the in-flight record where the extracted value
|
|
4532
|
-
is stored, using dot notation for nesting. Downstream steps
|
|
4533
|
-
read the value at this path.
|
|
4534
|
-
examples:
|
|
4535
|
-
- customerName
|
|
4536
|
-
- supplierDetails.supplierName
|
|
4537
|
-
- netsuite_order_id
|
|
4538
|
-
lists:
|
|
4539
|
-
type: array
|
|
4540
|
-
description: |
|
|
4541
|
-
Array mappings that build a target array on the in-flight record
|
|
4542
|
-
from an array inside the response envelope — one output item per
|
|
4543
|
-
element of the array the item extracts mark with `[*]` (`data[*].x`
|
|
4544
|
-
for lookups, `_json.<arrayPath>[*].x` for imports); an empty source
|
|
4545
|
-
array yields an empty target array. Not needed for one-to-many
|
|
4546
|
-
(fan-out) merge-back, which uses plain field mappings.
|
|
4547
|
-
items:
|
|
4548
|
-
type: object
|
|
4549
|
-
properties:
|
|
4550
|
-
generate:
|
|
4551
|
-
type: string
|
|
4552
|
-
description: |
|
|
4553
|
-
Array field created on the in-flight record to hold the
|
|
4554
|
-
mapped items.
|
|
4555
|
-
examples:
|
|
4556
|
-
- orderItems
|
|
4557
|
-
- addresses
|
|
4558
|
-
- contacts
|
|
4559
|
-
fields:
|
|
4560
|
-
type: array
|
|
4561
|
-
description: |
|
|
4562
|
-
Field mappings applied to each item of the source array to
|
|
4563
|
-
produce the corresponding target-array item.
|
|
4564
|
-
items:
|
|
4565
|
-
type: object
|
|
4566
|
-
properties:
|
|
4567
|
-
extract:
|
|
4568
|
-
type: string
|
|
4569
|
-
description: |
|
|
4570
|
-
Full envelope path to the source value, with `[*]`
|
|
4571
|
-
marking the array to iterate — `data[*].productId` for a
|
|
4572
|
-
lookup, `_json.items[*].sku` for an import. A path without
|
|
4573
|
-
`[*]` (e.g. `statusCode`) repeats the same envelope value
|
|
4574
|
-
on every item; an item-relative name (`productId`)
|
|
4575
|
-
resolves to nothing and produces empty objects.
|
|
4576
|
-
examples:
|
|
4577
|
-
- data[*].productId
|
|
4578
|
-
- data[*].quantity
|
|
4579
|
-
- _json.items[*].sku
|
|
4580
|
-
generate:
|
|
4581
|
-
type: string
|
|
4582
|
-
description: Target field within each mapped array item.
|
|
4583
|
-
examples:
|
|
4584
|
-
- itemId
|
|
4585
|
-
- qty
|
|
4586
|
-
- unitPrice
|
|
4587
4391
|
Filter:
|
|
4588
4392
|
type: object
|
|
4589
4393
|
description: |
|
|
@@ -5956,8 +5760,14 @@ components:
|
|
|
5956
5760
|
mappings:
|
|
5957
5761
|
allOf:
|
|
5958
5762
|
- $ref: '#/components/schemas/Mappings'
|
|
5959
|
-
|
|
5960
|
-
|
|
5763
|
+
x-celigo-ai-guidance:
|
|
5764
|
+
- |-
|
|
5765
|
+
The mapped record is the agent's input: its `text` is sent as text, `record` as
|
|
5766
|
+
its JSON, and `files` (`[{name, blobKey}]`, blob keys from earlier in the same
|
|
5767
|
+
flow) as attachments. `conversationHistoryId` (at most 200
|
|
5768
|
+
characters) keeps one conversation per agent and id across runs. A record with
|
|
5769
|
+
none of `text`, `record` or `files` is sent whole, as JSON, so with no mappings a
|
|
5770
|
+
record's own top-level `text`, `record` or `files` field is its only input.
|
|
5961
5771
|
inputContext:
|
|
5962
5772
|
type: string
|
|
5963
5773
|
enum:
|
|
@@ -5968,7 +5778,9 @@ components:
|
|
|
5968
5778
|
envelope: The agent receives records wrapped in an envelope with metadata.
|
|
5969
5779
|
description: |-
|
|
5970
5780
|
Selects the data context that `mappings[].extract` evaluates against. With no
|
|
5971
|
-
mappings the agent receives the entire record
|
|
5781
|
+
mappings the agent receives the entire record as JSON (or only the record's own
|
|
5782
|
+
top-level `text`, `record` or `files` fields, when it has any) and `inputContext`
|
|
5783
|
+
is moot. `record`
|
|
5972
5784
|
(the default) extracts against the flat record; `envelope` extracts against the
|
|
5973
5785
|
runtime envelope, which exposes the record alongside job, settings, and other
|
|
5974
5786
|
run-time metadata (`$.record.field`, `$.settings.field`, etc.). Same contract as
|
|
@@ -6068,6 +5880,13 @@ components:
|
|
|
6068
5880
|
_headers:
|
|
6069
5881
|
type: object
|
|
6070
5882
|
description: Mock response headers.
|
|
5883
|
+
blobKey:
|
|
5884
|
+
type: string
|
|
5885
|
+
description: |-
|
|
5886
|
+
Mock output of an agent with `blob` output (image generation:
|
|
5887
|
+
`openai.output.format.type` or `litellm.responseFormat.type` set to `blob`),
|
|
5888
|
+
which returns the stored image's key here. Unrelated to the import-level `blob`
|
|
5889
|
+
flag, which agents refuse.
|
|
6071
5890
|
ResourceResponse:
|
|
6072
5891
|
type: object
|
|
6073
5892
|
description: Response
|
package/dist/audit.yml
CHANGED
|
@@ -49,6 +49,12 @@ paths:
|
|
|
49
49
|
exact resource only — to include descendants (e.g. an integration's
|
|
50
50
|
flows and exports), use `GET /v1/{resourceType}/{_id}/audit` instead.
|
|
51
51
|
`_resourceId` requires `resourceType` to also be set.
|
|
52
|
+
|
|
53
|
+
Only the account owner and administrators can query the account-wide
|
|
54
|
+
log: manage, monitor and integration-level users get 403, and an API
|
|
55
|
+
token with limited scope gets 401 `token_restricted_access`. Those
|
|
56
|
+
users can still read the history of a resource they can see, through
|
|
57
|
+
`GET /v1/{resourceType}/{_id}/audit`.
|
|
52
58
|
parameters:
|
|
53
59
|
- name: limit
|
|
54
60
|
in: query
|
|
@@ -311,7 +317,9 @@ paths:
|
|
|
311
317
|
'400':
|
|
312
318
|
$ref: '#/components/responses/400-bad-request'
|
|
313
319
|
'401':
|
|
314
|
-
$ref: '#/components/responses/401-unauthorized'
|
|
320
|
+
$ref: '#/components/responses/401-unauthorized-or-scoped-token'
|
|
321
|
+
'403':
|
|
322
|
+
$ref: '#/components/responses/403-administrator-only'
|
|
315
323
|
'422':
|
|
316
324
|
$ref: '#/components/responses/422-unprocessable-entity'
|
|
317
325
|
post:
|
|
@@ -328,7 +336,8 @@ paths:
|
|
|
328
336
|
identical to `GET /v1/audit`.
|
|
329
337
|
|
|
330
338
|
Pagination, sorting, and time bounds stay in the query string — sending
|
|
331
|
-
them in the body fails with 400 `invalid_request_body`.
|
|
339
|
+
them in the body fails with 400 `invalid_request_body`. The same callers
|
|
340
|
+
are refused as on `GET /v1/audit`.
|
|
332
341
|
parameters:
|
|
333
342
|
- name: limit
|
|
334
343
|
in: query
|
|
@@ -472,7 +481,9 @@ paths:
|
|
|
472
481
|
- code: invalid_request_body
|
|
473
482
|
message: 'The request body should not contain pagination parameter(s): limit. Pagination values (after, before, limit, sort_order, sort_by) must be provided as query parameters. The request body should only contain filter fields.'
|
|
474
483
|
'401':
|
|
475
|
-
$ref: '#/components/responses/401-unauthorized'
|
|
484
|
+
$ref: '#/components/responses/401-unauthorized-or-scoped-token'
|
|
485
|
+
'403':
|
|
486
|
+
$ref: '#/components/responses/403-administrator-only'
|
|
476
487
|
'422':
|
|
477
488
|
description: |-
|
|
478
489
|
A filter value is invalid, a filter that must be an array was sent as
|
|
@@ -502,7 +513,9 @@ paths:
|
|
|
502
513
|
description: |-
|
|
503
514
|
Generates a signed URL for downloading a CSV export of audit logs across all
|
|
504
515
|
documents. The CSV columns are: Time, Source, User, Resource, Name/ID, Action,
|
|
505
|
-
Field, Old value, New value, Support.
|
|
516
|
+
Field, Old value, New value, Support. The same callers are refused as on
|
|
517
|
+
`GET /v1/audit`: only the account owner and administrators can export the
|
|
518
|
+
account-wide log.
|
|
506
519
|
|
|
507
520
|
The signed URL expires after 15 minutes. When `hasMore` is true, pass
|
|
508
521
|
the last CSV row's timestamp as `to` to fetch the next batch.
|
|
@@ -686,7 +699,9 @@ paths:
|
|
|
686
699
|
signedURL: https://integrator-userdata-delete-30.s3.us-east-1.amazonaws.com/audit/624cb034630.../audit-export.csv?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=900&...
|
|
687
700
|
hasMore: false
|
|
688
701
|
'401':
|
|
689
|
-
$ref: '#/components/responses/401-unauthorized'
|
|
702
|
+
$ref: '#/components/responses/401-unauthorized-or-scoped-token'
|
|
703
|
+
'403':
|
|
704
|
+
$ref: '#/components/responses/403-administrator-only'
|
|
690
705
|
'422':
|
|
691
706
|
$ref: '#/components/responses/422-unprocessable-entity'
|
|
692
707
|
post:
|
|
@@ -766,7 +781,9 @@ paths:
|
|
|
766
781
|
schema:
|
|
767
782
|
$ref: '#/components/schemas/Error'
|
|
768
783
|
'401':
|
|
769
|
-
$ref: '#/components/responses/401-unauthorized'
|
|
784
|
+
$ref: '#/components/responses/401-unauthorized-or-scoped-token'
|
|
785
|
+
'403':
|
|
786
|
+
$ref: '#/components/responses/403-administrator-only'
|
|
770
787
|
'422':
|
|
771
788
|
$ref: '#/components/responses/422-unprocessable-entity'
|
|
772
789
|
/v1/{resourceType}/{_id}/audit:
|
|
@@ -1997,6 +2014,65 @@ components:
|
|
|
1997
2014
|
errors:
|
|
1998
2015
|
- code: invalid_request
|
|
1999
2016
|
message: The request body failed validation.
|
|
2017
|
+
401-unauthorized-or-scoped-token:
|
|
2018
|
+
description: |-
|
|
2019
|
+
Unauthorized: the request has no valid bearer token (a bare `{message}` body, as on every
|
|
2020
|
+
route), or the token is an API token with limited scope. The account-wide audit query
|
|
2021
|
+
takes only a full-access API token, a personal access token, or a signed-in session; a
|
|
2022
|
+
scoped token is refused with `token_restricted_access` in the standard `{errors: [...]}`
|
|
2023
|
+
envelope.
|
|
2024
|
+
content:
|
|
2025
|
+
application/json:
|
|
2026
|
+
schema:
|
|
2027
|
+
oneOf:
|
|
2028
|
+
- $ref: '#/components/schemas/Error'
|
|
2029
|
+
- type: object
|
|
2030
|
+
description: The auth middleware's bare body for a missing or invalid token.
|
|
2031
|
+
properties:
|
|
2032
|
+
message:
|
|
2033
|
+
type: string
|
|
2034
|
+
description: '`Unauthorized` (no Authorization header) or `Bearer Authentication Failed`.'
|
|
2035
|
+
required:
|
|
2036
|
+
- message
|
|
2037
|
+
examples:
|
|
2038
|
+
scopedToken:
|
|
2039
|
+
summary: An API token scoped to specific resources
|
|
2040
|
+
value:
|
|
2041
|
+
errors:
|
|
2042
|
+
- code: token_restricted_access
|
|
2043
|
+
message: This action is not allowed using API tokens with limited scope.
|
|
2044
|
+
invalidToken:
|
|
2045
|
+
summary: Bearer token invalid or revoked
|
|
2046
|
+
value:
|
|
2047
|
+
message: Bearer Authentication Failed
|
|
2048
|
+
403-administrator-only:
|
|
2049
|
+
description: |-
|
|
2050
|
+
The caller is a manage, monitor or integration-level user. The account-wide audit log is
|
|
2051
|
+
for the account owner and administrators; other users read one resource's history with
|
|
2052
|
+
`GET /v1/{resourceType}/{_id}/audit` instead.
|
|
2053
|
+
content:
|
|
2054
|
+
application/json:
|
|
2055
|
+
schema:
|
|
2056
|
+
$ref: '#/components/schemas/Error'
|
|
2057
|
+
examples:
|
|
2058
|
+
notAdministrator:
|
|
2059
|
+
value:
|
|
2060
|
+
errors:
|
|
2061
|
+
- code: access_restricted
|
|
2062
|
+
message: The role which you are associated with doesn't have the required permissions to perform the action.
|
|
2063
|
+
422-unprocessable-entity:
|
|
2064
|
+
description: |
|
|
2065
|
+
Unprocessable entity. The request was well-formed but was unable to be followed due to semantic errors.
|
|
2066
|
+
content:
|
|
2067
|
+
application/json:
|
|
2068
|
+
schema:
|
|
2069
|
+
$ref: '#/components/schemas/Error'
|
|
2070
|
+
examples:
|
|
2071
|
+
default:
|
|
2072
|
+
value:
|
|
2073
|
+
errors:
|
|
2074
|
+
- code: unprocessable_entity
|
|
2075
|
+
message: The request could not be processed due to a semantic error.
|
|
2000
2076
|
401-unauthorized:
|
|
2001
2077
|
description: |-
|
|
2002
2078
|
Unauthorized. The request lacks a valid bearer token, or the provided token
|
|
@@ -2031,19 +2107,6 @@ components:
|
|
|
2031
2107
|
summary: Bearer token invalid or revoked
|
|
2032
2108
|
value:
|
|
2033
2109
|
message: Bearer Authentication Failed
|
|
2034
|
-
422-unprocessable-entity:
|
|
2035
|
-
description: |
|
|
2036
|
-
Unprocessable entity. The request was well-formed but was unable to be followed due to semantic errors.
|
|
2037
|
-
content:
|
|
2038
|
-
application/json:
|
|
2039
|
-
schema:
|
|
2040
|
-
$ref: '#/components/schemas/Error'
|
|
2041
|
-
examples:
|
|
2042
|
-
default:
|
|
2043
|
-
value:
|
|
2044
|
-
errors:
|
|
2045
|
-
- code: unprocessable_entity
|
|
2046
|
-
message: The request could not be processed due to a semantic error.
|
|
2047
2110
|
404-not-found:
|
|
2048
2111
|
description: |
|
|
2049
2112
|
Not found. The requested resource does not exist or is not visible to the caller.
|
package/dist/connection.yml
CHANGED
|
@@ -10113,9 +10113,12 @@ components:
|
|
|
10113
10113
|
type: array
|
|
10114
10114
|
description: |-
|
|
10115
10115
|
Errors recorded for the record. `source: application` with
|
|
10116
|
-
`stage: apiCall`
|
|
10117
|
-
answer was the failure
|
|
10118
|
-
`message
|
|
10116
|
+
`stage: apiCall` marks the import's call to the destination. Usually
|
|
10117
|
+
the destination's answer was the failure, and its response body rides
|
|
10118
|
+
in `message`; but a request the import couldn't build carries the same
|
|
10119
|
+
pair and was never sent, such as a URL template that failed to render
|
|
10120
|
+
(`code: handlebars_template_parse_error`, "Failed to generate request
|
|
10121
|
+
url from template ...").
|
|
10119
10122
|
items:
|
|
10120
10123
|
type: object
|
|
10121
10124
|
properties:
|
package/dist/export.yml
CHANGED
|
@@ -6273,9 +6273,12 @@ components:
|
|
|
6273
6273
|
request fields are interpreted. When omitted, the standard HTTP form is used.
|
|
6274
6274
|
x-celigo-ai-guidance:
|
|
6275
6275
|
- |-
|
|
6276
|
-
The value
|
|
6277
|
-
|
|
6278
|
-
|
|
6276
|
+
The value picks the editor and changes one thing in a GraphQL request: under `graph_ql`
|
|
6277
|
+
and `assistant_graphql`, a `variables` member stored as a JSON string is parsed and sent
|
|
6278
|
+
as an object, while under `http` it is sent as the string. A body whose `variables` is
|
|
6279
|
+
already an object goes out unchanged under `graph_ql` and `http`. Live-verified 2026-10-22 with
|
|
6280
|
+
export previews against an echo endpoint: a string `variables` under `graph_ql`,
|
|
6281
|
+
`assistant_graphql` and `http`, and an object `variables` under `graph_ql` and `http`.
|
|
6279
6282
|
- |-
|
|
6280
6283
|
The GraphQL form reads `http.body` as the JSON envelope `{"query", "operationName",
|
|
6281
6284
|
"variables"}` and shows each member in its own editor, recompiling the envelope on save
|
|
@@ -6492,9 +6495,15 @@ components:
|
|
|
6492
6495
|
XML, etc.).
|
|
6493
6496
|
- |-
|
|
6494
6497
|
A GraphQL request is this field holding the stringified JSON envelope `{"query":
|
|
6495
|
-
"<document>", "operationName": "...", "variables": ...}
|
|
6496
|
-
|
|
6497
|
-
|
|
6498
|
+
"<document>", "operationName": "...", "variables": ...}`. `variables` may be an object
|
|
6499
|
+
or a JSON-encoded string, and a string is sent as an object only under the GraphQL
|
|
6500
|
+
form types (see `formType`). Variables with unquoted Handlebars (a number, `null`, an
|
|
6501
|
+
`{{#if}}` block) must be a string so the body remains parseable JSON at rest; string
|
|
6502
|
+
values inside that string sit two JSON levels deep, so write them as
|
|
6503
|
+
`\"{{jsonEncode record.x}}\"` with double braces: a plain `{{record.x}}`, or a
|
|
6504
|
+
triple-brace `jsonEncode`, fails a value holding a quote with 422 `invalid_json`.
|
|
6505
|
+
An object or array there is `{{jsonSerialize record.x}}`, also with double braces;
|
|
6506
|
+
triple braces fail the same way.
|
|
6498
6507
|
- |-
|
|
6499
6508
|
You can use handlebars expressions to create dynamic content:
|
|
6500
6509
|
```
|
|
@@ -7318,7 +7327,7 @@ components:
|
|
|
7318
7327
|
- response.records
|
|
7319
7328
|
lastPageStatusCode:
|
|
7320
7329
|
type: integer
|
|
7321
|
-
description: HTTP status code that signals the last page, replacing the default behavior of treating 404 as the end of pagination. When this status is received, paging stops and the response is not treated as an error. Set
|
|
7330
|
+
description: 'HTTP status code that signals the last page, replacing the default behavior of treating 404 as the end of pagination. When this status is received (any code but `200` paired with `lastPagePath`), paging stops and the response is not treated as an error. Set it when the API uses a non-404 code (such as 204 or 400) to indicate no more pages, or to `200` together with `lastPagePath` when the last page is an ordinary 200 response: then the response is parsed, its records are kept, and paging stops only when `lastPagePath` matches `lastPageValues`.'
|
|
7322
7331
|
x-celigo-ai-guidance:
|
|
7323
7332
|
- Specifies a custom HTTP status code that indicates the last page of results.
|
|
7324
7333
|
- |-
|
|
@@ -7353,36 +7362,45 @@ components:
|
|
|
7353
7362
|
- |-
|
|
7354
7363
|
## TECHNICAL DETAILS
|
|
7355
7364
|
|
|
7356
|
-
When this status code is received
|
|
7365
|
+
When this status code is received (any code but `200` paired with
|
|
7366
|
+
`lastPagePath`), the system:
|
|
7357
7367
|
- Stops the pagination process
|
|
7358
7368
|
- Considers the data collection complete
|
|
7359
7369
|
- Does not treat the response as an error
|
|
7360
7370
|
- Does not attempt to process any response body
|
|
7361
7371
|
|
|
7362
7372
|
IMPORTANT: Only set this if your API explicitly uses a non-404 status code
|
|
7363
|
-
to indicate the end of pagination
|
|
7364
|
-
|
|
7373
|
+
to indicate the end of pagination, or to `200` with `lastPagePath` (below).
|
|
7374
|
+
Setting this incorrectly could cause premature termination of data
|
|
7375
|
+
collection or error handling issues.
|
|
7376
|
+
- |-
|
|
7377
|
+
`200` is the exception, for an API whose last page is an ordinary 200 response:
|
|
7378
|
+
together with `lastPagePath`, paging stops on the first 200 whose `lastPagePath`
|
|
7379
|
+
value matches `lastPageValues`, and that page's records are kept. Live-verified
|
|
7380
|
+
2026-10-22 with token paging.
|
|
7365
7381
|
examples:
|
|
7366
7382
|
- 204
|
|
7367
7383
|
- 400
|
|
7368
7384
|
- 500
|
|
7369
7385
|
lastPagePath:
|
|
7370
7386
|
type: string
|
|
7371
|
-
description: JSON path to a response-body field that signals the end of pagination, such as a "has more" flag or a cursor that empties on the last page. Must be used with `lastPageValues`, which lists the values at this path that stop paging. If the path does not exist in a response, the condition is not considered met.
|
|
7387
|
+
description: 'JSON path to a response-body field that signals the end of pagination, such as a "has more" flag or a cursor that empties on the last page. Must be used with `lastPageValues`, which lists the values at this path that stop paging. If the path does not exist in a response, the condition is not considered met. With `method: token` the path is read only on a response whose status code equals `lastPageStatusCode`, so pair it with `lastPageStatusCode: 200` for an ordinary last page; with `method: body` it is read on every response.'
|
|
7372
7388
|
x-celigo-ai-guidance:
|
|
7373
7389
|
- |-
|
|
7374
7390
|
## FIELD BEHAVIOR
|
|
7375
7391
|
|
|
7376
7392
|
- OPTIONAL: Only needed for APIs with field-based pagination completion signals
|
|
7377
|
-
-
|
|
7393
|
+
- Accepted on all pagination methods; when it is read depends on the method (see
|
|
7394
|
+
the method note below)
|
|
7378
7395
|
- Used in conjunction with lastPageValues
|
|
7379
7396
|
- JSON path notation to a field in the response body
|
|
7380
7397
|
- |-
|
|
7381
7398
|
## IMPLEMENTATION GUIDANCE
|
|
7382
7399
|
|
|
7383
7400
|
This field is used when an API indicates the last page through a field
|
|
7384
|
-
in the response body rather than using HTTP status codes.
|
|
7385
|
-
checks
|
|
7401
|
+
in the response body rather than using HTTP status codes. Which responses
|
|
7402
|
+
the system checks it on depends on the paging method (see the method note
|
|
7403
|
+
below).
|
|
7386
7404
|
|
|
7387
7405
|
Common patterns include:
|
|
7388
7406
|
|
|
@@ -7416,8 +7434,19 @@ components:
|
|
|
7416
7434
|
"lastPageValues": ["false", "0"]
|
|
7417
7435
|
```
|
|
7418
7436
|
|
|
7419
|
-
IMPORTANT: The path is evaluated
|
|
7420
|
-
If the path doesn't exist in the response, the
|
|
7437
|
+
IMPORTANT: The path is evaluated using JSON path notation, on the responses the
|
|
7438
|
+
method note below describes. If the path doesn't exist in the response, the
|
|
7439
|
+
condition is not considered met.
|
|
7440
|
+
- |-
|
|
7441
|
+
On `method: token` the path is checked only on a response whose status code equals
|
|
7442
|
+
`lastPageStatusCode`. For an API whose last page is an ordinary 200 (a GraphQL
|
|
7443
|
+
`pageInfo.hasNextPage: false`), set `lastPageStatusCode: 200` with it; without that,
|
|
7444
|
+
paging goes on while the token at `path` is non-empty, so a last page that still
|
|
7445
|
+
carries a cursor costs one more request. On `method: body` the path is read on
|
|
7446
|
+
every response, with no status code needed. Live-verified 2026-10-22 against an echo
|
|
7447
|
+
endpoint for `token` (two requests without `lastPageStatusCode`, one with 200) and
|
|
7448
|
+
`body` (stopped on the second response); `page`, `skip` and `url` paging were not
|
|
7449
|
+
verified.
|
|
7421
7450
|
examples:
|
|
7422
7451
|
- meta.isLastPage
|
|
7423
7452
|
- pagination.hasMore
|
|
@@ -7841,22 +7870,30 @@ components:
|
|
|
7841
7870
|
- '201'
|
|
7842
7871
|
errorPath:
|
|
7843
7872
|
type: string
|
|
7844
|
-
description: Path to the error message in the response body. The value at this path is included in error logs and error records when the API returns an error.
|
|
7873
|
+
description: Path to the error message in the response body. The value at this path is included in error logs and error records when the API returns an error; without it, the message is the whole response body.
|
|
7845
7874
|
examples:
|
|
7846
7875
|
- error.message
|
|
7847
7876
|
- errorMessage
|
|
7848
7877
|
- errors[0].detail
|
|
7878
|
+
- errors[0].message
|
|
7849
7879
|
failPath:
|
|
7850
7880
|
type: string
|
|
7851
|
-
description: Path to a response field that signals failure even when the HTTP status code is 200 — the inverse of `successPath`.
|
|
7881
|
+
description: Path to a response field that signals failure even when the HTTP status code is 200 — the inverse of `successPath`. With `failValues`, the response fails when the value there matches one of them; without, when the path holds a truthy value. A path that resolves to an array matches only when the array has exactly one element.
|
|
7852
7882
|
x-celigo-ai-guidance:
|
|
7883
|
+
- Similar to `successPath` but inverted logic — checks for failure indicators.
|
|
7853
7884
|
- |-
|
|
7854
|
-
|
|
7855
|
-
|
|
7885
|
+
A path that resolves to an array matches only when the array has exactly one
|
|
7886
|
+
element. GraphQL APIs usually report a failed query with HTTP 200 and an `errors` array:
|
|
7887
|
+
`failPath: errors` fails the response for one error and lets two or more through,
|
|
7888
|
+
so set `failPath` (and `errorPath`) to `errors[0].message`. Without a fail path the
|
|
7889
|
+
response counts as a success, and an export whose `resourcePath` points into
|
|
7890
|
+
`data` returns zero records with no error. Live-verified 2026-10-22 with export
|
|
7891
|
+
and import previews against an echo endpoint.
|
|
7856
7892
|
examples:
|
|
7857
7893
|
- error
|
|
7858
7894
|
- status
|
|
7859
7895
|
- result.error
|
|
7896
|
+
- errors[0].message
|
|
7860
7897
|
failValues:
|
|
7861
7898
|
type: array
|
|
7862
7899
|
items:
|
|
@@ -10674,8 +10711,9 @@ components:
|
|
|
10674
10711
|
Number of records the RESTlet returns per request (default 1000). This, not the
|
|
10675
10712
|
export's `pageSize`, sizes each NetSuite call; the export keeps requesting until the
|
|
10676
10713
|
search is exhausted. Larger batches reduce round-trips but raise NetSuite governance
|
|
10677
|
-
and memory use per call; tune to the record's size.
|
|
10678
|
-
|
|
10714
|
+
and memory use per call; tune to the record's size. The RESTlet caps a call at 1000,
|
|
10715
|
+
so a larger value acts as 1000. In a test run or preview the request is capped at the
|
|
10716
|
+
export's `pageSize` (default 20) instead.
|
|
10679
10717
|
examples:
|
|
10680
10718
|
- 100
|
|
10681
10719
|
- 200
|
|
@@ -10954,8 +10992,9 @@ components:
|
|
|
10954
10992
|
type: array
|
|
10955
10993
|
description: |-
|
|
10956
10994
|
Search columns the RESTlet returns for each matching record. With a saved search,
|
|
10957
|
-
|
|
10958
|
-
|
|
10995
|
+
the RESTlet returns the search's own result columns followed by any listed here: a
|
|
10996
|
+
list adds columns and never removes one of the search's, so remove a column in the
|
|
10997
|
+
saved search itself. An ad-hoc search (no `searchId`) must list its columns here.
|
|
10959
10998
|
x-celigo-ai-guidance:
|
|
10960
10999
|
- |-
|
|
10961
11000
|
Entries are objects keyed by `name` — `[{"name": "internalid"}, {"name":
|