@celigo/api-specs 0.2.6 → 0.2.8
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 +52 -51
- package/dist/connection.yml +13 -4
- package/dist/export.yml +52 -51
- package/dist/flow.yml +23 -7
- package/dist/import.yml +64 -55
- package/dist/tool.yml +77 -59
- package/package.json +1 -1
- package/schemas.json +1 -1
package/dist/ai-agent.yml
CHANGED
|
@@ -4681,36 +4681,39 @@ components:
|
|
|
4681
4681
|
OneToMany:
|
|
4682
4682
|
type: boolean
|
|
4683
4683
|
description: |
|
|
4684
|
-
|
|
4685
|
-
|
|
4686
|
-
|
|
4687
|
-
|
|
4688
|
-
|
|
4689
|
-
|
|
4690
|
-
|
|
4691
|
-
|
|
4692
|
-
|
|
4693
|
-
|
|
4694
|
-
|
|
4695
|
-
|
|
4696
|
-
|
|
4697
|
-
|
|
4698
|
-
-
|
|
4699
|
-
|
|
4700
|
-
|
|
4701
|
-
|
|
4702
|
-
|
|
4703
|
-
|
|
4704
|
-
|
|
4705
|
-
|
|
4706
|
-
-
|
|
4707
|
-
|
|
4708
|
-
|
|
4709
|
-
|
|
4710
|
-
|
|
4711
|
-
|
|
4712
|
-
|
|
4713
|
-
|
|
4684
|
+
When true, the step runs once per child record instead of once per incoming record.
|
|
4685
|
+
`pathToMany` names the array field that holds the children inside an object record; when
|
|
4686
|
+
the incoming record is itself an array (grouped or row-based data), leave `pathToMany` blank
|
|
4687
|
+
and each element becomes a record. The fan-out is scoped to this step: afterwards the children
|
|
4688
|
+
are re-joined into the record's original shape — the object with its array, or the array of rows —
|
|
4689
|
+
carrying any response-mapping enrichment, and that re-joined record is what the next step
|
|
4690
|
+
receives. Not for locating records in an export's HTTP response; use
|
|
4691
|
+
`http.response.resourcePath` for that.
|
|
4692
|
+
x-celigo-ai-guidance:
|
|
4693
|
+
- |-
|
|
4694
|
+
Two modes, decided by the SHAPE of the record entering the step. Object record with a child
|
|
4695
|
+
array under a field → set ``pathToMany`` to that field. Array record (a ``groupByFields``
|
|
4696
|
+
export, a CSV/file group, a script that returns an array) → leave ``pathToMany`` blank; each
|
|
4697
|
+
element becomes one record. Live-verified 2026-09-10 on flows, Tools, and APIs.
|
|
4698
|
+
- |-
|
|
4699
|
+
Blank ``pathToMany`` on an OBJECT record fails every record with code ``oneToMany_error``:
|
|
4700
|
+
"Failed to extract child records from oneToMany import data. Record at index 0 was not an
|
|
4701
|
+
array, and no PathToMany was provided". Builder previews return only the code, with no
|
|
4702
|
+
message. The fix is never "turn oneToMany off" by default — first determine whether the
|
|
4703
|
+
record arriving at the step is an object (set a path) or an array (blank is correct; a
|
|
4704
|
+
preview error on an array-fed step is the preview panel re-applying one-to-many to the
|
|
4705
|
+
already-fanned-out record — verify with a test run or a real run).
|
|
4706
|
+
- |-
|
|
4707
|
+
Child record shape differs by mode. Path mode: each child is the array element plus
|
|
4708
|
+
``_PARENT`` (the parent record minus the array). Blank/row mode: each child is the element
|
|
4709
|
+
itself, with no ``_PARENT``. In both modes templates on the step reference the child as
|
|
4710
|
+
``{{record.<field>}}``; a response mapping on a one-to-many lookup merges into each child and
|
|
4711
|
+
the downstream step receives the re-joined parent (path mode) or the re-joined array (row
|
|
4712
|
+
mode) with every element enriched.
|
|
4713
|
+
- |-
|
|
4714
|
+
One-to-many never batches by itself: ``batch_of_records`` appears as the HTTP body template
|
|
4715
|
+
root only when ``http.batchSize`` is greater than 1 (children are batched after fan-out).
|
|
4716
|
+
With the default batch size the template root is ``record``.
|
|
4714
4717
|
default: false
|
|
4715
4718
|
examples:
|
|
4716
4719
|
- true
|
|
@@ -4718,27 +4721,25 @@ components:
|
|
|
4718
4721
|
PathToMany:
|
|
4719
4722
|
type: string
|
|
4720
4723
|
description: |
|
|
4721
|
-
|
|
4722
|
-
|
|
4723
|
-
|
|
4724
|
-
|
|
4725
|
-
|
|
4726
|
-
-
|
|
4727
|
-
|
|
4728
|
-
|
|
4729
|
-
|
|
4730
|
-
|
|
4731
|
-
|
|
4732
|
-
-
|
|
4733
|
-
|
|
4734
|
-
|
|
4735
|
-
|
|
4736
|
-
-
|
|
4737
|
-
|
|
4738
|
-
|
|
4739
|
-
|
|
4740
|
-
|
|
4741
|
-
This field must contain a valid JSON path expression using dot notation.
|
|
4724
|
+
Path to the array of child records inside an object record when `oneToMany` is true, in dot
|
|
4725
|
+
notation (`items`, `lines.lineItems`). Leave blank when the incoming record is itself an array
|
|
4726
|
+
(grouped or row-based data) — each element is then a child record. A path that does not resolve
|
|
4727
|
+
to an array processes zero records and reports success.
|
|
4728
|
+
x-celigo-ai-guidance:
|
|
4729
|
+
- |-
|
|
4730
|
+
Set this ONLY when the record entering the step is an object whose children sit under a field.
|
|
4731
|
+
On an array record (a ``groupByFields`` export, a CSV/file group, a script returning an array)
|
|
4732
|
+
any path resolves to nothing: the step processes ZERO children, builds no request, and reports
|
|
4733
|
+
success with no error. Live-verified 2026-09-10 — the failure is silent, so confirm the arriving
|
|
4734
|
+
record's shape (test run stage data, or the flow builder's input panel: ``rows`` means array).
|
|
4735
|
+
- |-
|
|
4736
|
+
Blank with an object record is the ``oneToMany_error`` failure ("Record at index 0 was not an
|
|
4737
|
+
array, and no PathToMany was provided"); blank with an array record is the correct row-based
|
|
4738
|
+
configuration. An empty string behaves exactly like an absent field.
|
|
4739
|
+
- |-
|
|
4740
|
+
Use the bare field name or dotted path (``lineItems``, ``details.items``), not a JSONPath
|
|
4741
|
+
expression. Each child in path mode carries ``_PARENT`` (the parent minus the array), so
|
|
4742
|
+
parent-level fields are read as ``{{record._PARENT.<field>}}``.
|
|
4742
4743
|
examples:
|
|
4743
4744
|
- items
|
|
4744
4745
|
- line_items
|
package/dist/connection.yml
CHANGED
|
@@ -2445,7 +2445,15 @@ components:
|
|
|
2445
2445
|
autoRecoverRateLimitErrors:
|
|
2446
2446
|
type: boolean
|
|
2447
2447
|
default: true
|
|
2448
|
-
description:
|
|
2448
|
+
description: |-
|
|
2449
|
+
When true, rate-limit errors from the target system trigger automatic recovery: concurrency
|
|
2450
|
+
drops to 1, the rate-limited requests are retried with doubling waits (1 to 1024 minutes,
|
|
2451
|
+
after which the flag switches itself off), and concurrency climbs back toward
|
|
2452
|
+
`targetConcurrencyLevel`. While true, `concurrencyLevel` is platform-managed and writes to
|
|
2453
|
+
it are ignored — `targetConcurrencyLevel` is the lever.
|
|
2454
|
+
x-celigo-ai-guidance:
|
|
2455
|
+
- To change throughput while this is true, write `targetConcurrencyLevel`; a `concurrencyLevel` write returns 200 and changes nothing.
|
|
2456
|
+
- Turning it on copies `concurrencyLevel` into `targetConcurrencyLevel`; turning it off copies the target back into `concurrencyLevel` and unsets the target.
|
|
2449
2457
|
enableMicroBatchForOneToMany:
|
|
2450
2458
|
type: boolean
|
|
2451
2459
|
default: true
|
|
@@ -3722,16 +3730,17 @@ components:
|
|
|
3722
3730
|
Higher values increase throughput but may trigger API rate limits.
|
|
3723
3731
|
Set this based on the target API's rate limit documentation.
|
|
3724
3732
|
Values above the account's licensed maximum (25 standard, 50 with an Environments license) are silently clamped down.
|
|
3733
|
+
Platform-managed while `autoRecoverRateLimitErrors` is true — writes are ignored; set `targetConcurrencyLevel` instead.
|
|
3725
3734
|
minimum: 1
|
|
3726
3735
|
maximum: 50
|
|
3727
3736
|
default: 25
|
|
3728
3737
|
targetConcurrencyLevel:
|
|
3729
3738
|
type: number
|
|
3730
3739
|
description: |
|
|
3731
|
-
|
|
3732
|
-
|
|
3740
|
+
Ceiling the platform climbs back to after rate-limit recovery, in steps of 25% of this value.
|
|
3741
|
+
Writing it also sets `concurrencyLevel` to the same value and stops any recovery in progress.
|
|
3733
3742
|
|
|
3734
|
-
|
|
3743
|
+
Honored only while `autoRecoverRateLimitErrors` is true; ignored, and unset, when it is false.
|
|
3735
3744
|
minimum: 1
|
|
3736
3745
|
maximum: 50
|
|
3737
3746
|
examples:
|
package/dist/export.yml
CHANGED
|
@@ -796,36 +796,39 @@ components:
|
|
|
796
796
|
OneToMany:
|
|
797
797
|
type: boolean
|
|
798
798
|
description: |
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
799
|
+
When true, the step runs once per child record instead of once per incoming record.
|
|
800
|
+
`pathToMany` names the array field that holds the children inside an object record; when
|
|
801
|
+
the incoming record is itself an array (grouped or row-based data), leave `pathToMany` blank
|
|
802
|
+
and each element becomes a record. The fan-out is scoped to this step: afterwards the children
|
|
803
|
+
are re-joined into the record's original shape — the object with its array, or the array of rows —
|
|
804
|
+
carrying any response-mapping enrichment, and that re-joined record is what the next step
|
|
805
|
+
receives. Not for locating records in an export's HTTP response; use
|
|
806
|
+
`http.response.resourcePath` for that.
|
|
807
|
+
x-celigo-ai-guidance:
|
|
808
|
+
- |-
|
|
809
|
+
Two modes, decided by the SHAPE of the record entering the step. Object record with a child
|
|
810
|
+
array under a field → set ``pathToMany`` to that field. Array record (a ``groupByFields``
|
|
811
|
+
export, a CSV/file group, a script that returns an array) → leave ``pathToMany`` blank; each
|
|
812
|
+
element becomes one record. Live-verified 2026-09-10 on flows, Tools, and APIs.
|
|
813
|
+
- |-
|
|
814
|
+
Blank ``pathToMany`` on an OBJECT record fails every record with code ``oneToMany_error``:
|
|
815
|
+
"Failed to extract child records from oneToMany import data. Record at index 0 was not an
|
|
816
|
+
array, and no PathToMany was provided". Builder previews return only the code, with no
|
|
817
|
+
message. The fix is never "turn oneToMany off" by default — first determine whether the
|
|
818
|
+
record arriving at the step is an object (set a path) or an array (blank is correct; a
|
|
819
|
+
preview error on an array-fed step is the preview panel re-applying one-to-many to the
|
|
820
|
+
already-fanned-out record — verify with a test run or a real run).
|
|
821
|
+
- |-
|
|
822
|
+
Child record shape differs by mode. Path mode: each child is the array element plus
|
|
823
|
+
``_PARENT`` (the parent record minus the array). Blank/row mode: each child is the element
|
|
824
|
+
itself, with no ``_PARENT``. In both modes templates on the step reference the child as
|
|
825
|
+
``{{record.<field>}}``; a response mapping on a one-to-many lookup merges into each child and
|
|
826
|
+
the downstream step receives the re-joined parent (path mode) or the re-joined array (row
|
|
827
|
+
mode) with every element enriched.
|
|
828
|
+
- |-
|
|
829
|
+
One-to-many never batches by itself: ``batch_of_records`` appears as the HTTP body template
|
|
830
|
+
root only when ``http.batchSize`` is greater than 1 (children are batched after fan-out).
|
|
831
|
+
With the default batch size the template root is ``record``.
|
|
829
832
|
default: false
|
|
830
833
|
examples:
|
|
831
834
|
- true
|
|
@@ -833,27 +836,25 @@ components:
|
|
|
833
836
|
PathToMany:
|
|
834
837
|
type: string
|
|
835
838
|
description: |
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
This field must contain a valid JSON path expression using dot notation.
|
|
839
|
+
Path to the array of child records inside an object record when `oneToMany` is true, in dot
|
|
840
|
+
notation (`items`, `lines.lineItems`). Leave blank when the incoming record is itself an array
|
|
841
|
+
(grouped or row-based data) — each element is then a child record. A path that does not resolve
|
|
842
|
+
to an array processes zero records and reports success.
|
|
843
|
+
x-celigo-ai-guidance:
|
|
844
|
+
- |-
|
|
845
|
+
Set this ONLY when the record entering the step is an object whose children sit under a field.
|
|
846
|
+
On an array record (a ``groupByFields`` export, a CSV/file group, a script returning an array)
|
|
847
|
+
any path resolves to nothing: the step processes ZERO children, builds no request, and reports
|
|
848
|
+
success with no error. Live-verified 2026-09-10 — the failure is silent, so confirm the arriving
|
|
849
|
+
record's shape (test run stage data, or the flow builder's input panel: ``rows`` means array).
|
|
850
|
+
- |-
|
|
851
|
+
Blank with an object record is the ``oneToMany_error`` failure ("Record at index 0 was not an
|
|
852
|
+
array, and no PathToMany was provided"); blank with an array record is the correct row-based
|
|
853
|
+
configuration. An empty string behaves exactly like an absent field.
|
|
854
|
+
- |-
|
|
855
|
+
Use the bare field name or dotted path (``lineItems``, ``details.items``), not a JSONPath
|
|
856
|
+
expression. Each child in path mode carries ``_PARENT`` (the parent minus the array), so
|
|
857
|
+
parent-level fields are read as ``{{record._PARENT.<field>}}``.
|
|
857
858
|
examples:
|
|
858
859
|
- items
|
|
859
860
|
- line_items
|
package/dist/flow.yml
CHANGED
|
@@ -5333,10 +5333,18 @@ components:
|
|
|
5333
5333
|
- false
|
|
5334
5334
|
autoResolveMatchingTraceKeys:
|
|
5335
5335
|
type: boolean
|
|
5336
|
-
|
|
5336
|
+
default: true
|
|
5337
|
+
description: |-
|
|
5338
|
+
When true, a new error for a record whose trace key already has open errors on the same step
|
|
5339
|
+
auto-resolves the older ones, a later success for that record auto-resolves its open errors,
|
|
5340
|
+
and errors classified `intermittent` are retried automatically — up to four attempts, the
|
|
5341
|
+
first about 30 minutes after the error.
|
|
5337
5342
|
examples:
|
|
5338
5343
|
- true
|
|
5339
5344
|
- false
|
|
5345
|
+
x-celigo-ai-guidance:
|
|
5346
|
+
- Both behaviors hang off this one flag — off means repeated failures of a record stay open and intermittent errors get no automatic retries; never turn it off as a fix for "duplicate" errors (those come from the destination, not from trace keys).
|
|
5347
|
+
- Intermittent auto-retry does not depend on the trace key — errors with a blank trace key are scheduled and retried the same way; a blank key only loses the duplicate collapse.
|
|
5340
5348
|
isAbstract:
|
|
5341
5349
|
type: boolean
|
|
5342
5350
|
description: |-
|
|
@@ -6102,13 +6110,18 @@ components:
|
|
|
6102
6110
|
classification:
|
|
6103
6111
|
type: string
|
|
6104
6112
|
description: |-
|
|
6105
|
-
Category
|
|
6106
|
-
|
|
6113
|
+
Category the platform derives from the error's code, message, and source — read-only, never
|
|
6114
|
+
set by users; `intermittent` errors are retried automatically while the flow's
|
|
6115
|
+
`autoResolveMatchingTraceKeys` is on. Absent when nothing matched with confidence. The value
|
|
6116
|
+
set is the `classification` dimension of the errors filter metadata.
|
|
6107
6117
|
examples:
|
|
6108
6118
|
- intermittent
|
|
6119
|
+
x-celigo-ai-guidance:
|
|
6120
|
+
- Read the classification off the record; never infer it from the message text — the classifier is heuristic and identical messages can classify differently.
|
|
6121
|
+
- There is no setting, mapping, hook, or API that changes a classification; a wrong one is a Celigo Support matter.
|
|
6109
6122
|
classifiedBy:
|
|
6110
6123
|
type: string
|
|
6111
|
-
description: '`auto`
|
|
6124
|
+
description: '`auto` on every classified error; absent on unclassified ones.'
|
|
6112
6125
|
examples:
|
|
6113
6126
|
- auto
|
|
6114
6127
|
reqAndResKey:
|
|
@@ -6140,11 +6153,14 @@ components:
|
|
|
6140
6153
|
type: string
|
|
6141
6154
|
format: date-time
|
|
6142
6155
|
description: |-
|
|
6143
|
-
|
|
6144
|
-
|
|
6145
|
-
|
|
6156
|
+
Present while the platform is auto-retrying this `intermittent` error. On a first-occurrence
|
|
6157
|
+
error it is stamped about a minute after `occurredAt` and is not the first attempt time (that
|
|
6158
|
+
runs roughly 30 minutes out); on the error a failed attempt opens, it is the next scheduled
|
|
6159
|
+
attempt. Absent once the attempts are exhausted and on errors that are not auto-retried.
|
|
6146
6160
|
examples:
|
|
6147
6161
|
- '2026-01-15T09:35:00.000Z'
|
|
6162
|
+
x-celigo-ai-guidance:
|
|
6163
|
+
- Presence answers "is this error in auto-retry mode?"; the value is a real schedule only after at least one attempt has run.
|
|
6148
6164
|
tags:
|
|
6149
6165
|
type:
|
|
6150
6166
|
- array
|
package/dist/import.yml
CHANGED
|
@@ -2016,14 +2016,22 @@ components:
|
|
|
2016
2016
|
### Pattern B — Batch / page wrapper around mapped records
|
|
2017
2017
|
|
|
2018
2018
|
Wrap an envelope (header, version, marketplace, etc.) around
|
|
2019
|
-
a serialized batch.
|
|
2020
|
-
``
|
|
2021
|
-
|
|
2019
|
+
a serialized batch. The template root depends ONLY on
|
|
2020
|
+
``batchSize`` (live-verified 2026-09-10): with ``batchSize`` 1
|
|
2021
|
+
(the default) the root carries ``record`` (an object record —
|
|
2022
|
+
or the fanned-out child on a ``oneToMany`` import) or ``rows``
|
|
2023
|
+
(a grouped/array record), and ``data`` is the one-element list
|
|
2024
|
+
of records in the request; with ``batchSize`` > 1 the root
|
|
2025
|
+
carries ``batch_of_records`` (one ``{record: …}`` item per
|
|
2026
|
+
record in the request) and ``data`` (the bare records), and
|
|
2027
|
+
``record`` / ``rows`` are ABSENT. ``oneToMany`` does not make
|
|
2028
|
+
``batch_of_records`` appear — children are batched after
|
|
2029
|
+
fan-out under the same rule.
|
|
2022
2030
|
|
|
2023
2031
|
Example shape:
|
|
2024
2032
|
``{"values": {{#each data}} {{{jsonSerialize this}}} {{/each}} }``
|
|
2025
2033
|
|
|
2026
|
-
Example with comma-separation:
|
|
2034
|
+
Example with comma-separation (``batchSize`` > 1):
|
|
2027
2035
|
``[{{#each batch_of_records}}{{{jsonSerialize this.record}}}{{#unless @last}},{{/unless}}{{/each}}]``
|
|
2028
2036
|
|
|
2029
2037
|
### Pattern C — Custom envelope with per-message fields
|
|
@@ -10290,36 +10298,39 @@ components:
|
|
|
10290
10298
|
OneToMany:
|
|
10291
10299
|
type: boolean
|
|
10292
10300
|
description: |
|
|
10293
|
-
|
|
10294
|
-
|
|
10295
|
-
|
|
10296
|
-
|
|
10297
|
-
|
|
10298
|
-
|
|
10299
|
-
|
|
10300
|
-
|
|
10301
|
-
|
|
10302
|
-
|
|
10303
|
-
|
|
10304
|
-
|
|
10305
|
-
|
|
10306
|
-
|
|
10307
|
-
-
|
|
10308
|
-
|
|
10309
|
-
|
|
10310
|
-
|
|
10311
|
-
|
|
10312
|
-
|
|
10313
|
-
|
|
10314
|
-
|
|
10315
|
-
-
|
|
10316
|
-
|
|
10317
|
-
|
|
10318
|
-
|
|
10319
|
-
|
|
10320
|
-
|
|
10321
|
-
|
|
10322
|
-
|
|
10301
|
+
When true, the step runs once per child record instead of once per incoming record.
|
|
10302
|
+
`pathToMany` names the array field that holds the children inside an object record; when
|
|
10303
|
+
the incoming record is itself an array (grouped or row-based data), leave `pathToMany` blank
|
|
10304
|
+
and each element becomes a record. The fan-out is scoped to this step: afterwards the children
|
|
10305
|
+
are re-joined into the record's original shape — the object with its array, or the array of rows —
|
|
10306
|
+
carrying any response-mapping enrichment, and that re-joined record is what the next step
|
|
10307
|
+
receives. Not for locating records in an export's HTTP response; use
|
|
10308
|
+
`http.response.resourcePath` for that.
|
|
10309
|
+
x-celigo-ai-guidance:
|
|
10310
|
+
- |-
|
|
10311
|
+
Two modes, decided by the SHAPE of the record entering the step. Object record with a child
|
|
10312
|
+
array under a field → set ``pathToMany`` to that field. Array record (a ``groupByFields``
|
|
10313
|
+
export, a CSV/file group, a script that returns an array) → leave ``pathToMany`` blank; each
|
|
10314
|
+
element becomes one record. Live-verified 2026-09-10 on flows, Tools, and APIs.
|
|
10315
|
+
- |-
|
|
10316
|
+
Blank ``pathToMany`` on an OBJECT record fails every record with code ``oneToMany_error``:
|
|
10317
|
+
"Failed to extract child records from oneToMany import data. Record at index 0 was not an
|
|
10318
|
+
array, and no PathToMany was provided". Builder previews return only the code, with no
|
|
10319
|
+
message. The fix is never "turn oneToMany off" by default — first determine whether the
|
|
10320
|
+
record arriving at the step is an object (set a path) or an array (blank is correct; a
|
|
10321
|
+
preview error on an array-fed step is the preview panel re-applying one-to-many to the
|
|
10322
|
+
already-fanned-out record — verify with a test run or a real run).
|
|
10323
|
+
- |-
|
|
10324
|
+
Child record shape differs by mode. Path mode: each child is the array element plus
|
|
10325
|
+
``_PARENT`` (the parent record minus the array). Blank/row mode: each child is the element
|
|
10326
|
+
itself, with no ``_PARENT``. In both modes templates on the step reference the child as
|
|
10327
|
+
``{{record.<field>}}``; a response mapping on a one-to-many lookup merges into each child and
|
|
10328
|
+
the downstream step receives the re-joined parent (path mode) or the re-joined array (row
|
|
10329
|
+
mode) with every element enriched.
|
|
10330
|
+
- |-
|
|
10331
|
+
One-to-many never batches by itself: ``batch_of_records`` appears as the HTTP body template
|
|
10332
|
+
root only when ``http.batchSize`` is greater than 1 (children are batched after fan-out).
|
|
10333
|
+
With the default batch size the template root is ``record``.
|
|
10323
10334
|
default: false
|
|
10324
10335
|
examples:
|
|
10325
10336
|
- true
|
|
@@ -10327,27 +10338,25 @@ components:
|
|
|
10327
10338
|
PathToMany:
|
|
10328
10339
|
type: string
|
|
10329
10340
|
description: |
|
|
10330
|
-
|
|
10331
|
-
|
|
10332
|
-
|
|
10333
|
-
|
|
10334
|
-
|
|
10335
|
-
-
|
|
10336
|
-
|
|
10337
|
-
|
|
10338
|
-
|
|
10339
|
-
|
|
10340
|
-
|
|
10341
|
-
-
|
|
10342
|
-
|
|
10343
|
-
|
|
10344
|
-
|
|
10345
|
-
-
|
|
10346
|
-
|
|
10347
|
-
|
|
10348
|
-
|
|
10349
|
-
|
|
10350
|
-
This field must contain a valid JSON path expression using dot notation.
|
|
10341
|
+
Path to the array of child records inside an object record when `oneToMany` is true, in dot
|
|
10342
|
+
notation (`items`, `lines.lineItems`). Leave blank when the incoming record is itself an array
|
|
10343
|
+
(grouped or row-based data) — each element is then a child record. A path that does not resolve
|
|
10344
|
+
to an array processes zero records and reports success.
|
|
10345
|
+
x-celigo-ai-guidance:
|
|
10346
|
+
- |-
|
|
10347
|
+
Set this ONLY when the record entering the step is an object whose children sit under a field.
|
|
10348
|
+
On an array record (a ``groupByFields`` export, a CSV/file group, a script returning an array)
|
|
10349
|
+
any path resolves to nothing: the step processes ZERO children, builds no request, and reports
|
|
10350
|
+
success with no error. Live-verified 2026-09-10 — the failure is silent, so confirm the arriving
|
|
10351
|
+
record's shape (test run stage data, or the flow builder's input panel: ``rows`` means array).
|
|
10352
|
+
- |-
|
|
10353
|
+
Blank with an object record is the ``oneToMany_error`` failure ("Record at index 0 was not an
|
|
10354
|
+
array, and no PathToMany was provided"); blank with an array record is the correct row-based
|
|
10355
|
+
configuration. An empty string behaves exactly like an absent field.
|
|
10356
|
+
- |-
|
|
10357
|
+
Use the bare field name or dotted path (``lineItems``, ``details.items``), not a JSONPath
|
|
10358
|
+
expression. Each child in path mode carries ``_PARENT`` (the parent minus the array), so
|
|
10359
|
+
parent-level fields are read as ``{{record._PARENT.<field>}}``.
|
|
10351
10360
|
examples:
|
|
10352
10361
|
- items
|
|
10353
10362
|
- line_items
|
package/dist/tool.yml
CHANGED
|
@@ -4883,7 +4883,15 @@ components:
|
|
|
4883
4883
|
autoRecoverRateLimitErrors:
|
|
4884
4884
|
type: boolean
|
|
4885
4885
|
default: true
|
|
4886
|
-
description:
|
|
4886
|
+
description: |-
|
|
4887
|
+
When true, rate-limit errors from the target system trigger automatic recovery: concurrency
|
|
4888
|
+
drops to 1, the rate-limited requests are retried with doubling waits (1 to 1024 minutes,
|
|
4889
|
+
after which the flag switches itself off), and concurrency climbs back toward
|
|
4890
|
+
`targetConcurrencyLevel`. While true, `concurrencyLevel` is platform-managed and writes to
|
|
4891
|
+
it are ignored — `targetConcurrencyLevel` is the lever.
|
|
4892
|
+
x-celigo-ai-guidance:
|
|
4893
|
+
- To change throughput while this is true, write `targetConcurrencyLevel`; a `concurrencyLevel` write returns 200 and changes nothing.
|
|
4894
|
+
- Turning it on copies `concurrencyLevel` into `targetConcurrencyLevel`; turning it off copies the target back into `concurrencyLevel` and unsets the target.
|
|
4887
4895
|
enableMicroBatchForOneToMany:
|
|
4888
4896
|
type: boolean
|
|
4889
4897
|
default: true
|
|
@@ -6160,16 +6168,17 @@ components:
|
|
|
6160
6168
|
Higher values increase throughput but may trigger API rate limits.
|
|
6161
6169
|
Set this based on the target API's rate limit documentation.
|
|
6162
6170
|
Values above the account's licensed maximum (25 standard, 50 with an Environments license) are silently clamped down.
|
|
6171
|
+
Platform-managed while `autoRecoverRateLimitErrors` is true — writes are ignored; set `targetConcurrencyLevel` instead.
|
|
6163
6172
|
minimum: 1
|
|
6164
6173
|
maximum: 50
|
|
6165
6174
|
default: 25
|
|
6166
6175
|
targetConcurrencyLevel:
|
|
6167
6176
|
type: number
|
|
6168
6177
|
description: |
|
|
6169
|
-
|
|
6170
|
-
|
|
6178
|
+
Ceiling the platform climbs back to after rate-limit recovery, in steps of 25% of this value.
|
|
6179
|
+
Writing it also sets `concurrencyLevel` to the same value and stops any recovery in progress.
|
|
6171
6180
|
|
|
6172
|
-
|
|
6181
|
+
Honored only while `autoRecoverRateLimitErrors` is true; ignored, and unset, when it is false.
|
|
6173
6182
|
minimum: 1
|
|
6174
6183
|
maximum: 50
|
|
6175
6184
|
examples:
|
|
@@ -10618,14 +10627,22 @@ components:
|
|
|
10618
10627
|
### Pattern B — Batch / page wrapper around mapped records
|
|
10619
10628
|
|
|
10620
10629
|
Wrap an envelope (header, version, marketplace, etc.) around
|
|
10621
|
-
a serialized batch.
|
|
10622
|
-
``
|
|
10623
|
-
|
|
10630
|
+
a serialized batch. The template root depends ONLY on
|
|
10631
|
+
``batchSize`` (live-verified 2026-09-10): with ``batchSize`` 1
|
|
10632
|
+
(the default) the root carries ``record`` (an object record —
|
|
10633
|
+
or the fanned-out child on a ``oneToMany`` import) or ``rows``
|
|
10634
|
+
(a grouped/array record), and ``data`` is the one-element list
|
|
10635
|
+
of records in the request; with ``batchSize`` > 1 the root
|
|
10636
|
+
carries ``batch_of_records`` (one ``{record: …}`` item per
|
|
10637
|
+
record in the request) and ``data`` (the bare records), and
|
|
10638
|
+
``record`` / ``rows`` are ABSENT. ``oneToMany`` does not make
|
|
10639
|
+
``batch_of_records`` appear — children are batched after
|
|
10640
|
+
fan-out under the same rule.
|
|
10624
10641
|
|
|
10625
10642
|
Example shape:
|
|
10626
10643
|
``{"values": {{#each data}} {{{jsonSerialize this}}} {{/each}} }``
|
|
10627
10644
|
|
|
10628
|
-
Example with comma-separation:
|
|
10645
|
+
Example with comma-separation (``batchSize`` > 1):
|
|
10629
10646
|
``[{{#each batch_of_records}}{{{jsonSerialize this.record}}}{{#unless @last}},{{/unless}}{{/each}}]``
|
|
10630
10647
|
|
|
10631
10648
|
### Pattern C — Custom envelope with per-message fields
|
|
@@ -18623,36 +18640,39 @@ components:
|
|
|
18623
18640
|
OneToMany:
|
|
18624
18641
|
type: boolean
|
|
18625
18642
|
description: |
|
|
18626
|
-
|
|
18627
|
-
|
|
18628
|
-
|
|
18629
|
-
|
|
18630
|
-
|
|
18631
|
-
|
|
18632
|
-
|
|
18633
|
-
|
|
18634
|
-
|
|
18635
|
-
|
|
18636
|
-
|
|
18637
|
-
|
|
18638
|
-
|
|
18639
|
-
|
|
18640
|
-
-
|
|
18641
|
-
|
|
18642
|
-
|
|
18643
|
-
|
|
18644
|
-
|
|
18645
|
-
|
|
18646
|
-
|
|
18647
|
-
|
|
18648
|
-
-
|
|
18649
|
-
|
|
18650
|
-
|
|
18651
|
-
|
|
18652
|
-
|
|
18653
|
-
|
|
18654
|
-
|
|
18655
|
-
|
|
18643
|
+
When true, the step runs once per child record instead of once per incoming record.
|
|
18644
|
+
`pathToMany` names the array field that holds the children inside an object record; when
|
|
18645
|
+
the incoming record is itself an array (grouped or row-based data), leave `pathToMany` blank
|
|
18646
|
+
and each element becomes a record. The fan-out is scoped to this step: afterwards the children
|
|
18647
|
+
are re-joined into the record's original shape — the object with its array, or the array of rows —
|
|
18648
|
+
carrying any response-mapping enrichment, and that re-joined record is what the next step
|
|
18649
|
+
receives. Not for locating records in an export's HTTP response; use
|
|
18650
|
+
`http.response.resourcePath` for that.
|
|
18651
|
+
x-celigo-ai-guidance:
|
|
18652
|
+
- |-
|
|
18653
|
+
Two modes, decided by the SHAPE of the record entering the step. Object record with a child
|
|
18654
|
+
array under a field → set ``pathToMany`` to that field. Array record (a ``groupByFields``
|
|
18655
|
+
export, a CSV/file group, a script that returns an array) → leave ``pathToMany`` blank; each
|
|
18656
|
+
element becomes one record. Live-verified 2026-09-10 on flows, Tools, and APIs.
|
|
18657
|
+
- |-
|
|
18658
|
+
Blank ``pathToMany`` on an OBJECT record fails every record with code ``oneToMany_error``:
|
|
18659
|
+
"Failed to extract child records from oneToMany import data. Record at index 0 was not an
|
|
18660
|
+
array, and no PathToMany was provided". Builder previews return only the code, with no
|
|
18661
|
+
message. The fix is never "turn oneToMany off" by default — first determine whether the
|
|
18662
|
+
record arriving at the step is an object (set a path) or an array (blank is correct; a
|
|
18663
|
+
preview error on an array-fed step is the preview panel re-applying one-to-many to the
|
|
18664
|
+
already-fanned-out record — verify with a test run or a real run).
|
|
18665
|
+
- |-
|
|
18666
|
+
Child record shape differs by mode. Path mode: each child is the array element plus
|
|
18667
|
+
``_PARENT`` (the parent record minus the array). Blank/row mode: each child is the element
|
|
18668
|
+
itself, with no ``_PARENT``. In both modes templates on the step reference the child as
|
|
18669
|
+
``{{record.<field>}}``; a response mapping on a one-to-many lookup merges into each child and
|
|
18670
|
+
the downstream step receives the re-joined parent (path mode) or the re-joined array (row
|
|
18671
|
+
mode) with every element enriched.
|
|
18672
|
+
- |-
|
|
18673
|
+
One-to-many never batches by itself: ``batch_of_records`` appears as the HTTP body template
|
|
18674
|
+
root only when ``http.batchSize`` is greater than 1 (children are batched after fan-out).
|
|
18675
|
+
With the default batch size the template root is ``record``.
|
|
18656
18676
|
default: false
|
|
18657
18677
|
examples:
|
|
18658
18678
|
- true
|
|
@@ -18660,27 +18680,25 @@ components:
|
|
|
18660
18680
|
PathToMany:
|
|
18661
18681
|
type: string
|
|
18662
18682
|
description: |
|
|
18663
|
-
|
|
18664
|
-
|
|
18665
|
-
|
|
18666
|
-
|
|
18667
|
-
|
|
18668
|
-
-
|
|
18669
|
-
|
|
18670
|
-
|
|
18671
|
-
|
|
18672
|
-
|
|
18673
|
-
|
|
18674
|
-
-
|
|
18675
|
-
|
|
18676
|
-
|
|
18677
|
-
|
|
18678
|
-
-
|
|
18679
|
-
|
|
18680
|
-
|
|
18681
|
-
|
|
18682
|
-
|
|
18683
|
-
This field must contain a valid JSON path expression using dot notation.
|
|
18683
|
+
Path to the array of child records inside an object record when `oneToMany` is true, in dot
|
|
18684
|
+
notation (`items`, `lines.lineItems`). Leave blank when the incoming record is itself an array
|
|
18685
|
+
(grouped or row-based data) — each element is then a child record. A path that does not resolve
|
|
18686
|
+
to an array processes zero records and reports success.
|
|
18687
|
+
x-celigo-ai-guidance:
|
|
18688
|
+
- |-
|
|
18689
|
+
Set this ONLY when the record entering the step is an object whose children sit under a field.
|
|
18690
|
+
On an array record (a ``groupByFields`` export, a CSV/file group, a script returning an array)
|
|
18691
|
+
any path resolves to nothing: the step processes ZERO children, builds no request, and reports
|
|
18692
|
+
success with no error. Live-verified 2026-09-10 — the failure is silent, so confirm the arriving
|
|
18693
|
+
record's shape (test run stage data, or the flow builder's input panel: ``rows`` means array).
|
|
18694
|
+
- |-
|
|
18695
|
+
Blank with an object record is the ``oneToMany_error`` failure ("Record at index 0 was not an
|
|
18696
|
+
array, and no PathToMany was provided"); blank with an array record is the correct row-based
|
|
18697
|
+
configuration. An empty string behaves exactly like an absent field.
|
|
18698
|
+
- |-
|
|
18699
|
+
Use the bare field name or dotted path (``lineItems``, ``details.items``), not a JSONPath
|
|
18700
|
+
expression. Each child in path mode carries ``_PARENT`` (the parent minus the array), so
|
|
18701
|
+
parent-level fields are read as ``{{record._PARENT.<field>}}``.
|
|
18684
18702
|
examples:
|
|
18685
18703
|
- items
|
|
18686
18704
|
- line_items
|
package/package.json
CHANGED