@celigo/api-specs 0.2.126 → 0.2.127

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
@@ -3841,7 +3841,11 @@ components:
3841
3841
  field mapped to `internalid` is overridden by it. When the incoming record
3842
3842
  already carries the NetSuite internal ID, point the lookup at that field with
3843
3843
  the expression form — `["internalid","is","{{{id}}}"]` — rather than removing
3844
- the lookup.
3844
+ the lookup. Only when every record carries it: on `restletVersion:
3845
+ suiteapp2.0` a record whose field is empty does not fall through to
3846
+ "create" on `addupdate` — the empty value is searched as `isempty` and
3847
+ can match an existing record (see `expression`; SuiteBundle and SuiteApp
3848
+ 1.0 create in that case).
3845
3849
  properties:
3846
3850
  extract:
3847
3851
  type: string
@@ -3967,6 +3971,21 @@ components:
3967
3971
  - DO NOT use `jsonSerialize` here — search expressions take
3968
3972
  scalar literals, not serialized JSON. Use `{{{id}}}` or
3969
3973
  `{{{[Field Name]}}}` directly.
3974
+ - |-
3975
+ ## A substitution that renders empty is not "no match"
3976
+
3977
+ When the source field is absent or empty, `["internalid","is","{{{id}}}"]`
3978
+ renders `["internalid","is",""]`, and the SuiteApp rewrites an empty
3979
+ `is` / `equalto` / `internalid anyof` value to `isempty` before the
3980
+ search. On `restletVersion: suiteapp2.0` that search is not treated as
3981
+ "no match": it can return existing records, and `addupdate` then
3982
+ updates one of them — an unrelated record receives the mapping (seen
3983
+ in production as `cant_modify_sub` on a customer the record never
3984
+ named). SuiteBundle and SuiteApp 1.0 discard a blank `internalid`
3985
+ match and create. Design so the operational lookup never renders
3986
+ empty: key it on a value every record carries (the source id stored
3987
+ as `externalid`), or route records without a destination id to a
3988
+ separate `add` import.
3970
3989
  - |-
3971
3990
  ## Body-level only
3972
3991
 
package/dist/tool.yml CHANGED
@@ -15422,7 +15422,11 @@ components:
15422
15422
  field mapped to `internalid` is overridden by it. When the incoming record
15423
15423
  already carries the NetSuite internal ID, point the lookup at that field with
15424
15424
  the expression form — `["internalid","is","{{{id}}}"]` — rather than removing
15425
- the lookup.
15425
+ the lookup. Only when every record carries it: on `restletVersion:
15426
+ suiteapp2.0` a record whose field is empty does not fall through to
15427
+ "create" on `addupdate` — the empty value is searched as `isempty` and
15428
+ can match an existing record (see `expression`; SuiteBundle and SuiteApp
15429
+ 1.0 create in that case).
15426
15430
  properties:
15427
15431
  extract:
15428
15432
  type: string
@@ -15548,6 +15552,21 @@ components:
15548
15552
  - DO NOT use `jsonSerialize` here — search expressions take
15549
15553
  scalar literals, not serialized JSON. Use `{{{id}}}` or
15550
15554
  `{{{[Field Name]}}}` directly.
15555
+ - |-
15556
+ ## A substitution that renders empty is not "no match"
15557
+
15558
+ When the source field is absent or empty, `["internalid","is","{{{id}}}"]`
15559
+ renders `["internalid","is",""]`, and the SuiteApp rewrites an empty
15560
+ `is` / `equalto` / `internalid anyof` value to `isempty` before the
15561
+ search. On `restletVersion: suiteapp2.0` that search is not treated as
15562
+ "no match": it can return existing records, and `addupdate` then
15563
+ updates one of them — an unrelated record receives the mapping (seen
15564
+ in production as `cant_modify_sub` on a customer the record never
15565
+ named). SuiteBundle and SuiteApp 1.0 discard a blank `internalid`
15566
+ match and create. Design so the operational lookup never renders
15567
+ empty: key it on a value every record carries (the source id stored
15568
+ as `externalid`), or route records without a destination id to a
15569
+ separate `add` import.
15551
15570
  - |-
15552
15571
  ## Body-level only
15553
15572
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@celigo/api-specs",
3
- "version": "0.2.126",
3
+ "version": "0.2.127",
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": "0d0dde72",
4
+ "iasCommit": "2882b3ab",
5
5
  "generatedAt": "2026-10-20"
6
6
  },
7
7
  "roots": {