@celigo/api-specs 0.2.111 → 0.2.112

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/import.yml CHANGED
@@ -3943,6 +3943,15 @@ components:
3943
3943
  - DO NOT use `jsonSerialize` here — search expressions take
3944
3944
  scalar literals, not serialized JSON. Use `{{{id}}}` or
3945
3945
  `{{{[Field Name]}}}` directly.
3946
+ - |-
3947
+ ## Body-level only
3948
+
3949
+ This lookup identifies the record being imported, so bare
3950
+ body fields are the right paths here. A per-field lookup
3951
+ attached to a sublist row (`lookups[]` referenced from
3952
+ `mapping.lists[].fields[].lookupName`) is different: its
3953
+ expression addresses the current line with
3954
+ `<array>[*].<field>` — see `lookups[].expression`.
3946
3955
  hooks:
3947
3956
  type: object
3948
3957
  description: |
@@ -4288,6 +4297,13 @@ components:
4288
4297
  scalar extracts tag along.
4289
4298
  If no child uses `[*]` and none set `extract` at all (every child is a `hardCodedValue`),
4290
4299
  the sublist renders a single static line.
4300
+ - |-
4301
+ A row that resolves its value through `lookupName`
4302
+ (typically `extract: ""`) is driven by the sibling
4303
+ rows' `[*]` extracts, and the lookup's `expression`
4304
+ addresses the current line with the same
4305
+ `<array>[*].<field>` path — see
4306
+ `netsuite_da.lookups[].expression`.
4291
4307
  generate:
4292
4308
  type: string
4293
4309
  description: NetSuite sublist field ID to write to.
@@ -4524,10 +4540,69 @@ components:
4524
4540
  - internalid
4525
4541
  expression:
4526
4542
  type: string
4543
+ x-celigo-agent:
4544
+ - handlebars
4527
4545
  description: |-
4528
4546
  Optional advanced-search expression (NetSuite saved-search
4529
4547
  DSL) for multi-criterion lookups. When present, supersedes
4530
4548
  `searchField` / `operator` — those fields are ignored.
4549
+ Handlebars inside the expression is rendered against the
4550
+ whole source record before the search runs; a lookup on a
4551
+ sublist row reaches the current line through
4552
+ `<array>[*].<field>` (for example `line_items[*].sku`).
4553
+ x-celigo-ai-guidance:
4554
+ - |-
4555
+ ## Evaluation context — the whole source record, no `record.` prefix
4556
+
4557
+ The expression's Handlebars renders against the incoming
4558
+ source record as the context root (the record is NOT
4559
+ wrapped under `record`), then the rendered JSON array is
4560
+ sent to NetSuite as the search criteria. Body-level fields
4561
+ are addressed bare: `{{{id}}}`, `{{{email}}}`.
4562
+ - |-
4563
+ ## Sublist-row lookups address the line with `<array>[*].<field>`
4564
+
4565
+ A lookup referenced from a sublist mapping row
4566
+ (`mapping.lists[].fields[].lookupName`) still receives the
4567
+ whole record; the current line's fields are reached with the
4568
+ same bracket-star path the sublist extracts use —
4569
+ `{{{line_items[*].sku}}}` resolves the line's item (one line
4570
+ per sublist row). A bare line field (`{{sku}}`,
4571
+ `{{#contains sku "_"}}`) is undefined at the record root: a
4572
+ helper that receives it fails every record with
4573
+ `INVALID_HANDLE_BAR_EXPRESSION` — `Could not compile handle
4574
+ bar "<expression>" because "Cannot call method "indexOf" of
4575
+ undefined"` — before anything reaches NetSuite. When an
4576
+ audit diff shows `<array>[*].` removed from the expression
4577
+ right before such errors began, that edit is the cause; do
4578
+ not look for a line missing the field.
4579
+ - |-
4580
+ ## Rendered unmatched
4581
+
4582
+ A rendered value NetSuite does not match fails the record
4583
+ with `VALUE_LOOKUP_FAILED` — `Could not find a match for
4584
+ "<rendered criteria>" for the record type "<recordType>"`
4585
+ — quoting the criteria exactly as rendered, so the message
4586
+ shows what the expression produced for that line. With
4587
+ `allowFailures: true` the `default` value is used instead
4588
+ and no error is raised. Give every branch an output.
4589
+ - |-
4590
+ ## The mapping preview cannot evaluate `[*]` inside a block-helper argument
4591
+
4592
+ `PUT /v1/netsuiteDA/previewImportMappingFields` (the mapping
4593
+ editor's Preview) evaluates lookups for real — resolved
4594
+ internal ids appear in `nlobjSublistIds`, misses and
4595
+ compile errors in `data.mappingErrors[]` — and handles
4596
+ `[*]` in plain substitutions and inside a branch's output.
4597
+ It does NOT apply the per-line evaluation to `[*]` used as a
4598
+ block-helper ARGUMENT (`{{#if line_items[*].x}}`,
4599
+ `{{#contains line_items[*].sku "_"}}`): the sublist comes
4600
+ back EMPTY with no error, whatever the expression would do
4601
+ in a run. An empty preview is therefore no evidence about
4602
+ such an expression — never report it as "renders nothing"
4603
+ or as invalid on that basis; validate it with a run.
4604
+ `<array>.@index.<field>` is likewise not evaluable in the
4605
+ preview (the record is dropped with no error).
4531
4606
  operator:
4532
4607
  type: string
4533
4608
  description: |-
@@ -4585,6 +4660,14 @@ components:
4585
4660
  TWO locations: `netsuite_da.lookups` and top-level `lookups`.
4586
4661
  Both arrays must hold byte-for-byte identical content — the
4587
4662
  MappingsAgent writes both on every save.
4663
+ - |-
4664
+ ## One context for body and sublist lookups
4665
+ Every lookup's `expression` renders against the whole source
4666
+ record. A lookup referenced from a sublist row
4667
+ (`mapping.lists[].fields[].lookupName`) is evaluated once per
4668
+ line and addresses the current line with `<array>[*].<field>`
4669
+ — never a bare line field. See `expression` for the failure
4670
+ modes and the preview caveat.
4588
4671
  x-celigo-agent:
4589
4672
  - lookup
4590
4673
  rawOverride:
package/dist/tool.yml CHANGED
@@ -15522,6 +15522,15 @@ components:
15522
15522
  - DO NOT use `jsonSerialize` here — search expressions take
15523
15523
  scalar literals, not serialized JSON. Use `{{{id}}}` or
15524
15524
  `{{{[Field Name]}}}` directly.
15525
+ - |-
15526
+ ## Body-level only
15527
+
15528
+ This lookup identifies the record being imported, so bare
15529
+ body fields are the right paths here. A per-field lookup
15530
+ attached to a sublist row (`lookups[]` referenced from
15531
+ `mapping.lists[].fields[].lookupName`) is different: its
15532
+ expression addresses the current line with
15533
+ `<array>[*].<field>` — see `lookups[].expression`.
15525
15534
  hooks:
15526
15535
  type: object
15527
15536
  description: |
@@ -15867,6 +15876,13 @@ components:
15867
15876
  scalar extracts tag along.
15868
15877
  If no child uses `[*]` and none set `extract` at all (every child is a `hardCodedValue`),
15869
15878
  the sublist renders a single static line.
15879
+ - |-
15880
+ A row that resolves its value through `lookupName`
15881
+ (typically `extract: ""`) is driven by the sibling
15882
+ rows' `[*]` extracts, and the lookup's `expression`
15883
+ addresses the current line with the same
15884
+ `<array>[*].<field>` path — see
15885
+ `netsuite_da.lookups[].expression`.
15870
15886
  generate:
15871
15887
  type: string
15872
15888
  description: NetSuite sublist field ID to write to.
@@ -16103,10 +16119,69 @@ components:
16103
16119
  - internalid
16104
16120
  expression:
16105
16121
  type: string
16122
+ x-celigo-agent:
16123
+ - handlebars
16106
16124
  description: |-
16107
16125
  Optional advanced-search expression (NetSuite saved-search
16108
16126
  DSL) for multi-criterion lookups. When present, supersedes
16109
16127
  `searchField` / `operator` — those fields are ignored.
16128
+ Handlebars inside the expression is rendered against the
16129
+ whole source record before the search runs; a lookup on a
16130
+ sublist row reaches the current line through
16131
+ `<array>[*].<field>` (for example `line_items[*].sku`).
16132
+ x-celigo-ai-guidance:
16133
+ - |-
16134
+ ## Evaluation context — the whole source record, no `record.` prefix
16135
+
16136
+ The expression's Handlebars renders against the incoming
16137
+ source record as the context root (the record is NOT
16138
+ wrapped under `record`), then the rendered JSON array is
16139
+ sent to NetSuite as the search criteria. Body-level fields
16140
+ are addressed bare: `{{{id}}}`, `{{{email}}}`.
16141
+ - |-
16142
+ ## Sublist-row lookups address the line with `<array>[*].<field>`
16143
+
16144
+ A lookup referenced from a sublist mapping row
16145
+ (`mapping.lists[].fields[].lookupName`) still receives the
16146
+ whole record; the current line's fields are reached with the
16147
+ same bracket-star path the sublist extracts use —
16148
+ `{{{line_items[*].sku}}}` resolves the line's item (one line
16149
+ per sublist row). A bare line field (`{{sku}}`,
16150
+ `{{#contains sku "_"}}`) is undefined at the record root: a
16151
+ helper that receives it fails every record with
16152
+ `INVALID_HANDLE_BAR_EXPRESSION` — `Could not compile handle
16153
+ bar "<expression>" because "Cannot call method "indexOf" of
16154
+ undefined"` — before anything reaches NetSuite. When an
16155
+ audit diff shows `<array>[*].` removed from the expression
16156
+ right before such errors began, that edit is the cause; do
16157
+ not look for a line missing the field.
16158
+ - |-
16159
+ ## Rendered unmatched
16160
+
16161
+ A rendered value NetSuite does not match fails the record
16162
+ with `VALUE_LOOKUP_FAILED` — `Could not find a match for
16163
+ "<rendered criteria>" for the record type "<recordType>"`
16164
+ — quoting the criteria exactly as rendered, so the message
16165
+ shows what the expression produced for that line. With
16166
+ `allowFailures: true` the `default` value is used instead
16167
+ and no error is raised. Give every branch an output.
16168
+ - |-
16169
+ ## The mapping preview cannot evaluate `[*]` inside a block-helper argument
16170
+
16171
+ `PUT /v1/netsuiteDA/previewImportMappingFields` (the mapping
16172
+ editor's Preview) evaluates lookups for real — resolved
16173
+ internal ids appear in `nlobjSublistIds`, misses and
16174
+ compile errors in `data.mappingErrors[]` — and handles
16175
+ `[*]` in plain substitutions and inside a branch's output.
16176
+ It does NOT apply the per-line evaluation to `[*]` used as a
16177
+ block-helper ARGUMENT (`{{#if line_items[*].x}}`,
16178
+ `{{#contains line_items[*].sku "_"}}`): the sublist comes
16179
+ back EMPTY with no error, whatever the expression would do
16180
+ in a run. An empty preview is therefore no evidence about
16181
+ such an expression — never report it as "renders nothing"
16182
+ or as invalid on that basis; validate it with a run.
16183
+ `<array>.@index.<field>` is likewise not evaluable in the
16184
+ preview (the record is dropped with no error).
16110
16185
  operator:
16111
16186
  type: string
16112
16187
  description: |-
@@ -16164,6 +16239,14 @@ components:
16164
16239
  TWO locations: `netsuite_da.lookups` and top-level `lookups`.
16165
16240
  Both arrays must hold byte-for-byte identical content — the
16166
16241
  MappingsAgent writes both on every save.
16242
+ - |-
16243
+ ## One context for body and sublist lookups
16244
+ Every lookup's `expression` renders against the whole source
16245
+ record. A lookup referenced from a sublist row
16246
+ (`mapping.lists[].fields[].lookupName`) is evaluated once per
16247
+ line and addresses the current line with `<array>[*].<field>`
16248
+ — never a bare line field. See `expression` for the failure
16249
+ modes and the preview caveat.
16167
16250
  x-celigo-agent:
16168
16251
  - lookup
16169
16252
  rawOverride:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@celigo/api-specs",
3
- "version": "0.2.111",
3
+ "version": "0.2.112",
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,8 +1,8 @@
1
1
  {
2
2
  "provenance": {
3
3
  "repo": "celigo/integrator-api-specs",
4
- "iasCommit": "5353c280",
5
- "generatedAt": "2026-10-14"
4
+ "iasCommit": "290f7bc1",
5
+ "generatedAt": "2026-10-15"
6
6
  },
7
7
  "roots": {
8
8
  "aiagent": 133,