@celigo/api-specs 0.2.149 → 0.2.150
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 +11 -3
- package/dist/api.yml +63 -33
- package/dist/filedefinition.yml +35 -4
- package/dist/guardrail.yml +52 -8
- package/dist/import.yml +19 -6
- package/dist/integration.yml +9 -3
- package/dist/template.yml +16 -5
- package/dist/tool.yml +66 -29
- package/dist/user.yml +8 -1
- package/package.json +1 -1
- package/schemas.json +3 -1
package/dist/ai-agent.yml
CHANGED
|
@@ -5689,19 +5689,27 @@ components:
|
|
|
5689
5689
|
properties:
|
|
5690
5690
|
function:
|
|
5691
5691
|
type: string
|
|
5692
|
-
description:
|
|
5692
|
+
description: |-
|
|
5693
|
+
Function to invoke: one in the script named by `_scriptId`, or one the code deployed on
|
|
5694
|
+
the stack named by `_stackId` exposes.
|
|
5693
5695
|
examples:
|
|
5694
5696
|
- transformRecords
|
|
5695
5697
|
_scriptId:
|
|
5696
5698
|
type: string
|
|
5697
5699
|
format: objectId
|
|
5698
5700
|
x-celigo-refModel: scripts
|
|
5699
|
-
description: Script containing the hook function named in `function`.
|
|
5701
|
+
description: Script containing the hook function named in `function`. Send this or `_stackId`, not both.
|
|
5700
5702
|
_stackId:
|
|
5701
5703
|
type: string
|
|
5702
5704
|
format: objectId
|
|
5703
5705
|
x-celigo-refModel: stacks
|
|
5704
|
-
description:
|
|
5706
|
+
description: |-
|
|
5707
|
+
Stack that hosts the hook logic, used instead of a script for stack-based deployments.
|
|
5708
|
+
The API doesn't enforce the either/or: a save carrying both `_scriptId` and `_stackId`
|
|
5709
|
+
answers 200 and stores both, and the script and the stack then each list the step as a
|
|
5710
|
+
dependent.
|
|
5711
|
+
x-celigo-ai-guidance:
|
|
5712
|
+
- When moving a hook onto a stack, remove `_scriptId` and set `function` to the stack's function in the same update.
|
|
5705
5713
|
configuration:
|
|
5706
5714
|
type:
|
|
5707
5715
|
- object
|
package/dist/api.yml
CHANGED
|
@@ -1683,12 +1683,19 @@ paths:
|
|
|
1683
1683
|
|
|
1684
1684
|
The response carries a `metadata` map keyed by step id (each value is the ordered list of
|
|
1685
1685
|
stage names that ran for that step), the parent `flowJob`, and the per-step `childJobs[]`.
|
|
1686
|
-
|
|
1687
|
-
`
|
|
1686
|
+
The response the run selected appears in `metadata` too, keyed by its `id` (`success`,
|
|
1687
|
+
`fail`, or a custom response's `id`). Inspect a specific step's stages with
|
|
1688
|
+
`GET /v1/apis/{_id}/test/run/{runId}/{_stepId}`, where `runId` is the parent `flowJob._id`.
|
|
1688
1689
|
|
|
1689
1690
|
Test-run invocations do **not** surface in `GET /v1/apis/{_id}/logs`.
|
|
1690
1691
|
|
|
1691
|
-
A test run is not free of outside calls:
|
|
1692
|
+
A test run is not free of outside calls: a lookup export with no saved `mockOutput` calls
|
|
1693
|
+
its source live, and the run then saves that response on the export as its `mockOutput`
|
|
1694
|
+
(the export's `lastModified` changes). Every later test run that uses the export, from any
|
|
1695
|
+
API or Tool and whatever its request, answers that lookup from the saved `mockOutput`
|
|
1696
|
+
instead of calling the source: the lookup's `request` stage shows the request rendered
|
|
1697
|
+
from the new record, and its `response` stage holds the saved records. Remove `mockOutput`
|
|
1698
|
+
from the export to call the source again. Real calls to the API don't read it. Imports never
|
|
1692
1699
|
send; each returns its saved `mockResponse`, or a placeholder response when none is saved
|
|
1693
1700
|
(see `mockResponse` on imports).
|
|
1694
1701
|
|
|
@@ -1748,10 +1755,10 @@ paths:
|
|
|
1748
1755
|
summary: Run without test input (the first step gets an empty record)
|
|
1749
1756
|
value: {}
|
|
1750
1757
|
withMockRequest:
|
|
1751
|
-
summary: Run with an explicit test request
|
|
1758
|
+
summary: Run with an explicit test request (only the body reaches the first step)
|
|
1752
1759
|
value:
|
|
1753
1760
|
mockRequest:
|
|
1754
|
-
|
|
1761
|
+
body:
|
|
1755
1762
|
sku: SKU-001
|
|
1756
1763
|
responses:
|
|
1757
1764
|
'200':
|
|
@@ -1765,7 +1772,8 @@ paths:
|
|
|
1765
1772
|
type: object
|
|
1766
1773
|
description: |-
|
|
1767
1774
|
Map keyed by step id; each value is the ordered list of stage names that ran for
|
|
1768
|
-
that step.
|
|
1775
|
+
that step. The selected response is one of the keys (`success`, `fail`, or a
|
|
1776
|
+
custom response's `id`), so it names the response the run returned.
|
|
1769
1777
|
additionalProperties:
|
|
1770
1778
|
type: array
|
|
1771
1779
|
items:
|
|
@@ -1787,6 +1795,11 @@ paths:
|
|
|
1787
1795
|
- parse
|
|
1788
1796
|
main:
|
|
1789
1797
|
- router
|
|
1798
|
+
apiRouter:
|
|
1799
|
+
- router
|
|
1800
|
+
success:
|
|
1801
|
+
- mapping
|
|
1802
|
+
- response
|
|
1790
1803
|
flowJob:
|
|
1791
1804
|
_id: 6a2e23bbcf5b64ca6b93b757
|
|
1792
1805
|
type: flow
|
|
@@ -2793,8 +2806,9 @@ components:
|
|
|
2793
2806
|
type: object
|
|
2794
2807
|
description: |-
|
|
2795
2808
|
Sample request saved with the API for testing. `POST /v1/apis/{_id}/test/run` doesn't
|
|
2796
|
-
read it; send it as that call's `mockRequest`. A test run still makes outside calls:
|
|
2797
|
-
its
|
|
2809
|
+
read it; send it as that call's `mockRequest`. A test run still makes outside calls: a
|
|
2810
|
+
lookup with no saved `mockOutput` calls its source live, and the run saves that response
|
|
2811
|
+
as the lookup's `mockOutput`, which later test runs answer from.
|
|
2798
2812
|
properties:
|
|
2799
2813
|
body:
|
|
2800
2814
|
type: object
|
|
@@ -2813,9 +2827,10 @@ components:
|
|
|
2813
2827
|
- |-
|
|
2814
2828
|
Saving a mockRequest doesn't make test runs use it: a test run without its own
|
|
2815
2829
|
mockRequest starts from an empty record. A test run isn't free of outside calls
|
|
2816
|
-
either:
|
|
2817
|
-
|
|
2818
|
-
|
|
2830
|
+
either: a lookup without a saved mockOutput runs live (and the run then saves its
|
|
2831
|
+
response as that mockOutput), and only imports are kept from sending (each returns
|
|
2832
|
+
its mockResponse or a placeholder). Can include body, headers, pathParams, and
|
|
2833
|
+
queryParams; only the body reaches the record the steps see.
|
|
2819
2834
|
transform:
|
|
2820
2835
|
type: object
|
|
2821
2836
|
description: |-
|
|
@@ -3269,17 +3284,19 @@ components:
|
|
|
3269
3284
|
- fail
|
|
3270
3285
|
- custom
|
|
3271
3286
|
x-enumDescriptions:
|
|
3272
|
-
success:
|
|
3273
|
-
fail:
|
|
3274
|
-
custom: Additional response for specific scenarios,
|
|
3275
|
-
description:
|
|
3287
|
+
success: The happy-path response; returned when it's the first response, in list order, whose `inputFilter` matches.
|
|
3288
|
+
fail: The error response; returned when a step fails and that step's `proceedOnFailure` is off.
|
|
3289
|
+
custom: Additional response for specific scenarios, selected by its own `inputFilter`.
|
|
3290
|
+
description: |-
|
|
3291
|
+
Response type. `success` isn't a fallback checked after the `custom` responses: list
|
|
3292
|
+
`custom` responses before it (see `inputFilter`).
|
|
3276
3293
|
examples:
|
|
3277
3294
|
- success
|
|
3278
3295
|
x-celigo-ai-guidance:
|
|
3279
3296
|
- |-
|
|
3280
|
-
- **success**:
|
|
3281
|
-
- **fail**:
|
|
3282
|
-
- **custom**: Additional responses for specific scenarios (optional, multiple allowed)
|
|
3297
|
+
- **success**: Response for successful operations (required, exactly one)
|
|
3298
|
+
- **fail**: Response for errors (required, exactly one)
|
|
3299
|
+
- **custom**: Additional responses for specific scenarios (optional, multiple allowed), listed before `success`
|
|
3283
3300
|
statusCode:
|
|
3284
3301
|
type: integer
|
|
3285
3302
|
minimum: 100
|
|
@@ -3320,7 +3337,13 @@ components:
|
|
|
3320
3337
|
- Content type of the response body
|
|
3321
3338
|
inputFilter:
|
|
3322
3339
|
type: object
|
|
3323
|
-
description:
|
|
3340
|
+
description: |-
|
|
3341
|
+
Filter criteria for response selection by the response router, which returns the first
|
|
3342
|
+
response in `responses` whose filter matches. A response without an `inputFilter` matches
|
|
3343
|
+
every request, so a `success` listed first answers requests a later `custom` filter
|
|
3344
|
+
matches; the typed `context.success` filter doesn't prevent that, because
|
|
3345
|
+
`context.success` is true whenever no step failed, including when a lookup found nothing.
|
|
3346
|
+
A step that fails with `proceedOnFailure` off selects the `fail` response.
|
|
3324
3347
|
properties:
|
|
3325
3348
|
version:
|
|
3326
3349
|
type: string
|
|
@@ -3334,19 +3357,20 @@ components:
|
|
|
3334
3357
|
description: Celigo expression-based filter rules.
|
|
3335
3358
|
items: {}
|
|
3336
3359
|
examples:
|
|
3337
|
-
- -
|
|
3338
|
-
- -
|
|
3339
|
-
- -
|
|
3340
|
-
-
|
|
3341
|
-
- true
|
|
3360
|
+
- - empty
|
|
3361
|
+
- - string
|
|
3362
|
+
- - extract
|
|
3363
|
+
- customerId
|
|
3342
3364
|
- - and
|
|
3343
|
-
- -
|
|
3344
|
-
- -
|
|
3345
|
-
-
|
|
3346
|
-
|
|
3347
|
-
- -
|
|
3348
|
-
- -
|
|
3349
|
-
-
|
|
3365
|
+
- - notempty
|
|
3366
|
+
- - string
|
|
3367
|
+
- - extract
|
|
3368
|
+
- orderId
|
|
3369
|
+
- - greaterthan
|
|
3370
|
+
- - number
|
|
3371
|
+
- - extract
|
|
3372
|
+
- amount
|
|
3373
|
+
- 1000
|
|
3350
3374
|
x-celigo-ai-guidance:
|
|
3351
3375
|
- |-
|
|
3352
3376
|
Array-based DSL where the first element is an operator (e.g., "equals", "and", "or"),
|
|
@@ -3552,6 +3576,9 @@ components:
|
|
|
3552
3576
|
- Exactly one 'success' response (for successful operations)
|
|
3553
3577
|
- Exactly one 'fail' response (for errors)
|
|
3554
3578
|
- Zero or more 'custom' responses (for specific scenarios)
|
|
3579
|
+
The response router returns the first response whose `inputFilter` matches, and a
|
|
3580
|
+
response without one matches every request, so list the 'custom' responses ahead of
|
|
3581
|
+
'success'.
|
|
3555
3582
|
Builder:
|
|
3556
3583
|
type: object
|
|
3557
3584
|
description: Builder-mode configuration defining request structure, routing, and response mapping.
|
|
@@ -3573,13 +3600,16 @@ components:
|
|
|
3573
3600
|
type: array
|
|
3574
3601
|
description: |-
|
|
3575
3602
|
Response configurations. Must include exactly one `success` and one `fail`
|
|
3576
|
-
response; additional `custom` responses are optional.
|
|
3603
|
+
response; additional `custom` responses are optional. Order matters: the response
|
|
3604
|
+
router returns the first response whose `inputFilter` matches, and a response without
|
|
3605
|
+
one matches every request.
|
|
3577
3606
|
items:
|
|
3578
3607
|
$ref: '#/components/schemas/ApiResponse'
|
|
3579
3608
|
x-celigo-ai-guidance:
|
|
3580
3609
|
- |-
|
|
3581
3610
|
Must include exactly one 'success' response and one 'fail' response.
|
|
3582
|
-
Additional custom responses can be added for specific scenarios
|
|
3611
|
+
Additional custom responses can be added for specific scenarios; list them before
|
|
3612
|
+
'success', which otherwise answers the requests their filters match.
|
|
3583
3613
|
x-celigo-ai-guidance:
|
|
3584
3614
|
- |-
|
|
3585
3615
|
The builder mode allows you to define your API using visual configuration:
|
package/dist/filedefinition.yml
CHANGED
|
@@ -207,6 +207,11 @@ paths:
|
|
|
207
207
|
For EDI formats (`delimited/x12` or `delimited/edifact`), a valid `globalId`
|
|
208
208
|
is required when the account has an EDI license enabled. The `globalId` must
|
|
209
209
|
reference a known standard document definition.
|
|
210
|
+
- |-
|
|
211
|
+
For `format: fixed`, send `version`, `fixed.rowDelimiter` and `fixed.paddingChar`;
|
|
212
|
+
without them the create fails with 422 and nothing is saved. Columns are read in
|
|
213
|
+
element order, so declare every column (a placeholder element for a gap) and parse a
|
|
214
|
+
sample with `POST /v1/processors/structuredFileParser` before linking the definition.
|
|
210
215
|
/v1/filedefinitions/{_id}:
|
|
211
216
|
get:
|
|
212
217
|
x-internal: false
|
|
@@ -1016,7 +1021,7 @@ components:
|
|
|
1016
1021
|
description: |
|
|
1017
1022
|
Configuration specific to fixed-width format files.
|
|
1018
1023
|
|
|
1019
|
-
Used when `format` is "fixed"
|
|
1024
|
+
Used when `format` is "fixed", which requires `rowDelimiter` and `paddingChar`.
|
|
1020
1025
|
properties:
|
|
1021
1026
|
rowSuffix:
|
|
1022
1027
|
type: string
|
|
@@ -1028,14 +1033,20 @@ components:
|
|
|
1028
1033
|
rowDelimiter:
|
|
1029
1034
|
type: string
|
|
1030
1035
|
description: |
|
|
1031
|
-
Character(s) used to delimit rows during parsing.
|
|
1036
|
+
Character(s) used to delimit rows during parsing. Required when `format` is "fixed".
|
|
1037
|
+
|
|
1038
|
+
A delimiter after the last row is read as one more, empty row: a required row
|
|
1039
|
+
rule then fails the parse at that line ("Required rule must have the respective
|
|
1040
|
+
row in the source file"), and an optional one adds an empty `{}` record. Set
|
|
1041
|
+
`skipIntermittentEmptyLines: true` to drop it.
|
|
1032
1042
|
examples:
|
|
1033
1043
|
- \n
|
|
1034
1044
|
- \r\n
|
|
1035
1045
|
paddingChar:
|
|
1036
1046
|
type: string
|
|
1037
1047
|
description: |
|
|
1038
|
-
Character used to pad fixed-width fields to their required length.
|
|
1048
|
+
Character used to pad fixed-width fields to their required length. Required when
|
|
1049
|
+
`format` is "fixed".
|
|
1039
1050
|
examples:
|
|
1040
1051
|
- ' '
|
|
1041
1052
|
- '0'
|
|
@@ -1090,7 +1101,8 @@ components:
|
|
|
1090
1101
|
skipIntermittentEmptyLines:
|
|
1091
1102
|
type: boolean
|
|
1092
1103
|
description: |
|
|
1093
|
-
Whether to remove empty rows found in the file content during parsing.
|
|
1104
|
+
Whether to remove empty rows found in the file content during parsing. On a
|
|
1105
|
+
fixed-width definition this includes the empty row a trailing line break adds.
|
|
1094
1106
|
escapeReleaseChar:
|
|
1095
1107
|
type: boolean
|
|
1096
1108
|
description: |
|
|
@@ -1213,6 +1225,11 @@ components:
|
|
|
1213
1225
|
type: object
|
|
1214
1226
|
description: |
|
|
1215
1227
|
Request schema for creating or updating a file definition.
|
|
1228
|
+
|
|
1229
|
+
A fixed-width definition (`format: fixed`) also needs `fixed.rowDelimiter` and
|
|
1230
|
+
`fixed.paddingChar`: a create or full update without either fails with 422
|
|
1231
|
+
("rowDelimiter is a required field for fixed file definitions.", "paddingChar is a
|
|
1232
|
+
required field for fixed width file definitions.") and saves nothing.
|
|
1216
1233
|
required:
|
|
1217
1234
|
- name
|
|
1218
1235
|
- version
|
|
@@ -1220,6 +1237,20 @@ components:
|
|
|
1220
1237
|
- rules
|
|
1221
1238
|
allOf:
|
|
1222
1239
|
- $ref: '#/components/schemas/FileDefinitionBase'
|
|
1240
|
+
if:
|
|
1241
|
+
properties:
|
|
1242
|
+
format:
|
|
1243
|
+
const: fixed
|
|
1244
|
+
required:
|
|
1245
|
+
- format
|
|
1246
|
+
then:
|
|
1247
|
+
required:
|
|
1248
|
+
- fixed
|
|
1249
|
+
properties:
|
|
1250
|
+
fixed:
|
|
1251
|
+
required:
|
|
1252
|
+
- rowDelimiter
|
|
1253
|
+
- paddingChar
|
|
1223
1254
|
x-celigo-ai-guidance:
|
|
1224
1255
|
- |-
|
|
1225
1256
|
File definitions describe the structure and parsing/generation rules for
|
package/dist/guardrail.yml
CHANGED
|
@@ -25,6 +25,14 @@ tags:
|
|
|
25
25
|
CRUD operations use the `/v1/imports` endpoints. The `guardrail` object
|
|
26
26
|
holds the type-specific configuration.
|
|
27
27
|
|
|
28
|
+
A guardrail returns a verdict for each record and never changes the
|
|
29
|
+
record. The verdict fields are at the top level of the result:
|
|
30
|
+
`flagged`, plus `masked` (a `pii` guardrail with `mask: true`) or
|
|
31
|
+
`reasoning` (an `ai_agent` guardrail), while `_json` is empty when a saved
|
|
32
|
+
guardrail is invoked by id. In a flow, the guardrail step's response
|
|
33
|
+
mapping copies them onto the record (`{"extract": "masked", "generate":
|
|
34
|
+
"description"}`), and routers branch on the mapped `flagged`.
|
|
35
|
+
|
|
28
36
|
## Guardrail schema
|
|
29
37
|
|
|
30
38
|
{% openapi-schemas spec="guardrail" schemas="Guardrail" grouped="true" %}
|
|
@@ -1762,10 +1770,15 @@ components:
|
|
|
1762
1770
|
type: boolean
|
|
1763
1771
|
default: false
|
|
1764
1772
|
description: |-
|
|
1765
|
-
When true,
|
|
1766
|
-
|
|
1773
|
+
When true, the result also carries `masked`: the evaluated input with each detected
|
|
1774
|
+
value replaced by asterisks. The record itself is unchanged. With whole-record input
|
|
1775
|
+
(no `mapping`, and no top-level `text` field on the record), `masked` is the record
|
|
1776
|
+
serialized as one JSON string. When false, PII is flagged only.
|
|
1767
1777
|
x-celigo-ai-guidance:
|
|
1768
|
-
-
|
|
1778
|
+
- |-
|
|
1779
|
+
Masking doesn't rewrite the record. To pass masked text on, select the field as the
|
|
1780
|
+
`text` input (`mapping`) and response-map `masked` back onto that field on the
|
|
1781
|
+
guardrail's flow step (`{"extract": "masked", "generate": "<field>"}`).
|
|
1769
1782
|
moderation:
|
|
1770
1783
|
type: object
|
|
1771
1784
|
required:
|
|
@@ -2152,8 +2165,10 @@ components:
|
|
|
2152
2165
|
mapping:
|
|
2153
2166
|
type: object
|
|
2154
2167
|
description: |-
|
|
2155
|
-
Mapper 1.0 input mapping
|
|
2156
|
-
guardrail created without one has no
|
|
2168
|
+
Mapper 1.0 input mapping that selects the field evaluated as `text`.
|
|
2169
|
+
Served only when populated — a guardrail created without one has no
|
|
2170
|
+
`mapping` in responses, and evaluates the whole record (or the
|
|
2171
|
+
record's own top-level `text` field, when it has one).
|
|
2157
2172
|
properties:
|
|
2158
2173
|
fields:
|
|
2159
2174
|
type: array
|
|
@@ -2211,7 +2226,11 @@ components:
|
|
|
2211
2226
|
- []
|
|
2212
2227
|
mockResponse:
|
|
2213
2228
|
type: array
|
|
2214
|
-
description:
|
|
2229
|
+
description: |-
|
|
2230
|
+
Sample evaluation results stored with the guardrail. The UI populates these from a
|
|
2231
|
+
preview run; accepted on create and update. Each item has the shape of the result a
|
|
2232
|
+
run produces for one record, with the verdict fields (`flagged`, `masked`,
|
|
2233
|
+
`reasoning`) at the top level.
|
|
2215
2234
|
items:
|
|
2216
2235
|
type: object
|
|
2217
2236
|
properties:
|
|
@@ -2225,6 +2244,23 @@ components:
|
|
|
2225
2244
|
description: When true, the sample input tripped the guardrail.
|
|
2226
2245
|
examples:
|
|
2227
2246
|
- true
|
|
2247
|
+
reasoning:
|
|
2248
|
+
type: string
|
|
2249
|
+
description: |-
|
|
2250
|
+
The model's explanation of the verdict. Returned by `ai_agent` guardrails,
|
|
2251
|
+
whatever output format the guardrail stores.
|
|
2252
|
+
examples:
|
|
2253
|
+
- The discount is 45% on an account opened 30 days ago, so the order is flagged.
|
|
2254
|
+
_json:
|
|
2255
|
+
type: object
|
|
2256
|
+
description: |-
|
|
2257
|
+
Empty (`{}`) in the result of a saved guardrail invoked by id. A preview's result
|
|
2258
|
+
carries the raw verdict under `_json.data`: `flagged`, `reasoning` and
|
|
2259
|
+
`confidence` for `ai_agent`, or `flagged`, `masked` and `entities_detected`
|
|
2260
|
+
for `pii`. Read the top-level fields, not `_json`.
|
|
2261
|
+
additionalProperties: true
|
|
2262
|
+
examples:
|
|
2263
|
+
- {}
|
|
2228
2264
|
ignored:
|
|
2229
2265
|
type: boolean
|
|
2230
2266
|
description: When true, the result fell below `confidenceThreshold` and was disregarded.
|
|
@@ -2303,9 +2339,17 @@ components:
|
|
|
2303
2339
|
Mapper 1.0 mapping that selects the guardrail's input from the
|
|
2304
2340
|
incoming record. The UI writes a single field entry that maps a
|
|
2305
2341
|
record field to the `text` input (e.g.
|
|
2306
|
-
`{"fields": [{"extract": "employeeSummary", "generate": "text"}]}`)
|
|
2307
|
-
|
|
2342
|
+
`{"fields": [{"extract": "employeeSummary", "generate": "text"}]}`);
|
|
2343
|
+
only that field is evaluated, and fields outside it are neither
|
|
2344
|
+
scanned nor masked. Optional — when omitted the whole record is
|
|
2345
|
+
evaluated, serialized as JSON, unless the record has its own
|
|
2346
|
+
top-level `text` field, which is then evaluated alone. The server
|
|
2308
2347
|
serves this field only when populated.
|
|
2348
|
+
x-celigo-ai-guidance:
|
|
2349
|
+
- |-
|
|
2350
|
+
Send the input selection here as `mapping`, not as Mapper 2.0
|
|
2351
|
+
`mappings` rows. Map the field explicitly when records carry their
|
|
2352
|
+
own `text` field.
|
|
2309
2353
|
properties:
|
|
2310
2354
|
fields:
|
|
2311
2355
|
type: array
|
package/dist/import.yml
CHANGED
|
@@ -11854,10 +11854,15 @@ components:
|
|
|
11854
11854
|
type: boolean
|
|
11855
11855
|
default: false
|
|
11856
11856
|
description: |-
|
|
11857
|
-
When true,
|
|
11858
|
-
|
|
11857
|
+
When true, the result also carries `masked`: the evaluated input with each detected
|
|
11858
|
+
value replaced by asterisks. The record itself is unchanged. With whole-record input
|
|
11859
|
+
(no `mapping`, and no top-level `text` field on the record), `masked` is the record
|
|
11860
|
+
serialized as one JSON string. When false, PII is flagged only.
|
|
11859
11861
|
x-celigo-ai-guidance:
|
|
11860
|
-
-
|
|
11862
|
+
- |-
|
|
11863
|
+
Masking doesn't rewrite the record. To pass masked text on, select the field as the
|
|
11864
|
+
`text` input (`mapping`) and response-map `masked` back onto that field on the
|
|
11865
|
+
guardrail's flow step (`{"extract": "masked", "generate": "<field>"}`).
|
|
11861
11866
|
moderation:
|
|
11862
11867
|
type: object
|
|
11863
11868
|
required:
|
|
@@ -12492,19 +12497,27 @@ components:
|
|
|
12492
12497
|
properties:
|
|
12493
12498
|
function:
|
|
12494
12499
|
type: string
|
|
12495
|
-
description:
|
|
12500
|
+
description: |-
|
|
12501
|
+
Function to invoke: one in the script named by `_scriptId`, or one the code deployed on
|
|
12502
|
+
the stack named by `_stackId` exposes.
|
|
12496
12503
|
examples:
|
|
12497
12504
|
- transformRecords
|
|
12498
12505
|
_scriptId:
|
|
12499
12506
|
type: string
|
|
12500
12507
|
format: objectId
|
|
12501
12508
|
x-celigo-refModel: scripts
|
|
12502
|
-
description: Script containing the hook function named in `function`.
|
|
12509
|
+
description: Script containing the hook function named in `function`. Send this or `_stackId`, not both.
|
|
12503
12510
|
_stackId:
|
|
12504
12511
|
type: string
|
|
12505
12512
|
format: objectId
|
|
12506
12513
|
x-celigo-refModel: stacks
|
|
12507
|
-
description:
|
|
12514
|
+
description: |-
|
|
12515
|
+
Stack that hosts the hook logic, used instead of a script for stack-based deployments.
|
|
12516
|
+
The API doesn't enforce the either/or: a save carrying both `_scriptId` and `_stackId`
|
|
12517
|
+
answers 200 and stores both, and the script and the stack then each list the step as a
|
|
12518
|
+
dependent.
|
|
12519
|
+
x-celigo-ai-guidance:
|
|
12520
|
+
- When moving a hook onto a stack, remove `_scriptId` and set `function` to the stack's function in the same update.
|
|
12508
12521
|
configuration:
|
|
12509
12522
|
type:
|
|
12510
12523
|
- object
|
package/dist/integration.yml
CHANGED
|
@@ -547,6 +547,8 @@ paths:
|
|
|
547
547
|
description: |-
|
|
548
548
|
Returns every revision entry (snapshots, pulls, reverts) for the integration, newest first.
|
|
549
549
|
An integration with no revision history returns an empty response (204), not `[]`.
|
|
550
|
+
x-celigo-ai-guidance:
|
|
551
|
+
- To roll back a pull, find its revision here (its diff shows what it changed) and have the user revert it in the integration's Revisions tab with **Revert to before this revision**. The API can't start a revert, and writing old values back to the resources by hand misses what the pull created or deleted and records no revert.
|
|
550
552
|
parameters:
|
|
551
553
|
- name: _id
|
|
552
554
|
in: path
|
|
@@ -4698,8 +4700,8 @@ components:
|
|
|
4698
4700
|
- pull
|
|
4699
4701
|
- revert
|
|
4700
4702
|
x-enumDescriptions:
|
|
4701
|
-
snapshot: Point-in-time capture of the current integration state.
|
|
4702
|
-
pull: Changes pulled in from a related integration in another environment or clone.
|
|
4703
|
+
snapshot: Point-in-time capture of the current integration state, taken when a user (or `POST /v1/integrations/{_id}/revisions/create`) asks for one.
|
|
4704
|
+
pull: Changes pulled in from a related integration in another environment or clone. The pull's own revision keeps the state from before and after the merge (`beforeRevisionHash`, `afterRevisionHash`); no separate snapshot revisions are written for it.
|
|
4703
4705
|
revert: Restoration of the integration to a prior revision state.
|
|
4704
4706
|
status:
|
|
4705
4707
|
type: string
|
|
@@ -4724,7 +4726,11 @@ components:
|
|
|
4724
4726
|
- Stable baseline before deploying v2
|
|
4725
4727
|
beforeRevisionHash:
|
|
4726
4728
|
type: string
|
|
4727
|
-
description:
|
|
4729
|
+
description: |-
|
|
4730
|
+
Content hash of the integration state prior to this revision. On a `pull` it is the
|
|
4731
|
+
restore point that the Revisions tab's **Revert to before this revision** returns to:
|
|
4732
|
+
the revert names the pull in `_revertToRevisionId` and copies this hash into
|
|
4733
|
+
`revertToRevisionHash`.
|
|
4728
4734
|
examples:
|
|
4729
4735
|
- 34b7ae8d56563e242bc0bd42fd28874442657e58
|
|
4730
4736
|
transactionHash:
|
package/dist/template.yml
CHANGED
|
@@ -331,9 +331,20 @@ paths:
|
|
|
331
331
|
Check `type` on the `GET /v1/templates/{_id}/preview` response first.
|
|
332
332
|
|
|
333
333
|
This one-shot install doesn't run a template's own install steps. A
|
|
334
|
-
template whose preview `Integration` object lists `
|
|
335
|
-
|
|
336
|
-
|
|
334
|
+
template whose preview `Integration` object lists a `template_zip`
|
|
335
|
+
install step (most published templates have one) is refused with 422
|
|
336
|
+
and nothing is created; install it from the integrator.io marketplace,
|
|
337
|
+
whose installer runs those steps.
|
|
338
|
+
|
|
339
|
+
Every request that reaches the platform starts a new install — there is
|
|
340
|
+
no idempotency key, so a retry after a timeout or an ambiguous failure
|
|
341
|
+
creates a second integration with its own flows, exports and imports.
|
|
342
|
+
Before retrying, look for the integration the first request created: one
|
|
343
|
+
carrying this template's `_templateId`, named like the preview's
|
|
344
|
+
`Integration` object, with a `createdAt` near the request.
|
|
345
|
+
x-celigo-ai-guidance:
|
|
346
|
+
- Read `GET /v1/templates/{_id}/preview` first. Every `Connection` object's `_id` must be a key of `connectionMap`, and an `installSteps` entry with `type` `template_zip` on the `Integration` object means this endpoint refuses the template — send the user to the marketplace installer instead.
|
|
347
|
+
- Never retry this POST after a timeout or an ambiguous failure without first listing integrations for one carrying this template's `_templateId`, created by the earlier request. If it exists, the install went through; a second request installs a duplicate.
|
|
337
348
|
parameters:
|
|
338
349
|
- name: _id
|
|
339
350
|
in: path
|
|
@@ -446,8 +457,8 @@ paths:
|
|
|
446
457
|
'422':
|
|
447
458
|
description: |-
|
|
448
459
|
Connection IDs in `connectionMap` do not match the template's
|
|
449
|
-
expected connection IDs, or the template
|
|
450
|
-
|
|
460
|
+
expected connection IDs, or the template's install steps include a
|
|
461
|
+
`template_zip` step, which this install doesn't run. Nothing is created.
|
|
451
462
|
content:
|
|
452
463
|
application/json:
|
|
453
464
|
schema:
|
package/dist/tool.yml
CHANGED
|
@@ -1124,7 +1124,13 @@ paths:
|
|
|
1124
1124
|
properties:
|
|
1125
1125
|
connections:
|
|
1126
1126
|
type: array
|
|
1127
|
-
description:
|
|
1127
|
+
description: |-
|
|
1128
|
+
Connection bindings, one per connection the Tool's steps reference. Name the
|
|
1129
|
+
connection to run with in `_id`: a binding with only `_abstractId`, or with
|
|
1130
|
+
the connection in `_connectionId` instead, is refused with 422 "Invalid
|
|
1131
|
+
override at overrides.connections[0]. Connection override must include at
|
|
1132
|
+
least one of: _id, _borrowConcurrencyFromConnectionId,
|
|
1133
|
+
requiresEndUserCredentials."
|
|
1128
1134
|
items:
|
|
1129
1135
|
type: object
|
|
1130
1136
|
required:
|
|
@@ -1224,9 +1230,12 @@ paths:
|
|
|
1224
1230
|
$ref: '#/components/responses/404-not-found'
|
|
1225
1231
|
'422':
|
|
1226
1232
|
description: |-
|
|
1227
|
-
A step failed, or the Tool was refused before any step ran
|
|
1228
|
-
|
|
1229
|
-
`
|
|
1233
|
+
A step failed, or the Tool was refused before any step ran: a connection binding is
|
|
1234
|
+
missing (`connection_not_overridden`) or has no `_id`, or its branches don't all merge
|
|
1235
|
+
back (`tool_dangling_branch`). A failed step answers 422 even when it has
|
|
1236
|
+
`proceedOnFailure: true`: the later steps still run, but the response carries the error,
|
|
1237
|
+
not the output. Either way the response includes `invocationId` when logging is active,
|
|
1238
|
+
so the run can be opened in the run history.
|
|
1230
1239
|
content:
|
|
1231
1240
|
application/json:
|
|
1232
1241
|
schema:
|
|
@@ -1256,6 +1265,11 @@ paths:
|
|
|
1256
1265
|
code: connection_not_overridden
|
|
1257
1266
|
message: 'Missing connection overrides. The following connection IDs must be overridden: 6ab1f5657b3d01a9084253a5.'
|
|
1258
1267
|
invocationId: 6ab1f5877cd5cdd66da1cc8b
|
|
1268
|
+
binding_without_id:
|
|
1269
|
+
summary: A connection binding without `_id`
|
|
1270
|
+
value:
|
|
1271
|
+
errors:
|
|
1272
|
+
- message: 'Invalid override at overrides.connections[0]. Connection override must include at least one of: _id, _borrowConcurrencyFromConnectionId, requiresEndUserCredentials.'
|
|
1259
1273
|
/v1/tools/{_id}/invocations:
|
|
1260
1274
|
get:
|
|
1261
1275
|
x-internal: false
|
|
@@ -2399,10 +2413,16 @@ paths:
|
|
|
2399
2413
|
`GET /v1/tools/{_id}/test/run/{runId}/{_stepId}` to inspect stage-by-stage
|
|
2400
2414
|
results. The run id for follow-up calls is the `flowJob._id` value.
|
|
2401
2415
|
|
|
2402
|
-
A test run is not free of outside calls:
|
|
2403
|
-
|
|
2404
|
-
(
|
|
2405
|
-
|
|
2416
|
+
A test run is not free of outside calls: a lookup export with no saved `mockOutput` calls
|
|
2417
|
+
its source live, and the run then saves that response on the export as its `mockOutput`
|
|
2418
|
+
(the export's `lastModified` changes). Every later test run that uses the export, from any
|
|
2419
|
+
Tool or API and whatever its input, answers that lookup from the saved `mockOutput` instead
|
|
2420
|
+
of calling the source: the lookup's `request` stage shows the request rendered from the new
|
|
2421
|
+
input, and its `response` stage holds the saved records. Remove `mockOutput` from the export
|
|
2422
|
+
to call the source again. `POST /v1/tools/{_id}/invoke` neither reads nor writes it. Imports
|
|
2423
|
+
never send; each returns its saved `mockResponse`, or a placeholder response when none is
|
|
2424
|
+
saved (see `mockResponse` on imports). A second test run started while one is still running
|
|
2425
|
+
is refused with `test_run_not_allowed`.
|
|
2406
2426
|
|
|
2407
2427
|
Test runs are a separate, short-lived history from normal runs — capture
|
|
2408
2428
|
any follow-up step or log details soon after the run completes.
|
|
@@ -6373,10 +6393,9 @@ components:
|
|
|
6373
6393
|
mockInput:
|
|
6374
6394
|
type: object
|
|
6375
6395
|
description: |
|
|
6376
|
-
|
|
6377
|
-
|
|
6378
|
-
|
|
6379
|
-
without requiring live data. Maximum size: 1MB.
|
|
6396
|
+
Sample input saved with the tool. `POST /v1/tools/{_id}/test/run` doesn't read it:
|
|
6397
|
+
send it as that call's `input`, or the run starts from an empty record. Maximum
|
|
6398
|
+
size: 1MB.
|
|
6380
6399
|
additionalProperties: true
|
|
6381
6400
|
Output:
|
|
6382
6401
|
type: object
|
|
@@ -6720,16 +6739,19 @@ components:
|
|
|
6720
6739
|
items: {}
|
|
6721
6740
|
examples:
|
|
6722
6741
|
- - equals
|
|
6723
|
-
- -
|
|
6724
|
-
-
|
|
6742
|
+
- - string
|
|
6743
|
+
- - extract
|
|
6744
|
+
- customerType
|
|
6725
6745
|
- premium
|
|
6726
6746
|
- - and
|
|
6727
|
-
- -
|
|
6728
|
-
- -
|
|
6729
|
-
-
|
|
6730
|
-
|
|
6731
|
-
|
|
6732
|
-
|
|
6747
|
+
- - notempty
|
|
6748
|
+
- - string
|
|
6749
|
+
- - extract
|
|
6750
|
+
- orderId
|
|
6751
|
+
- - greaterthan
|
|
6752
|
+
- - number
|
|
6753
|
+
- - extract
|
|
6754
|
+
- amount
|
|
6733
6755
|
- 1000
|
|
6734
6756
|
nextRouterId:
|
|
6735
6757
|
type: string
|
|
@@ -6780,9 +6802,11 @@ components:
|
|
|
6780
6802
|
- 60a2c4e6f321d800129a1a3c
|
|
6781
6803
|
proceedOnFailure:
|
|
6782
6804
|
type: boolean
|
|
6783
|
-
description:
|
|
6784
|
-
|
|
6785
|
-
processor fails.
|
|
6805
|
+
description: |-
|
|
6806
|
+
When true, the later steps and the output stage still run after this
|
|
6807
|
+
processor fails; when false, they're skipped. Either way a direct
|
|
6808
|
+
`POST /v1/tools/{_id}/invoke` answers 422 with the failed step's error,
|
|
6809
|
+
without the output.
|
|
6786
6810
|
setupInProgress:
|
|
6787
6811
|
type: boolean
|
|
6788
6812
|
description: |
|
|
@@ -23242,10 +23266,15 @@ components:
|
|
|
23242
23266
|
type: boolean
|
|
23243
23267
|
default: false
|
|
23244
23268
|
description: |-
|
|
23245
|
-
When true,
|
|
23246
|
-
|
|
23269
|
+
When true, the result also carries `masked`: the evaluated input with each detected
|
|
23270
|
+
value replaced by asterisks. The record itself is unchanged. With whole-record input
|
|
23271
|
+
(no `mapping`, and no top-level `text` field on the record), `masked` is the record
|
|
23272
|
+
serialized as one JSON string. When false, PII is flagged only.
|
|
23247
23273
|
x-celigo-ai-guidance:
|
|
23248
|
-
-
|
|
23274
|
+
- |-
|
|
23275
|
+
Masking doesn't rewrite the record. To pass masked text on, select the field as the
|
|
23276
|
+
`text` input (`mapping`) and response-map `masked` back onto that field on the
|
|
23277
|
+
guardrail's flow step (`{"extract": "masked", "generate": "<field>"}`).
|
|
23249
23278
|
moderation:
|
|
23250
23279
|
type: object
|
|
23251
23280
|
required:
|
|
@@ -23880,19 +23909,27 @@ components:
|
|
|
23880
23909
|
properties:
|
|
23881
23910
|
function:
|
|
23882
23911
|
type: string
|
|
23883
|
-
description:
|
|
23912
|
+
description: |-
|
|
23913
|
+
Function to invoke: one in the script named by `_scriptId`, or one the code deployed on
|
|
23914
|
+
the stack named by `_stackId` exposes.
|
|
23884
23915
|
examples:
|
|
23885
23916
|
- transformRecords
|
|
23886
23917
|
_scriptId:
|
|
23887
23918
|
type: string
|
|
23888
23919
|
format: objectId
|
|
23889
23920
|
x-celigo-refModel: scripts
|
|
23890
|
-
description: Script containing the hook function named in `function`.
|
|
23921
|
+
description: Script containing the hook function named in `function`. Send this or `_stackId`, not both.
|
|
23891
23922
|
_stackId:
|
|
23892
23923
|
type: string
|
|
23893
23924
|
format: objectId
|
|
23894
23925
|
x-celigo-refModel: stacks
|
|
23895
|
-
description:
|
|
23926
|
+
description: |-
|
|
23927
|
+
Stack that hosts the hook logic, used instead of a script for stack-based deployments.
|
|
23928
|
+
The API doesn't enforce the either/or: a save carrying both `_scriptId` and `_stackId`
|
|
23929
|
+
answers 200 and stores both, and the script and the stack then each list the step as a
|
|
23930
|
+
dependent.
|
|
23931
|
+
x-celigo-ai-guidance:
|
|
23932
|
+
- When moving a hook onto a stack, remove `_scriptId` and set `function` to the stack's function in the same update.
|
|
23896
23933
|
configuration:
|
|
23897
23934
|
type:
|
|
23898
23935
|
- object
|
package/dist/user.yml
CHANGED
|
@@ -577,13 +577,14 @@ paths:
|
|
|
577
577
|
- user2@example.com
|
|
578
578
|
accessLevel: monitor
|
|
579
579
|
integrationOnly:
|
|
580
|
-
summary: Invite with
|
|
580
|
+
summary: Invite with access to one integration only, MFA required
|
|
581
581
|
value:
|
|
582
582
|
emails:
|
|
583
583
|
- contractor@example.com
|
|
584
584
|
integrationAccessLevel:
|
|
585
585
|
- _integrationId: 68f52162f00a35a1b26eaafb
|
|
586
586
|
accessLevel: manage
|
|
587
|
+
accountMFARequired: true
|
|
587
588
|
responses:
|
|
588
589
|
'200':
|
|
589
590
|
description: Array of results, one per email.
|
|
@@ -666,6 +667,11 @@ components:
|
|
|
666
667
|
yourself — omit `accessLevel` and use `integrationAccessLevel` for integration-only access.
|
|
667
668
|
x-celigo-ai-guidance:
|
|
668
669
|
- Choose the `accessLevel` value based on what the user should be able to do across the account.
|
|
670
|
+
- |-
|
|
671
|
+
For access to specific integrations only, omit `accessLevel` entirely. Any account-wide
|
|
672
|
+
value, `monitor` included, covers every integration in the account, including ones
|
|
673
|
+
created later, so pairing it with `integrationAccessLevel` widens access rather than
|
|
674
|
+
limiting it.
|
|
669
675
|
- |-
|
|
670
676
|
On PUT, "omit" means "clear" for integrationAccessLevel and accountMFARequired — GET the
|
|
671
677
|
record first and resend both with the new accessLevel. accountSSORequired keeps its stored
|
|
@@ -731,6 +737,7 @@ components:
|
|
|
731
737
|
omitted on update — resend it with every `PUT /v1/ashares/{_id}`.
|
|
732
738
|
x-celigo-ai-guidance:
|
|
733
739
|
- Whether the invited user must use MFA to access this account.
|
|
740
|
+
- The invite body takes it too, so require MFA in the invite itself rather than with a follow-up update, which must resend `integrationAccessLevel` and this flag or clears them.
|
|
734
741
|
allowAccessToAPIM:
|
|
735
742
|
type: boolean
|
|
736
743
|
description: When true, the user can access API Management (APIM) features for this account.
|
package/package.json
CHANGED
package/schemas.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"provenance": {
|
|
3
3
|
"repo": "celigo/integrator-api-specs",
|
|
4
|
-
"iasCommit": "
|
|
4
|
+
"iasCommit": "4f24ed04",
|
|
5
5
|
"generatedAt": "2026-10-21"
|
|
6
6
|
},
|
|
7
7
|
"roots": {
|
|
@@ -1563,11 +1563,13 @@
|
|
|
1563
1563
|
"object"
|
|
1564
1564
|
],
|
|
1565
1565
|
"p": {
|
|
1566
|
+
"_json": 10,
|
|
1566
1567
|
"dataURI": 1,
|
|
1567
1568
|
"errors": 132,
|
|
1568
1569
|
"flagged": 9,
|
|
1569
1570
|
"ignored": 9,
|
|
1570
1571
|
"masked": 1,
|
|
1572
|
+
"reasoning": 1,
|
|
1571
1573
|
"statusCode": 124
|
|
1572
1574
|
}
|
|
1573
1575
|
},
|