@celigo/api-specs 0.2.125 → 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 +70 -5
- package/dist/tool.yml +70 -5
- package/package.json +1 -1
- package/schemas.json +1 -1
package/dist/import.yml
CHANGED
|
@@ -2951,6 +2951,12 @@ components:
|
|
|
2951
2951
|
regardless of server OS — paths are case-sensitive on UNIX/Linux servers. Supports
|
|
2952
2952
|
handlebars templates.
|
|
2953
2953
|
x-celigo-ai-guidance:
|
|
2954
|
+
- |-
|
|
2955
|
+
A handlebars template here is rendered against the same context as `fileName`
|
|
2956
|
+
(`fileMeta` is not a root key). An expression that renders empty fails the record
|
|
2957
|
+
with `missing_s3_key` "Can not process upload file without
|
|
2958
|
+
computedObject.fileLocation." — labeled source `internal` although the template is
|
|
2959
|
+
the cause.
|
|
2954
2960
|
- |-
|
|
2955
2961
|
The path to the directory on the FTP server where files will be accessed,
|
|
2956
2962
|
stored, or managed.
|
|
@@ -3007,13 +3013,28 @@ components:
|
|
|
3007
3013
|
description: |-
|
|
3008
3014
|
Name of the file written to the server, including its extension; do not include directory
|
|
3009
3015
|
separators — the location comes from directoryPath. Supports handlebars placeholders such
|
|
3010
|
-
as items-{{timestamp}}.csv to generate a unique name per run.
|
|
3016
|
+
as items-{{timestamp}}.csv to generate a unique name per run. The template is rendered
|
|
3017
|
+
against the incoming record: a file-transfer import from an FTP source kept the source
|
|
3018
|
+
file's name with `{{record.fileMeta.fileName}}` set on `file.fileName` and this field left
|
|
3019
|
+
unset — other source providers expose the name under their own `fileMeta` field.
|
|
3011
3020
|
x-celigo-ai-guidance:
|
|
3012
3021
|
- |-
|
|
3013
3022
|
When the user does not specify a file naming convention,
|
|
3014
3023
|
default to a timestamped filename such as "items-{{timestamp}}.csv" so each run
|
|
3015
3024
|
produces a unique file and avoids overwriting previous files.
|
|
3016
3025
|
Use a fixed filename only when the user explicitly requests overwriting or a fixed name.
|
|
3026
|
+
- |-
|
|
3027
|
+
`fileMeta` is not a root key of this template's context (it is one only on
|
|
3028
|
+
file-provider export and lookup steps): `{{fileMeta.fileName}}` renders empty and the
|
|
3029
|
+
upload fails with `missing_s3_key` "Can not process upload file without
|
|
3030
|
+
computedObject.fileName." — an error the platform labels source `internal` although the
|
|
3031
|
+
template is the cause. The run-time-proven way to keep the source file's name on a
|
|
3032
|
+
`blob: true` import is `{{record.fileMeta.fileName}}` on `file.fileName` with this field
|
|
3033
|
+
omitted (the production runs of one FTP blob import set exactly that); the same template
|
|
3034
|
+
on this field has not been run. The field's editor preview (data version 1, its default)
|
|
3035
|
+
exposes the record as `data` —
|
|
3036
|
+
the `{blobKey, fileMeta}` record on a blob import, the page's record array otherwise —
|
|
3037
|
+
so `record.` previews empty there; judge by a run.
|
|
3017
3038
|
- |-
|
|
3018
3039
|
The name of the file to be accessed, transferred,
|
|
3019
3040
|
or manipulated via FTP (File Transfer Protocol).
|
|
@@ -3820,7 +3841,11 @@ components:
|
|
|
3820
3841
|
field mapped to `internalid` is overridden by it. When the incoming record
|
|
3821
3842
|
already carries the NetSuite internal ID, point the lookup at that field with
|
|
3822
3843
|
the expression form — `["internalid","is","{{{id}}}"]` — rather than removing
|
|
3823
|
-
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).
|
|
3824
3849
|
properties:
|
|
3825
3850
|
extract:
|
|
3826
3851
|
type: string
|
|
@@ -3946,6 +3971,21 @@ components:
|
|
|
3946
3971
|
- DO NOT use `jsonSerialize` here — search expressions take
|
|
3947
3972
|
scalar literals, not serialized JSON. Use `{{{id}}}` or
|
|
3948
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.
|
|
3949
3989
|
- |-
|
|
3950
3990
|
## Body-level only
|
|
3951
3991
|
|
|
@@ -8522,7 +8562,10 @@ components:
|
|
|
8522
8562
|
description: |-
|
|
8523
8563
|
**REQUIRED for file-based imports.**
|
|
8524
8564
|
|
|
8525
|
-
The name of the file to be created/written. Supports Handlebars expressions for dynamic naming
|
|
8565
|
+
The name of the file to be created/written. Supports Handlebars expressions for dynamic naming,
|
|
8566
|
+
rendered against the incoming record — a file-transfer import keeps the source file's name from
|
|
8567
|
+
the record's `fileMeta`, whose field names are the exporting provider's
|
|
8568
|
+
(`{{record.fileMeta.fileName}}` from an FTP source, `fileMeta.name` from Google Drive).
|
|
8526
8569
|
|
|
8527
8570
|
**Default behavior**
|
|
8528
8571
|
- When the user does not specify a file naming convention, **always default to timestamped filenames** using `{{timestamp}}` (e.g., `"items-{{timestamp}}.csv"`). This ensures each run produces a unique file and avoids overwriting previous exports.
|
|
@@ -8540,7 +8583,20 @@ components:
|
|
|
8540
8583
|
|
|
8541
8584
|
**Important**
|
|
8542
8585
|
- For S3 imports, this should typically match the `s3.fileKey` value
|
|
8543
|
-
- For FTP imports, this should typically match the `ftp.fileName` value
|
|
8586
|
+
- For FTP imports, this should typically match the `ftp.fileName` value; the one blob file-transfer run on record set only this field and left `ftp.fileName` unset
|
|
8587
|
+
x-celigo-ai-guidance:
|
|
8588
|
+
- |-
|
|
8589
|
+
`fileMeta` is not a root key of this template's context (it is one only on
|
|
8590
|
+
file-provider export and lookup steps): `{{fileMeta.fileName}}` renders empty and the
|
|
8591
|
+
file has no name; on an FTP import the record then fails with `missing_s3_key` "Can not
|
|
8592
|
+
process upload file without computedObject.fileName.", labeled source `internal`
|
|
8593
|
+
although the template is the cause. The incoming record carries the source file's
|
|
8594
|
+
metadata — on an FTP blob import `{{record.fileMeta.fileName}}` keeps the source file's
|
|
8595
|
+
name at run time (the only spelling proven by a run). The field's editor preview
|
|
8596
|
+
(data version 1, its default) exposes the record as `data` — the `{blobKey, fileMeta}`
|
|
8597
|
+
record on a `blob: true` import, the page's record array otherwise — so `record.`
|
|
8598
|
+
previews empty there; judge by a run. The metadata field names are the exporting
|
|
8599
|
+
provider's — read them off the incoming sample record.
|
|
8544
8600
|
examples:
|
|
8545
8601
|
- customers-{{timestamp}}.json
|
|
8546
8602
|
- orders-export.csv
|
|
@@ -16021,6 +16077,14 @@ components:
|
|
|
16021
16077
|
On AiAgentImport, GuardrailImport and ToolImport the save fails with 422 `not_supported`
|
|
16022
16078
|
("Field "blobKeyPath" is not supported for this import type."); route file content
|
|
16023
16079
|
through a blob-capable import (HTTP, FTP, S3) instead.
|
|
16080
|
+
- |-
|
|
16081
|
+
Optional on a `blob: true` file-provider import: when omitted the platform reads the
|
|
16082
|
+
record's root `blobKey` — the field a blob export emits on its `{blobKey, fileMeta}`
|
|
16083
|
+
record — so a file-transfer flow needs no `blobKeyPath`. Observed on an FTP import
|
|
16084
|
+
(production runs writing files with no `blobKeyPath`) and on a Google Drive folder
|
|
16085
|
+
upload (`http.type: file`, the marketplace file-transfer template's shape); other
|
|
16086
|
+
file providers were not probed. Set it only when a response mapping placed the key
|
|
16087
|
+
elsewhere; on those two providers its absence is not a cause of upload failures.
|
|
16024
16088
|
- |-
|
|
16025
16089
|
The value at this path must be a blobKey produced by an upstream blob
|
|
16026
16090
|
export or blob lookup and carried onto the record via that step's
|
|
@@ -16049,7 +16113,8 @@ components:
|
|
|
16049
16113
|
- ToolImport
|
|
16050
16114
|
description: |-
|
|
16051
16115
|
When true, this import transfers raw file content (blobs) to the destination rather than
|
|
16052
|
-
structured records, reading each file through `blobKeyPath
|
|
16116
|
+
structured records, reading each file through `blobKeyPath` (optional on FTP and Google
|
|
16117
|
+
Drive file-provider imports, which fall back to the record's root `blobKey`). Not accepted on
|
|
16053
16118
|
`AiAgentImport`, `GuardrailImport`, or `ToolImport` — those adaptors process records only
|
|
16054
16119
|
and reject the flag with 422 `not_supported`.
|
|
16055
16120
|
x-celigo-ai-guidance:
|
package/dist/tool.yml
CHANGED
|
@@ -14532,6 +14532,12 @@ components:
|
|
|
14532
14532
|
regardless of server OS — paths are case-sensitive on UNIX/Linux servers. Supports
|
|
14533
14533
|
handlebars templates.
|
|
14534
14534
|
x-celigo-ai-guidance:
|
|
14535
|
+
- |-
|
|
14536
|
+
A handlebars template here is rendered against the same context as `fileName`
|
|
14537
|
+
(`fileMeta` is not a root key). An expression that renders empty fails the record
|
|
14538
|
+
with `missing_s3_key` "Can not process upload file without
|
|
14539
|
+
computedObject.fileLocation." — labeled source `internal` although the template is
|
|
14540
|
+
the cause.
|
|
14535
14541
|
- |-
|
|
14536
14542
|
The path to the directory on the FTP server where files will be accessed,
|
|
14537
14543
|
stored, or managed.
|
|
@@ -14588,13 +14594,28 @@ components:
|
|
|
14588
14594
|
description: |-
|
|
14589
14595
|
Name of the file written to the server, including its extension; do not include directory
|
|
14590
14596
|
separators — the location comes from directoryPath. Supports handlebars placeholders such
|
|
14591
|
-
as items-{{timestamp}}.csv to generate a unique name per run.
|
|
14597
|
+
as items-{{timestamp}}.csv to generate a unique name per run. The template is rendered
|
|
14598
|
+
against the incoming record: a file-transfer import from an FTP source kept the source
|
|
14599
|
+
file's name with `{{record.fileMeta.fileName}}` set on `file.fileName` and this field left
|
|
14600
|
+
unset — other source providers expose the name under their own `fileMeta` field.
|
|
14592
14601
|
x-celigo-ai-guidance:
|
|
14593
14602
|
- |-
|
|
14594
14603
|
When the user does not specify a file naming convention,
|
|
14595
14604
|
default to a timestamped filename such as "items-{{timestamp}}.csv" so each run
|
|
14596
14605
|
produces a unique file and avoids overwriting previous files.
|
|
14597
14606
|
Use a fixed filename only when the user explicitly requests overwriting or a fixed name.
|
|
14607
|
+
- |-
|
|
14608
|
+
`fileMeta` is not a root key of this template's context (it is one only on
|
|
14609
|
+
file-provider export and lookup steps): `{{fileMeta.fileName}}` renders empty and the
|
|
14610
|
+
upload fails with `missing_s3_key` "Can not process upload file without
|
|
14611
|
+
computedObject.fileName." — an error the platform labels source `internal` although the
|
|
14612
|
+
template is the cause. The run-time-proven way to keep the source file's name on a
|
|
14613
|
+
`blob: true` import is `{{record.fileMeta.fileName}}` on `file.fileName` with this field
|
|
14614
|
+
omitted (the production runs of one FTP blob import set exactly that); the same template
|
|
14615
|
+
on this field has not been run. The field's editor preview (data version 1, its default)
|
|
14616
|
+
exposes the record as `data` —
|
|
14617
|
+
the `{blobKey, fileMeta}` record on a blob import, the page's record array otherwise —
|
|
14618
|
+
so `record.` previews empty there; judge by a run.
|
|
14598
14619
|
- |-
|
|
14599
14620
|
The name of the file to be accessed, transferred,
|
|
14600
14621
|
or manipulated via FTP (File Transfer Protocol).
|
|
@@ -15401,7 +15422,11 @@ components:
|
|
|
15401
15422
|
field mapped to `internalid` is overridden by it. When the incoming record
|
|
15402
15423
|
already carries the NetSuite internal ID, point the lookup at that field with
|
|
15403
15424
|
the expression form — `["internalid","is","{{{id}}}"]` — rather than removing
|
|
15404
|
-
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).
|
|
15405
15430
|
properties:
|
|
15406
15431
|
extract:
|
|
15407
15432
|
type: string
|
|
@@ -15527,6 +15552,21 @@ components:
|
|
|
15527
15552
|
- DO NOT use `jsonSerialize` here — search expressions take
|
|
15528
15553
|
scalar literals, not serialized JSON. Use `{{{id}}}` or
|
|
15529
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.
|
|
15530
15570
|
- |-
|
|
15531
15571
|
## Body-level only
|
|
15532
15572
|
|
|
@@ -19834,7 +19874,10 @@ components:
|
|
|
19834
19874
|
description: |-
|
|
19835
19875
|
**REQUIRED for file-based imports.**
|
|
19836
19876
|
|
|
19837
|
-
The name of the file to be created/written. Supports Handlebars expressions for dynamic naming
|
|
19877
|
+
The name of the file to be created/written. Supports Handlebars expressions for dynamic naming,
|
|
19878
|
+
rendered against the incoming record — a file-transfer import keeps the source file's name from
|
|
19879
|
+
the record's `fileMeta`, whose field names are the exporting provider's
|
|
19880
|
+
(`{{record.fileMeta.fileName}}` from an FTP source, `fileMeta.name` from Google Drive).
|
|
19838
19881
|
|
|
19839
19882
|
**Default behavior**
|
|
19840
19883
|
- When the user does not specify a file naming convention, **always default to timestamped filenames** using `{{timestamp}}` (e.g., `"items-{{timestamp}}.csv"`). This ensures each run produces a unique file and avoids overwriting previous exports.
|
|
@@ -19852,7 +19895,20 @@ components:
|
|
|
19852
19895
|
|
|
19853
19896
|
**Important**
|
|
19854
19897
|
- For S3 imports, this should typically match the `s3.fileKey` value
|
|
19855
|
-
- For FTP imports, this should typically match the `ftp.fileName` value
|
|
19898
|
+
- For FTP imports, this should typically match the `ftp.fileName` value; the one blob file-transfer run on record set only this field and left `ftp.fileName` unset
|
|
19899
|
+
x-celigo-ai-guidance:
|
|
19900
|
+
- |-
|
|
19901
|
+
`fileMeta` is not a root key of this template's context (it is one only on
|
|
19902
|
+
file-provider export and lookup steps): `{{fileMeta.fileName}}` renders empty and the
|
|
19903
|
+
file has no name; on an FTP import the record then fails with `missing_s3_key` "Can not
|
|
19904
|
+
process upload file without computedObject.fileName.", labeled source `internal`
|
|
19905
|
+
although the template is the cause. The incoming record carries the source file's
|
|
19906
|
+
metadata — on an FTP blob import `{{record.fileMeta.fileName}}` keeps the source file's
|
|
19907
|
+
name at run time (the only spelling proven by a run). The field's editor preview
|
|
19908
|
+
(data version 1, its default) exposes the record as `data` — the `{blobKey, fileMeta}`
|
|
19909
|
+
record on a `blob: true` import, the page's record array otherwise — so `record.`
|
|
19910
|
+
previews empty there; judge by a run. The metadata field names are the exporting
|
|
19911
|
+
provider's — read them off the incoming sample record.
|
|
19856
19912
|
examples:
|
|
19857
19913
|
- customers-{{timestamp}}.json
|
|
19858
19914
|
- orders-export.csv
|
|
@@ -24890,6 +24946,14 @@ components:
|
|
|
24890
24946
|
On AiAgentImport, GuardrailImport and ToolImport the save fails with 422 `not_supported`
|
|
24891
24947
|
("Field "blobKeyPath" is not supported for this import type."); route file content
|
|
24892
24948
|
through a blob-capable import (HTTP, FTP, S3) instead.
|
|
24949
|
+
- |-
|
|
24950
|
+
Optional on a `blob: true` file-provider import: when omitted the platform reads the
|
|
24951
|
+
record's root `blobKey` — the field a blob export emits on its `{blobKey, fileMeta}`
|
|
24952
|
+
record — so a file-transfer flow needs no `blobKeyPath`. Observed on an FTP import
|
|
24953
|
+
(production runs writing files with no `blobKeyPath`) and on a Google Drive folder
|
|
24954
|
+
upload (`http.type: file`, the marketplace file-transfer template's shape); other
|
|
24955
|
+
file providers were not probed. Set it only when a response mapping placed the key
|
|
24956
|
+
elsewhere; on those two providers its absence is not a cause of upload failures.
|
|
24893
24957
|
- |-
|
|
24894
24958
|
The value at this path must be a blobKey produced by an upstream blob
|
|
24895
24959
|
export or blob lookup and carried onto the record via that step's
|
|
@@ -24918,7 +24982,8 @@ components:
|
|
|
24918
24982
|
- ToolImport
|
|
24919
24983
|
description: |-
|
|
24920
24984
|
When true, this import transfers raw file content (blobs) to the destination rather than
|
|
24921
|
-
structured records, reading each file through `blobKeyPath
|
|
24985
|
+
structured records, reading each file through `blobKeyPath` (optional on FTP and Google
|
|
24986
|
+
Drive file-provider imports, which fall back to the record's root `blobKey`). Not accepted on
|
|
24922
24987
|
`AiAgentImport`, `GuardrailImport`, or `ToolImport` — those adaptors process records only
|
|
24923
24988
|
and reject the flag with 422 `not_supported`.
|
|
24924
24989
|
x-celigo-ai-guidance:
|
package/package.json
CHANGED