@celigo/api-specs 0.2.80 → 0.2.81

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 CHANGED
@@ -3869,20 +3869,48 @@ components:
3869
3869
  extracts evaluate against that envelope:
3870
3870
 
3871
3871
  - **Lookup steps**: `{"statusCode": 200, "data": [<result records>],
3872
- "errors": []}` — `data` holds the records the lookup returned, so
3873
- extracts must start from it: `data[0].name` copies a field of the
3874
- first result, `data` copies the whole result array. A bare
3875
- result-record field name (e.g. `name`) resolves to nothing and merges
3876
- nothing.
3872
+ "errors": []}` — `data` holds the records the lookup step returns,
3873
+ AFTER the export's own `transform` and output `filter` have run, so
3874
+ extracts must start from it and name transformed fields by their
3875
+ transformed name: `data[0].name` copies a field of the first result,
3876
+ `data` copies the whole result array. A bare result-record field name
3877
+ (e.g. `name`) resolves to nothing and merges nothing, and so does the
3878
+ raw response path a transform consumed.
3877
3879
  - **Import steps**: `{"id": "<destination record id>", "statusCode": 200,
3878
- "ignored": false, "errors": [], "_json": <raw destination response>}` —
3879
- use `id` for the destination-assigned id and `_json.<path>` for fields
3880
- inside the destination's response body. The full envelope (including
3881
- `id`) is present on real runs and in flow-builder previews; flow TEST
3882
- runs never execute imports, and their mock-built envelope carries no
3883
- `id` — an `extract: "id"` merges nothing in a test run even though it
3884
- works on real runs.
3880
+ "ignored": false, "errors": [], "_json": <raw destination response>,
3881
+ ...<response body fields flattened at the root>}` — use `id` for the
3882
+ destination-assigned id and `_json.<path>` (or the flattened
3883
+ `<path>`) for fields inside the destination's response body. The full
3884
+ envelope (including `id`) is present on real runs and in flow-builder
3885
+ previews; flow TEST runs never execute imports, and their mock-built
3886
+ envelope carries no `id` — an `extract: "id"` merges nothing in a test
3887
+ run even though it works on real runs.
3888
+
3889
+ An `extract` may also be a Handlebars expression. It evaluates against
3890
+ the same envelope as a plain path, so every path inside `{{ }}` starts
3891
+ where the plain paths start — `{{data.0.name}}`,
3892
+ `{{#compare data.0.count "==" 1}}yes{{else}}no{{/compare}}`,
3893
+ `{{#if data.length}}found{{/if}}` on a lookup; `{{_json.order.id}}` or
3894
+ `{{id}}` on an import. Index arrays with dots inside Handlebars
3895
+ (`data.0.name` or `data.[0].name`; `data[0].name` renders nothing), and
3896
+ expect a string result (`"1"`, `"false"`). There is no `record` object in
3897
+ this context: `{{record.<anything>}}` renders nothing. Prefer a plain
3898
+ path when the value is simply copied.
3885
3899
  x-celigo-ai-guidance:
3900
+ - |-
3901
+ Handlebars is allowed in `extract` but only rooted at the envelope —
3902
+ `{{data.0.x}}` on a lookup, `{{_json.x}}` / `{{id}}` on an import. The
3903
+ `record.` root belongs to import-mapping templates; here every
3904
+ `{{record.…}}` form renders nothing, silently, and `{{data[0].x}}`
3905
+ (bracket index inside Handlebars) renders nothing too. Use Handlebars
3906
+ only for a derived value (a flag, a concatenation); copy values with a
3907
+ plain path.
3908
+ - |-
3909
+ A lookup's `data[]` is the step's output after its `transform` and
3910
+ `filter`, so author extracts against the transformed records — never
3911
+ against the raw response the transform consumed, and never against a
3912
+ saved `mockOutput` as stored (it is the raw response; the transform
3913
+ runs on top of it in a test run).
3886
3914
  - |-
3887
3915
  Send `fields` and `lists` as bare arrays, exactly as GET returns them.
3888
3916
  Never wrap either in an object (e.g. `"fields": {"type": [...]}`): the
@@ -3924,22 +3952,29 @@ components:
3924
3952
  properties:
3925
3953
  extract:
3926
3954
  type: string
3955
+ x-celigo-agent:
3956
+ - handlebars
3927
3957
  description: |
3928
3958
  Path within the canonical response envelope to copy the value
3929
- from. For lookup steps, paths start from the envelope's `data`
3930
- array (`data[0].x` and `data.0.x` are equivalent; `data` alone
3931
- copies every result); for import steps, use the envelope fields
3932
- `id`, `statusCode`, `ignored`, or `_json.<path>` for the raw
3933
- response body. Paths that skip the envelope (bare response
3934
- field names) resolve to nothing, and a `[*]` wildcard is not
3935
- honored here — `data[*].x` merges nothing; iterate arrays with
3936
- `lists` instead.
3959
+ from, or a Handlebars expression over that same envelope. For
3960
+ lookup steps, paths start from the envelope's `data` array
3961
+ (`data[0].x` and `data.0.x` are equivalent; `data` alone
3962
+ copies every result) — a lookup result field written without
3963
+ the `data` prefix resolves to nothing. For import steps, use
3964
+ the envelope fields `id`, `statusCode`, `ignored`, `_json.<path>`
3965
+ for the raw response body, or the body field itself at the
3966
+ envelope root (`orderNumber` and `_json.orderNumber` read the
3967
+ same value). A `[*]` wildcard is not honored here — `data[*].x`
3968
+ merges nothing; iterate arrays with `lists` instead. Inside
3969
+ Handlebars, index with dots (`{{data.0.x}}`, never
3970
+ `{{data[0].x}}`) and never use a `record.` root.
3937
3971
  examples:
3938
3972
  - data[0].customer.name
3939
3973
  - data.0.fields.Product Name
3940
3974
  - data
3941
3975
  - id
3942
3976
  - _json.orderNumber
3977
+ - '{{#if data.length}}found{{else}}missing{{/if}}'
3943
3978
  generate:
3944
3979
  type: string
3945
3980
  description: |
package/dist/export.yml CHANGED
@@ -15929,19 +15929,38 @@ components:
15929
15929
 
15930
15930
  **Usage**
15931
15931
 
15932
- When executing a test run or configuring a flow, integrator.io will use this mock output
15933
- instead of executing the export to retrieve live data. This allows you to:
15932
+ In a flow test run, and for an upstream lookup during a page-processor preview
15933
+ (`previewPageProcessor`), integrator.io substitutes this mock output for the export's live
15934
+ response instead of calling the source. It is not substituted anywhere else: a target lookup
15935
+ in that preview runs its live query, `POST /v1/exports/preview` calls the source, and real
15936
+ runs ignore it. This allows you to:
15934
15937
  - Test mappings with representative data
15935
15938
  - Configure downstream flow steps without waiting for real data
15936
15939
  - Simulate various data scenarios
15937
15940
 
15941
+ Where it is substituted, the records stand in for the RAW parsed response: the export's own
15942
+ `transform` and output `filter` still run on top of them, so downstream steps — and a
15943
+ lookup's results mapping — see the transformed, filtered records, not the shape stored here.
15944
+
15938
15945
  **Limitations**
15939
15946
 
15940
15947
  - Maximum of 10 records
15941
15948
  - Maximum size of 1 MB
15942
15949
  - Must follow the canonical format shown above
15943
15950
 
15944
- Mock output can be populated automatically from preview data or entered manually.
15951
+ Mock output can be populated automatically from preview data (which is the parsed response,
15952
+ before `transform` / `filter`) or entered manually.
15953
+ x-celigo-ai-guidance:
15954
+ - |-
15955
+ Store the RAW parsed response records here, never transformed ones — the platform runs
15956
+ the export's `transform` and `filter` on the mock exactly as on live data, and a
15957
+ pre-transformed mock would be transformed twice. When you read `mockOutput` to learn
15958
+ what a lookup returns, apply the transform first; a results mapping authored against
15959
+ the stored shape walks paths that do not exist at runtime.
15960
+ - |-
15961
+ A saved mockOutput is read in exactly two places — a flow test run, and an upstream lookup
15962
+ during a page-processor preview. A target lookup's preview, `POST /v1/exports/preview` and
15963
+ every real run call the source and never read it.
15945
15964
  properties:
15946
15965
  page_of_records:
15947
15966
  type: array
package/dist/flow.yml CHANGED
@@ -4135,20 +4135,48 @@ components:
4135
4135
  extracts evaluate against that envelope:
4136
4136
 
4137
4137
  - **Lookup steps**: `{"statusCode": 200, "data": [<result records>],
4138
- "errors": []}` — `data` holds the records the lookup returned, so
4139
- extracts must start from it: `data[0].name` copies a field of the
4140
- first result, `data` copies the whole result array. A bare
4141
- result-record field name (e.g. `name`) resolves to nothing and merges
4142
- nothing.
4138
+ "errors": []}` — `data` holds the records the lookup step returns,
4139
+ AFTER the export's own `transform` and output `filter` have run, so
4140
+ extracts must start from it and name transformed fields by their
4141
+ transformed name: `data[0].name` copies a field of the first result,
4142
+ `data` copies the whole result array. A bare result-record field name
4143
+ (e.g. `name`) resolves to nothing and merges nothing, and so does the
4144
+ raw response path a transform consumed.
4143
4145
  - **Import steps**: `{"id": "<destination record id>", "statusCode": 200,
4144
- "ignored": false, "errors": [], "_json": <raw destination response>}` —
4145
- use `id` for the destination-assigned id and `_json.<path>` for fields
4146
- inside the destination's response body. The full envelope (including
4147
- `id`) is present on real runs and in flow-builder previews; flow TEST
4148
- runs never execute imports, and their mock-built envelope carries no
4149
- `id` — an `extract: "id"` merges nothing in a test run even though it
4150
- works on real runs.
4146
+ "ignored": false, "errors": [], "_json": <raw destination response>,
4147
+ ...<response body fields flattened at the root>}` — use `id` for the
4148
+ destination-assigned id and `_json.<path>` (or the flattened
4149
+ `<path>`) for fields inside the destination's response body. The full
4150
+ envelope (including `id`) is present on real runs and in flow-builder
4151
+ previews; flow TEST runs never execute imports, and their mock-built
4152
+ envelope carries no `id` — an `extract: "id"` merges nothing in a test
4153
+ run even though it works on real runs.
4154
+
4155
+ An `extract` may also be a Handlebars expression. It evaluates against
4156
+ the same envelope as a plain path, so every path inside `{{ }}` starts
4157
+ where the plain paths start — `{{data.0.name}}`,
4158
+ `{{#compare data.0.count "==" 1}}yes{{else}}no{{/compare}}`,
4159
+ `{{#if data.length}}found{{/if}}` on a lookup; `{{_json.order.id}}` or
4160
+ `{{id}}` on an import. Index arrays with dots inside Handlebars
4161
+ (`data.0.name` or `data.[0].name`; `data[0].name` renders nothing), and
4162
+ expect a string result (`"1"`, `"false"`). There is no `record` object in
4163
+ this context: `{{record.<anything>}}` renders nothing. Prefer a plain
4164
+ path when the value is simply copied.
4151
4165
  x-celigo-ai-guidance:
4166
+ - |-
4167
+ Handlebars is allowed in `extract` but only rooted at the envelope —
4168
+ `{{data.0.x}}` on a lookup, `{{_json.x}}` / `{{id}}` on an import. The
4169
+ `record.` root belongs to import-mapping templates; here every
4170
+ `{{record.…}}` form renders nothing, silently, and `{{data[0].x}}`
4171
+ (bracket index inside Handlebars) renders nothing too. Use Handlebars
4172
+ only for a derived value (a flag, a concatenation); copy values with a
4173
+ plain path.
4174
+ - |-
4175
+ A lookup's `data[]` is the step's output after its `transform` and
4176
+ `filter`, so author extracts against the transformed records — never
4177
+ against the raw response the transform consumed, and never against a
4178
+ saved `mockOutput` as stored (it is the raw response; the transform
4179
+ runs on top of it in a test run).
4152
4180
  - |-
4153
4181
  Send `fields` and `lists` as bare arrays, exactly as GET returns them.
4154
4182
  Never wrap either in an object (e.g. `"fields": {"type": [...]}`): the
@@ -4190,22 +4218,29 @@ components:
4190
4218
  properties:
4191
4219
  extract:
4192
4220
  type: string
4221
+ x-celigo-agent:
4222
+ - handlebars
4193
4223
  description: |
4194
4224
  Path within the canonical response envelope to copy the value
4195
- from. For lookup steps, paths start from the envelope's `data`
4196
- array (`data[0].x` and `data.0.x` are equivalent; `data` alone
4197
- copies every result); for import steps, use the envelope fields
4198
- `id`, `statusCode`, `ignored`, or `_json.<path>` for the raw
4199
- response body. Paths that skip the envelope (bare response
4200
- field names) resolve to nothing, and a `[*]` wildcard is not
4201
- honored here — `data[*].x` merges nothing; iterate arrays with
4202
- `lists` instead.
4225
+ from, or a Handlebars expression over that same envelope. For
4226
+ lookup steps, paths start from the envelope's `data` array
4227
+ (`data[0].x` and `data.0.x` are equivalent; `data` alone
4228
+ copies every result) — a lookup result field written without
4229
+ the `data` prefix resolves to nothing. For import steps, use
4230
+ the envelope fields `id`, `statusCode`, `ignored`, `_json.<path>`
4231
+ for the raw response body, or the body field itself at the
4232
+ envelope root (`orderNumber` and `_json.orderNumber` read the
4233
+ same value). A `[*]` wildcard is not honored here — `data[*].x`
4234
+ merges nothing; iterate arrays with `lists` instead. Inside
4235
+ Handlebars, index with dots (`{{data.0.x}}`, never
4236
+ `{{data[0].x}}`) and never use a `record.` root.
4203
4237
  examples:
4204
4238
  - data[0].customer.name
4205
4239
  - data.0.fields.Product Name
4206
4240
  - data
4207
4241
  - id
4208
4242
  - _json.orderNumber
4243
+ - '{{#if data.length}}found{{else}}missing{{/if}}'
4209
4244
  generate:
4210
4245
  type: string
4211
4246
  description: |
package/dist/tool.yml CHANGED
@@ -6033,11 +6033,21 @@ components:
6033
6033
  can read them. Extracts do NOT read the raw application
6034
6034
  response — they evaluate against the platform's canonical
6035
6035
  per-record envelope: for lookups (`type: "export"`) that is
6036
- `{"statusCode", "data": [<result records>], "errors"}`, so
6037
- paths must start from `data` (e.g. `data[0].name`); for
6038
- imports it is `{"id", "statusCode", "ignored", "_json"}`,
6039
- so use `id` or `_json.<path>`. Bare result-record field
6040
- names resolve to nothing and merge nothing.
6036
+ `{"statusCode", "data": [<result records>], "errors"}`
6037
+ where `data` holds the records AFTER the export's own
6038
+ `transform` and output `filter`, so paths must start from
6039
+ `data` and name transformed fields by their transformed
6040
+ name (e.g. `data[0].name`) — a lookup result field
6041
+ written without the `data` prefix resolves to nothing;
6042
+ for imports it is `{"id", "statusCode", "ignored",
6043
+ "_json", ...<body fields flattened>}`, so use `id`,
6044
+ `_json.<path>`, or the body field itself at the root
6045
+ (`orderNumber` and `_json.orderNumber` read the same
6046
+ value). An extract may be a Handlebars expression over
6047
+ the same envelope (`{{data.0.name}}`,
6048
+ `{{#if data.length}}found{{/if}}`; dot indexes only; a
6049
+ string result); there is no `record` object in this
6050
+ context, so `{{record.…}}` renders nothing.
6041
6051
  properties:
6042
6052
  fields:
6043
6053
  type: array
@@ -6047,15 +6057,20 @@ components:
6047
6057
  properties:
6048
6058
  extract:
6049
6059
  type: string
6060
+ x-celigo-agent:
6061
+ - handlebars
6050
6062
  description: |
6051
6063
  Path within the canonical response envelope to
6052
6064
  copy the value from (`data[0].x` / `data.0.x`
6053
- for lookups; `id` or `_json.<path>` for
6054
- imports).
6065
+ for lookups; `id`, `_json.<path>` or the
6066
+ flattened body field `<path>` for imports), or
6067
+ a Handlebars expression over that envelope (dot
6068
+ indexes inside `{{ }}`, never a `record.` root).
6055
6069
  examples:
6056
6070
  - data[0].customer.name
6057
6071
  - data.0.fields.Product Name
6058
6072
  - id
6073
+ - '{{#if data.length}}found{{else}}missing{{/if}}'
6059
6074
  generate:
6060
6075
  type: string
6061
6076
  description: |
@@ -36177,19 +36192,38 @@ components:
36177
36192
 
36178
36193
  **Usage**
36179
36194
 
36180
- When executing a test run or configuring a flow, integrator.io will use this mock output
36181
- instead of executing the export to retrieve live data. This allows you to:
36195
+ In a flow test run, and for an upstream lookup during a page-processor preview
36196
+ (`previewPageProcessor`), integrator.io substitutes this mock output for the export's live
36197
+ response instead of calling the source. It is not substituted anywhere else: a target lookup
36198
+ in that preview runs its live query, `POST /v1/exports/preview` calls the source, and real
36199
+ runs ignore it. This allows you to:
36182
36200
  - Test mappings with representative data
36183
36201
  - Configure downstream flow steps without waiting for real data
36184
36202
  - Simulate various data scenarios
36185
36203
 
36204
+ Where it is substituted, the records stand in for the RAW parsed response: the export's own
36205
+ `transform` and output `filter` still run on top of them, so downstream steps — and a
36206
+ lookup's results mapping — see the transformed, filtered records, not the shape stored here.
36207
+
36186
36208
  **Limitations**
36187
36209
 
36188
36210
  - Maximum of 10 records
36189
36211
  - Maximum size of 1 MB
36190
36212
  - Must follow the canonical format shown above
36191
36213
 
36192
- Mock output can be populated automatically from preview data or entered manually.
36214
+ Mock output can be populated automatically from preview data (which is the parsed response,
36215
+ before `transform` / `filter`) or entered manually.
36216
+ x-celigo-ai-guidance:
36217
+ - |-
36218
+ Store the RAW parsed response records here, never transformed ones — the platform runs
36219
+ the export's `transform` and `filter` on the mock exactly as on live data, and a
36220
+ pre-transformed mock would be transformed twice. When you read `mockOutput` to learn
36221
+ what a lookup returns, apply the transform first; a results mapping authored against
36222
+ the stored shape walks paths that do not exist at runtime.
36223
+ - |-
36224
+ A saved mockOutput is read in exactly two places — a flow test run, and an upstream lookup
36225
+ during a page-processor preview. A target lookup's preview, `POST /v1/exports/preview` and
36226
+ every real run call the source and never read it.
36193
36227
  properties:
36194
36228
  page_of_records:
36195
36229
  type: array
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@celigo/api-specs",
3
- "version": "0.2.80",
3
+ "version": "0.2.81",
4
4
  "private": false,
5
5
  "description": "Public OpenAPI bundles (dist/) and the celigo-cli lint schema pack (schemas.json).",
6
6
  "keywords": [
package/schemas.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "provenance": {
3
3
  "repo": "celigo/integrator-api-specs",
4
- "iasCommit": "09c1f65",
4
+ "iasCommit": "83152dc",
5
5
  "generatedAt": "2026-10-08"
6
6
  },
7
7
  "roots": {