@celigo/api-specs 0.2.151 → 0.2.153
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 +58 -11
- package/dist/asynchelper.yml +58 -11
- package/dist/export.yml +71 -16
- package/dist/guardrail.yml +1 -1
- package/dist/import.yml +91 -23
- package/dist/tool.yml +93 -23
- package/package.json +1 -1
- package/schemas.json +1 -1
package/dist/ai-agent.yml
CHANGED
|
@@ -2410,6 +2410,12 @@ components:
|
|
|
2410
2410
|
- Examples: '$.customer.firstName', '$.items[0].price', '$.addresses[*].street',
|
|
2411
2411
|
'$[*].Tax' (every row of a grouped record)
|
|
2412
2412
|
- Wildcards like [*] extract multiple values/objects
|
|
2413
|
+
- A key that contains a dot needs bracket notation: `$['P.O. Number']` (or
|
|
2414
|
+
`$["P.O. Number"]`, `$.[P.O. Number]`). `$.P.O. Number` is read as a nested
|
|
2415
|
+
path: it maps nothing and the record still succeeds. Spaces, hyphens and `#`
|
|
2416
|
+
need no brackets (`$.Ship To Name`, `$.Tracking #`)
|
|
2417
|
+
- Filter expressions such as `$.items[?(@.active)]` fail the record with
|
|
2418
|
+
"Eval [?(expr)] prevented in JSONPath expression."
|
|
2413
2419
|
|
|
2414
2420
|
```json
|
|
2415
2421
|
"extract": "$.customer.addresses[*]" // Extracts all addresses
|
|
@@ -2598,6 +2604,12 @@ components:
|
|
|
2598
2604
|
**Usage**
|
|
2599
2605
|
|
|
2600
2606
|
The lookupName refers to a named lookup defined in the lookups array of the same resource.
|
|
2607
|
+
On an HTTP import that is `http.lookups`: a `lookups` array sent only at the top level
|
|
2608
|
+
is dropped on save. On an import, a name that matches no lookup fails every record
|
|
2609
|
+
with "Unable to find lookup in mapping configs - <name>", and a key the lookup
|
|
2610
|
+
doesn't hold follows the lookup's `allowFailures`: false fails the record; true, or
|
|
2611
|
+
the field left out, lets the record succeed with the lookup's `default`, or without
|
|
2612
|
+
the mapped field when there is none.
|
|
2601
2613
|
|
|
2602
2614
|
```json
|
|
2603
2615
|
{
|
|
@@ -2935,6 +2947,11 @@ components:
|
|
|
2935
2947
|
The system creates special composite objects during processing to maintain
|
|
2936
2948
|
hierarchical relationships, allowing easy access to both the current array item
|
|
2937
2949
|
and its parent contexts.
|
|
2950
|
+
|
|
2951
|
+
An iterating entry keeps the `[*]`: `$.line_items` without it yields one empty
|
|
2952
|
+
element per item, with no error. Child extracts drop the `[*]` but keep the
|
|
2953
|
+
array's path (`$.line_items.sku`); `$.line_items[*].sku` maps nothing, and an
|
|
2954
|
+
element-relative `$.sku` reads the record root instead of the element.
|
|
2938
2955
|
examples:
|
|
2939
2956
|
- $.items[*]
|
|
2940
2957
|
- $.order.lineItems[*]
|
|
@@ -3146,14 +3163,17 @@ components:
|
|
|
3146
3163
|
type: string
|
|
3147
3164
|
description: |
|
|
3148
3165
|
**Purpose**
|
|
3149
|
-
|
|
3166
|
+
Controls whether the mapping is applied. Send it on every mapping entry.
|
|
3150
3167
|
|
|
3151
3168
|
**Guidance**
|
|
3152
3169
|
Only `Active` rows run. `Draft` and `Inactive` rows keep their
|
|
3153
3170
|
configuration, are saved with minimal validation, and are skipped at
|
|
3154
3171
|
runtime and in preview; a non-Active parent skips its whole subtree
|
|
3155
|
-
whatever its children say.
|
|
3156
|
-
|
|
3172
|
+
whatever its children say. Imports (on save and in the mapper processor)
|
|
3173
|
+
and API response mappings reject a row missing this field (validation
|
|
3174
|
+
error: "Mapping object must have status field present."); a Tool's
|
|
3175
|
+
output mapping saves and runs one, which is why `required` doesn't
|
|
3176
|
+
list it.
|
|
3157
3177
|
x-celigo-ai-guidance:
|
|
3158
3178
|
- |-
|
|
3159
3179
|
Emit `"Active"` for mappings that should run; `"Draft"` is also
|
|
@@ -3476,6 +3496,12 @@ components:
|
|
|
3476
3496
|
- Examples: '$.customer.firstName', '$.items[0].price', '$.addresses[*].street',
|
|
3477
3497
|
'$[*].Tax' (every row of a grouped record)
|
|
3478
3498
|
- Wildcards like [*] extract multiple values/objects
|
|
3499
|
+
- A key that contains a dot needs bracket notation: `$['P.O. Number']` (or
|
|
3500
|
+
`$["P.O. Number"]`, `$.[P.O. Number]`). `$.P.O. Number` is read as a nested
|
|
3501
|
+
path: it maps nothing and the record still succeeds. Spaces, hyphens and `#`
|
|
3502
|
+
need no brackets (`$.Ship To Name`, `$.Tracking #`)
|
|
3503
|
+
- Filter expressions such as `$.items[?(@.active)]` fail the record with
|
|
3504
|
+
"Eval [?(expr)] prevented in JSONPath expression."
|
|
3479
3505
|
|
|
3480
3506
|
```json
|
|
3481
3507
|
"extract": "$.customer.addresses[*]" // Extracts all addresses
|
|
@@ -3664,6 +3690,12 @@ components:
|
|
|
3664
3690
|
**Usage**
|
|
3665
3691
|
|
|
3666
3692
|
The lookupName refers to a named lookup defined in the lookups array of the same resource.
|
|
3693
|
+
On an HTTP import that is `http.lookups`: a `lookups` array sent only at the top level
|
|
3694
|
+
is dropped on save. On an import, a name that matches no lookup fails every record
|
|
3695
|
+
with "Unable to find lookup in mapping configs - <name>", and a key the lookup
|
|
3696
|
+
doesn't hold follows the lookup's `allowFailures`: false fails the record; true, or
|
|
3697
|
+
the field left out, lets the record succeed with the lookup's `default`, or without
|
|
3698
|
+
the mapped field when there is none.
|
|
3667
3699
|
|
|
3668
3700
|
```json
|
|
3669
3701
|
{
|
|
@@ -4001,6 +4033,11 @@ components:
|
|
|
4001
4033
|
The system creates special composite objects during processing to maintain
|
|
4002
4034
|
hierarchical relationships, allowing easy access to both the current array item
|
|
4003
4035
|
and its parent contexts.
|
|
4036
|
+
|
|
4037
|
+
An iterating entry keeps the `[*]`: `$.line_items` without it yields one empty
|
|
4038
|
+
element per item, with no error. Child extracts drop the `[*]` but keep the
|
|
4039
|
+
array's path (`$.line_items.sku`); `$.line_items[*].sku` maps nothing, and an
|
|
4040
|
+
element-relative `$.sku` reads the record root instead of the element.
|
|
4004
4041
|
examples:
|
|
4005
4042
|
- $.items[*]
|
|
4006
4043
|
- $.order.lineItems[*]
|
|
@@ -4212,14 +4249,17 @@ components:
|
|
|
4212
4249
|
type: string
|
|
4213
4250
|
description: |
|
|
4214
4251
|
**Purpose**
|
|
4215
|
-
|
|
4252
|
+
Controls whether the mapping is applied. Send it on every mapping entry.
|
|
4216
4253
|
|
|
4217
4254
|
**Guidance**
|
|
4218
4255
|
Only `Active` rows run. `Draft` and `Inactive` rows keep their
|
|
4219
4256
|
configuration, are saved with minimal validation, and are skipped at
|
|
4220
4257
|
runtime and in preview; a non-Active parent skips its whole subtree
|
|
4221
|
-
whatever its children say.
|
|
4222
|
-
|
|
4258
|
+
whatever its children say. Imports (on save and in the mapper processor)
|
|
4259
|
+
and API response mappings reject a row missing this field (validation
|
|
4260
|
+
error: "Mapping object must have status field present."); a Tool's
|
|
4261
|
+
output mapping saves and runs one, which is why `required` doesn't
|
|
4262
|
+
list it.
|
|
4223
4263
|
x-celigo-ai-guidance:
|
|
4224
4264
|
- |-
|
|
4225
4265
|
Emit `"Active"` for mappings that should run; `"Draft"` is also
|
|
@@ -5213,8 +5253,8 @@ components:
|
|
|
5213
5253
|
- Original value indicators: "{Original Value}", "No mapping found"
|
|
5214
5254
|
- Neutral values: "Other", "N/A", "Miscellaneous"
|
|
5215
5255
|
|
|
5216
|
-
If allowFailures is false
|
|
5217
|
-
|
|
5256
|
+
If allowFailures is false, a record whose value is unmapped fails and the default
|
|
5257
|
+
is ignored.
|
|
5218
5258
|
examples:
|
|
5219
5259
|
- Unknown
|
|
5220
5260
|
- Other
|
|
@@ -5235,7 +5275,11 @@ components:
|
|
|
5235
5275
|
This field determines how the system handles source values that don't exist in the map:
|
|
5236
5276
|
|
|
5237
5277
|
- true: Use the default value for missing mappings and continue processing
|
|
5238
|
-
- false: Treat missing mappings as errors, failing the record
|
|
5278
|
+
- false: Treat missing mappings as errors, failing the record (`lookup_error` for a
|
|
5279
|
+
static map, `lookupcache_evaluation_failed` for a lookup cache)
|
|
5280
|
+
- omitted or null: the record doesn't fail either. On an import a static lookup writes
|
|
5281
|
+
its default if it has one, and a static or cache lookup without one leaves the
|
|
5282
|
+
mapped field out of the output, with no error
|
|
5239
5283
|
|
|
5240
5284
|
**Recommendation**
|
|
5241
5285
|
|
|
@@ -5249,11 +5293,14 @@ components:
|
|
|
5249
5293
|
- All possible source values are known and controlled
|
|
5250
5294
|
- Missing mappings indicate serious data problems that should be addressed
|
|
5251
5295
|
|
|
5252
|
-
|
|
5253
|
-
|
|
5296
|
+
A default raises no error: records that miss go out with the default value and
|
|
5297
|
+
nothing reports them. Use true only when that fallback is acceptable at the
|
|
5298
|
+
destination, and set false explicitly when a missing value must stop the record.
|
|
5254
5299
|
examples:
|
|
5255
5300
|
- true
|
|
5256
5301
|
- false
|
|
5302
|
+
x-celigo-ai-guidance:
|
|
5303
|
+
- 'Never leave this field out to mean "fail on a miss": on an import, an omitted or null value lets a missing key through without an error (with the default, or without the mapped field when there is none). Only an explicit false fails the record.'
|
|
5257
5304
|
Transform:
|
|
5258
5305
|
type: object
|
|
5259
5306
|
description: |
|
package/dist/asynchelper.yml
CHANGED
|
@@ -619,6 +619,12 @@ components:
|
|
|
619
619
|
- Examples: '$.customer.firstName', '$.items[0].price', '$.addresses[*].street',
|
|
620
620
|
'$[*].Tax' (every row of a grouped record)
|
|
621
621
|
- Wildcards like [*] extract multiple values/objects
|
|
622
|
+
- A key that contains a dot needs bracket notation: `$['P.O. Number']` (or
|
|
623
|
+
`$["P.O. Number"]`, `$.[P.O. Number]`). `$.P.O. Number` is read as a nested
|
|
624
|
+
path: it maps nothing and the record still succeeds. Spaces, hyphens and `#`
|
|
625
|
+
need no brackets (`$.Ship To Name`, `$.Tracking #`)
|
|
626
|
+
- Filter expressions such as `$.items[?(@.active)]` fail the record with
|
|
627
|
+
"Eval [?(expr)] prevented in JSONPath expression."
|
|
622
628
|
|
|
623
629
|
```json
|
|
624
630
|
"extract": "$.customer.addresses[*]" // Extracts all addresses
|
|
@@ -807,6 +813,12 @@ components:
|
|
|
807
813
|
**Usage**
|
|
808
814
|
|
|
809
815
|
The lookupName refers to a named lookup defined in the lookups array of the same resource.
|
|
816
|
+
On an HTTP import that is `http.lookups`: a `lookups` array sent only at the top level
|
|
817
|
+
is dropped on save. On an import, a name that matches no lookup fails every record
|
|
818
|
+
with "Unable to find lookup in mapping configs - <name>", and a key the lookup
|
|
819
|
+
doesn't hold follows the lookup's `allowFailures`: false fails the record; true, or
|
|
820
|
+
the field left out, lets the record succeed with the lookup's `default`, or without
|
|
821
|
+
the mapped field when there is none.
|
|
810
822
|
|
|
811
823
|
```json
|
|
812
824
|
{
|
|
@@ -1144,6 +1156,11 @@ components:
|
|
|
1144
1156
|
The system creates special composite objects during processing to maintain
|
|
1145
1157
|
hierarchical relationships, allowing easy access to both the current array item
|
|
1146
1158
|
and its parent contexts.
|
|
1159
|
+
|
|
1160
|
+
An iterating entry keeps the `[*]`: `$.line_items` without it yields one empty
|
|
1161
|
+
element per item, with no error. Child extracts drop the `[*]` but keep the
|
|
1162
|
+
array's path (`$.line_items.sku`); `$.line_items[*].sku` maps nothing, and an
|
|
1163
|
+
element-relative `$.sku` reads the record root instead of the element.
|
|
1147
1164
|
examples:
|
|
1148
1165
|
- $.items[*]
|
|
1149
1166
|
- $.order.lineItems[*]
|
|
@@ -1355,14 +1372,17 @@ components:
|
|
|
1355
1372
|
type: string
|
|
1356
1373
|
description: |
|
|
1357
1374
|
**Purpose**
|
|
1358
|
-
|
|
1375
|
+
Controls whether the mapping is applied. Send it on every mapping entry.
|
|
1359
1376
|
|
|
1360
1377
|
**Guidance**
|
|
1361
1378
|
Only `Active` rows run. `Draft` and `Inactive` rows keep their
|
|
1362
1379
|
configuration, are saved with minimal validation, and are skipped at
|
|
1363
1380
|
runtime and in preview; a non-Active parent skips its whole subtree
|
|
1364
|
-
whatever its children say.
|
|
1365
|
-
|
|
1381
|
+
whatever its children say. Imports (on save and in the mapper processor)
|
|
1382
|
+
and API response mappings reject a row missing this field (validation
|
|
1383
|
+
error: "Mapping object must have status field present."); a Tool's
|
|
1384
|
+
output mapping saves and runs one, which is why `required` doesn't
|
|
1385
|
+
list it.
|
|
1366
1386
|
x-celigo-ai-guidance:
|
|
1367
1387
|
- |-
|
|
1368
1388
|
Emit `"Active"` for mappings that should run; `"Draft"` is also
|
|
@@ -1685,6 +1705,12 @@ components:
|
|
|
1685
1705
|
- Examples: '$.customer.firstName', '$.items[0].price', '$.addresses[*].street',
|
|
1686
1706
|
'$[*].Tax' (every row of a grouped record)
|
|
1687
1707
|
- Wildcards like [*] extract multiple values/objects
|
|
1708
|
+
- A key that contains a dot needs bracket notation: `$['P.O. Number']` (or
|
|
1709
|
+
`$["P.O. Number"]`, `$.[P.O. Number]`). `$.P.O. Number` is read as a nested
|
|
1710
|
+
path: it maps nothing and the record still succeeds. Spaces, hyphens and `#`
|
|
1711
|
+
need no brackets (`$.Ship To Name`, `$.Tracking #`)
|
|
1712
|
+
- Filter expressions such as `$.items[?(@.active)]` fail the record with
|
|
1713
|
+
"Eval [?(expr)] prevented in JSONPath expression."
|
|
1688
1714
|
|
|
1689
1715
|
```json
|
|
1690
1716
|
"extract": "$.customer.addresses[*]" // Extracts all addresses
|
|
@@ -1873,6 +1899,12 @@ components:
|
|
|
1873
1899
|
**Usage**
|
|
1874
1900
|
|
|
1875
1901
|
The lookupName refers to a named lookup defined in the lookups array of the same resource.
|
|
1902
|
+
On an HTTP import that is `http.lookups`: a `lookups` array sent only at the top level
|
|
1903
|
+
is dropped on save. On an import, a name that matches no lookup fails every record
|
|
1904
|
+
with "Unable to find lookup in mapping configs - <name>", and a key the lookup
|
|
1905
|
+
doesn't hold follows the lookup's `allowFailures`: false fails the record; true, or
|
|
1906
|
+
the field left out, lets the record succeed with the lookup's `default`, or without
|
|
1907
|
+
the mapped field when there is none.
|
|
1876
1908
|
|
|
1877
1909
|
```json
|
|
1878
1910
|
{
|
|
@@ -2210,6 +2242,11 @@ components:
|
|
|
2210
2242
|
The system creates special composite objects during processing to maintain
|
|
2211
2243
|
hierarchical relationships, allowing easy access to both the current array item
|
|
2212
2244
|
and its parent contexts.
|
|
2245
|
+
|
|
2246
|
+
An iterating entry keeps the `[*]`: `$.line_items` without it yields one empty
|
|
2247
|
+
element per item, with no error. Child extracts drop the `[*]` but keep the
|
|
2248
|
+
array's path (`$.line_items.sku`); `$.line_items[*].sku` maps nothing, and an
|
|
2249
|
+
element-relative `$.sku` reads the record root instead of the element.
|
|
2213
2250
|
examples:
|
|
2214
2251
|
- $.items[*]
|
|
2215
2252
|
- $.order.lineItems[*]
|
|
@@ -2421,14 +2458,17 @@ components:
|
|
|
2421
2458
|
type: string
|
|
2422
2459
|
description: |
|
|
2423
2460
|
**Purpose**
|
|
2424
|
-
|
|
2461
|
+
Controls whether the mapping is applied. Send it on every mapping entry.
|
|
2425
2462
|
|
|
2426
2463
|
**Guidance**
|
|
2427
2464
|
Only `Active` rows run. `Draft` and `Inactive` rows keep their
|
|
2428
2465
|
configuration, are saved with minimal validation, and are skipped at
|
|
2429
2466
|
runtime and in preview; a non-Active parent skips its whole subtree
|
|
2430
|
-
whatever its children say.
|
|
2431
|
-
|
|
2467
|
+
whatever its children say. Imports (on save and in the mapper processor)
|
|
2468
|
+
and API response mappings reject a row missing this field (validation
|
|
2469
|
+
error: "Mapping object must have status field present."); a Tool's
|
|
2470
|
+
output mapping saves and runs one, which is why `required` doesn't
|
|
2471
|
+
list it.
|
|
2432
2472
|
x-celigo-ai-guidance:
|
|
2433
2473
|
- |-
|
|
2434
2474
|
Emit `"Active"` for mappings that should run; `"Draft"` is also
|
|
@@ -2799,8 +2839,8 @@ components:
|
|
|
2799
2839
|
- Original value indicators: "{Original Value}", "No mapping found"
|
|
2800
2840
|
- Neutral values: "Other", "N/A", "Miscellaneous"
|
|
2801
2841
|
|
|
2802
|
-
If allowFailures is false
|
|
2803
|
-
|
|
2842
|
+
If allowFailures is false, a record whose value is unmapped fails and the default
|
|
2843
|
+
is ignored.
|
|
2804
2844
|
examples:
|
|
2805
2845
|
- Unknown
|
|
2806
2846
|
- Other
|
|
@@ -2821,7 +2861,11 @@ components:
|
|
|
2821
2861
|
This field determines how the system handles source values that don't exist in the map:
|
|
2822
2862
|
|
|
2823
2863
|
- true: Use the default value for missing mappings and continue processing
|
|
2824
|
-
- false: Treat missing mappings as errors, failing the record
|
|
2864
|
+
- false: Treat missing mappings as errors, failing the record (`lookup_error` for a
|
|
2865
|
+
static map, `lookupcache_evaluation_failed` for a lookup cache)
|
|
2866
|
+
- omitted or null: the record doesn't fail either. On an import a static lookup writes
|
|
2867
|
+
its default if it has one, and a static or cache lookup without one leaves the
|
|
2868
|
+
mapped field out of the output, with no error
|
|
2825
2869
|
|
|
2826
2870
|
**Recommendation**
|
|
2827
2871
|
|
|
@@ -2835,11 +2879,14 @@ components:
|
|
|
2835
2879
|
- All possible source values are known and controlled
|
|
2836
2880
|
- Missing mappings indicate serious data problems that should be addressed
|
|
2837
2881
|
|
|
2838
|
-
|
|
2839
|
-
|
|
2882
|
+
A default raises no error: records that miss go out with the default value and
|
|
2883
|
+
nothing reports them. Use true only when that fallback is acceptable at the
|
|
2884
|
+
destination, and set false explicitly when a missing value must stop the record.
|
|
2840
2885
|
examples:
|
|
2841
2886
|
- true
|
|
2842
2887
|
- false
|
|
2888
|
+
x-celigo-ai-guidance:
|
|
2889
|
+
- 'Never leave this field out to mean "fail on a miss": on an import, an omitted or null value lets a missing key through without an error (with the default, or without the mapped field when there is none). Only an explicit false fails the record.'
|
|
2843
2890
|
Transform:
|
|
2844
2891
|
type: object
|
|
2845
2892
|
description: |
|
package/dist/export.yml
CHANGED
|
@@ -6615,6 +6615,8 @@ components:
|
|
|
6615
6615
|
Controls how the export requests subsequent pages when the API returns multi-page responses. The `method` field determines which companion fields are required and how each next page is requested. For the page, skip, and token methods, reference the matching pagination variable (`{{export.http.paging.page}}`, `{{export.http.paging.skip}}`, or `{{export.http.paging.token}}`) in the relative URI or request body — misconfigured pagination is a common cause of incomplete data retrieval.
|
|
6616
6616
|
|
|
6617
6617
|
When this export is the first lookup of a builder-mode API with `pagination.enabled` set, it is that API's volume driver: saving the export (even unchanged) invalidates the API's issued cursors, so a caller mid-walk gets an empty final page, and removing `paging` is accepted on save but makes every call to the API fail with `400 api_pagination_source_not_paged` until paging is restored or the API's flag is turned off.
|
|
6618
|
+
|
|
6619
|
+
When a next page's response is identical to the previous one, paging stops: the export records an open error with code `page_response_error` ("Identical response received from next page request. No more page requests will be made.") and the run completes with the pages already read, so later pages are never exported. A request that doesn't change between pages produces this, as observed with `method: page` and the pagination variable missing from the relative URI and body; reference the variable so each request asks for the next page.
|
|
6618
6620
|
x-celigo-ai-guidance:
|
|
6619
6621
|
- Configuration object for navigating through multi-page API responses.
|
|
6620
6622
|
- |-
|
|
@@ -12516,6 +12518,12 @@ components:
|
|
|
12516
12518
|
- Examples: '$.customer.firstName', '$.items[0].price', '$.addresses[*].street',
|
|
12517
12519
|
'$[*].Tax' (every row of a grouped record)
|
|
12518
12520
|
- Wildcards like [*] extract multiple values/objects
|
|
12521
|
+
- A key that contains a dot needs bracket notation: `$['P.O. Number']` (or
|
|
12522
|
+
`$["P.O. Number"]`, `$.[P.O. Number]`). `$.P.O. Number` is read as a nested
|
|
12523
|
+
path: it maps nothing and the record still succeeds. Spaces, hyphens and `#`
|
|
12524
|
+
need no brackets (`$.Ship To Name`, `$.Tracking #`)
|
|
12525
|
+
- Filter expressions such as `$.items[?(@.active)]` fail the record with
|
|
12526
|
+
"Eval [?(expr)] prevented in JSONPath expression."
|
|
12519
12527
|
|
|
12520
12528
|
```json
|
|
12521
12529
|
"extract": "$.customer.addresses[*]" // Extracts all addresses
|
|
@@ -12704,6 +12712,12 @@ components:
|
|
|
12704
12712
|
**Usage**
|
|
12705
12713
|
|
|
12706
12714
|
The lookupName refers to a named lookup defined in the lookups array of the same resource.
|
|
12715
|
+
On an HTTP import that is `http.lookups`: a `lookups` array sent only at the top level
|
|
12716
|
+
is dropped on save. On an import, a name that matches no lookup fails every record
|
|
12717
|
+
with "Unable to find lookup in mapping configs - <name>", and a key the lookup
|
|
12718
|
+
doesn't hold follows the lookup's `allowFailures`: false fails the record; true, or
|
|
12719
|
+
the field left out, lets the record succeed with the lookup's `default`, or without
|
|
12720
|
+
the mapped field when there is none.
|
|
12707
12721
|
|
|
12708
12722
|
```json
|
|
12709
12723
|
{
|
|
@@ -13041,6 +13055,11 @@ components:
|
|
|
13041
13055
|
The system creates special composite objects during processing to maintain
|
|
13042
13056
|
hierarchical relationships, allowing easy access to both the current array item
|
|
13043
13057
|
and its parent contexts.
|
|
13058
|
+
|
|
13059
|
+
An iterating entry keeps the `[*]`: `$.line_items` without it yields one empty
|
|
13060
|
+
element per item, with no error. Child extracts drop the `[*]` but keep the
|
|
13061
|
+
array's path (`$.line_items.sku`); `$.line_items[*].sku` maps nothing, and an
|
|
13062
|
+
element-relative `$.sku` reads the record root instead of the element.
|
|
13044
13063
|
examples:
|
|
13045
13064
|
- $.items[*]
|
|
13046
13065
|
- $.order.lineItems[*]
|
|
@@ -13252,14 +13271,17 @@ components:
|
|
|
13252
13271
|
type: string
|
|
13253
13272
|
description: |
|
|
13254
13273
|
**Purpose**
|
|
13255
|
-
|
|
13274
|
+
Controls whether the mapping is applied. Send it on every mapping entry.
|
|
13256
13275
|
|
|
13257
13276
|
**Guidance**
|
|
13258
13277
|
Only `Active` rows run. `Draft` and `Inactive` rows keep their
|
|
13259
13278
|
configuration, are saved with minimal validation, and are skipped at
|
|
13260
13279
|
runtime and in preview; a non-Active parent skips its whole subtree
|
|
13261
|
-
whatever its children say.
|
|
13262
|
-
|
|
13280
|
+
whatever its children say. Imports (on save and in the mapper processor)
|
|
13281
|
+
and API response mappings reject a row missing this field (validation
|
|
13282
|
+
error: "Mapping object must have status field present."); a Tool's
|
|
13283
|
+
output mapping saves and runs one, which is why `required` doesn't
|
|
13284
|
+
list it.
|
|
13263
13285
|
x-celigo-ai-guidance:
|
|
13264
13286
|
- |-
|
|
13265
13287
|
Emit `"Active"` for mappings that should run; `"Draft"` is also
|
|
@@ -13582,6 +13604,12 @@ components:
|
|
|
13582
13604
|
- Examples: '$.customer.firstName', '$.items[0].price', '$.addresses[*].street',
|
|
13583
13605
|
'$[*].Tax' (every row of a grouped record)
|
|
13584
13606
|
- Wildcards like [*] extract multiple values/objects
|
|
13607
|
+
- A key that contains a dot needs bracket notation: `$['P.O. Number']` (or
|
|
13608
|
+
`$["P.O. Number"]`, `$.[P.O. Number]`). `$.P.O. Number` is read as a nested
|
|
13609
|
+
path: it maps nothing and the record still succeeds. Spaces, hyphens and `#`
|
|
13610
|
+
need no brackets (`$.Ship To Name`, `$.Tracking #`)
|
|
13611
|
+
- Filter expressions such as `$.items[?(@.active)]` fail the record with
|
|
13612
|
+
"Eval [?(expr)] prevented in JSONPath expression."
|
|
13585
13613
|
|
|
13586
13614
|
```json
|
|
13587
13615
|
"extract": "$.customer.addresses[*]" // Extracts all addresses
|
|
@@ -13770,6 +13798,12 @@ components:
|
|
|
13770
13798
|
**Usage**
|
|
13771
13799
|
|
|
13772
13800
|
The lookupName refers to a named lookup defined in the lookups array of the same resource.
|
|
13801
|
+
On an HTTP import that is `http.lookups`: a `lookups` array sent only at the top level
|
|
13802
|
+
is dropped on save. On an import, a name that matches no lookup fails every record
|
|
13803
|
+
with "Unable to find lookup in mapping configs - <name>", and a key the lookup
|
|
13804
|
+
doesn't hold follows the lookup's `allowFailures`: false fails the record; true, or
|
|
13805
|
+
the field left out, lets the record succeed with the lookup's `default`, or without
|
|
13806
|
+
the mapped field when there is none.
|
|
13773
13807
|
|
|
13774
13808
|
```json
|
|
13775
13809
|
{
|
|
@@ -14107,6 +14141,11 @@ components:
|
|
|
14107
14141
|
The system creates special composite objects during processing to maintain
|
|
14108
14142
|
hierarchical relationships, allowing easy access to both the current array item
|
|
14109
14143
|
and its parent contexts.
|
|
14144
|
+
|
|
14145
|
+
An iterating entry keeps the `[*]`: `$.line_items` without it yields one empty
|
|
14146
|
+
element per item, with no error. Child extracts drop the `[*]` but keep the
|
|
14147
|
+
array's path (`$.line_items.sku`); `$.line_items[*].sku` maps nothing, and an
|
|
14148
|
+
element-relative `$.sku` reads the record root instead of the element.
|
|
14110
14149
|
examples:
|
|
14111
14150
|
- $.items[*]
|
|
14112
14151
|
- $.order.lineItems[*]
|
|
@@ -14318,14 +14357,17 @@ components:
|
|
|
14318
14357
|
type: string
|
|
14319
14358
|
description: |
|
|
14320
14359
|
**Purpose**
|
|
14321
|
-
|
|
14360
|
+
Controls whether the mapping is applied. Send it on every mapping entry.
|
|
14322
14361
|
|
|
14323
14362
|
**Guidance**
|
|
14324
14363
|
Only `Active` rows run. `Draft` and `Inactive` rows keep their
|
|
14325
14364
|
configuration, are saved with minimal validation, and are skipped at
|
|
14326
14365
|
runtime and in preview; a non-Active parent skips its whole subtree
|
|
14327
|
-
whatever its children say.
|
|
14328
|
-
|
|
14366
|
+
whatever its children say. Imports (on save and in the mapper processor)
|
|
14367
|
+
and API response mappings reject a row missing this field (validation
|
|
14368
|
+
error: "Mapping object must have status field present."); a Tool's
|
|
14369
|
+
output mapping saves and runs one, which is why `required` doesn't
|
|
14370
|
+
list it.
|
|
14329
14371
|
x-celigo-ai-guidance:
|
|
14330
14372
|
- |-
|
|
14331
14373
|
Emit `"Active"` for mappings that should run; `"Draft"` is also
|
|
@@ -14696,8 +14738,8 @@ components:
|
|
|
14696
14738
|
- Original value indicators: "{Original Value}", "No mapping found"
|
|
14697
14739
|
- Neutral values: "Other", "N/A", "Miscellaneous"
|
|
14698
14740
|
|
|
14699
|
-
If allowFailures is false
|
|
14700
|
-
|
|
14741
|
+
If allowFailures is false, a record whose value is unmapped fails and the default
|
|
14742
|
+
is ignored.
|
|
14701
14743
|
examples:
|
|
14702
14744
|
- Unknown
|
|
14703
14745
|
- Other
|
|
@@ -14718,7 +14760,11 @@ components:
|
|
|
14718
14760
|
This field determines how the system handles source values that don't exist in the map:
|
|
14719
14761
|
|
|
14720
14762
|
- true: Use the default value for missing mappings and continue processing
|
|
14721
|
-
- false: Treat missing mappings as errors, failing the record
|
|
14763
|
+
- false: Treat missing mappings as errors, failing the record (`lookup_error` for a
|
|
14764
|
+
static map, `lookupcache_evaluation_failed` for a lookup cache)
|
|
14765
|
+
- omitted or null: the record doesn't fail either. On an import a static lookup writes
|
|
14766
|
+
its default if it has one, and a static or cache lookup without one leaves the
|
|
14767
|
+
mapped field out of the output, with no error
|
|
14722
14768
|
|
|
14723
14769
|
**Recommendation**
|
|
14724
14770
|
|
|
@@ -14732,11 +14778,14 @@ components:
|
|
|
14732
14778
|
- All possible source values are known and controlled
|
|
14733
14779
|
- Missing mappings indicate serious data problems that should be addressed
|
|
14734
14780
|
|
|
14735
|
-
|
|
14736
|
-
|
|
14781
|
+
A default raises no error: records that miss go out with the default value and
|
|
14782
|
+
nothing reports them. Use true only when that fallback is acceptable at the
|
|
14783
|
+
destination, and set false explicitly when a missing value must stop the record.
|
|
14737
14784
|
examples:
|
|
14738
14785
|
- true
|
|
14739
14786
|
- false
|
|
14787
|
+
x-celigo-ai-guidance:
|
|
14788
|
+
- 'Never leave this field out to mean "fail on a miss": on an import, an omitted or null value lets a missing key through without an error (with the default, or without the mapped field when there is none). Only an explicit false fails the record.'
|
|
14740
14789
|
Transform:
|
|
14741
14790
|
type: object
|
|
14742
14791
|
description: |
|
|
@@ -17374,16 +17423,22 @@ components:
|
|
|
17374
17423
|
properties:
|
|
17375
17424
|
postData:
|
|
17376
17425
|
type: object
|
|
17377
|
-
description:
|
|
17426
|
+
description: |-
|
|
17427
|
+
Delta window for this preview. Without it, a document preview renders
|
|
17428
|
+
`{{lastExportDateTime}}` and `{{currentExportDateTime}}` as empty strings (observed on
|
|
17429
|
+
HTTP and RDBMS exports), so the preview doesn't reflect the export's delta window. On an
|
|
17430
|
+
HTTP export these strings are substituted exactly as given; other adaptors weren't
|
|
17431
|
+
checked. On an export without `delta.dateFormat`, a real run renders both as ISO 8601 UTC
|
|
17432
|
+
with milliseconds, so pass them in that form to preview the request such a run would send.
|
|
17378
17433
|
properties:
|
|
17379
17434
|
currentExportDateTime:
|
|
17380
17435
|
type: string
|
|
17381
|
-
description:
|
|
17382
|
-
example: '
|
|
17436
|
+
description: Value `{{currentExportDateTime}}` renders as in this preview (the window's end).
|
|
17437
|
+
example: '2026-01-16T00:00:00.000Z'
|
|
17383
17438
|
lastExportDateTime:
|
|
17384
17439
|
type: string
|
|
17385
|
-
description:
|
|
17386
|
-
example: '
|
|
17440
|
+
description: Value `{{lastExportDateTime}}` renders as in this preview (the window's start).
|
|
17441
|
+
example: '2026-01-15T00:00:00.000Z'
|
|
17387
17442
|
PreviewResponse:
|
|
17388
17443
|
type: object
|
|
17389
17444
|
description: Response body for export data preview
|
package/dist/guardrail.yml
CHANGED
|
@@ -1985,7 +1985,7 @@ components:
|
|
|
1985
1985
|
description: When true, the mapped value cannot be overwritten by later mapping steps.
|
|
1986
1986
|
lookupName:
|
|
1987
1987
|
type: string
|
|
1988
|
-
description: Name of an entry in the import's `lookups` array used to translate the value.
|
|
1988
|
+
description: Name of an entry in the import's `lookups` array (`http.lookups` on an HTTP import) used to translate the value.
|
|
1989
1989
|
x-celigo-ai-guidance:
|
|
1990
1990
|
- |-
|
|
1991
1991
|
Name of a lookup defined on ``resource.lookups`` whose result
|
package/dist/import.yml
CHANGED
|
@@ -2717,7 +2717,9 @@ components:
|
|
|
2717
2717
|
|
|
2718
2718
|
- **Field mappings** — a mapping entry sets
|
|
2719
2719
|
``lookupName: "<name>"`` to resolve a field's value through
|
|
2720
|
-
the lookup.
|
|
2720
|
+
the lookup. A ``lookupName`` that matches no entry in this
|
|
2721
|
+
array fails every record with ``Unable to find lookup in
|
|
2722
|
+
mapping configs - <name>``.
|
|
2721
2723
|
- **Handlebars expressions** — anywhere handlebars is
|
|
2722
2724
|
evaluated (relativeURI, headers, body), ``{{lookup "name"
|
|
2723
2725
|
value}}`` calls the lookup with ``value`` as input.
|
|
@@ -2731,9 +2733,13 @@ components:
|
|
|
2731
2733
|
## Mirror invariant
|
|
2732
2734
|
|
|
2733
2735
|
The Celigo platform persists lookups in TWO locations on an HTTP
|
|
2734
|
-
import: top-level ``lookups`` and ``http.lookups
|
|
2735
|
-
|
|
2736
|
-
|
|
2736
|
+
import: top-level ``lookups`` and ``http.lookups``, and
|
|
2737
|
+
``http.lookups`` is the copy that counts. A save keeps
|
|
2738
|
+
``http.lookups`` and mirrors it to the top level, overwriting a
|
|
2739
|
+
top-level copy that differs; a ``lookups`` array sent only at the
|
|
2740
|
+
top level is dropped with no error, on create and on PUT, and both
|
|
2741
|
+
arrays read back null. Write ``http.lookups`` on every save;
|
|
2742
|
+
sending the same array at the top level too is harmless.
|
|
2737
2743
|
- |-
|
|
2738
2744
|
## Static vs dynamic vs cached
|
|
2739
2745
|
|
|
@@ -2783,12 +2789,13 @@ components:
|
|
|
2783
2789
|
- handlebars
|
|
2784
2790
|
description: |
|
|
2785
2791
|
Request body template for POST / PUT / PATCH lookup methods, typically
|
|
2786
|
-
a JSON string with Handlebars placeholders (``{"email":"{{
|
|
2792
|
+
a JSON string with Handlebars placeholders (``{"email":"{{email}}"}``);
|
|
2787
2793
|
ignored for GET / DELETE. The record's fields sit at the top level:
|
|
2788
2794
|
``{{email}}`` renders the record's value, while ``{{record.email}}``
|
|
2789
2795
|
renders empty.
|
|
2790
2796
|
x-celigo-ai-guidance:
|
|
2791
2797
|
- 'Put the lookup''s request template here, not in ``postBody``: a ``postBody`` saves without an error but is not kept under ``http.lookups``, so the lookup goes out with no body and the run reports no error.'
|
|
2798
|
+
- 'Write string values with double braces inside the quotes (``"{{email}}"``): they are JSON-escaped at runtime. With triple braces a value holding a double quote breaks the request body, and the lookup quietly finds nothing, so an existence check writes the record as new.'
|
|
2792
2799
|
headers:
|
|
2793
2800
|
type: array
|
|
2794
2801
|
items:
|
|
@@ -2844,10 +2851,17 @@ components:
|
|
|
2844
2851
|
- boolean
|
|
2845
2852
|
- 'null'
|
|
2846
2853
|
description: |
|
|
2847
|
-
When true, a lookup miss (
|
|
2848
|
-
|
|
2849
|
-
|
|
2850
|
-
|
|
2854
|
+
When true, a lookup miss uses ``default`` (or leaves the mapped
|
|
2855
|
+
field out when there is none) and the record continues. When
|
|
2856
|
+
false, a miss fails the record: ``lookup_error`` ("Could not find
|
|
2857
|
+
value for static lookup: …") for a static ``map``,
|
|
2858
|
+
``lookupcache_evaluation_failed`` for a cache. Omitted or null,
|
|
2859
|
+
a miss doesn't fail the record either: a static lookup writes
|
|
2860
|
+
its ``default`` if it has one, and a lookup without one (static,
|
|
2861
|
+
cache, or a live request that matches nothing or fails) leaves
|
|
2862
|
+
the mapped field out.
|
|
2863
|
+
x-celigo-ai-guidance:
|
|
2864
|
+
- Set false explicitly when a miss must stop the record. Leaving the field out lets the record through with the default or without the looked-up value, so a destination that needs the real value gets a request without it and nothing errors.
|
|
2851
2865
|
useDefaultOnMultipleMatches:
|
|
2852
2866
|
type: boolean
|
|
2853
2867
|
description: |
|
|
@@ -5077,8 +5091,8 @@ components:
|
|
|
5077
5091
|
- Original value indicators: "{Original Value}", "No mapping found"
|
|
5078
5092
|
- Neutral values: "Other", "N/A", "Miscellaneous"
|
|
5079
5093
|
|
|
5080
|
-
If allowFailures is false
|
|
5081
|
-
|
|
5094
|
+
If allowFailures is false, a record whose value is unmapped fails and the default
|
|
5095
|
+
is ignored.
|
|
5082
5096
|
examples:
|
|
5083
5097
|
- Unknown
|
|
5084
5098
|
- Other
|
|
@@ -5099,7 +5113,11 @@ components:
|
|
|
5099
5113
|
This field determines how the system handles source values that don't exist in the map:
|
|
5100
5114
|
|
|
5101
5115
|
- true: Use the default value for missing mappings and continue processing
|
|
5102
|
-
- false: Treat missing mappings as errors, failing the record
|
|
5116
|
+
- false: Treat missing mappings as errors, failing the record (`lookup_error` for a
|
|
5117
|
+
static map, `lookupcache_evaluation_failed` for a lookup cache)
|
|
5118
|
+
- omitted or null: the record doesn't fail either. On an import a static lookup writes
|
|
5119
|
+
its default if it has one, and a static or cache lookup without one leaves the
|
|
5120
|
+
mapped field out of the output, with no error
|
|
5103
5121
|
|
|
5104
5122
|
**Recommendation**
|
|
5105
5123
|
|
|
@@ -5113,11 +5131,14 @@ components:
|
|
|
5113
5131
|
- All possible source values are known and controlled
|
|
5114
5132
|
- Missing mappings indicate serious data problems that should be addressed
|
|
5115
5133
|
|
|
5116
|
-
|
|
5117
|
-
|
|
5134
|
+
A default raises no error: records that miss go out with the default value and
|
|
5135
|
+
nothing reports them. Use true only when that fallback is acceptable at the
|
|
5136
|
+
destination, and set false explicitly when a missing value must stop the record.
|
|
5118
5137
|
examples:
|
|
5119
5138
|
- true
|
|
5120
5139
|
- false
|
|
5140
|
+
x-celigo-ai-guidance:
|
|
5141
|
+
- 'Never leave this field out to mean "fail on a miss": on an import, an omitted or null value lets a missing key through without an error (with the default, or without the mapped field when there is none). Only an explicit false fails the record.'
|
|
5121
5142
|
Rdbms:
|
|
5122
5143
|
type: object
|
|
5123
5144
|
description: |-
|
|
@@ -12661,6 +12682,12 @@ components:
|
|
|
12661
12682
|
- Examples: '$.customer.firstName', '$.items[0].price', '$.addresses[*].street',
|
|
12662
12683
|
'$[*].Tax' (every row of a grouped record)
|
|
12663
12684
|
- Wildcards like [*] extract multiple values/objects
|
|
12685
|
+
- A key that contains a dot needs bracket notation: `$['P.O. Number']` (or
|
|
12686
|
+
`$["P.O. Number"]`, `$.[P.O. Number]`). `$.P.O. Number` is read as a nested
|
|
12687
|
+
path: it maps nothing and the record still succeeds. Spaces, hyphens and `#`
|
|
12688
|
+
need no brackets (`$.Ship To Name`, `$.Tracking #`)
|
|
12689
|
+
- Filter expressions such as `$.items[?(@.active)]` fail the record with
|
|
12690
|
+
"Eval [?(expr)] prevented in JSONPath expression."
|
|
12664
12691
|
|
|
12665
12692
|
```json
|
|
12666
12693
|
"extract": "$.customer.addresses[*]" // Extracts all addresses
|
|
@@ -12849,6 +12876,12 @@ components:
|
|
|
12849
12876
|
**Usage**
|
|
12850
12877
|
|
|
12851
12878
|
The lookupName refers to a named lookup defined in the lookups array of the same resource.
|
|
12879
|
+
On an HTTP import that is `http.lookups`: a `lookups` array sent only at the top level
|
|
12880
|
+
is dropped on save. On an import, a name that matches no lookup fails every record
|
|
12881
|
+
with "Unable to find lookup in mapping configs - <name>", and a key the lookup
|
|
12882
|
+
doesn't hold follows the lookup's `allowFailures`: false fails the record; true, or
|
|
12883
|
+
the field left out, lets the record succeed with the lookup's `default`, or without
|
|
12884
|
+
the mapped field when there is none.
|
|
12852
12885
|
|
|
12853
12886
|
```json
|
|
12854
12887
|
{
|
|
@@ -13186,6 +13219,11 @@ components:
|
|
|
13186
13219
|
The system creates special composite objects during processing to maintain
|
|
13187
13220
|
hierarchical relationships, allowing easy access to both the current array item
|
|
13188
13221
|
and its parent contexts.
|
|
13222
|
+
|
|
13223
|
+
An iterating entry keeps the `[*]`: `$.line_items` without it yields one empty
|
|
13224
|
+
element per item, with no error. Child extracts drop the `[*]` but keep the
|
|
13225
|
+
array's path (`$.line_items.sku`); `$.line_items[*].sku` maps nothing, and an
|
|
13226
|
+
element-relative `$.sku` reads the record root instead of the element.
|
|
13189
13227
|
examples:
|
|
13190
13228
|
- $.items[*]
|
|
13191
13229
|
- $.order.lineItems[*]
|
|
@@ -13397,14 +13435,17 @@ components:
|
|
|
13397
13435
|
type: string
|
|
13398
13436
|
description: |
|
|
13399
13437
|
**Purpose**
|
|
13400
|
-
|
|
13438
|
+
Controls whether the mapping is applied. Send it on every mapping entry.
|
|
13401
13439
|
|
|
13402
13440
|
**Guidance**
|
|
13403
13441
|
Only `Active` rows run. `Draft` and `Inactive` rows keep their
|
|
13404
13442
|
configuration, are saved with minimal validation, and are skipped at
|
|
13405
13443
|
runtime and in preview; a non-Active parent skips its whole subtree
|
|
13406
|
-
whatever its children say.
|
|
13407
|
-
|
|
13444
|
+
whatever its children say. Imports (on save and in the mapper processor)
|
|
13445
|
+
and API response mappings reject a row missing this field (validation
|
|
13446
|
+
error: "Mapping object must have status field present."); a Tool's
|
|
13447
|
+
output mapping saves and runs one, which is why `required` doesn't
|
|
13448
|
+
list it.
|
|
13408
13449
|
x-celigo-ai-guidance:
|
|
13409
13450
|
- |-
|
|
13410
13451
|
Emit `"Active"` for mappings that should run; `"Draft"` is also
|
|
@@ -13727,6 +13768,12 @@ components:
|
|
|
13727
13768
|
- Examples: '$.customer.firstName', '$.items[0].price', '$.addresses[*].street',
|
|
13728
13769
|
'$[*].Tax' (every row of a grouped record)
|
|
13729
13770
|
- Wildcards like [*] extract multiple values/objects
|
|
13771
|
+
- A key that contains a dot needs bracket notation: `$['P.O. Number']` (or
|
|
13772
|
+
`$["P.O. Number"]`, `$.[P.O. Number]`). `$.P.O. Number` is read as a nested
|
|
13773
|
+
path: it maps nothing and the record still succeeds. Spaces, hyphens and `#`
|
|
13774
|
+
need no brackets (`$.Ship To Name`, `$.Tracking #`)
|
|
13775
|
+
- Filter expressions such as `$.items[?(@.active)]` fail the record with
|
|
13776
|
+
"Eval [?(expr)] prevented in JSONPath expression."
|
|
13730
13777
|
|
|
13731
13778
|
```json
|
|
13732
13779
|
"extract": "$.customer.addresses[*]" // Extracts all addresses
|
|
@@ -13915,6 +13962,12 @@ components:
|
|
|
13915
13962
|
**Usage**
|
|
13916
13963
|
|
|
13917
13964
|
The lookupName refers to a named lookup defined in the lookups array of the same resource.
|
|
13965
|
+
On an HTTP import that is `http.lookups`: a `lookups` array sent only at the top level
|
|
13966
|
+
is dropped on save. On an import, a name that matches no lookup fails every record
|
|
13967
|
+
with "Unable to find lookup in mapping configs - <name>", and a key the lookup
|
|
13968
|
+
doesn't hold follows the lookup's `allowFailures`: false fails the record; true, or
|
|
13969
|
+
the field left out, lets the record succeed with the lookup's `default`, or without
|
|
13970
|
+
the mapped field when there is none.
|
|
13918
13971
|
|
|
13919
13972
|
```json
|
|
13920
13973
|
{
|
|
@@ -14252,6 +14305,11 @@ components:
|
|
|
14252
14305
|
The system creates special composite objects during processing to maintain
|
|
14253
14306
|
hierarchical relationships, allowing easy access to both the current array item
|
|
14254
14307
|
and its parent contexts.
|
|
14308
|
+
|
|
14309
|
+
An iterating entry keeps the `[*]`: `$.line_items` without it yields one empty
|
|
14310
|
+
element per item, with no error. Child extracts drop the `[*]` but keep the
|
|
14311
|
+
array's path (`$.line_items.sku`); `$.line_items[*].sku` maps nothing, and an
|
|
14312
|
+
element-relative `$.sku` reads the record root instead of the element.
|
|
14255
14313
|
examples:
|
|
14256
14314
|
- $.items[*]
|
|
14257
14315
|
- $.order.lineItems[*]
|
|
@@ -14463,14 +14521,17 @@ components:
|
|
|
14463
14521
|
type: string
|
|
14464
14522
|
description: |
|
|
14465
14523
|
**Purpose**
|
|
14466
|
-
|
|
14524
|
+
Controls whether the mapping is applied. Send it on every mapping entry.
|
|
14467
14525
|
|
|
14468
14526
|
**Guidance**
|
|
14469
14527
|
Only `Active` rows run. `Draft` and `Inactive` rows keep their
|
|
14470
14528
|
configuration, are saved with minimal validation, and are skipped at
|
|
14471
14529
|
runtime and in preview; a non-Active parent skips its whole subtree
|
|
14472
|
-
whatever its children say.
|
|
14473
|
-
|
|
14530
|
+
whatever its children say. Imports (on save and in the mapper processor)
|
|
14531
|
+
and API response mappings reject a row missing this field (validation
|
|
14532
|
+
error: "Mapping object must have status field present."); a Tool's
|
|
14533
|
+
output mapping saves and runs one, which is why `required` doesn't
|
|
14534
|
+
list it.
|
|
14474
14535
|
x-celigo-ai-guidance:
|
|
14475
14536
|
- |-
|
|
14476
14537
|
Emit `"Active"` for mappings that should run; `"Draft"` is also
|
|
@@ -15140,7 +15201,7 @@ components:
|
|
|
15140
15201
|
description: When true, the mapped value cannot be overwritten by later mapping steps.
|
|
15141
15202
|
lookupName:
|
|
15142
15203
|
type: string
|
|
15143
|
-
description: Name of an entry in the import's `lookups` array used to translate the value.
|
|
15204
|
+
description: Name of an entry in the import's `lookups` array (`http.lookups` on an HTTP import) used to translate the value.
|
|
15144
15205
|
x-celigo-ai-guidance:
|
|
15145
15206
|
- |-
|
|
15146
15207
|
Name of a lookup defined on ``resource.lookups`` whose result
|
|
@@ -16592,8 +16653,9 @@ components:
|
|
|
16592
16653
|
|
|
16593
16654
|
Lookups referenced by ``lookupName`` live on the top-level
|
|
16594
16655
|
``resource.lookups`` array (mirrored under the adaptor key for
|
|
16595
|
-
adaptors that maintain their own copy
|
|
16596
|
-
|
|
16656
|
+
adaptors that maintain their own copy; on an HTTP import that
|
|
16657
|
+
copy, ``http.lookups``, is the one a save keeps — see the mirror
|
|
16658
|
+
invariant on ``lookups``). Lookups are independent of this
|
|
16597
16659
|
mapping: they are neither created nor cleared automatically when
|
|
16598
16660
|
this mapping changes.
|
|
16599
16661
|
properties:
|
|
@@ -16712,6 +16774,12 @@ components:
|
|
|
16712
16774
|
|
|
16713
16775
|
Both arrays MUST hold byte-for-byte identical content: write
|
|
16714
16776
|
both on every save and treat them as a single logical field.
|
|
16777
|
+
On an HTTP import the adaptor copy decides: a save keeps
|
|
16778
|
+
``http.lookups`` and mirrors it here, overwriting a copy here
|
|
16779
|
+
that differs, and an array sent only here is dropped on create
|
|
16780
|
+
and on PUT with no error. A mapping row that names one of its
|
|
16781
|
+
lookups then fails every record with ``Unable to find lookup in
|
|
16782
|
+
mapping configs - <name>``.
|
|
16715
16783
|
- |-
|
|
16716
16784
|
## Shape
|
|
16717
16785
|
|
package/dist/tool.yml
CHANGED
|
@@ -3638,6 +3638,12 @@ components:
|
|
|
3638
3638
|
- Examples: '$.customer.firstName', '$.items[0].price', '$.addresses[*].street',
|
|
3639
3639
|
'$[*].Tax' (every row of a grouped record)
|
|
3640
3640
|
- Wildcards like [*] extract multiple values/objects
|
|
3641
|
+
- A key that contains a dot needs bracket notation: `$['P.O. Number']` (or
|
|
3642
|
+
`$["P.O. Number"]`, `$.[P.O. Number]`). `$.P.O. Number` is read as a nested
|
|
3643
|
+
path: it maps nothing and the record still succeeds. Spaces, hyphens and `#`
|
|
3644
|
+
need no brackets (`$.Ship To Name`, `$.Tracking #`)
|
|
3645
|
+
- Filter expressions such as `$.items[?(@.active)]` fail the record with
|
|
3646
|
+
"Eval [?(expr)] prevented in JSONPath expression."
|
|
3641
3647
|
|
|
3642
3648
|
```json
|
|
3643
3649
|
"extract": "$.customer.addresses[*]" // Extracts all addresses
|
|
@@ -3826,6 +3832,12 @@ components:
|
|
|
3826
3832
|
**Usage**
|
|
3827
3833
|
|
|
3828
3834
|
The lookupName refers to a named lookup defined in the lookups array of the same resource.
|
|
3835
|
+
On an HTTP import that is `http.lookups`: a `lookups` array sent only at the top level
|
|
3836
|
+
is dropped on save. On an import, a name that matches no lookup fails every record
|
|
3837
|
+
with "Unable to find lookup in mapping configs - <name>", and a key the lookup
|
|
3838
|
+
doesn't hold follows the lookup's `allowFailures`: false fails the record; true, or
|
|
3839
|
+
the field left out, lets the record succeed with the lookup's `default`, or without
|
|
3840
|
+
the mapped field when there is none.
|
|
3829
3841
|
|
|
3830
3842
|
```json
|
|
3831
3843
|
{
|
|
@@ -4163,6 +4175,11 @@ components:
|
|
|
4163
4175
|
The system creates special composite objects during processing to maintain
|
|
4164
4176
|
hierarchical relationships, allowing easy access to both the current array item
|
|
4165
4177
|
and its parent contexts.
|
|
4178
|
+
|
|
4179
|
+
An iterating entry keeps the `[*]`: `$.line_items` without it yields one empty
|
|
4180
|
+
element per item, with no error. Child extracts drop the `[*]` but keep the
|
|
4181
|
+
array's path (`$.line_items.sku`); `$.line_items[*].sku` maps nothing, and an
|
|
4182
|
+
element-relative `$.sku` reads the record root instead of the element.
|
|
4166
4183
|
examples:
|
|
4167
4184
|
- $.items[*]
|
|
4168
4185
|
- $.order.lineItems[*]
|
|
@@ -4374,14 +4391,17 @@ components:
|
|
|
4374
4391
|
type: string
|
|
4375
4392
|
description: |
|
|
4376
4393
|
**Purpose**
|
|
4377
|
-
|
|
4394
|
+
Controls whether the mapping is applied. Send it on every mapping entry.
|
|
4378
4395
|
|
|
4379
4396
|
**Guidance**
|
|
4380
4397
|
Only `Active` rows run. `Draft` and `Inactive` rows keep their
|
|
4381
4398
|
configuration, are saved with minimal validation, and are skipped at
|
|
4382
4399
|
runtime and in preview; a non-Active parent skips its whole subtree
|
|
4383
|
-
whatever its children say.
|
|
4384
|
-
|
|
4400
|
+
whatever its children say. Imports (on save and in the mapper processor)
|
|
4401
|
+
and API response mappings reject a row missing this field (validation
|
|
4402
|
+
error: "Mapping object must have status field present."); a Tool's
|
|
4403
|
+
output mapping saves and runs one, which is why `required` doesn't
|
|
4404
|
+
list it.
|
|
4385
4405
|
x-celigo-ai-guidance:
|
|
4386
4406
|
- |-
|
|
4387
4407
|
Emit `"Active"` for mappings that should run; `"Draft"` is also
|
|
@@ -4704,6 +4724,12 @@ components:
|
|
|
4704
4724
|
- Examples: '$.customer.firstName', '$.items[0].price', '$.addresses[*].street',
|
|
4705
4725
|
'$[*].Tax' (every row of a grouped record)
|
|
4706
4726
|
- Wildcards like [*] extract multiple values/objects
|
|
4727
|
+
- A key that contains a dot needs bracket notation: `$['P.O. Number']` (or
|
|
4728
|
+
`$["P.O. Number"]`, `$.[P.O. Number]`). `$.P.O. Number` is read as a nested
|
|
4729
|
+
path: it maps nothing and the record still succeeds. Spaces, hyphens and `#`
|
|
4730
|
+
need no brackets (`$.Ship To Name`, `$.Tracking #`)
|
|
4731
|
+
- Filter expressions such as `$.items[?(@.active)]` fail the record with
|
|
4732
|
+
"Eval [?(expr)] prevented in JSONPath expression."
|
|
4707
4733
|
|
|
4708
4734
|
```json
|
|
4709
4735
|
"extract": "$.customer.addresses[*]" // Extracts all addresses
|
|
@@ -4892,6 +4918,12 @@ components:
|
|
|
4892
4918
|
**Usage**
|
|
4893
4919
|
|
|
4894
4920
|
The lookupName refers to a named lookup defined in the lookups array of the same resource.
|
|
4921
|
+
On an HTTP import that is `http.lookups`: a `lookups` array sent only at the top level
|
|
4922
|
+
is dropped on save. On an import, a name that matches no lookup fails every record
|
|
4923
|
+
with "Unable to find lookup in mapping configs - <name>", and a key the lookup
|
|
4924
|
+
doesn't hold follows the lookup's `allowFailures`: false fails the record; true, or
|
|
4925
|
+
the field left out, lets the record succeed with the lookup's `default`, or without
|
|
4926
|
+
the mapped field when there is none.
|
|
4895
4927
|
|
|
4896
4928
|
```json
|
|
4897
4929
|
{
|
|
@@ -5229,6 +5261,11 @@ components:
|
|
|
5229
5261
|
The system creates special composite objects during processing to maintain
|
|
5230
5262
|
hierarchical relationships, allowing easy access to both the current array item
|
|
5231
5263
|
and its parent contexts.
|
|
5264
|
+
|
|
5265
|
+
An iterating entry keeps the `[*]`: `$.line_items` without it yields one empty
|
|
5266
|
+
element per item, with no error. Child extracts drop the `[*]` but keep the
|
|
5267
|
+
array's path (`$.line_items.sku`); `$.line_items[*].sku` maps nothing, and an
|
|
5268
|
+
element-relative `$.sku` reads the record root instead of the element.
|
|
5232
5269
|
examples:
|
|
5233
5270
|
- $.items[*]
|
|
5234
5271
|
- $.order.lineItems[*]
|
|
@@ -5440,14 +5477,17 @@ components:
|
|
|
5440
5477
|
type: string
|
|
5441
5478
|
description: |
|
|
5442
5479
|
**Purpose**
|
|
5443
|
-
|
|
5480
|
+
Controls whether the mapping is applied. Send it on every mapping entry.
|
|
5444
5481
|
|
|
5445
5482
|
**Guidance**
|
|
5446
5483
|
Only `Active` rows run. `Draft` and `Inactive` rows keep their
|
|
5447
5484
|
configuration, are saved with minimal validation, and are skipped at
|
|
5448
5485
|
runtime and in preview; a non-Active parent skips its whole subtree
|
|
5449
|
-
whatever its children say.
|
|
5450
|
-
|
|
5486
|
+
whatever its children say. Imports (on save and in the mapper processor)
|
|
5487
|
+
and API response mappings reject a row missing this field (validation
|
|
5488
|
+
error: "Mapping object must have status field present."); a Tool's
|
|
5489
|
+
output mapping saves and runs one, which is why `required` doesn't
|
|
5490
|
+
list it.
|
|
5451
5491
|
x-celigo-ai-guidance:
|
|
5452
5492
|
- |-
|
|
5453
5493
|
Emit `"Active"` for mappings that should run; `"Draft"` is also
|
|
@@ -5818,8 +5858,8 @@ components:
|
|
|
5818
5858
|
- Original value indicators: "{Original Value}", "No mapping found"
|
|
5819
5859
|
- Neutral values: "Other", "N/A", "Miscellaneous"
|
|
5820
5860
|
|
|
5821
|
-
If allowFailures is false
|
|
5822
|
-
|
|
5861
|
+
If allowFailures is false, a record whose value is unmapped fails and the default
|
|
5862
|
+
is ignored.
|
|
5823
5863
|
examples:
|
|
5824
5864
|
- Unknown
|
|
5825
5865
|
- Other
|
|
@@ -5840,7 +5880,11 @@ components:
|
|
|
5840
5880
|
This field determines how the system handles source values that don't exist in the map:
|
|
5841
5881
|
|
|
5842
5882
|
- true: Use the default value for missing mappings and continue processing
|
|
5843
|
-
- false: Treat missing mappings as errors, failing the record
|
|
5883
|
+
- false: Treat missing mappings as errors, failing the record (`lookup_error` for a
|
|
5884
|
+
static map, `lookupcache_evaluation_failed` for a lookup cache)
|
|
5885
|
+
- omitted or null: the record doesn't fail either. On an import a static lookup writes
|
|
5886
|
+
its default if it has one, and a static or cache lookup without one leaves the
|
|
5887
|
+
mapped field out of the output, with no error
|
|
5844
5888
|
|
|
5845
5889
|
**Recommendation**
|
|
5846
5890
|
|
|
@@ -5854,11 +5898,14 @@ components:
|
|
|
5854
5898
|
- All possible source values are known and controlled
|
|
5855
5899
|
- Missing mappings indicate serious data problems that should be addressed
|
|
5856
5900
|
|
|
5857
|
-
|
|
5858
|
-
|
|
5901
|
+
A default raises no error: records that miss go out with the default value and
|
|
5902
|
+
nothing reports them. Use true only when that fallback is acceptable at the
|
|
5903
|
+
destination, and set false explicitly when a missing value must stop the record.
|
|
5859
5904
|
examples:
|
|
5860
5905
|
- true
|
|
5861
5906
|
- false
|
|
5907
|
+
x-celigo-ai-guidance:
|
|
5908
|
+
- 'Never leave this field out to mean "fail on a miss": on an import, an omitted or null value lets a missing key through without an error (with the default, or without the mapped field when there is none). Only an explicit false fails the record.'
|
|
5862
5909
|
Transform:
|
|
5863
5910
|
type: object
|
|
5864
5911
|
description: |
|
|
@@ -14411,7 +14458,9 @@ components:
|
|
|
14411
14458
|
|
|
14412
14459
|
- **Field mappings** — a mapping entry sets
|
|
14413
14460
|
``lookupName: "<name>"`` to resolve a field's value through
|
|
14414
|
-
the lookup.
|
|
14461
|
+
the lookup. A ``lookupName`` that matches no entry in this
|
|
14462
|
+
array fails every record with ``Unable to find lookup in
|
|
14463
|
+
mapping configs - <name>``.
|
|
14415
14464
|
- **Handlebars expressions** — anywhere handlebars is
|
|
14416
14465
|
evaluated (relativeURI, headers, body), ``{{lookup "name"
|
|
14417
14466
|
value}}`` calls the lookup with ``value`` as input.
|
|
@@ -14425,9 +14474,13 @@ components:
|
|
|
14425
14474
|
## Mirror invariant
|
|
14426
14475
|
|
|
14427
14476
|
The Celigo platform persists lookups in TWO locations on an HTTP
|
|
14428
|
-
import: top-level ``lookups`` and ``http.lookups
|
|
14429
|
-
|
|
14430
|
-
|
|
14477
|
+
import: top-level ``lookups`` and ``http.lookups``, and
|
|
14478
|
+
``http.lookups`` is the copy that counts. A save keeps
|
|
14479
|
+
``http.lookups`` and mirrors it to the top level, overwriting a
|
|
14480
|
+
top-level copy that differs; a ``lookups`` array sent only at the
|
|
14481
|
+
top level is dropped with no error, on create and on PUT, and both
|
|
14482
|
+
arrays read back null. Write ``http.lookups`` on every save;
|
|
14483
|
+
sending the same array at the top level too is harmless.
|
|
14431
14484
|
- |-
|
|
14432
14485
|
## Static vs dynamic vs cached
|
|
14433
14486
|
|
|
@@ -14477,12 +14530,13 @@ components:
|
|
|
14477
14530
|
- handlebars
|
|
14478
14531
|
description: |
|
|
14479
14532
|
Request body template for POST / PUT / PATCH lookup methods, typically
|
|
14480
|
-
a JSON string with Handlebars placeholders (``{"email":"{{
|
|
14533
|
+
a JSON string with Handlebars placeholders (``{"email":"{{email}}"}``);
|
|
14481
14534
|
ignored for GET / DELETE. The record's fields sit at the top level:
|
|
14482
14535
|
``{{email}}`` renders the record's value, while ``{{record.email}}``
|
|
14483
14536
|
renders empty.
|
|
14484
14537
|
x-celigo-ai-guidance:
|
|
14485
14538
|
- 'Put the lookup''s request template here, not in ``postBody``: a ``postBody`` saves without an error but is not kept under ``http.lookups``, so the lookup goes out with no body and the run reports no error.'
|
|
14539
|
+
- 'Write string values with double braces inside the quotes (``"{{email}}"``): they are JSON-escaped at runtime. With triple braces a value holding a double quote breaks the request body, and the lookup quietly finds nothing, so an existence check writes the record as new.'
|
|
14486
14540
|
headers:
|
|
14487
14541
|
type: array
|
|
14488
14542
|
items:
|
|
@@ -14538,10 +14592,17 @@ components:
|
|
|
14538
14592
|
- boolean
|
|
14539
14593
|
- 'null'
|
|
14540
14594
|
description: |
|
|
14541
|
-
When true, a lookup miss (
|
|
14542
|
-
|
|
14543
|
-
|
|
14544
|
-
|
|
14595
|
+
When true, a lookup miss uses ``default`` (or leaves the mapped
|
|
14596
|
+
field out when there is none) and the record continues. When
|
|
14597
|
+
false, a miss fails the record: ``lookup_error`` ("Could not find
|
|
14598
|
+
value for static lookup: …") for a static ``map``,
|
|
14599
|
+
``lookupcache_evaluation_failed`` for a cache. Omitted or null,
|
|
14600
|
+
a miss doesn't fail the record either: a static lookup writes
|
|
14601
|
+
its ``default`` if it has one, and a lookup without one (static,
|
|
14602
|
+
cache, or a live request that matches nothing or fails) leaves
|
|
14603
|
+
the mapped field out.
|
|
14604
|
+
x-celigo-ai-guidance:
|
|
14605
|
+
- Set false explicitly when a miss must stop the record. Leaving the field out lets the record through with the default or without the looked-up value, so a destination that needs the real value gets a request without it and nothing errors.
|
|
14545
14606
|
useDefaultOnMultipleMatches:
|
|
14546
14607
|
type: boolean
|
|
14547
14608
|
description: |
|
|
@@ -24058,7 +24119,7 @@ components:
|
|
|
24058
24119
|
description: When true, the mapped value cannot be overwritten by later mapping steps.
|
|
24059
24120
|
lookupName:
|
|
24060
24121
|
type: string
|
|
24061
|
-
description: Name of an entry in the import's `lookups` array used to translate the value.
|
|
24122
|
+
description: Name of an entry in the import's `lookups` array (`http.lookups` on an HTTP import) used to translate the value.
|
|
24062
24123
|
x-celigo-ai-guidance:
|
|
24063
24124
|
- |-
|
|
24064
24125
|
Name of a lookup defined on ``resource.lookups`` whose result
|
|
@@ -25510,8 +25571,9 @@ components:
|
|
|
25510
25571
|
|
|
25511
25572
|
Lookups referenced by ``lookupName`` live on the top-level
|
|
25512
25573
|
``resource.lookups`` array (mirrored under the adaptor key for
|
|
25513
|
-
adaptors that maintain their own copy
|
|
25514
|
-
|
|
25574
|
+
adaptors that maintain their own copy; on an HTTP import that
|
|
25575
|
+
copy, ``http.lookups``, is the one a save keeps — see the mirror
|
|
25576
|
+
invariant on ``lookups``). Lookups are independent of this
|
|
25515
25577
|
mapping: they are neither created nor cleared automatically when
|
|
25516
25578
|
this mapping changes.
|
|
25517
25579
|
properties:
|
|
@@ -25630,6 +25692,12 @@ components:
|
|
|
25630
25692
|
|
|
25631
25693
|
Both arrays MUST hold byte-for-byte identical content: write
|
|
25632
25694
|
both on every save and treat them as a single logical field.
|
|
25695
|
+
On an HTTP import the adaptor copy decides: a save keeps
|
|
25696
|
+
``http.lookups`` and mirrors it here, overwriting a copy here
|
|
25697
|
+
that differs, and an array sent only here is dropped on create
|
|
25698
|
+
and on PUT with no error. A mapping row that names one of its
|
|
25699
|
+
lookups then fails every record with ``Unable to find lookup in
|
|
25700
|
+
mapping configs - <name>``.
|
|
25633
25701
|
- |-
|
|
25634
25702
|
## Shape
|
|
25635
25703
|
|
|
@@ -31090,6 +31158,8 @@ components:
|
|
|
31090
31158
|
Controls how the export requests subsequent pages when the API returns multi-page responses. The `method` field determines which companion fields are required and how each next page is requested. For the page, skip, and token methods, reference the matching pagination variable (`{{export.http.paging.page}}`, `{{export.http.paging.skip}}`, or `{{export.http.paging.token}}`) in the relative URI or request body — misconfigured pagination is a common cause of incomplete data retrieval.
|
|
31091
31159
|
|
|
31092
31160
|
When this export is the first lookup of a builder-mode API with `pagination.enabled` set, it is that API's volume driver: saving the export (even unchanged) invalidates the API's issued cursors, so a caller mid-walk gets an empty final page, and removing `paging` is accepted on save but makes every call to the API fail with `400 api_pagination_source_not_paged` until paging is restored or the API's flag is turned off.
|
|
31161
|
+
|
|
31162
|
+
When a next page's response is identical to the previous one, paging stops: the export records an open error with code `page_response_error` ("Identical response received from next page request. No more page requests will be made.") and the run completes with the pages already read, so later pages are never exported. A request that doesn't change between pages produces this, as observed with `method: page` and the pagination variable missing from the relative URI and body; reference the variable so each request asks for the next page.
|
|
31093
31163
|
x-celigo-ai-guidance:
|
|
31094
31164
|
- Configuration object for navigating through multi-page API responses.
|
|
31095
31165
|
- |-
|
package/package.json
CHANGED