@celigo/api-specs 0.2.128 → 0.2.129
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 +8 -9
- package/dist/alert.yml +2 -2
- package/dist/asynchelper.yml +5 -6
- package/dist/audit.yml +6 -6
- package/dist/editransaction.yml +2 -2
- package/dist/eventreport.yml +2 -2
- package/dist/export.yml +14 -16
- package/dist/filedefinitionrules.yml +1 -1
- package/dist/flow.yml +3 -3
- package/dist/import.yml +78 -141
- package/dist/job.yml +2 -2
- package/dist/notification.yml +6 -6
- package/dist/script.yml +2 -2
- package/dist/stack.yml +2 -2
- package/dist/subscription.yml +6 -5
- package/dist/sync.yml +12 -12
- package/dist/tool.yml +80 -144
- package/package.json +1 -1
- package/schemas.json +1 -1
package/dist/sync.yml
CHANGED
|
@@ -1169,7 +1169,7 @@ paths:
|
|
|
1169
1169
|
numLoadedRecords: 12450
|
|
1170
1170
|
numExtractedRecords: 12450
|
|
1171
1171
|
numTablesSynced: 3
|
|
1172
|
-
triggeredBy: user:
|
|
1172
|
+
triggeredBy: user:jane@example.com
|
|
1173
1173
|
runType: normal
|
|
1174
1174
|
- _id: 6821b00a39db7c2b9cdc0d10
|
|
1175
1175
|
flowExecutionGroupId: 6821b00a39db7c2b9cdc0d09
|
|
@@ -1347,7 +1347,7 @@ paths:
|
|
|
1347
1347
|
numLoadedRecords: 12450
|
|
1348
1348
|
numExtractedRecords: 12450
|
|
1349
1349
|
numTablesSynced: 3
|
|
1350
|
-
triggeredBy: user:
|
|
1350
|
+
triggeredBy: user:jane@example.com
|
|
1351
1351
|
runType: normal
|
|
1352
1352
|
running:
|
|
1353
1353
|
summary: A currently running sync job
|
|
@@ -1997,7 +1997,7 @@ paths:
|
|
|
1997
1997
|
type: string
|
|
1998
1998
|
description: User display name.
|
|
1999
1999
|
examples:
|
|
2000
|
-
-
|
|
2000
|
+
- Jane Doe
|
|
2001
2001
|
fieldChanges:
|
|
2002
2002
|
type: array
|
|
2003
2003
|
description: Fields that were modified. Dot-notation paths reach into nested objects.
|
|
@@ -2043,7 +2043,7 @@ paths:
|
|
|
2043
2043
|
byUser:
|
|
2044
2044
|
_id: 624cb0346309dc3a543733a2
|
|
2045
2045
|
email: user@example.com
|
|
2046
|
-
name:
|
|
2046
|
+
name: Jane Doe
|
|
2047
2047
|
fieldChanges:
|
|
2048
2048
|
- fieldPath: name
|
|
2049
2049
|
oldValue: ''
|
|
@@ -2061,7 +2061,7 @@ paths:
|
|
|
2061
2061
|
byUser:
|
|
2062
2062
|
_id: 624cb0346309dc3a543733a2
|
|
2063
2063
|
email: user@example.com
|
|
2064
|
-
name:
|
|
2064
|
+
name: Jane Doe
|
|
2065
2065
|
fieldChanges:
|
|
2066
2066
|
- fieldPath: salesforce.refreshToken
|
|
2067
2067
|
newValue: '********'
|
|
@@ -4142,7 +4142,7 @@ components:
|
|
|
4142
4142
|
Database in the destination warehouse the sync loads into; it must already exist.
|
|
4143
4143
|
For Google BigQuery this is the GCP project id the tables are created in
|
|
4144
4144
|
(`project.dataset.table`).
|
|
4145
|
-
x-celigo-ui-override: For a BigQuery destination the Create Sync wizard shows no database picker and fills this field with the selected connection's rdbms.bigquery.projectId
|
|
4145
|
+
x-celigo-ui-override: For a BigQuery destination the Create Sync wizard shows no database picker and fills this field with the selected connection's rdbms.bigquery.projectId.
|
|
4146
4146
|
examples:
|
|
4147
4147
|
- ANALYTICS_DB
|
|
4148
4148
|
schema:
|
|
@@ -4151,7 +4151,7 @@ components:
|
|
|
4151
4151
|
Schema within `database` where the sync creates and loads tables; created on save
|
|
4152
4152
|
when it does not exist. For Google BigQuery this is the dataset name, with case
|
|
4153
4153
|
preserved.
|
|
4154
|
-
x-celigo-ui-override: For a BigQuery destination the Create Sync wizard labels this field "dataset" and accepts only letters, digits and underscore (no $), starting with a letter or underscore, at most 1024 characters
|
|
4154
|
+
x-celigo-ui-override: For a BigQuery destination the Create Sync wizard labels this field "dataset" and accepts only letters, digits and underscore (no $), starting with a letter or underscore, at most 1024 characters; Snowflake and NSAW validation is unchanged.
|
|
4155
4155
|
examples:
|
|
4156
4156
|
- salesforce_raw
|
|
4157
4157
|
tablePrefix:
|
|
@@ -4743,13 +4743,13 @@ components:
|
|
|
4743
4743
|
readOnly: true
|
|
4744
4744
|
description: Who or what triggered this sync run (e.g. `"user:email"`, `"schedule"`).
|
|
4745
4745
|
examples:
|
|
4746
|
-
- user:
|
|
4746
|
+
- user:jane@example.com
|
|
4747
4747
|
canceledBy:
|
|
4748
4748
|
type: string
|
|
4749
4749
|
readOnly: true
|
|
4750
4750
|
description: Who requested cancellation. Present once cancellation has been requested.
|
|
4751
4751
|
examples:
|
|
4752
|
-
- user:
|
|
4752
|
+
- user:jane@example.com
|
|
4753
4753
|
runType:
|
|
4754
4754
|
type: string
|
|
4755
4755
|
readOnly: true
|
|
@@ -4785,7 +4785,7 @@ components:
|
|
|
4785
4785
|
numLoadedRecords: 12450
|
|
4786
4786
|
numExtractedRecords: 12450
|
|
4787
4787
|
numTablesSynced: 3
|
|
4788
|
-
triggeredBy: user:
|
|
4788
|
+
triggeredBy: user:jane@example.com
|
|
4789
4789
|
runType: normal
|
|
4790
4790
|
- _id: 6821c01c39db7c2b9cdc0e40
|
|
4791
4791
|
flowExecutionGroupId: 6821c01c39db7c2b9cdc0e39
|
|
@@ -4798,7 +4798,7 @@ components:
|
|
|
4798
4798
|
numLoadedRecords: 0
|
|
4799
4799
|
numExtractedRecords: 0
|
|
4800
4800
|
numTablesSynced: 1
|
|
4801
|
-
triggeredBy: user:
|
|
4801
|
+
triggeredBy: user:jane@example.com
|
|
4802
4802
|
runType: resync
|
|
4803
4803
|
datasetIds:
|
|
4804
4804
|
- 6a559b547885d8f93921c2ba
|
|
@@ -4833,7 +4833,7 @@ components:
|
|
|
4833
4833
|
numLoadedRecords: 12450
|
|
4834
4834
|
numExtractedRecords: 12450
|
|
4835
4835
|
numTablesSynced: 3
|
|
4836
|
-
triggeredBy: user:
|
|
4836
|
+
triggeredBy: user:jane@example.com
|
|
4837
4837
|
runType: normal
|
|
4838
4838
|
totalCount: 1
|
|
4839
4839
|
SyncTableJob:
|
package/dist/tool.yml
CHANGED
|
@@ -4338,7 +4338,7 @@ components:
|
|
|
4338
4338
|
no message text) and never cascades or promotes on its own; `Draft`
|
|
4339
4339
|
descendants are kept as they are, and a `Draft` parent does not gate
|
|
4340
4340
|
its children. The UI's Set inactive on a parent marks the parent and
|
|
4341
|
-
every child `Inactive
|
|
4341
|
+
every child `Inactive`. Re-enabling a child
|
|
4342
4342
|
means re-enabling its ancestors in the same payload. Edits that keep
|
|
4343
4343
|
existing rows must carry their stored status forward — rewriting a
|
|
4344
4344
|
`Draft` or `Inactive` row to `Active` turns a row the user parked
|
|
@@ -5377,7 +5377,7 @@ components:
|
|
|
5377
5377
|
no message text) and never cascades or promotes on its own; `Draft`
|
|
5378
5378
|
descendants are kept as they are, and a `Draft` parent does not gate
|
|
5379
5379
|
its children. The UI's Set inactive on a parent marks the parent and
|
|
5380
|
-
every child `Inactive
|
|
5380
|
+
every child `Inactive`. Re-enabling a child
|
|
5381
5381
|
means re-enabling its ancestors in the same payload. Edits that keep
|
|
5382
5382
|
existing rows must carry their stored status forward — rewriting a
|
|
5383
5383
|
`Draft` or `Inactive` row to `Active` turns a row the user parked
|
|
@@ -6085,7 +6085,7 @@ components:
|
|
|
6085
6085
|
``{record: {...}, settings: ..., job: ...}`` (plus
|
|
6086
6086
|
``fileMeta`` on file-provider steps) — the
|
|
6087
6087
|
same runtime-context envelope Handlebars / SQL /
|
|
6088
|
-
GraphQL
|
|
6088
|
+
GraphQL templates render against. ``mappings[].extract``
|
|
6089
6089
|
JSONPath values MUST include the ``record.`` segment
|
|
6090
6090
|
— for example ``"$.record.orderId"`` or
|
|
6091
6091
|
``"$.record.customer.email"``. PLACEHOLDER extracts
|
|
@@ -6113,9 +6113,8 @@ components:
|
|
|
6113
6113
|
``inputContext: record`` makes the contract
|
|
6114
6114
|
self-documenting and prevents the transform from
|
|
6115
6115
|
drifting into envelope mode if an upstream change ever
|
|
6116
|
-
changes the platform default.
|
|
6117
|
-
|
|
6118
|
-
it into the generator's prompt so the JSONPath form
|
|
6116
|
+
changes the platform default. Read this value before
|
|
6117
|
+
writing ``mappings[].extract`` so the JSONPath form
|
|
6119
6118
|
matches the runtime root.
|
|
6120
6119
|
- |-
|
|
6121
6120
|
## fileMeta on file-provider steps
|
|
@@ -13579,30 +13578,19 @@ components:
|
|
|
13579
13578
|
would be bare ``{{{jsonSerialize record}}}`` with nothing
|
|
13580
13579
|
around it, you don't need a template at all.
|
|
13581
13580
|
|
|
13582
|
-
Production frequency: roughly 1 in 3 active HTTPImports leaves
|
|
13583
|
-
this field empty (~35% null / empty array); closer to 1 in 2
|
|
13584
|
-
once you count the additional ~12% of body entries that are
|
|
13585
|
-
blank strings. The dominant case is "no body template".
|
|
13586
|
-
|
|
13587
13581
|
Leave undefined for:
|
|
13588
13582
|
- REST APIs accepting JSON CRUD payloads (the destination
|
|
13589
13583
|
already wants exactly the post-mapped record shape).
|
|
13590
|
-
- GraphQL destinations — do NOT author the body template here.
|
|
13591
|
-
The dedicated GraphQL specialist owns the
|
|
13592
|
-
``{query, operationName, variables}`` shape and routes the
|
|
13593
|
-
post-mapped record into ``variables`` automatically. Roughly
|
|
13594
|
-
96% of all wrapped-``jsonSerialize record`` uses in production
|
|
13595
|
-
are GraphQL mutations; every one of those should go through
|
|
13596
|
-
the GraphQL specialist, not through this body template.
|
|
13597
13584
|
- Any case where the destination wants the mapped record as-is.
|
|
13585
|
+
|
|
13586
|
+
GraphQL destinations are different: the body is the stringified
|
|
13587
|
+
``{query, operationName, variables}`` envelope described under
|
|
13588
|
+
``formType``, with the post-mapped record passed in
|
|
13589
|
+
``variables``.
|
|
13598
13590
|
- |-
|
|
13599
|
-
## SET THIS FIELD when one of the
|
|
13591
|
+
## SET THIS FIELD when one of the patterns below applies
|
|
13600
13592
|
|
|
13601
|
-
|
|
13602
|
-
across HTTPImports in the last 30 days (Celigo-internal users
|
|
13603
|
-
excluded). Choose the pattern that fits the destination's
|
|
13604
|
-
shape, then write marker ``instructions`` describing intent
|
|
13605
|
-
(let the Handlebars specialist produce the literal template).
|
|
13593
|
+
Choose the pattern that fits the destination's shape.
|
|
13606
13594
|
|
|
13607
13595
|
### Pattern A — ``{{{jsonSerialize record}}}`` inside a static wrapper
|
|
13608
13596
|
|
|
@@ -13614,13 +13602,12 @@ components:
|
|
|
13614
13602
|
destination's field shape; the body owns the transport-level
|
|
13615
13603
|
scaffolding.
|
|
13616
13604
|
|
|
13617
|
-
|
|
13618
|
-
|
|
13619
|
-
|
|
13620
|
-
|
|
13621
|
-
"add a batch header with timestamp + interface name", etc.).
|
|
13605
|
+
Rare for non-GraphQL destinations, but real; the use cases
|
|
13606
|
+
that fit are obvious when the user describes them ("wrap each
|
|
13607
|
+
request in a SQS-style message envelope", "add a batch header
|
|
13608
|
+
with timestamp + interface name", etc.).
|
|
13622
13609
|
|
|
13623
|
-
|
|
13610
|
+
Typical shapes:
|
|
13624
13611
|
- Message-bus envelope:
|
|
13625
13612
|
``{"MessageBody": {"class": "EntityUpdate", "payload": {{{jsonSerialize record}}}}}``
|
|
13626
13613
|
- Metadata wrap:
|
|
@@ -13631,8 +13618,7 @@ components:
|
|
|
13631
13618
|
NEVER emit BARE ``{{{jsonSerialize record}}}`` with no wrapper.
|
|
13632
13619
|
The platform sends the post-mapped record as JSON automatically
|
|
13633
13620
|
when body is undefined; bare ``jsonSerialize record`` produces
|
|
13634
|
-
identical wire output
|
|
13635
|
-
entries — every one of those is redundant config the user has
|
|
13621
|
+
identical wire output, so it is redundant config the user has
|
|
13636
13622
|
to maintain for zero benefit.
|
|
13637
13623
|
|
|
13638
13624
|
### Pattern B — Batch / page wrapper around mapped records
|
|
@@ -13679,15 +13665,14 @@ components:
|
|
|
13679
13665
|
anti-pattern is the ``jsonSerialize`` wrap, not any particular
|
|
13680
13666
|
path shape.
|
|
13681
13667
|
|
|
13682
|
-
-
|
|
13668
|
+
- Essentially never needed.
|
|
13683
13669
|
- Failure mode: the body validator sees the PRE-mapped sample
|
|
13684
13670
|
shape, can't resolve the post-mapped path during validation,
|
|
13685
13671
|
and ``jsonSerialize`` on an unresolved path raises
|
|
13686
13672
|
``Helper {{jsonSerialize}} expects an argument`` — the
|
|
13687
13673
|
template fails validation even when it would render at
|
|
13688
|
-
runtime.
|
|
13689
|
-
|
|
13690
|
-
failure.
|
|
13674
|
+
runtime. Variations (``getValue`` wrappers, alternate paths)
|
|
13675
|
+
fail the same way.
|
|
13691
13676
|
|
|
13692
13677
|
If you find yourself wanting to reference a per-field
|
|
13693
13678
|
post-mapped scalar wrapped in ``jsonSerialize``, your situation
|
|
@@ -13750,16 +13735,6 @@ components:
|
|
|
13750
13735
|
before choosing: form-data APIs get the parts array above;
|
|
13751
13736
|
multipart/related APIs get the hand-authored document. Never
|
|
13752
13737
|
mix the two shapes in one body.
|
|
13753
|
-
- |-
|
|
13754
|
-
## Marker instructions style
|
|
13755
|
-
|
|
13756
|
-
When emitting a ``$agent: handlebars`` marker at this field,
|
|
13757
|
-
write the ``instructions`` as INTENT (what the body should
|
|
13758
|
-
produce: destination fields, shape, encoding), not as literal
|
|
13759
|
-
Handlebars syntax. Embedding literal ``{{{jsonSerialize record.X}}}``
|
|
13760
|
-
in the instructions risks the specialist following it verbatim
|
|
13761
|
-
even when a simpler template would work — one of the ways the
|
|
13762
|
-
per-field anti-pattern above gets introduced.
|
|
13763
13738
|
examples:
|
|
13764
13739
|
- - '{"name": "{{record.name}}", "email": "{{record.email}}"}'
|
|
13765
13740
|
- - '{"requestData": {{{jsonSerialize record}}}}'
|
|
@@ -13851,9 +13826,7 @@ components:
|
|
|
13851
13826
|
- |-
|
|
13852
13827
|
The value MUST match the ``name`` of a lookup entry in ``http.lookups``.
|
|
13853
13828
|
The lookup config itself (HTTP path, method, extract,
|
|
13854
|
-
fallback chain) is
|
|
13855
|
-
specialist via a ``$agent:
|
|
13856
|
-
lookup`` marker.
|
|
13829
|
+
fallback chain) is defined separately, in that entry.
|
|
13857
13830
|
- |-
|
|
13858
13831
|
## Mutually exclusive with ``existingExtract``
|
|
13859
13832
|
|
|
@@ -14333,9 +14306,8 @@ components:
|
|
|
14333
14306
|
|
|
14334
14307
|
The Celigo platform persists lookups in TWO locations on an HTTP
|
|
14335
14308
|
import: top-level ``lookups`` and ``http.lookups``. Both arrays
|
|
14336
|
-
MUST hold byte-for-byte identical content
|
|
14337
|
-
|
|
14338
|
-
callers never have to write both manually.
|
|
14309
|
+
MUST hold byte-for-byte identical content, so write both on
|
|
14310
|
+
every save.
|
|
14339
14311
|
- |-
|
|
14340
14312
|
## Static vs dynamic vs cached
|
|
14341
14313
|
|
|
@@ -14611,7 +14583,7 @@ components:
|
|
|
14611
14583
|
computedObject.fileName." — an error the platform labels source `internal` although the
|
|
14612
14584
|
template is the cause. The run-time-proven way to keep the source file's name on a
|
|
14613
14585
|
`blob: true` import is `{{record.fileMeta.fileName}}` on `file.fileName` with this field
|
|
14614
|
-
omitted (
|
|
14586
|
+
omitted (recorded runs of an FTP blob import set exactly that); the same template
|
|
14615
14587
|
on this field has not been run. The field's editor preview (data version 1, its default)
|
|
14616
14588
|
exposes the record as `data` —
|
|
14617
14589
|
the `{blobKey, fileMeta}` record on a blob import, the page's record array otherwise —
|
|
@@ -14991,8 +14963,8 @@ components:
|
|
|
14991
14963
|
## Mirror invariant
|
|
14992
14964
|
The Celigo platform persists lookups in TWO locations on a JDBC
|
|
14993
14965
|
import: top-level `lookups` and `jdbc.lookups`. Both arrays
|
|
14994
|
-
must hold byte-for-byte identical content
|
|
14995
|
-
|
|
14966
|
+
must hold byte-for-byte identical content, so write both on every
|
|
14967
|
+
save.
|
|
14996
14968
|
x-celigo-agent:
|
|
14997
14969
|
- lookup
|
|
14998
14970
|
Mongodb:
|
|
@@ -15471,25 +15443,22 @@ components:
|
|
|
15471
15443
|
substitutions FIRST against the incoming source record (pre-mapped),
|
|
15472
15444
|
then the substituted expression is sent to NetSuite as a saved-search query.
|
|
15473
15445
|
- |-
|
|
15474
|
-
## Handlebars conventions
|
|
15446
|
+
## Handlebars conventions
|
|
15475
15447
|
|
|
15476
15448
|
- **No `record.` prefix** — substitutions reference top-level
|
|
15477
15449
|
source-record fields directly. `{{{id}}}` / `{{{Id}}}` /
|
|
15478
15450
|
`{{{externalid}}}` / `{{{[Internal ID]}}}` — NOT
|
|
15479
|
-
`{{{record.id}}}`.
|
|
15480
|
-
|
|
15481
|
-
|
|
15482
|
-
|
|
15483
|
-
|
|
15484
|
-
where you want the platform's default HTML-escape (rare in
|
|
15485
|
-
this field).
|
|
15451
|
+
`{{{record.id}}}`. Top-level paths are the established
|
|
15452
|
+
convention.
|
|
15453
|
+
- **Triple braces `{{{...}}}`** are the preferred form;
|
|
15454
|
+
double-brace `{{...}}` also works for cases where you want
|
|
15455
|
+
the platform's default HTML-escape (rare in this field).
|
|
15486
15456
|
- **Bracket notation for field names with spaces or special
|
|
15487
15457
|
chars**: `{{{[Field With Spaces]}}}`, `{{{[Internal ID]}}}`.
|
|
15488
|
-
Anchored to ~10% of production expressions.
|
|
15489
15458
|
- |-
|
|
15490
15459
|
## Canonical patterns
|
|
15491
15460
|
|
|
15492
|
-
### Simple lookup by internal ID (most common
|
|
15461
|
+
### Simple lookup by internal ID (most common)
|
|
15493
15462
|
|
|
15494
15463
|
`["internalid","is","{{{id}}}"]`
|
|
15495
15464
|
|
|
@@ -15560,8 +15529,8 @@ components:
|
|
|
15560
15529
|
`is` / `equalto` / `internalid anyof` value to `isempty` before the
|
|
15561
15530
|
search. On `restletVersion: suiteapp2.0` that search is not treated as
|
|
15562
15531
|
"no match": it can return existing records, and `addupdate` then
|
|
15563
|
-
updates one of them — an unrelated record receives the mapping (
|
|
15564
|
-
|
|
15532
|
+
updates one of them — an unrelated record receives the mapping (for
|
|
15533
|
+
example, a `cant_modify_sub` error on a customer the record never
|
|
15565
15534
|
named). SuiteBundle and SuiteApp 1.0 discard a blank `internalid`
|
|
15566
15535
|
match and create. Design so the operational lookup never renders
|
|
15567
15536
|
empty: key it on a value every record carries (the source id stored
|
|
@@ -15648,10 +15617,6 @@ components:
|
|
|
15648
15617
|
- |-
|
|
15649
15618
|
Validated via the dedicated `PUT /v1/netsuiteDA/previewImportMappingFields`
|
|
15650
15619
|
endpoint (NOT `/v1/processors/mapperProcessor`).
|
|
15651
|
-
- |-
|
|
15652
|
-
Managed by the MappingsAgent (`$agent: mapping`) — resource-authoring
|
|
15653
|
-
agents must emit a specialist marker at this field rather than
|
|
15654
|
-
generating the mapping inline.
|
|
15655
15620
|
properties:
|
|
15656
15621
|
fields:
|
|
15657
15622
|
type: array
|
|
@@ -15728,8 +15693,8 @@ components:
|
|
|
15728
15693
|
this block ONLY when the destination record type genuinely requires the
|
|
15729
15694
|
subrecord.
|
|
15730
15695
|
- |-
|
|
15731
|
-
**
|
|
15732
|
-
|
|
15696
|
+
**Common `recordType` values** (most common
|
|
15697
|
+
first):
|
|
15733
15698
|
* `inventorydetail` — by far the most common.
|
|
15734
15699
|
Serial / lot / bin assignments on sales-order,
|
|
15735
15700
|
item-fulfillment, purchase-order, and inventory-
|
|
@@ -15799,8 +15764,8 @@ components:
|
|
|
15799
15764
|
type: string
|
|
15800
15765
|
description: |
|
|
15801
15766
|
Secondary reference-field identifier used on a
|
|
15802
|
-
small fraction of subrecord blocks
|
|
15803
|
-
|
|
15767
|
+
small fraction of subrecord blocks. Exact
|
|
15768
|
+
semantics are not publicly
|
|
15804
15769
|
documented by Celigo — match the value on
|
|
15805
15770
|
existing resources when present; do NOT
|
|
15806
15771
|
synthesize one. Leave unset unless a template
|
|
@@ -15999,9 +15964,8 @@ components:
|
|
|
15999
15964
|
this block ONLY when the destination record type genuinely requires the
|
|
16000
15965
|
subrecord.
|
|
16001
15966
|
- |-
|
|
16002
|
-
**
|
|
16003
|
-
|
|
16004
|
-
imports):
|
|
15967
|
+
**Common `recordType` values** (most
|
|
15968
|
+
common first):
|
|
16005
15969
|
* `inventorydetail` — by far the most
|
|
16006
15970
|
common. Serial / lot / bin assignments on
|
|
16007
15971
|
sales-order, item-fulfillment, purchase-
|
|
@@ -16069,9 +16033,9 @@ components:
|
|
|
16069
16033
|
type: string
|
|
16070
16034
|
description: |
|
|
16071
16035
|
Secondary reference-field identifier used
|
|
16072
|
-
on a small fraction of subrecord blocks
|
|
16073
|
-
|
|
16074
|
-
|
|
16036
|
+
on a small fraction of subrecord blocks.
|
|
16037
|
+
Exact semantics are not publicly
|
|
16038
|
+
documented by Celigo — match
|
|
16075
16039
|
the value on existing resources when
|
|
16076
16040
|
present; do NOT synthesize one. Leave
|
|
16077
16041
|
unset unless a template clearly requires
|
|
@@ -16351,8 +16315,8 @@ components:
|
|
|
16351
16315
|
## Mirror invariant
|
|
16352
16316
|
The Celigo platform persists NetSuite Distributed Import lookups in
|
|
16353
16317
|
TWO locations: `netsuite_da.lookups` and top-level `lookups`.
|
|
16354
|
-
Both arrays must hold byte-for-byte identical content
|
|
16355
|
-
|
|
16318
|
+
Both arrays must hold byte-for-byte identical content, so write
|
|
16319
|
+
both on every save.
|
|
16356
16320
|
- |-
|
|
16357
16321
|
## One context for body and sublist lookups
|
|
16358
16322
|
Every lookup's `expression` renders against the whole source
|
|
@@ -16481,8 +16445,8 @@ components:
|
|
|
16481
16445
|
**Mirror invariant**
|
|
16482
16446
|
The Celigo platform persists lookups in TWO locations on an RDBMS
|
|
16483
16447
|
import: top-level `lookups` and `rdbms.lookups`. Both arrays
|
|
16484
|
-
must hold byte-for-byte identical content
|
|
16485
|
-
|
|
16448
|
+
must hold byte-for-byte identical content, so write both on every
|
|
16449
|
+
save.
|
|
16486
16450
|
items:
|
|
16487
16451
|
type: object
|
|
16488
16452
|
properties:
|
|
@@ -16607,7 +16571,7 @@ components:
|
|
|
16607
16571
|
- **Nested fields**: `{{record.properties.email}}` (auto-quoted)
|
|
16608
16572
|
or `{{{record.properties.email}}}` (raw).
|
|
16609
16573
|
- |-
|
|
16610
|
-
## EXAMPLES
|
|
16574
|
+
## EXAMPLES
|
|
16611
16575
|
|
|
16612
16576
|
- INSERT (string columns, auto-quoted): `["INSERT INTO customers (name, email) VALUES ({{record.name}}, {{record.email}})"]`
|
|
16613
16577
|
- INSERT (mixed numeric + string): `["INSERT INTO orders (qty, sku) VALUES ({{{record.qty}}}, {{record.sku}})"]`
|
|
@@ -17468,8 +17432,7 @@ components:
|
|
|
17468
17432
|
"wrapper" JavaScript module that invokes a custom function (typically to
|
|
17469
17433
|
integrate with a system Celigo doesn't have a first-class connector for).
|
|
17470
17434
|
- |-
|
|
17471
|
-
Wrapper imports use Mapper 1.0 for field mappings and the generic Celigo lookup shape
|
|
17472
|
-
The MappingsAgent operates in `v1_standard` mode for this adaptor type —
|
|
17435
|
+
Wrapper imports use Mapper 1.0 for field mappings and the generic Celigo lookup shape:
|
|
17473
17436
|
mappings live in `resource.mapping` (fields/lists) and lookups mirror at
|
|
17474
17437
|
`resource.lookups` and `resource.wrapper.lookups`.
|
|
17475
17438
|
properties:
|
|
@@ -17517,8 +17480,8 @@ components:
|
|
|
17517
17480
|
## Mirror invariant
|
|
17518
17481
|
The Celigo platform persists lookups in TWO locations on a
|
|
17519
17482
|
Wrapper import: top-level `lookups` and `wrapper.lookups`.
|
|
17520
|
-
Both arrays must hold byte-for-byte identical content
|
|
17521
|
-
|
|
17483
|
+
Both arrays must hold byte-for-byte identical content, so write
|
|
17484
|
+
both on every save.
|
|
17522
17485
|
if:
|
|
17523
17486
|
not:
|
|
17524
17487
|
propertyNames:
|
|
@@ -17553,8 +17516,8 @@ components:
|
|
|
17553
17516
|
**Mirror invariant**
|
|
17554
17517
|
The Celigo platform stores lookups in TWO locations on a Salesforce
|
|
17555
17518
|
import resource: top-level ``lookups`` and ``salesforce.lookups``.
|
|
17556
|
-
Both arrays must hold byte-for-byte identical content
|
|
17557
|
-
|
|
17519
|
+
Both arrays must hold byte-for-byte identical content, so write
|
|
17520
|
+
both on every save.
|
|
17558
17521
|
|
|
17559
17522
|
**Static vs dynamic lookups**
|
|
17560
17523
|
- **Static** — only ``map`` + optional ``default``. No Salesforce
|
|
@@ -19720,10 +19683,8 @@ components:
|
|
|
19720
19683
|
update this field — the wrapper itself stays the same shape,
|
|
19721
19684
|
just points at a different Tool.
|
|
19722
19685
|
- |-
|
|
19723
|
-
|
|
19724
|
-
|
|
19725
|
-
when invoked from a flow / API / Tool dispatch path,
|
|
19726
|
-
through the Tool Builder which delegates to the Tool engine's brief-based entry point).
|
|
19686
|
+
Writing the wrapper does not create or change the Tool itself;
|
|
19687
|
+
author the Tool as its own resource through `/v1/tools`.
|
|
19727
19688
|
examples:
|
|
19728
19689
|
- 69ce8ae7cbbb51405ae42ae5
|
|
19729
19690
|
overrides:
|
|
@@ -25019,7 +24980,7 @@ components:
|
|
|
25019
24980
|
Optional on a `blob: true` file-provider import: when omitted the platform reads the
|
|
25020
24981
|
record's root `blobKey` — the field a blob export emits on its `{blobKey, fileMeta}`
|
|
25021
24982
|
record — so a file-transfer flow needs no `blobKeyPath`. Observed on an FTP import
|
|
25022
|
-
(
|
|
24983
|
+
(recorded runs writing files with no `blobKeyPath`) and on a Google Drive folder
|
|
25023
24984
|
upload (`http.type: file`, the marketplace file-transfer template's shape); other
|
|
25024
24985
|
file providers were not probed. Set it only when a response mapping placed the key
|
|
25025
24986
|
elsewhere; on those two providers its absence is not a cause of upload failures.
|
|
@@ -25201,13 +25162,9 @@ components:
|
|
|
25201
25162
|
- |-
|
|
25202
25163
|
JavaScript hook references attached to lifecycle stages of the import.
|
|
25203
25164
|
Engage hooks ONLY when the user explicitly wants scripting OR a requirement
|
|
25204
|
-
cannot be expressed through declarative
|
|
25165
|
+
cannot be expressed through declarative configuration (mappings / filters /
|
|
25205
25166
|
responseTransform).
|
|
25206
25167
|
Hooks bypass the platform's declarative validation, so use them sparingly.
|
|
25207
|
-
- |-
|
|
25208
|
-
Phase A authoring scope: ``preMap`` and ``postMap`` only.
|
|
25209
|
-
``postSubmit`` and ``postAggregate`` are Phase B's territory (they author
|
|
25210
|
-
against the real destination response).
|
|
25211
25168
|
properties:
|
|
25212
25169
|
preMap:
|
|
25213
25170
|
type: object
|
|
@@ -25224,7 +25181,7 @@ components:
|
|
|
25224
25181
|
before the mapping sees them (drop archived records,
|
|
25225
25182
|
normalize date strings, split a record into many). Don't
|
|
25226
25183
|
engage for static value substitution or simple field
|
|
25227
|
-
renames —
|
|
25184
|
+
renames — mappings handle those.
|
|
25228
25185
|
|
|
25229
25186
|
Runtime contract: ``options.data[]`` (the page of upstream
|
|
25230
25187
|
records) → array of the same length.
|
|
@@ -25266,11 +25223,6 @@ components:
|
|
|
25266
25223
|
Post-submit JavaScript hook — runs AFTER each batch of
|
|
25267
25224
|
destination writes, on the destination's response.
|
|
25268
25225
|
|
|
25269
|
-
**Phase B owns this slot.** Phase A must NOT emit a
|
|
25270
|
-
``$agent`` marker here (see "Phase A vs Phase B ownership"
|
|
25271
|
-
in the engine prompt). Phase B authors this against the
|
|
25272
|
-
real probe response.
|
|
25273
|
-
|
|
25274
25226
|
Runtime contract: ``options.responseData[]`` (one per
|
|
25275
25227
|
submitted record; ``{statusCode, errors, _json, ...}`` —
|
|
25276
25228
|
``id`` is present on real runs but absent from the
|
|
@@ -25295,11 +25247,6 @@ components:
|
|
|
25295
25247
|
``invalid_hook`` ("unsupported postAggregate hook") —
|
|
25296
25248
|
never emit it for non-file adaptors.
|
|
25297
25249
|
|
|
25298
|
-
**Phase B owns this slot.** Phase A must NOT emit a
|
|
25299
|
-
``$agent`` marker here (see "Phase A vs Phase B ownership"
|
|
25300
|
-
in the engine prompt). Phase B authors this against the
|
|
25301
|
-
real probe response.
|
|
25302
|
-
|
|
25303
25250
|
Runtime contract: ``options.postAggregateData``
|
|
25304
25251
|
(``{success, _json, code, message, source}``) → no return
|
|
25305
25252
|
value; side effects only (logging, notifying, downstream
|
|
@@ -25351,8 +25298,7 @@ components:
|
|
|
25351
25298
|
|
|
25352
25299
|
REQUIRED for ``SalesforceImport`` and ``WrapperImport``: these
|
|
25353
25300
|
adaptors must use Mapper 1.0; Mapper 2.0 is not supported for
|
|
25354
|
-
them.
|
|
25355
|
-
automatically. ``NetSuiteDistributedImport`` is also V1-required
|
|
25301
|
+
them. ``NetSuiteDistributedImport`` is also V1-required
|
|
25356
25302
|
but uses a NetSuite-specific variant at its adaptor-scoped copy
|
|
25357
25303
|
``netsuite_da.mapping`` (richer sublist / subRecord vocabulary) —
|
|
25358
25304
|
not this field.
|
|
@@ -25361,17 +25307,9 @@ components:
|
|
|
25361
25307
|
``FTPImport``, ``JDBCImport``, etc.) when the user explicitly asks
|
|
25362
25308
|
for Mapper 1.0 — e.g. when the import wraps a legacy v1 connector
|
|
25363
25309
|
or is being migrated from an older integration. Those adaptors
|
|
25364
|
-
default to Mapper 2.0 at the top-level ``mappings`` (plural) field
|
|
25365
|
-
|
|
25366
|
-
|
|
25367
|
-
unsolicited; the v2 default produces better output for modern
|
|
25368
|
-
connectors.
|
|
25369
|
-
- |-
|
|
25370
|
-
## Specialist marker
|
|
25371
|
-
|
|
25372
|
-
Managed by the MappingsAgent (``$agent: mapping``) — resource-
|
|
25373
|
-
authoring agents must emit a specialist marker at this field
|
|
25374
|
-
rather than generating mapping content inline.
|
|
25310
|
+
default to Mapper 2.0 at the top-level ``mappings`` (plural) field.
|
|
25311
|
+
Do not set this field unsolicited; the v2 default produces better
|
|
25312
|
+
output for modern connectors.
|
|
25375
25313
|
- |-
|
|
25376
25314
|
Allowed (but not the default) on other import adaptors such as
|
|
25377
25315
|
``HTTPImport``, ``RDBMSImport``, ``FTPImport``, and
|
|
@@ -25388,8 +25326,8 @@ components:
|
|
|
25388
25326
|
|
|
25389
25327
|
Lookups referenced by ``lookupName`` live on the top-level
|
|
25390
25328
|
``resource.lookups`` array (mirrored under the adaptor key for
|
|
25391
|
-
adaptors that maintain their own copy — see the mirror
|
|
25392
|
-
|
|
25329
|
+
adaptors that maintain their own copy — see the mirror invariant
|
|
25330
|
+
on ``lookups``). Lookups are independent of this
|
|
25393
25331
|
mapping: they are neither created nor cleared automatically when
|
|
25394
25332
|
this mapping changes.
|
|
25395
25333
|
properties:
|
|
@@ -25504,9 +25442,8 @@ components:
|
|
|
25504
25442
|
- |-
|
|
25505
25443
|
## Mirror invariant
|
|
25506
25444
|
|
|
25507
|
-
Both arrays MUST hold byte-for-byte identical content
|
|
25508
|
-
|
|
25509
|
-
single logical field.
|
|
25445
|
+
Both arrays MUST hold byte-for-byte identical content: write
|
|
25446
|
+
both on every save and treat them as a single logical field.
|
|
25510
25447
|
- |-
|
|
25511
25448
|
## Shape
|
|
25512
25449
|
|
|
@@ -25567,7 +25504,7 @@ components:
|
|
|
25567
25504
|
- ``envelope``: the mapper sees a wrapped object of the shape
|
|
25568
25505
|
``{record: {...}, settings: ..., job: ...}`` — the same
|
|
25569
25506
|
runtime-context envelope Handlebars / SQL / GraphQL
|
|
25570
|
-
|
|
25507
|
+
templates render against. ``mappings[].extract`` JSONPath values
|
|
25571
25508
|
MUST include the ``record.`` segment — for example
|
|
25572
25509
|
``"$.record.orderId"`` or ``"$.record.customer.email"``.
|
|
25573
25510
|
PLACEHOLDER extracts use ``"$.record.PLACEHOLDER_<field>"``.
|
|
@@ -25592,9 +25529,9 @@ components:
|
|
|
25592
25529
|
platform, but emitting ``inputContext: record`` makes the
|
|
25593
25530
|
contract self-documenting and prevents the mapper from drifting
|
|
25594
25531
|
into envelope mode if an upstream change ever changes the
|
|
25595
|
-
platform default.
|
|
25596
|
-
|
|
25597
|
-
|
|
25532
|
+
platform default. Read this value before writing
|
|
25533
|
+
``mappings[].extract`` so the JSONPath form matches the runtime
|
|
25534
|
+
root.
|
|
25598
25535
|
settingsForm:
|
|
25599
25536
|
x-celigo-agent:
|
|
25600
25537
|
- settings_form
|
|
@@ -25895,9 +25832,9 @@ components:
|
|
|
25895
25832
|
Substitute ``<modifiedTimestampField>`` with the actual
|
|
25896
25833
|
timestamp field the target entity exposes in its response. Do
|
|
25897
25834
|
NOT invent or copy field names from an example authored for a
|
|
25898
|
-
different endpoint -- an unknown field name causes
|
|
25899
|
-
"unknown property" / "invalid column" error
|
|
25900
|
-
|
|
25835
|
+
different endpoint -- an unknown field name causes an
|
|
25836
|
+
"unknown property" / "invalid column" error that surfaces only
|
|
25837
|
+
at run time.
|
|
25901
25838
|
|
|
25902
25839
|
For Salesforce, this field is required and has the following default values:
|
|
25903
25840
|
- LastModifiedDate
|
|
@@ -35277,7 +35214,7 @@ components:
|
|
|
35277
35214
|
`[application · stage=apiCall] search.createColumn:
|
|
35278
35215
|
Missing a required argument: name`. The platform
|
|
35279
35216
|
validation runs before any column data is read, so
|
|
35280
|
-
the
|
|
35217
|
+
the export fails fast.
|
|
35281
35218
|
- |-
|
|
35282
35219
|
## NAME MUST BE A SEARCH COLUMN, NOT A BODY FIELD
|
|
35283
35220
|
NetSuite distinguishes between body fields (the
|
|
@@ -35285,9 +35222,8 @@ components:
|
|
|
35285
35222
|
search columns (the fields exposed for filtering /
|
|
35286
35223
|
sorting in saved searches, like `shipaddress1`).
|
|
35287
35224
|
`columns[].name` MUST be a search column ID, not
|
|
35288
|
-
a body field ID
|
|
35289
|
-
|
|
35290
|
-
column names for the chosen `recordType`.
|
|
35225
|
+
a body field ID: take it from the chosen
|
|
35226
|
+
`recordType`'s SEARCH COLUMNS list.
|
|
35291
35227
|
- |-
|
|
35292
35228
|
## EXAMPLES
|
|
35293
35229
|
- `"internalid"` -- the record's internal id
|
|
@@ -36029,7 +35965,7 @@ components:
|
|
|
36029
35965
|
If the folder internal ID is required to be dynamic based on the data you are integrating,
|
|
36030
35966
|
you can specify the JSON path to the field in your data containing the folder
|
|
36031
35967
|
internal ID values instead — with DOUBLE braces (e.g. {{record.folderId}}).
|
|
36032
|
-
|
|
35968
|
+
Default to a static numeric ID; dynamic substitution is the exception.
|
|
36033
35969
|
- |-
|
|
36034
35970
|
## FIELD BEHAVIOR:
|
|
36035
35971
|
- Identifies the specific folder in NetSuite's file cabinet to export files from
|
|
@@ -36054,7 +35990,7 @@ components:
|
|
|
36054
35990
|
- May be linked to folder creation or folder search operations to retrieve valid IDs.
|
|
36055
35991
|
- |-
|
|
36056
35992
|
## EXAMPLES:
|
|
36057
|
-
- "12345" - Static folder internal ID (the
|
|
35993
|
+
- "12345" - Static folder internal ID (the usual form)
|
|
36058
35994
|
- "67890" - Another valid folder internal ID
|
|
36059
35995
|
- "{{record.folderId}}" - Dynamic folder ID from integration data (double braces)
|
|
36060
35996
|
- |-
|