@celigo/api-specs 0.2.83 → 0.2.85
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 +286 -34
- package/dist/asynchelper.yml +286 -34
- package/dist/export.yml +297 -41
- package/dist/import.yml +297 -40
- package/dist/tool.yml +577 -75
- package/package.json +1 -1
- package/schemas.json +14 -4
package/dist/tool.yml
CHANGED
|
@@ -402,8 +402,14 @@ paths:
|
|
|
402
402
|
| `/name` | Tool display name |
|
|
403
403
|
| `/description` | Tool description |
|
|
404
404
|
| `/aiDescription` | AI-generated description object |
|
|
405
|
+
| `/input/debugUntil` | Debug-capture expiry for the Tool Input stage (ISO-8601, at most 3600 seconds from now) |
|
|
406
|
+
| `/output/debugUntil` | Debug-capture expiry for the Tool Output stage (ISO-8601, at most 3600 seconds from now) |
|
|
405
407
|
|
|
406
|
-
All other paths are rejected with 422 (`not a whitelisted property`).
|
|
408
|
+
All other paths are rejected with 422 (`not a whitelisted property`). A
|
|
409
|
+
`debugUntil` more than 3600 seconds ahead is rejected with 422
|
|
410
|
+
`update_not_allowed` and nothing is saved; `remove` on an absent
|
|
411
|
+
`debugUntil` succeeds (204). Changing a `debugUntil` needs the Tool
|
|
412
|
+
update permission on the Tool's integration, like every other path.
|
|
407
413
|
|
|
408
414
|
PATCH is the intended way to update these fields without accidentally
|
|
409
415
|
resetting other tool configuration via `PUT`.
|
|
@@ -2624,9 +2630,24 @@ paths:
|
|
|
2624
2630
|
description: |-
|
|
2625
2631
|
Lists the debug request records captured for a specific step of a tool.
|
|
2626
2632
|
These are the raw request/response payloads the step processed, retained
|
|
2627
|
-
for troubleshooting while debug capture is active for the step
|
|
2628
|
-
`
|
|
2629
|
-
|
|
2633
|
+
for troubleshooting while debug capture is active for the step — a future
|
|
2634
|
+
`debugUntil` on the step's export or import document, or `input.debugUntil`
|
|
2635
|
+
/ `output.debugUntil` on the tool for the Tool Input and Tool Output
|
|
2636
|
+
stages. Capture runs in every execution context (a standalone invoke at
|
|
2637
|
+
any `x-log-mode`, an AI agent or MCP caller, a flow or API that calls the
|
|
2638
|
+
tool, a parent tool); test runs write nothing here. Use the `key` of an
|
|
2639
|
+
entry with `GET /v1/tools/{_id}/{_stepId}/requests/{key}` to fetch the
|
|
2640
|
+
full detail of a single captured request.
|
|
2641
|
+
|
|
2642
|
+
HTTP and NetSuite steps record one entry per request they send. The
|
|
2643
|
+
`tool_input` stage records one entry per incoming record (`200` when the
|
|
2644
|
+
record passes the input schema, `422` with the validation errors when it
|
|
2645
|
+
does not); the `tool_output` stage records one entry per output
|
|
2646
|
+
validation. Routers, filters and scripts never record.
|
|
2647
|
+
|
|
2648
|
+
An account owner or administrator lists every entry. A shared user sees
|
|
2649
|
+
only entries from runs invoked under integrations they can access
|
|
2650
|
+
(standalone invokes are recorded under the tool's own integration).
|
|
2630
2651
|
|
|
2631
2652
|
When more records match than fit in one page, `nextPageURL` returns the
|
|
2632
2653
|
relative URL for the next page.
|
|
@@ -2656,15 +2677,21 @@ paths:
|
|
|
2656
2677
|
required: true
|
|
2657
2678
|
description: |-
|
|
2658
2679
|
The step whose captured logs to list: the ObjectId of an export or
|
|
2659
|
-
import step defined directly in this tool's routers
|
|
2660
|
-
|
|
2661
|
-
|
|
2662
|
-
|
|
2680
|
+
import step defined directly in this tool's routers, or one of the
|
|
2681
|
+
two virtual stage ids `tool_input` (the record entering the tool,
|
|
2682
|
+
validated against the input schema) and `tool_output` (the
|
|
2683
|
+
post-mapped record, validated against the output schema). Steps
|
|
2684
|
+
nested inside a child tool are addressed on that child tool's id;
|
|
2685
|
+
an ObjectId that is not a direct step of this tool returns `404`
|
|
2686
|
+
`invalid_ref`. Any other value — including reserved path segments
|
|
2687
|
+
such as `invocations`, `invoke`, and `test` — returns `400`
|
|
2688
|
+
`invalid_ref`.
|
|
2663
2689
|
schema:
|
|
2664
2690
|
type: string
|
|
2665
|
-
format: objectId
|
|
2666
2691
|
examples:
|
|
2667
2692
|
- 67ee026136f4d1eeb529ad63
|
|
2693
|
+
- tool_input
|
|
2694
|
+
- tool_output
|
|
2668
2695
|
- name: time_gt
|
|
2669
2696
|
in: query
|
|
2670
2697
|
required: false
|
|
@@ -2771,7 +2798,11 @@ paths:
|
|
|
2771
2798
|
description: Response status code of the captured request.
|
|
2772
2799
|
stage:
|
|
2773
2800
|
type: string
|
|
2774
|
-
description:
|
|
2801
|
+
description: |-
|
|
2802
|
+
Processing stage the record was captured in, such as
|
|
2803
|
+
`lookup` for a lookup step's request. Present on
|
|
2804
|
+
records written by HTTP and NetSuite steps; absent on
|
|
2805
|
+
`tool_input` and `tool_output` records.
|
|
2775
2806
|
additionalProperties: true
|
|
2776
2807
|
nextPageURL:
|
|
2777
2808
|
type: string
|
|
@@ -2789,16 +2820,60 @@ paths:
|
|
|
2789
2820
|
summary: Captured debug requests for a tool step
|
|
2790
2821
|
value:
|
|
2791
2822
|
requests:
|
|
2792
|
-
- key: 5481201053696-a10af1ade8fe477a847771c1e3716e36-200-
|
|
2823
|
+
- key: 5481201053696-a10af1ade8fe477a847771c1e3716e36-200-GET-lookup-60a2c4e6f321d800129a1a3c
|
|
2793
2824
|
time: 1776917346304
|
|
2825
|
+
method: GET
|
|
2826
|
+
statusCode: '200'
|
|
2827
|
+
stage: lookup
|
|
2828
|
+
tool_input:
|
|
2829
|
+
summary: Captured Tool Input records — one passed, one failed the input schema
|
|
2830
|
+
value:
|
|
2831
|
+
requests:
|
|
2832
|
+
- key: 5466610903705-847304f37d2041a79b9e657ea9a45d68-200-POST--60a2c4e6f321d800129a1a3c
|
|
2833
|
+
time: 1791507496295
|
|
2794
2834
|
method: POST
|
|
2795
2835
|
statusCode: '200'
|
|
2836
|
+
- key: 5466610902616-0d4aa1266fcb4ae4be5a7f316ff5e01c-422-POST--60a2c4e6f321d800129a1a3c
|
|
2837
|
+
time: 1791507497384
|
|
2838
|
+
method: POST
|
|
2839
|
+
statusCode: '422'
|
|
2840
|
+
'400':
|
|
2841
|
+
description: |-
|
|
2842
|
+
`_stepId` is neither an ObjectId nor `tool_input` / `tool_output`.
|
|
2843
|
+
Error code: `invalid_ref`.
|
|
2844
|
+
content:
|
|
2845
|
+
application/json:
|
|
2846
|
+
schema:
|
|
2847
|
+
$ref: '#/components/schemas/Error'
|
|
2848
|
+
examples:
|
|
2849
|
+
unknown_virtual_id:
|
|
2850
|
+
value:
|
|
2851
|
+
errors:
|
|
2852
|
+
- code: invalid_ref
|
|
2853
|
+
message: Please provide a valid _expOrImpId.
|
|
2796
2854
|
'401':
|
|
2797
2855
|
$ref: '#/components/responses/401-unauthorized'
|
|
2798
2856
|
'403':
|
|
2799
2857
|
$ref: '#/components/responses/403-forbidden'
|
|
2800
2858
|
'404':
|
|
2801
|
-
|
|
2859
|
+
description: |-
|
|
2860
|
+
The tool does not exist, or `_stepId` is an ObjectId that is not a
|
|
2861
|
+
step defined directly in this tool. Error code: `invalid_ref`.
|
|
2862
|
+
content:
|
|
2863
|
+
application/json:
|
|
2864
|
+
schema:
|
|
2865
|
+
$ref: '#/components/schemas/Error'
|
|
2866
|
+
examples:
|
|
2867
|
+
tool_not_found:
|
|
2868
|
+
value:
|
|
2869
|
+
errors:
|
|
2870
|
+
- code: invalid_ref
|
|
2871
|
+
message: Tool not found.
|
|
2872
|
+
step_not_in_tool:
|
|
2873
|
+
value:
|
|
2874
|
+
errors:
|
|
2875
|
+
- code: invalid_ref
|
|
2876
|
+
message: Export/Import not found.
|
|
2802
2877
|
'422':
|
|
2803
2878
|
description: 'Invalid time filter parameters. Error code: `invalid_or_missing_field`.'
|
|
2804
2879
|
content:
|
|
@@ -2822,12 +2897,16 @@ paths:
|
|
|
2822
2897
|
description: |-
|
|
2823
2898
|
Deletes captured debug request records for a specific step of a tool, by
|
|
2824
2899
|
their `key` values from `GET /v1/tools/{_id}/{_stepId}/requests`. Between
|
|
2825
|
-
1 and 1000 keys can be deleted per call
|
|
2900
|
+
1 and 1000 keys can be deleted per call; the deletion is synchronous and
|
|
2901
|
+
scoped to this step only.
|
|
2826
2902
|
|
|
2827
2903
|
The response lists the keys that were deleted and, separately, any keys
|
|
2828
|
-
that failed to delete along with the failure reason.
|
|
2904
|
+
that failed to delete along with the failure reason. A key that no longer
|
|
2905
|
+
exists is reported under `deleted`, not `errors`.
|
|
2829
2906
|
|
|
2830
|
-
Requires the `manage:tool:logs:deletion` permission.
|
|
2907
|
+
Requires the `manage:tool:logs:deletion` permission. A shared user's
|
|
2908
|
+
delete removes only records from runs invoked under integrations they can
|
|
2909
|
+
access.
|
|
2831
2910
|
operationId: deleteToolStepRequests
|
|
2832
2911
|
tags:
|
|
2833
2912
|
- Tools
|
|
@@ -2847,12 +2926,16 @@ paths:
|
|
|
2847
2926
|
required: true
|
|
2848
2927
|
description: |-
|
|
2849
2928
|
The step whose captured logs to delete: the ObjectId of an export or
|
|
2850
|
-
import step defined directly in this tool's routers
|
|
2929
|
+
import step defined directly in this tool's routers, or the virtual
|
|
2930
|
+
stage id `tool_input` or `tool_output`. Any other value returns
|
|
2931
|
+
`400` `invalid_ref`; an ObjectId that is not a direct step of this
|
|
2932
|
+
tool returns `404` `invalid_ref`.
|
|
2851
2933
|
schema:
|
|
2852
2934
|
type: string
|
|
2853
|
-
format: objectId
|
|
2854
2935
|
examples:
|
|
2855
2936
|
- 67ee026136f4d1eeb529ad63
|
|
2937
|
+
- tool_input
|
|
2938
|
+
- tool_output
|
|
2856
2939
|
requestBody:
|
|
2857
2940
|
required: true
|
|
2858
2941
|
content:
|
|
@@ -2919,13 +3002,43 @@ paths:
|
|
|
2919
3002
|
- 5481201048878-b21bf2bef9ff588b958882d2f4827f47-422-POST
|
|
2920
3003
|
errors: []
|
|
2921
3004
|
'400':
|
|
2922
|
-
|
|
3005
|
+
description: |-
|
|
3006
|
+
The body carries no `keys` array (error code `invalid_url`), or
|
|
3007
|
+
`_stepId` is neither an ObjectId nor `tool_input` / `tool_output`
|
|
3008
|
+
(error code `invalid_ref`).
|
|
3009
|
+
content:
|
|
3010
|
+
application/json:
|
|
3011
|
+
schema:
|
|
3012
|
+
$ref: '#/components/schemas/Error'
|
|
3013
|
+
examples:
|
|
3014
|
+
missing_keys:
|
|
3015
|
+
value:
|
|
3016
|
+
errors:
|
|
3017
|
+
- code: invalid_url
|
|
3018
|
+
message: keys is not valid.
|
|
3019
|
+
unknown_virtual_id:
|
|
3020
|
+
value:
|
|
3021
|
+
errors:
|
|
3022
|
+
- code: invalid_ref
|
|
3023
|
+
message: Please provide a valid _expOrImpId.
|
|
2923
3024
|
'401':
|
|
2924
3025
|
$ref: '#/components/responses/401-unauthorized'
|
|
2925
3026
|
'403':
|
|
2926
3027
|
$ref: '#/components/responses/403-forbidden'
|
|
2927
3028
|
'404':
|
|
2928
|
-
|
|
3029
|
+
description: |-
|
|
3030
|
+
The tool does not exist, or `_stepId` is an ObjectId that is not a
|
|
3031
|
+
step defined directly in this tool. Error code: `invalid_ref`.
|
|
3032
|
+
content:
|
|
3033
|
+
application/json:
|
|
3034
|
+
schema:
|
|
3035
|
+
$ref: '#/components/schemas/Error'
|
|
3036
|
+
examples:
|
|
3037
|
+
step_not_in_tool:
|
|
3038
|
+
value:
|
|
3039
|
+
errors:
|
|
3040
|
+
- code: invalid_ref
|
|
3041
|
+
message: Export/Import not found.
|
|
2929
3042
|
/v1/tools/{_id}/{_stepId}/requests/{key}:
|
|
2930
3043
|
get:
|
|
2931
3044
|
x-internal: false
|
|
@@ -2935,8 +3048,15 @@ paths:
|
|
|
2935
3048
|
step, identified by its `key`. Obtain the `key` from
|
|
2936
3049
|
`GET /v1/tools/{_id}/{_stepId}/requests`.
|
|
2937
3050
|
|
|
2938
|
-
|
|
2939
|
-
|
|
3051
|
+
For an HTTP or NetSuite step the record carries the adaptor HTTP
|
|
3052
|
+
request/response the step issued, with credentials masked and the
|
|
3053
|
+
bodies as strings. For the `tool_input` and `tool_output` stages (and a
|
|
3054
|
+
ToolImport step) the record is synthetic: `request.body` is the JSON
|
|
3055
|
+
record entering the stage, `response.body` is the validated JSON record
|
|
3056
|
+
(`statusCode` 200) or the validation errors (`statusCode` 422), the
|
|
3057
|
+
request carries no `url`, and `context` names the run that produced it.
|
|
3058
|
+
Synthetic bodies are stored unmasked. Every record carries the `key`,
|
|
3059
|
+
record `id`, and capture `time`.
|
|
2940
3060
|
|
|
2941
3061
|
Requires the `manage:tool:logs` permission.
|
|
2942
3062
|
operationId: getToolStepRequest
|
|
@@ -2958,15 +3078,18 @@ paths:
|
|
|
2958
3078
|
required: true
|
|
2959
3079
|
description: |-
|
|
2960
3080
|
The step the captured request belongs to: the ObjectId of an export
|
|
2961
|
-
or import step defined directly in this tool's routers
|
|
2962
|
-
|
|
2963
|
-
|
|
2964
|
-
|
|
3081
|
+
or import step defined directly in this tool's routers, or the
|
|
3082
|
+
virtual stage id `tool_input` or `tool_output`. Steps nested inside
|
|
3083
|
+
a child tool are addressed on that child tool's id; an ObjectId that
|
|
3084
|
+
is not a direct step of this tool returns `404` `invalid_ref`. Any
|
|
3085
|
+
other value — including reserved path segments such as
|
|
3086
|
+
`invocations`, `invoke`, and `test` — returns `400` `invalid_ref`.
|
|
2965
3087
|
schema:
|
|
2966
3088
|
type: string
|
|
2967
|
-
format: objectId
|
|
2968
3089
|
examples:
|
|
2969
3090
|
- 67ee026136f4d1eeb529ad63
|
|
3091
|
+
- tool_input
|
|
3092
|
+
- tool_output
|
|
2970
3093
|
- name: key
|
|
2971
3094
|
in: path
|
|
2972
3095
|
required: true
|
|
@@ -2998,51 +3121,84 @@ paths:
|
|
|
2998
3121
|
description: Epoch milliseconds when this pair was stored.
|
|
2999
3122
|
request:
|
|
3000
3123
|
type: object
|
|
3001
|
-
description:
|
|
3124
|
+
description: |-
|
|
3125
|
+
The HTTP request the step's export or import sent, or — for
|
|
3126
|
+
the `tool_input`, `tool_output` and ToolImport stages — the
|
|
3127
|
+
record entering the stage, wrapped as a `POST` with no `url`.
|
|
3002
3128
|
properties:
|
|
3003
3129
|
method:
|
|
3004
3130
|
type: string
|
|
3005
|
-
description: HTTP method (`GET`, `POST`, …).
|
|
3131
|
+
description: HTTP method (`GET`, `POST`, …); always `POST` on synthetic records.
|
|
3006
3132
|
examples:
|
|
3007
3133
|
- POST
|
|
3008
3134
|
url:
|
|
3009
3135
|
type: string
|
|
3010
|
-
description: Fully-resolved URL the request was sent to.
|
|
3136
|
+
description: Fully-resolved URL the request was sent to. Absent on synthetic records.
|
|
3011
3137
|
examples:
|
|
3012
3138
|
- https://httpbin.org/post
|
|
3013
3139
|
headers:
|
|
3014
3140
|
type: object
|
|
3015
|
-
description: Headers sent with the request; credential values are masked.
|
|
3141
|
+
description: Headers sent with the request; credential values are masked. Empty on synthetic records.
|
|
3016
3142
|
additionalProperties: true
|
|
3017
3143
|
body:
|
|
3018
|
-
type:
|
|
3019
|
-
|
|
3144
|
+
type:
|
|
3145
|
+
- string
|
|
3146
|
+
- object
|
|
3147
|
+
description: |-
|
|
3148
|
+
Request body as sent, verbatim, for an HTTP step (absent on a
|
|
3149
|
+
body-less method such as `GET`); the JSON record entering the
|
|
3150
|
+
stage on a synthetic record.
|
|
3020
3151
|
examples:
|
|
3021
3152
|
- '{"orderId":"SO-1042"}'
|
|
3022
3153
|
response:
|
|
3023
3154
|
type: object
|
|
3024
|
-
description:
|
|
3155
|
+
description: |-
|
|
3156
|
+
The HTTP response the step received, or — on synthetic
|
|
3157
|
+
records — the outcome of the stage: the validated record
|
|
3158
|
+
with `statusCode` 200, or the validation errors with 422.
|
|
3025
3159
|
properties:
|
|
3026
3160
|
statusCode:
|
|
3027
3161
|
type: integer
|
|
3028
|
-
description: HTTP status code the target system returned.
|
|
3162
|
+
description: HTTP status code the target system returned, or 200 / 422 for a synthetic record.
|
|
3029
3163
|
examples:
|
|
3030
3164
|
- 200
|
|
3031
3165
|
headers:
|
|
3032
3166
|
type: object
|
|
3033
|
-
description: Response headers as received.
|
|
3167
|
+
description: Response headers as received. Empty on synthetic records.
|
|
3034
3168
|
additionalProperties: true
|
|
3035
3169
|
body:
|
|
3036
|
-
type:
|
|
3037
|
-
|
|
3170
|
+
type:
|
|
3171
|
+
- string
|
|
3172
|
+
- object
|
|
3173
|
+
description: |-
|
|
3174
|
+
For an HTTP or NetSuite step: the response body as received, a
|
|
3175
|
+
string the caller parses per the `content-type` header. On a
|
|
3176
|
+
synthetic record: the validated JSON record as an object, or
|
|
3177
|
+
`{errors: [{code, message, …}]}` when validation failed.
|
|
3038
3178
|
examples:
|
|
3039
3179
|
- '{"ok":true}'
|
|
3180
|
+
receivedAt:
|
|
3181
|
+
type: integer
|
|
3182
|
+
format: int64
|
|
3183
|
+
description: Epoch milliseconds when the pair was captured.
|
|
3184
|
+
context:
|
|
3185
|
+
type: object
|
|
3186
|
+
description: |-
|
|
3187
|
+
The run that produced a synthetic record. Absent on records
|
|
3188
|
+
written by HTTP and NetSuite steps.
|
|
3189
|
+
properties:
|
|
3190
|
+
_rootContainerId:
|
|
3191
|
+
type: string
|
|
3192
|
+
description: Owning flow, API, or tool id of the run that produced this capture.
|
|
3193
|
+
_jobId:
|
|
3194
|
+
type: string
|
|
3195
|
+
description: Job id of the run that produced this capture.
|
|
3040
3196
|
additionalProperties: true
|
|
3041
3197
|
examples:
|
|
3042
3198
|
adaptor_http:
|
|
3043
3199
|
summary: Captured HTTP request of a lookup step
|
|
3044
3200
|
value:
|
|
3045
|
-
key: 5481201053696-a10af1ade8fe477a847771c1e3716e36-200-POST
|
|
3201
|
+
key: 5481201053696-a10af1ade8fe477a847771c1e3716e36-200-POST-lookup-60a2c4e6f321d800129a1a3c
|
|
3046
3202
|
id: a10af1ade8fe477a847771c1e3716e36
|
|
3047
3203
|
time: 1776917346304
|
|
3048
3204
|
request:
|
|
@@ -3056,12 +3212,67 @@ paths:
|
|
|
3056
3212
|
headers:
|
|
3057
3213
|
content-type: application/json
|
|
3058
3214
|
body: '{"ok":true}'
|
|
3215
|
+
receivedAt: 1776917346302
|
|
3216
|
+
tool_input_failed:
|
|
3217
|
+
summary: Synthetic Tool Input record — the record failed the input schema
|
|
3218
|
+
value:
|
|
3219
|
+
key: 5466610902616-0d4aa1266fcb4ae4be5a7f316ff5e01c-422-POST--60a2c4e6f321d800129a1a3c
|
|
3220
|
+
id: 0d4aa1266fcb4ae4be5a7f316ff5e01c
|
|
3221
|
+
time: 1791507497384
|
|
3222
|
+
request:
|
|
3223
|
+
method: POST
|
|
3224
|
+
headers: {}
|
|
3225
|
+
body: {}
|
|
3226
|
+
response:
|
|
3227
|
+
statusCode: 422
|
|
3228
|
+
headers: {}
|
|
3229
|
+
receivedAt: 1791507497384
|
|
3230
|
+
body:
|
|
3231
|
+
errors:
|
|
3232
|
+
- code: tool_input_schema_validation_failed
|
|
3233
|
+
message: 'Tool input validation failed: must have required property ''q'''
|
|
3234
|
+
source: tool_input
|
|
3235
|
+
stage: tool_input_schema_validation
|
|
3236
|
+
context:
|
|
3237
|
+
_rootContainerId: 69d462d5b9c28ea0b7f82522
|
|
3238
|
+
_jobId: 6ac83c299205d177fa25df54
|
|
3239
|
+
'400':
|
|
3240
|
+
description: |-
|
|
3241
|
+
`_stepId` is neither an ObjectId nor `tool_input` / `tool_output`.
|
|
3242
|
+
Error code: `invalid_ref`.
|
|
3243
|
+
content:
|
|
3244
|
+
application/json:
|
|
3245
|
+
schema:
|
|
3246
|
+
$ref: '#/components/schemas/Error'
|
|
3247
|
+
examples:
|
|
3248
|
+
unknown_virtual_id:
|
|
3249
|
+
value:
|
|
3250
|
+
errors:
|
|
3251
|
+
- code: invalid_ref
|
|
3252
|
+
message: Please provide a valid _expOrImpId.
|
|
3059
3253
|
'401':
|
|
3060
3254
|
$ref: '#/components/responses/401-unauthorized'
|
|
3061
3255
|
'403':
|
|
3062
3256
|
$ref: '#/components/responses/403-forbidden'
|
|
3063
3257
|
'404':
|
|
3064
|
-
|
|
3258
|
+
description: |-
|
|
3259
|
+
The tool or the step does not exist (`invalid_ref`), or no record
|
|
3260
|
+
carries this `key` (`file_not_found`).
|
|
3261
|
+
content:
|
|
3262
|
+
application/json:
|
|
3263
|
+
schema:
|
|
3264
|
+
$ref: '#/components/schemas/Error'
|
|
3265
|
+
examples:
|
|
3266
|
+
unknown_key:
|
|
3267
|
+
value:
|
|
3268
|
+
errors:
|
|
3269
|
+
- code: file_not_found
|
|
3270
|
+
message: We are unable to find the file for the given fileName.
|
|
3271
|
+
step_not_in_tool:
|
|
3272
|
+
value:
|
|
3273
|
+
errors:
|
|
3274
|
+
- code: invalid_ref
|
|
3275
|
+
message: Export/Import not found.
|
|
3065
3276
|
components:
|
|
3066
3277
|
securitySchemes:
|
|
3067
3278
|
bearerAuth:
|
|
@@ -3373,7 +3584,8 @@ components:
|
|
|
3373
3584
|
Explicit JSON `null` is itself a valid fallback: the destination field is written as
|
|
3374
3585
|
JSON null when the extract yields nothing (the Mapper UI's "Use null as default value"
|
|
3375
3586
|
action). Omitting the key entirely means no fallback — the field is left out of the
|
|
3376
|
-
output when the extract is empty (the UI's "Do nothing" action).
|
|
3587
|
+
output when the extract is empty (the UI's "Do nothing" action). Failing the record
|
|
3588
|
+
instead is `conditional.when: fail_record_when_empty`, which excludes a default.
|
|
3377
3589
|
x-celigo-ai-guidance:
|
|
3378
3590
|
- |-
|
|
3379
3591
|
`"default": null` and `"default": ""` are distinct saved values, not
|
|
@@ -3382,6 +3594,12 @@ components:
|
|
|
3382
3594
|
Preserve them verbatim when editing or migrating a mapping — dropping
|
|
3383
3595
|
the key changes runtime behavior from "use null/empty string as
|
|
3384
3596
|
default value" to "do nothing" (field omitted from the output).
|
|
3597
|
+
- |-
|
|
3598
|
+
The four "Action to take if source field has no value" choices map to:
|
|
3599
|
+
do nothing → no `default` key (optionally `conditional.when:
|
|
3600
|
+
extract_not_empty`); use null → `"default": null`; use empty string or
|
|
3601
|
+
a custom value → `"default": "<value>"`; cause the record to fail →
|
|
3602
|
+
`conditional.when: fail_record_when_empty` with no `default` key.
|
|
3385
3603
|
examples:
|
|
3386
3604
|
- N/A
|
|
3387
3605
|
- '0'
|
|
@@ -3714,6 +3932,22 @@ components:
|
|
|
3714
3932
|
- $.order.lineItems[*]
|
|
3715
3933
|
- $.parents[*].children[*]
|
|
3716
3934
|
- $
|
|
3935
|
+
name:
|
|
3936
|
+
type: string
|
|
3937
|
+
maxLength: 200
|
|
3938
|
+
description: |
|
|
3939
|
+
Display label for this source object in the mapper, so the sources of
|
|
3940
|
+
an object array can be told apart instead of all showing as `$`.
|
|
3941
|
+
Has no effect at runtime; stored only when non-empty.
|
|
3942
|
+
x-celigo-ai-guidance:
|
|
3943
|
+
- |-
|
|
3944
|
+
Carry an existing `name` through every edit — it is the user's label
|
|
3945
|
+
for the tab, and an entry sent without it loses the label. Duplicate
|
|
3946
|
+
names across entries are allowed. Set one only when the user names
|
|
3947
|
+
the source object; never invent labels.
|
|
3948
|
+
examples:
|
|
3949
|
+
- Billing address
|
|
3950
|
+
- Shipping address
|
|
3717
3951
|
sourceDataType:
|
|
3718
3952
|
type: string
|
|
3719
3953
|
description: |
|
|
@@ -3762,17 +3996,31 @@ components:
|
|
|
3762
3996
|
type: object
|
|
3763
3997
|
description: |
|
|
3764
3998
|
Defines conditional rules for including each array element in the result.
|
|
3999
|
+
x-celigo-ai-guidance:
|
|
4000
|
+
- |-
|
|
4001
|
+
Judged against this entry's own `extract` (the array source). The
|
|
4002
|
+
design scopes the UI's tab-level "Action to take if source field has
|
|
4003
|
+
no value" to copy-as-is tabs (no child `mappings`); the API accepts
|
|
4004
|
+
`fail_record_when_empty` on a mapped entry as well, and the mapper
|
|
4005
|
+
processor honors it there — the record fails when that array is
|
|
4006
|
+
missing or empty (`errors[]` entry `code: extract_empty`, `fatal:
|
|
4007
|
+
true`, message `<generate>: Source field has no value`; probed
|
|
4008
|
+
2026-10-09). Say so when writing it on a mapped entry: the user may
|
|
4009
|
+
not find the setting in the mapper's tab. To fail on an empty field
|
|
4010
|
+
inside each element, set the action on that child mapping instead.
|
|
3765
4011
|
properties:
|
|
3766
4012
|
when:
|
|
3767
4013
|
type: string
|
|
3768
4014
|
description: |
|
|
3769
|
-
|
|
3770
|
-
|
|
3771
|
-
|
|
4015
|
+
Condition judged on the entry's extract — skip the elements the
|
|
4016
|
+
extract does not return, or fail the whole record when the source
|
|
4017
|
+
array is missing or empty.
|
|
3772
4018
|
enum:
|
|
3773
4019
|
- extract_not_empty
|
|
4020
|
+
- fail_record_when_empty
|
|
3774
4021
|
x-enumDescriptions:
|
|
3775
|
-
extract_not_empty: Include
|
|
4022
|
+
extract_not_empty: Include an array element only when the extract returns a non-empty value for it
|
|
4023
|
+
fail_record_when_empty: Fail the record when the entry's source array is missing or empty
|
|
3776
4024
|
examples:
|
|
3777
4025
|
- extract_not_empty
|
|
3778
4026
|
mappings:
|
|
@@ -3872,6 +4120,20 @@ components:
|
|
|
3872
4120
|
extract: $.price
|
|
3873
4121
|
dataType: number
|
|
3874
4122
|
status: Active
|
|
4123
|
+
if:
|
|
4124
|
+
properties:
|
|
4125
|
+
conditional:
|
|
4126
|
+
properties:
|
|
4127
|
+
when:
|
|
4128
|
+
const: fail_record_when_empty
|
|
4129
|
+
required:
|
|
4130
|
+
- when
|
|
4131
|
+
required:
|
|
4132
|
+
- conditional
|
|
4133
|
+
then:
|
|
4134
|
+
not:
|
|
4135
|
+
required:
|
|
4136
|
+
- default
|
|
3875
4137
|
status:
|
|
3876
4138
|
type: string
|
|
3877
4139
|
description: |
|
|
@@ -3879,9 +4141,10 @@ components:
|
|
|
3879
4141
|
Required on every mapping entry. Controls whether the mapping is applied.
|
|
3880
4142
|
|
|
3881
4143
|
**Guidance**
|
|
3882
|
-
|
|
3883
|
-
|
|
3884
|
-
|
|
4144
|
+
Only `Active` rows run. `Draft` and `Inactive` rows keep their
|
|
4145
|
+
configuration, are saved with minimal validation, and are skipped at
|
|
4146
|
+
runtime and in preview; a non-Active parent skips its whole subtree
|
|
4147
|
+
whatever its children say. The API rejects a mapping missing this field
|
|
3885
4148
|
(validation error: "Mapping object must have status field present.").
|
|
3886
4149
|
x-celigo-ai-guidance:
|
|
3887
4150
|
- |-
|
|
@@ -3890,12 +4153,28 @@ components:
|
|
|
3890
4153
|
field validations. The value is case-sensitive. The API rejects:
|
|
3891
4154
|
- Missing field: `[status_field_absent] Mapping object must have status field present.`
|
|
3892
4155
|
- Wrong case (e.g. `"active"`): `[invalid_status_enums] active is not a valid enum for status field.`
|
|
4156
|
+
- |-
|
|
4157
|
+
`"Inactive"` is the user's "Set inactive" on a row: use it only when
|
|
4158
|
+
asked to disable or park a row, never to mean incomplete (that is
|
|
4159
|
+
`"Draft"`). Setting a parent `Inactive` means no `Active` row may
|
|
4160
|
+
remain under it — the save rejects an `Active` row under an
|
|
4161
|
+
`Inactive` parent (`[inactive_parent_active_child]` on `mappings`,
|
|
4162
|
+
no message text) and never cascades or promotes on its own; `Draft`
|
|
4163
|
+
descendants are kept as they are, and a `Draft` parent does not gate
|
|
4164
|
+
its children. The UI's Set inactive on a parent marks the parent and
|
|
4165
|
+
every child `Inactive` (IO-166197). Re-enabling a child
|
|
4166
|
+
means re-enabling its ancestors in the same payload. Edits that keep
|
|
4167
|
+
existing rows must carry their stored status forward — rewriting a
|
|
4168
|
+
`Draft` or `Inactive` row to `Active` turns a row the user parked
|
|
4169
|
+
back on.
|
|
3893
4170
|
enum:
|
|
3894
4171
|
- Active
|
|
3895
4172
|
- Draft
|
|
4173
|
+
- Inactive
|
|
3896
4174
|
x-enumDescriptions:
|
|
3897
|
-
Active: The mapping is enabled and applied during processing
|
|
3898
|
-
Draft: In-progress mapping; saved without the Active-only field validations
|
|
4175
|
+
Active: The mapping is enabled and applied during processing
|
|
4176
|
+
Draft: In-progress mapping; saved without the Active-only field validations and skipped at runtime
|
|
4177
|
+
Inactive: Disabled by the user; configuration kept, skipped at runtime and in preview
|
|
3899
4178
|
examples:
|
|
3900
4179
|
- Active
|
|
3901
4180
|
conditional:
|
|
@@ -3924,6 +4203,10 @@ components:
|
|
|
3924
4203
|
- `extract_not_empty`: Apply only when the extract field returns a value
|
|
3925
4204
|
Useful for conditional mapping based on input data availability
|
|
3926
4205
|
|
|
4206
|
+
- `fail_record_when_empty`: Fail the record when the extract field returns
|
|
4207
|
+
no value (the UI's "Cause record to fail" action when the source field
|
|
4208
|
+
has no value)
|
|
4209
|
+
|
|
3927
4210
|
**Example**
|
|
3928
4211
|
```json
|
|
3929
4212
|
{
|
|
@@ -3936,28 +4219,75 @@ components:
|
|
|
3936
4219
|
}
|
|
3937
4220
|
}
|
|
3938
4221
|
```
|
|
4222
|
+
x-celigo-ai-guidance:
|
|
4223
|
+
- |-
|
|
4224
|
+
`when` holds one value, and two different settings share it: the
|
|
4225
|
+
composite-import operation gate (`record_created` / `record_updated`,
|
|
4226
|
+
the UI's "Only perform mapping when") and the empty-source action
|
|
4227
|
+
(`extract_not_empty` / `fail_record_when_empty`, the UI's "Action to
|
|
4228
|
+
take if source field has no value"). A row cannot carry both — writing
|
|
4229
|
+
one replaces the other and the save succeeds, so a composite import
|
|
4230
|
+
row that needs both has to choose. Never author `fail_record_when_empty`
|
|
4231
|
+
on a row that already carries `record_created` or `record_updated`.
|
|
3939
4232
|
properties:
|
|
3940
4233
|
when:
|
|
3941
4234
|
type: string
|
|
3942
4235
|
description: |
|
|
3943
|
-
|
|
3944
|
-
-
|
|
3945
|
-
|
|
3946
|
-
|
|
4236
|
+
Condition that gates this mapping — either an operation gate on a
|
|
4237
|
+
composite (create-or-update) import or the action to take when the
|
|
4238
|
+
extract returns no value. Empty means null, undefined or an empty
|
|
4239
|
+
string; `0`, `false` and whitespace are values.
|
|
4240
|
+
x-celigo-ai-guidance:
|
|
4241
|
+
- |-
|
|
4242
|
+
`fail_record_when_empty` is the fourth "Action to take if source field
|
|
4243
|
+
has no value" and is mutually exclusive with the other three: send it
|
|
4244
|
+
with no `default` key. A `default`, a `lookupName` or a `hardCodedValue`
|
|
4245
|
+
on the same row — or a `default` on a `buildArrayHelper` entry — is
|
|
4246
|
+
rejected at save with `[unsupported_mapping] "<key>" and conditional.when
|
|
4247
|
+
"fail_record_when_empty" cannot be present in mapping simultaneously.`
|
|
4248
|
+
(the lookup variant adds `Use lookup "allowFailures" instead.`);
|
|
4249
|
+
lookups fail through `allowFailures: false`, and a hard-coded row
|
|
4250
|
+
always has a value. At runtime an empty extract fails the record with
|
|
4251
|
+
an `errors[]` entry `{code: "extract_empty", fatal: true, source:
|
|
4252
|
+
"mapping", message: "<generate>: Source field has no value"}`
|
|
4253
|
+
("Input field has no value" in a Transformation 2.0); `0` and `false`
|
|
4254
|
+
are values and map through.
|
|
3947
4255
|
enum:
|
|
3948
4256
|
- record_created
|
|
3949
4257
|
- record_updated
|
|
3950
4258
|
- extract_not_empty
|
|
4259
|
+
- fail_record_when_empty
|
|
3951
4260
|
x-enumDescriptions:
|
|
3952
|
-
record_created: Apply this mapping only when creating a new record
|
|
3953
|
-
record_updated: Apply this mapping only when updating an existing record
|
|
3954
|
-
extract_not_empty: Apply this mapping only when the extract field returns a non-empty value
|
|
4261
|
+
record_created: Apply this mapping only when creating a new record
|
|
4262
|
+
record_updated: Apply this mapping only when updating an existing record
|
|
4263
|
+
extract_not_empty: Apply this mapping only when the extract field returns a non-empty value
|
|
4264
|
+
fail_record_when_empty: Fail the record when the extract field returns no value
|
|
3955
4265
|
examples:
|
|
3956
4266
|
- record_created
|
|
3957
4267
|
- record_updated
|
|
3958
4268
|
- extract_not_empty
|
|
4269
|
+
- fail_record_when_empty
|
|
3959
4270
|
required:
|
|
3960
4271
|
- dataType
|
|
4272
|
+
if:
|
|
4273
|
+
properties:
|
|
4274
|
+
conditional:
|
|
4275
|
+
properties:
|
|
4276
|
+
when:
|
|
4277
|
+
const: fail_record_when_empty
|
|
4278
|
+
required:
|
|
4279
|
+
- when
|
|
4280
|
+
required:
|
|
4281
|
+
- conditional
|
|
4282
|
+
then:
|
|
4283
|
+
not:
|
|
4284
|
+
anyOf:
|
|
4285
|
+
- required:
|
|
4286
|
+
- default
|
|
4287
|
+
- required:
|
|
4288
|
+
- lookupName
|
|
4289
|
+
- required:
|
|
4290
|
+
- hardCodedValue
|
|
3961
4291
|
Mappings:
|
|
3962
4292
|
type: array
|
|
3963
4293
|
description: |
|
|
@@ -3981,6 +4311,20 @@ components:
|
|
|
3981
4311
|
|
|
3982
4312
|
The system will process these nested structures recursively during runtime, ensuring proper construction
|
|
3983
4313
|
of complex hierarchical data while maintaining excellent performance.
|
|
4314
|
+
|
|
4315
|
+
On save, a leaf row with neither a source (`extract`, `hardCodedValue`, `lookupName`) nor a
|
|
4316
|
+
destination (`generate`) is dropped silently, at every nesting level, and so is an object or
|
|
4317
|
+
object-array row left with no source, no destination and no remaining child `mappings` or
|
|
4318
|
+
`buildArrayHelper` entries; a row with only one of the two, and a source-less, destination-less
|
|
4319
|
+
wrapper that still has children, are kept.
|
|
4320
|
+
x-celigo-ai-guidance:
|
|
4321
|
+
- |-
|
|
4322
|
+
Rows that exist in the saved document — including `Draft` and `Inactive` rows and
|
|
4323
|
+
rows with only a source or only a destination — are the user's state: an edit that
|
|
4324
|
+
re-sends the tree must carry them through unchanged unless the user asked to change
|
|
4325
|
+
them. Only a row with neither source nor destination — and, for an object or
|
|
4326
|
+
object-array row, no remaining children — can be left out; the save would drop it
|
|
4327
|
+
anyway. A wrapper with children but no `generate` is kept by the save, so keep it.
|
|
3984
4328
|
items:
|
|
3985
4329
|
type: object
|
|
3986
4330
|
properties:
|
|
@@ -4260,7 +4604,8 @@ components:
|
|
|
4260
4604
|
Explicit JSON `null` is itself a valid fallback: the destination field is written as
|
|
4261
4605
|
JSON null when the extract yields nothing (the Mapper UI's "Use null as default value"
|
|
4262
4606
|
action). Omitting the key entirely means no fallback — the field is left out of the
|
|
4263
|
-
output when the extract is empty (the UI's "Do nothing" action).
|
|
4607
|
+
output when the extract is empty (the UI's "Do nothing" action). Failing the record
|
|
4608
|
+
instead is `conditional.when: fail_record_when_empty`, which excludes a default.
|
|
4264
4609
|
x-celigo-ai-guidance:
|
|
4265
4610
|
- |-
|
|
4266
4611
|
`"default": null` and `"default": ""` are distinct saved values, not
|
|
@@ -4269,6 +4614,12 @@ components:
|
|
|
4269
4614
|
Preserve them verbatim when editing or migrating a mapping — dropping
|
|
4270
4615
|
the key changes runtime behavior from "use null/empty string as
|
|
4271
4616
|
default value" to "do nothing" (field omitted from the output).
|
|
4617
|
+
- |-
|
|
4618
|
+
The four "Action to take if source field has no value" choices map to:
|
|
4619
|
+
do nothing → no `default` key (optionally `conditional.when:
|
|
4620
|
+
extract_not_empty`); use null → `"default": null`; use empty string or
|
|
4621
|
+
a custom value → `"default": "<value>"`; cause the record to fail →
|
|
4622
|
+
`conditional.when: fail_record_when_empty` with no `default` key.
|
|
4272
4623
|
examples:
|
|
4273
4624
|
- N/A
|
|
4274
4625
|
- '0'
|
|
@@ -4601,6 +4952,22 @@ components:
|
|
|
4601
4952
|
- $.order.lineItems[*]
|
|
4602
4953
|
- $.parents[*].children[*]
|
|
4603
4954
|
- $
|
|
4955
|
+
name:
|
|
4956
|
+
type: string
|
|
4957
|
+
maxLength: 200
|
|
4958
|
+
description: |
|
|
4959
|
+
Display label for this source object in the mapper, so the sources of
|
|
4960
|
+
an object array can be told apart instead of all showing as `$`.
|
|
4961
|
+
Has no effect at runtime; stored only when non-empty.
|
|
4962
|
+
x-celigo-ai-guidance:
|
|
4963
|
+
- |-
|
|
4964
|
+
Carry an existing `name` through every edit — it is the user's label
|
|
4965
|
+
for the tab, and an entry sent without it loses the label. Duplicate
|
|
4966
|
+
names across entries are allowed. Set one only when the user names
|
|
4967
|
+
the source object; never invent labels.
|
|
4968
|
+
examples:
|
|
4969
|
+
- Billing address
|
|
4970
|
+
- Shipping address
|
|
4604
4971
|
sourceDataType:
|
|
4605
4972
|
type: string
|
|
4606
4973
|
description: |
|
|
@@ -4649,17 +5016,31 @@ components:
|
|
|
4649
5016
|
type: object
|
|
4650
5017
|
description: |
|
|
4651
5018
|
Defines conditional rules for including each array element in the result.
|
|
5019
|
+
x-celigo-ai-guidance:
|
|
5020
|
+
- |-
|
|
5021
|
+
Judged against this entry's own `extract` (the array source). The
|
|
5022
|
+
design scopes the UI's tab-level "Action to take if source field has
|
|
5023
|
+
no value" to copy-as-is tabs (no child `mappings`); the API accepts
|
|
5024
|
+
`fail_record_when_empty` on a mapped entry as well, and the mapper
|
|
5025
|
+
processor honors it there — the record fails when that array is
|
|
5026
|
+
missing or empty (`errors[]` entry `code: extract_empty`, `fatal:
|
|
5027
|
+
true`, message `<generate>: Source field has no value`; probed
|
|
5028
|
+
2026-10-09). Say so when writing it on a mapped entry: the user may
|
|
5029
|
+
not find the setting in the mapper's tab. To fail on an empty field
|
|
5030
|
+
inside each element, set the action on that child mapping instead.
|
|
4652
5031
|
properties:
|
|
4653
5032
|
when:
|
|
4654
5033
|
type: string
|
|
4655
5034
|
description: |
|
|
4656
|
-
|
|
4657
|
-
|
|
4658
|
-
|
|
5035
|
+
Condition judged on the entry's extract — skip the elements the
|
|
5036
|
+
extract does not return, or fail the whole record when the source
|
|
5037
|
+
array is missing or empty.
|
|
4659
5038
|
enum:
|
|
4660
5039
|
- extract_not_empty
|
|
5040
|
+
- fail_record_when_empty
|
|
4661
5041
|
x-enumDescriptions:
|
|
4662
|
-
extract_not_empty: Include
|
|
5042
|
+
extract_not_empty: Include an array element only when the extract returns a non-empty value for it
|
|
5043
|
+
fail_record_when_empty: Fail the record when the entry's source array is missing or empty
|
|
4663
5044
|
examples:
|
|
4664
5045
|
- extract_not_empty
|
|
4665
5046
|
mappings:
|
|
@@ -4759,6 +5140,20 @@ components:
|
|
|
4759
5140
|
extract: $.price
|
|
4760
5141
|
dataType: number
|
|
4761
5142
|
status: Active
|
|
5143
|
+
if:
|
|
5144
|
+
properties:
|
|
5145
|
+
conditional:
|
|
5146
|
+
properties:
|
|
5147
|
+
when:
|
|
5148
|
+
const: fail_record_when_empty
|
|
5149
|
+
required:
|
|
5150
|
+
- when
|
|
5151
|
+
required:
|
|
5152
|
+
- conditional
|
|
5153
|
+
then:
|
|
5154
|
+
not:
|
|
5155
|
+
required:
|
|
5156
|
+
- default
|
|
4762
5157
|
status:
|
|
4763
5158
|
type: string
|
|
4764
5159
|
description: |
|
|
@@ -4766,9 +5161,10 @@ components:
|
|
|
4766
5161
|
Required on every mapping entry. Controls whether the mapping is applied.
|
|
4767
5162
|
|
|
4768
5163
|
**Guidance**
|
|
4769
|
-
|
|
4770
|
-
|
|
4771
|
-
|
|
5164
|
+
Only `Active` rows run. `Draft` and `Inactive` rows keep their
|
|
5165
|
+
configuration, are saved with minimal validation, and are skipped at
|
|
5166
|
+
runtime and in preview; a non-Active parent skips its whole subtree
|
|
5167
|
+
whatever its children say. The API rejects a mapping missing this field
|
|
4772
5168
|
(validation error: "Mapping object must have status field present.").
|
|
4773
5169
|
x-celigo-ai-guidance:
|
|
4774
5170
|
- |-
|
|
@@ -4777,12 +5173,28 @@ components:
|
|
|
4777
5173
|
field validations. The value is case-sensitive. The API rejects:
|
|
4778
5174
|
- Missing field: `[status_field_absent] Mapping object must have status field present.`
|
|
4779
5175
|
- Wrong case (e.g. `"active"`): `[invalid_status_enums] active is not a valid enum for status field.`
|
|
5176
|
+
- |-
|
|
5177
|
+
`"Inactive"` is the user's "Set inactive" on a row: use it only when
|
|
5178
|
+
asked to disable or park a row, never to mean incomplete (that is
|
|
5179
|
+
`"Draft"`). Setting a parent `Inactive` means no `Active` row may
|
|
5180
|
+
remain under it — the save rejects an `Active` row under an
|
|
5181
|
+
`Inactive` parent (`[inactive_parent_active_child]` on `mappings`,
|
|
5182
|
+
no message text) and never cascades or promotes on its own; `Draft`
|
|
5183
|
+
descendants are kept as they are, and a `Draft` parent does not gate
|
|
5184
|
+
its children. The UI's Set inactive on a parent marks the parent and
|
|
5185
|
+
every child `Inactive` (IO-166197). Re-enabling a child
|
|
5186
|
+
means re-enabling its ancestors in the same payload. Edits that keep
|
|
5187
|
+
existing rows must carry their stored status forward — rewriting a
|
|
5188
|
+
`Draft` or `Inactive` row to `Active` turns a row the user parked
|
|
5189
|
+
back on.
|
|
4780
5190
|
enum:
|
|
4781
5191
|
- Active
|
|
4782
5192
|
- Draft
|
|
5193
|
+
- Inactive
|
|
4783
5194
|
x-enumDescriptions:
|
|
4784
|
-
Active: The mapping is enabled and applied during processing
|
|
4785
|
-
Draft: In-progress mapping; saved without the Active-only field validations
|
|
5195
|
+
Active: The mapping is enabled and applied during processing
|
|
5196
|
+
Draft: In-progress mapping; saved without the Active-only field validations and skipped at runtime
|
|
5197
|
+
Inactive: Disabled by the user; configuration kept, skipped at runtime and in preview
|
|
4786
5198
|
examples:
|
|
4787
5199
|
- Active
|
|
4788
5200
|
conditional:
|
|
@@ -4811,6 +5223,10 @@ components:
|
|
|
4811
5223
|
- `extract_not_empty`: Apply only when the extract field returns a value
|
|
4812
5224
|
Useful for conditional mapping based on input data availability
|
|
4813
5225
|
|
|
5226
|
+
- `fail_record_when_empty`: Fail the record when the extract field returns
|
|
5227
|
+
no value (the UI's "Cause record to fail" action when the source field
|
|
5228
|
+
has no value)
|
|
5229
|
+
|
|
4814
5230
|
**Example**
|
|
4815
5231
|
```json
|
|
4816
5232
|
{
|
|
@@ -4823,28 +5239,75 @@ components:
|
|
|
4823
5239
|
}
|
|
4824
5240
|
}
|
|
4825
5241
|
```
|
|
5242
|
+
x-celigo-ai-guidance:
|
|
5243
|
+
- |-
|
|
5244
|
+
`when` holds one value, and two different settings share it: the
|
|
5245
|
+
composite-import operation gate (`record_created` / `record_updated`,
|
|
5246
|
+
the UI's "Only perform mapping when") and the empty-source action
|
|
5247
|
+
(`extract_not_empty` / `fail_record_when_empty`, the UI's "Action to
|
|
5248
|
+
take if source field has no value"). A row cannot carry both — writing
|
|
5249
|
+
one replaces the other and the save succeeds, so a composite import
|
|
5250
|
+
row that needs both has to choose. Never author `fail_record_when_empty`
|
|
5251
|
+
on a row that already carries `record_created` or `record_updated`.
|
|
4826
5252
|
properties:
|
|
4827
5253
|
when:
|
|
4828
5254
|
type: string
|
|
4829
5255
|
description: |
|
|
4830
|
-
|
|
4831
|
-
-
|
|
4832
|
-
|
|
4833
|
-
|
|
5256
|
+
Condition that gates this mapping — either an operation gate on a
|
|
5257
|
+
composite (create-or-update) import or the action to take when the
|
|
5258
|
+
extract returns no value. Empty means null, undefined or an empty
|
|
5259
|
+
string; `0`, `false` and whitespace are values.
|
|
5260
|
+
x-celigo-ai-guidance:
|
|
5261
|
+
- |-
|
|
5262
|
+
`fail_record_when_empty` is the fourth "Action to take if source field
|
|
5263
|
+
has no value" and is mutually exclusive with the other three: send it
|
|
5264
|
+
with no `default` key. A `default`, a `lookupName` or a `hardCodedValue`
|
|
5265
|
+
on the same row — or a `default` on a `buildArrayHelper` entry — is
|
|
5266
|
+
rejected at save with `[unsupported_mapping] "<key>" and conditional.when
|
|
5267
|
+
"fail_record_when_empty" cannot be present in mapping simultaneously.`
|
|
5268
|
+
(the lookup variant adds `Use lookup "allowFailures" instead.`);
|
|
5269
|
+
lookups fail through `allowFailures: false`, and a hard-coded row
|
|
5270
|
+
always has a value. At runtime an empty extract fails the record with
|
|
5271
|
+
an `errors[]` entry `{code: "extract_empty", fatal: true, source:
|
|
5272
|
+
"mapping", message: "<generate>: Source field has no value"}`
|
|
5273
|
+
("Input field has no value" in a Transformation 2.0); `0` and `false`
|
|
5274
|
+
are values and map through.
|
|
4834
5275
|
enum:
|
|
4835
5276
|
- record_created
|
|
4836
5277
|
- record_updated
|
|
4837
5278
|
- extract_not_empty
|
|
5279
|
+
- fail_record_when_empty
|
|
4838
5280
|
x-enumDescriptions:
|
|
4839
|
-
record_created: Apply this mapping only when creating a new record
|
|
4840
|
-
record_updated: Apply this mapping only when updating an existing record
|
|
4841
|
-
extract_not_empty: Apply this mapping only when the extract field returns a non-empty value
|
|
5281
|
+
record_created: Apply this mapping only when creating a new record
|
|
5282
|
+
record_updated: Apply this mapping only when updating an existing record
|
|
5283
|
+
extract_not_empty: Apply this mapping only when the extract field returns a non-empty value
|
|
5284
|
+
fail_record_when_empty: Fail the record when the extract field returns no value
|
|
4842
5285
|
examples:
|
|
4843
5286
|
- record_created
|
|
4844
5287
|
- record_updated
|
|
4845
5288
|
- extract_not_empty
|
|
5289
|
+
- fail_record_when_empty
|
|
4846
5290
|
required:
|
|
4847
5291
|
- dataType
|
|
5292
|
+
if:
|
|
5293
|
+
properties:
|
|
5294
|
+
conditional:
|
|
5295
|
+
properties:
|
|
5296
|
+
when:
|
|
5297
|
+
const: fail_record_when_empty
|
|
5298
|
+
required:
|
|
5299
|
+
- when
|
|
5300
|
+
required:
|
|
5301
|
+
- conditional
|
|
5302
|
+
then:
|
|
5303
|
+
not:
|
|
5304
|
+
anyOf:
|
|
5305
|
+
- required:
|
|
5306
|
+
- default
|
|
5307
|
+
- required:
|
|
5308
|
+
- lookupName
|
|
5309
|
+
- required:
|
|
5310
|
+
- hardCodedValue
|
|
4848
5311
|
Lookups:
|
|
4849
5312
|
type: array
|
|
4850
5313
|
description: |
|
|
@@ -5621,6 +6084,20 @@ components:
|
|
|
5621
6084
|
("requires at least one double stash expression"), and an unbalanced `{{record.id`
|
|
5622
6085
|
fails with 422 "Failed to compile handlebars template". An empty string clears the
|
|
5623
6086
|
field.
|
|
6087
|
+
debugUntil:
|
|
6088
|
+
type: string
|
|
6089
|
+
format: date-time
|
|
6090
|
+
description: |-
|
|
6091
|
+
Turns on debug capture for the Tool Input stage until this time: while it lies in
|
|
6092
|
+
the future, every record entering the tool is written to
|
|
6093
|
+
`GET /v1/tools/{_id}/tool_input/requests` with its input-schema outcome, in every
|
|
6094
|
+
execution context (standalone invoke, AI agent or MCP caller, flow or API). At
|
|
6095
|
+
most 3600 seconds ahead — a later value is rejected with `422` `update_not_allowed`
|
|
6096
|
+
and nothing is saved. Written by PUT or by `PATCH /v1/tools/{_id}` on
|
|
6097
|
+
`/input/debugUntil`; `remove` (or a past time) stops capture. Capture is not
|
|
6098
|
+
retroactive and does not change record retention.
|
|
6099
|
+
examples:
|
|
6100
|
+
- '2026-08-25T12:30:00.000Z'
|
|
5624
6101
|
mockInput:
|
|
5625
6102
|
type: object
|
|
5626
6103
|
description: |
|
|
@@ -5793,6 +6270,20 @@ components:
|
|
|
5793
6270
|
examples:
|
|
5794
6271
|
- postProcessOutput
|
|
5795
6272
|
- validateOutput
|
|
6273
|
+
debugUntil:
|
|
6274
|
+
type: string
|
|
6275
|
+
format: date-time
|
|
6276
|
+
description: |-
|
|
6277
|
+
Turns on debug capture for the Tool Output stage until this time: while it lies in
|
|
6278
|
+
the future, every post-mapped record is written to
|
|
6279
|
+
`GET /v1/tools/{_id}/tool_output/requests` with its output-schema outcome, in every
|
|
6280
|
+
execution context (standalone invoke, AI agent or MCP caller, flow or API). At
|
|
6281
|
+
most 3600 seconds ahead — a later value is rejected with `422` `update_not_allowed`
|
|
6282
|
+
and nothing is saved. Written by PUT or by `PATCH /v1/tools/{_id}` on
|
|
6283
|
+
`/output/debugUntil`; `remove` (or a past time) stops capture. Capture is not
|
|
6284
|
+
retroactive and does not change record retention.
|
|
6285
|
+
examples:
|
|
6286
|
+
- '2026-08-25T12:30:00.000Z'
|
|
5796
6287
|
mockInput:
|
|
5797
6288
|
type: object
|
|
5798
6289
|
description: |
|
|
@@ -24585,7 +25076,13 @@ components:
|
|
|
24585
25076
|
type: string
|
|
24586
25077
|
format: date-time
|
|
24587
25078
|
readOnly: true
|
|
24588
|
-
description:
|
|
25079
|
+
description: |-
|
|
25080
|
+
Turns on step debug capture until this time: while it lies in the future, every
|
|
25081
|
+
request this import sends — or, for a `ToolImport`, every record passing through
|
|
25082
|
+
it with the tool's output — is recorded in the step's debug log
|
|
25083
|
+
(`GET /v1/{flows|apis|tools}/{containerId}/{_id}/requests`). Read-only on PUT —
|
|
25084
|
+
written only by `PATCH /v1/imports/{_id}` on `/debugUntil`, at most 3600 seconds
|
|
25085
|
+
ahead (`422` `update_not_allowed` beyond that); `remove` stops capture.
|
|
24589
25086
|
GroupBy:
|
|
24590
25087
|
type: array
|
|
24591
25088
|
description: |
|
|
@@ -36426,7 +36923,12 @@ components:
|
|
|
36426
36923
|
type: string
|
|
36427
36924
|
format: date-time
|
|
36428
36925
|
readOnly: true
|
|
36429
|
-
description:
|
|
36926
|
+
description: |-
|
|
36927
|
+
Turns on step debug capture until this time: while it lies in the future, every
|
|
36928
|
+
request this export sends is recorded in the step's debug log
|
|
36929
|
+
(`GET /v1/{flows|apis|tools}/{containerId}/{_id}/requests`). Read-only on PUT —
|
|
36930
|
+
written only by `PATCH /v1/exports/{_id}` on `/debugUntil`, at most 3600 seconds
|
|
36931
|
+
ahead (`422` `update_not_allowed` beyond that); `remove` stops capture.
|
|
36430
36932
|
ClonePreviewResponse:
|
|
36431
36933
|
type: object
|
|
36432
36934
|
description: |
|