@celigo/api-specs 0.2.28 → 0.2.30

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
@@ -1560,7 +1560,9 @@ components:
1560
1560
  type: object
1561
1561
  description: |-
1562
1562
  Configuration for HTTP imports.
1563
- Required whenever the connection referenced by _connectionId has type http.
1563
+ Required whenever the connection referenced by _connectionId has type http, and on
1564
+ `NetSuiteHTTPImport` (NetSuite's REST APIs on a `netsuite` connection, where `nsDomainType`
1565
+ supplies the host).
1564
1566
  x-celigo-ai-guidance:
1565
1567
  - |-
1566
1568
  IMPORTANT:
@@ -1568,6 +1570,11 @@ components:
1568
1570
  this object MUST be populated for the import to function properly.
1569
1571
  This is a required configuration for all HTTP based imports,
1570
1572
  as determined by the connection associated with the import.
1573
+ - |-
1574
+ A `NetSuiteHTTPImport` uses this same object on a netsuite connection: each `relativeURI`
1575
+ entry carries the full path from `/services/rest/record/v1/<type>` (SuiteTalk) or
1576
+ `/app/site/hosting/restlet.nl?script=<id>&deploy=<n>` (custom RESTlet); the host and the
1577
+ token signature come from the connection.
1571
1578
  properties:
1572
1579
  sendPostMappedData:
1573
1580
  type: boolean
@@ -11225,9 +11232,11 @@ components:
11225
11232
  This field supports THREE DISTINCT PATTERNS that are easily distinguished:
11226
11233
 
11227
11234
  **1. json Path Syntax**
11228
- - MUST start with '$.' prefix
11235
+ - MUST start with '$' — the record root. An object record is addressed as
11236
+ '$.field'; a grouped (array) record as '$[0].field' / '$[*].field'
11229
11237
  - Used for precisely targeting data in structured JSON objects
11230
- - Examples: '$.customer.firstName', '$.items[0].price', '$.addresses[*].street'
11238
+ - Examples: '$.customer.firstName', '$.items[0].price', '$.addresses[*].street',
11239
+ '$[*].Tax' (every row of a grouped record)
11231
11240
  - Wildcards like [*] extract multiple values/objects
11232
11241
 
11233
11242
  ```json
@@ -11238,7 +11247,8 @@ components:
11238
11247
  - Contains '{{' and '}}' pattern
11239
11248
  - Evaluated by the AFE 2.0 handlebars template engine
11240
11249
  - Can include logic, formatting, and computation
11241
- - Access input record fields with {{record.fieldName}} notation
11250
+ - Access input record fields with {{record.fieldName}} notation; a grouped
11251
+ (array) record binds as `rows` instead — {{rows.0.fieldName}} / {{#each rows}}
11242
11252
  - Examples: "{{record.firstName}} {{record.lastName}}", "{{#if record.isActive}}Active{{else}}Inactive{{/if}}"
11243
11253
  - Valid on `object`, `objectarray`, and primitive-array dataTypes as
11244
11254
  well as scalars — the rendered template output must parse into the
@@ -11249,7 +11259,7 @@ components:
11249
11259
  ```
11250
11260
 
11251
11261
  **3. Hard-Coded Value (literal string)**
11252
- - Does NOT start with '$.'
11262
+ - Does NOT start with '$'
11253
11263
  - Does NOT contain handlebars '{{' syntax
11254
11264
  - System treats it as a literal string value
11255
11265
  - VERY COMMON for setting static/constant values
@@ -11271,10 +11281,38 @@ components:
11271
11281
  - The system maintains this context even in deeply nested mappings
11272
11282
  - For object mappings without child mappings, extract should return a complete object
11273
11283
  - When both extract and mappings are defined for objects, extract is applied first
11284
+ - The root is the record as it arrives: an object record roots at `$.field`; a
11285
+ grouped record (an array of rows — grouped exports, file key columns, NetSuite
11286
+ grouped saved searches) roots at the array, so its rows are addressed as
11287
+ `$[0].field` (one row) or `$[*].field` (every row). A root that contradicts the
11288
+ record's shape resolves to nothing without an error.
11274
11289
 
11275
11290
  For most simple field-to-field mappings, prefer JSON path syntax for its clarity and performance.
11276
11291
  For hard-coded values, simply use the literal string as the extract value.
11277
11292
  x-celigo-ai-guidance:
11293
+ - |-
11294
+ ## GROUPED (ARRAY) RECORDS
11295
+ Decide the JSONPath root from the record's shape before writing
11296
+ any extract. When the record is an array of rows, `$.field`,
11297
+ `$.properties.field` and `$.rows[*].field` all resolve to
11298
+ nothing — the processor still reports success and the request
11299
+ body ships as `{}`. Address rows as `$[0].field` (that row's
11300
+ value, typed) or `$[*].field` (every row: joined with commas
11301
+ into a `string` destination; rejected with
11302
+ `incompatible_destination_conversion` into a `number`
11303
+ destination). Column labels with spaces work as
11304
+ `$[*][Order Number]`, `$[*].[Order Number]`, or
11305
+ `$[*]['Order Number']`. For one destination element per row
11306
+ the two array kinds take different helper forms: a primitive
11307
+ array (`stringarray` / `numberarray`) uses `buildArrayHelper:
11308
+ [{"extract": "$[*].field"}]`; an `objectarray` uses
11309
+ `buildArrayHelper: [{"extract": "$[*]", "mappings": [...]}]`
11310
+ with the children addressing the row relatively (`$.field`,
11311
+ `{{rows.field}}`). An `extract` placed directly on the
11312
+ array-typed field yields nothing. Handlebars
11313
+ extracts bind the array record as `rows` (`{{rows.0.field}}`),
11314
+ an object record as `record`. The reverse holds too: `$[*]` on
11315
+ an object record iterates the object's values, not rows.
11278
11316
  - |-
11279
11317
  ## SIZE LIMIT
11280
11318
  The platform's import save validator caps this field at **1024
@@ -11532,7 +11570,11 @@ components:
11532
11570
  (`$.items[*]`), `"$"` (the record root), or omission — a
11533
11571
  constructed entry (child `mappings` with the extract omitted or
11534
11572
  `"$"`; the two spellings are equivalent) contributes exactly one
11535
- element, and entries append in order. Indexed or comma-joined
11573
+ element, and entries append in order. On a grouped (array)
11574
+ record the record itself is the array to iterate: `"$[*]"`
11575
+ yields one `objectarray` element per row (children address the
11576
+ row as `$.field`), and `"$[*].field"` yields one primitive-array
11577
+ value per row. Indexed or comma-joined
11536
11578
  entry extracts (`"$[0]"`, `"$[0],$[0]"`) are not valid: the
11537
11579
  processor renders the entire destination array as null with no
11538
11580
  validation error. To emit a fixed number of static elements, add
@@ -11553,7 +11595,9 @@ components:
11553
11595
 
11554
11596
  **For Simple Arrays (stringarray, numberarray, booleanarray)**
11555
11597
  - Only the 'extract' field is used to pull values
11556
- - JSON path with wildcards (e.g., $.items[*].name) returns multiple values
11598
+ - JSON path with wildcards (e.g., $.items[*].name) returns multiple values;
11599
+ on a grouped (array) record the record itself is the array, so the
11600
+ path roots at it ($[*].name — one value per row)
11557
11601
  - Each result is converted to the appropriate primitive type
11558
11602
  ```json
11559
11603
  {
@@ -11655,11 +11699,13 @@ components:
11655
11699
  - When both extract and mappings are provided, the system creates special composite objects
11656
11700
  that maintain hierarchical context during processing
11657
11701
  - This enables accessing both the current array element AND its parent context
11658
- - An ITERATING entry's extract MUST use JSON path syntax starting with '$.'
11659
- (e.g. '$.items[*]'). A CONSTRUCTED entry (child mappings building one element)
11660
- instead omits extract or sets it to exactly "$" — never rewrite "$" into a
11661
- '$.'-prefixed, indexed, or comma-joined form ('$[0]', '$[0],$[0]'): those render
11662
- the entire destination array as null without raising a validation error
11702
+ - An ITERATING entry's extract MUST be a JSON path that iterates an array:
11703
+ '$.items[*]' when the array is a field of an object record, or '$[*]'
11704
+ (objectarray) / '$[*].field' (primitive arrays) when the record itself is a
11705
+ grouped array of rows. A CONSTRUCTED entry (child mappings building one
11706
+ element) instead omits extract or sets it to exactly "$" — never rewrite "$"
11707
+ into an indexed or comma-joined form ('$[0]', '$[0],$[0]'): those render the
11708
+ entire destination array as null without raising a validation error
11663
11709
  - Each array helper entry acts independently, potentially adding multiple elements
11664
11710
 
11665
11711
  The buildArrayHelper is the most complex part of the mappings system - always analyze the
@@ -12073,9 +12119,11 @@ components:
12073
12119
  This field supports THREE DISTINCT PATTERNS that are easily distinguished:
12074
12120
 
12075
12121
  **1. json Path Syntax**
12076
- - MUST start with '$.' prefix
12122
+ - MUST start with '$' — the record root. An object record is addressed as
12123
+ '$.field'; a grouped (array) record as '$[0].field' / '$[*].field'
12077
12124
  - Used for precisely targeting data in structured JSON objects
12078
- - Examples: '$.customer.firstName', '$.items[0].price', '$.addresses[*].street'
12125
+ - Examples: '$.customer.firstName', '$.items[0].price', '$.addresses[*].street',
12126
+ '$[*].Tax' (every row of a grouped record)
12079
12127
  - Wildcards like [*] extract multiple values/objects
12080
12128
 
12081
12129
  ```json
@@ -12086,7 +12134,8 @@ components:
12086
12134
  - Contains '{{' and '}}' pattern
12087
12135
  - Evaluated by the AFE 2.0 handlebars template engine
12088
12136
  - Can include logic, formatting, and computation
12089
- - Access input record fields with {{record.fieldName}} notation
12137
+ - Access input record fields with {{record.fieldName}} notation; a grouped
12138
+ (array) record binds as `rows` instead — {{rows.0.fieldName}} / {{#each rows}}
12090
12139
  - Examples: "{{record.firstName}} {{record.lastName}}", "{{#if record.isActive}}Active{{else}}Inactive{{/if}}"
12091
12140
  - Valid on `object`, `objectarray`, and primitive-array dataTypes as
12092
12141
  well as scalars — the rendered template output must parse into the
@@ -12097,7 +12146,7 @@ components:
12097
12146
  ```
12098
12147
 
12099
12148
  **3. Hard-Coded Value (literal string)**
12100
- - Does NOT start with '$.'
12149
+ - Does NOT start with '$'
12101
12150
  - Does NOT contain handlebars '{{' syntax
12102
12151
  - System treats it as a literal string value
12103
12152
  - VERY COMMON for setting static/constant values
@@ -12119,10 +12168,38 @@ components:
12119
12168
  - The system maintains this context even in deeply nested mappings
12120
12169
  - For object mappings without child mappings, extract should return a complete object
12121
12170
  - When both extract and mappings are defined for objects, extract is applied first
12171
+ - The root is the record as it arrives: an object record roots at `$.field`; a
12172
+ grouped record (an array of rows — grouped exports, file key columns, NetSuite
12173
+ grouped saved searches) roots at the array, so its rows are addressed as
12174
+ `$[0].field` (one row) or `$[*].field` (every row). A root that contradicts the
12175
+ record's shape resolves to nothing without an error.
12122
12176
 
12123
12177
  For most simple field-to-field mappings, prefer JSON path syntax for its clarity and performance.
12124
12178
  For hard-coded values, simply use the literal string as the extract value.
12125
12179
  x-celigo-ai-guidance:
12180
+ - |-
12181
+ ## GROUPED (ARRAY) RECORDS
12182
+ Decide the JSONPath root from the record's shape before writing
12183
+ any extract. When the record is an array of rows, `$.field`,
12184
+ `$.properties.field` and `$.rows[*].field` all resolve to
12185
+ nothing — the processor still reports success and the request
12186
+ body ships as `{}`. Address rows as `$[0].field` (that row's
12187
+ value, typed) or `$[*].field` (every row: joined with commas
12188
+ into a `string` destination; rejected with
12189
+ `incompatible_destination_conversion` into a `number`
12190
+ destination). Column labels with spaces work as
12191
+ `$[*][Order Number]`, `$[*].[Order Number]`, or
12192
+ `$[*]['Order Number']`. For one destination element per row
12193
+ the two array kinds take different helper forms: a primitive
12194
+ array (`stringarray` / `numberarray`) uses `buildArrayHelper:
12195
+ [{"extract": "$[*].field"}]`; an `objectarray` uses
12196
+ `buildArrayHelper: [{"extract": "$[*]", "mappings": [...]}]`
12197
+ with the children addressing the row relatively (`$.field`,
12198
+ `{{rows.field}}`). An `extract` placed directly on the
12199
+ array-typed field yields nothing. Handlebars
12200
+ extracts bind the array record as `rows` (`{{rows.0.field}}`),
12201
+ an object record as `record`. The reverse holds too: `$[*]` on
12202
+ an object record iterates the object's values, not rows.
12126
12203
  - |-
12127
12204
  ## SIZE LIMIT
12128
12205
  The platform's import save validator caps this field at **1024
@@ -12380,7 +12457,11 @@ components:
12380
12457
  (`$.items[*]`), `"$"` (the record root), or omission — a
12381
12458
  constructed entry (child `mappings` with the extract omitted or
12382
12459
  `"$"`; the two spellings are equivalent) contributes exactly one
12383
- element, and entries append in order. Indexed or comma-joined
12460
+ element, and entries append in order. On a grouped (array)
12461
+ record the record itself is the array to iterate: `"$[*]"`
12462
+ yields one `objectarray` element per row (children address the
12463
+ row as `$.field`), and `"$[*].field"` yields one primitive-array
12464
+ value per row. Indexed or comma-joined
12384
12465
  entry extracts (`"$[0]"`, `"$[0],$[0]"`) are not valid: the
12385
12466
  processor renders the entire destination array as null with no
12386
12467
  validation error. To emit a fixed number of static elements, add
@@ -12401,7 +12482,9 @@ components:
12401
12482
 
12402
12483
  **For Simple Arrays (stringarray, numberarray, booleanarray)**
12403
12484
  - Only the 'extract' field is used to pull values
12404
- - JSON path with wildcards (e.g., $.items[*].name) returns multiple values
12485
+ - JSON path with wildcards (e.g., $.items[*].name) returns multiple values;
12486
+ on a grouped (array) record the record itself is the array, so the
12487
+ path roots at it ($[*].name — one value per row)
12405
12488
  - Each result is converted to the appropriate primitive type
12406
12489
  ```json
12407
12490
  {
@@ -12503,11 +12586,13 @@ components:
12503
12586
  - When both extract and mappings are provided, the system creates special composite objects
12504
12587
  that maintain hierarchical context during processing
12505
12588
  - This enables accessing both the current array element AND its parent context
12506
- - An ITERATING entry's extract MUST use JSON path syntax starting with '$.'
12507
- (e.g. '$.items[*]'). A CONSTRUCTED entry (child mappings building one element)
12508
- instead omits extract or sets it to exactly "$" — never rewrite "$" into a
12509
- '$.'-prefixed, indexed, or comma-joined form ('$[0]', '$[0],$[0]'): those render
12510
- the entire destination array as null without raising a validation error
12589
+ - An ITERATING entry's extract MUST be a JSON path that iterates an array:
12590
+ '$.items[*]' when the array is a field of an object record, or '$[*]'
12591
+ (objectarray) / '$[*].field' (primitive arrays) when the record itself is a
12592
+ grouped array of rows. A CONSTRUCTED entry (child mappings building one
12593
+ element) instead omits extract or sets it to exactly "$" — never rewrite "$"
12594
+ into an indexed or comma-joined form ('$[0]', '$[0],$[0]'): those render the
12595
+ entire destination array as null without raising a validation error
12511
12596
  - Each array helper entry acts independently, potentially adding multiple elements
12512
12597
 
12513
12598
  The buildArrayHelper is the most complex part of the mappings system - always analyze the
@@ -12964,6 +13049,16 @@ components:
12964
13049
  x-enumDescriptions:
12965
13050
  create: Builds entirely new output records from inputs, ignoring unmapped fields.
12966
13051
  modify: Makes targeted edits to existing records, preserving unmapped fields.
13052
+ x-celigo-ai-guidance:
13053
+ - |-
13054
+ On a grouped record (the export groups rows, so the record is an
13055
+ array) only `create` can author output — build it from the rows with
13056
+ `$[0].field`, `$[*].field`, or a `buildArrayHelper` over `$[*]`.
13057
+ `modify` has no object to overlay onto an array: the record passes
13058
+ through untouched and the processor reports success. Either mode
13059
+ reshapes the inside of one record; neither changes how many records
13060
+ the page carries (that is the export's `preSavePage` hook) or whether
13061
+ the export groups at all (that is its grouping setting).
12967
13062
  examples:
12968
13063
  - create
12969
13064
  - modify
@@ -13997,6 +14092,7 @@ components:
13997
14092
  description: |-
13998
14093
  Connection this import uses to reach the destination system. The connection's type must
13999
14094
  be compatible with the import's `adaptorType` (e.g. an `HTTPImport` needs an `http`
14095
+ connection; `NetSuiteDistributedImport` and `NetSuiteHTTPImport` both need a `netsuite`
14000
14096
  connection). Server-required — POST without it fails with 422 "Expected field:
14001
14097
  _connectionId to be present" — except for the connection-less flavors (`ToolImport`,
14002
14098
  `AiAgentImport`, `GuardrailImport`), which the server creates without one.
@@ -14029,9 +14125,15 @@ components:
14029
14125
  Use HTTPImport for all REST/SOAP APIs unless a specialized adaptor exists for the
14030
14126
  target system; always pair the adaptorType with its matching configuration object.
14031
14127
  - |-
14032
- For NetSuite, always use NetSuiteDistributedImport (with the netsuite_da object).
14033
- NetSuiteImport is a legacy adaptor for accounts without the Celigo SuiteApp 2.0 — do
14034
- not use it unless explicitly requested.
14128
+ For NetSuite, use NetSuiteDistributedImport (with the netsuite_da object) when the
14129
+ Celigo SuiteApp or bundle is installed in the account — check with
14130
+ `GET /v1/connections/{_id}/distributedApps` (`suiteapp.success` / `bundle.success`).
14131
+ Use NetSuiteHTTPImport (with `nsDomainType` and the http object) when neither is
14132
+ installed or the user asks for NetSuite's REST APIs; the platform's SuiteTalk connector
14133
+ catalogs `POST /services/rest/record/v1/<type>` for inserts and
14134
+ `PATCH /services/rest/record/v1/<type>/{id}` for updates, and saving links the step to
14135
+ them. NetSuiteImport is a legacy adaptor for accounts without the Celigo SuiteApp 2.0 —
14136
+ do not use it unless explicitly requested.
14035
14137
  - |-
14036
14138
  Use RDBMSImport (with the rdbms object) for built-in database types such as SQL Server,
14037
14139
  MySQL, PostgreSQL, Snowflake, Oracle, and MariaDB. Use JDBCImport (with the jdbc
@@ -14043,6 +14145,7 @@ components:
14043
14145
  - S3Import
14044
14146
  - NetSuiteImport
14045
14147
  - NetSuiteDistributedImport
14148
+ - NetSuiteHTTPImport
14046
14149
  - SalesforceImport
14047
14150
  - JDBCImport
14048
14151
  - RDBMSImport
@@ -14060,7 +14163,8 @@ components:
14060
14163
  AS2Import: File import via AS2 (Applicability Statement 2) protocol.
14061
14164
  S3Import: File import to Amazon S3 storage.
14062
14165
  NetSuiteImport: Legacy NetSuite import for accounts without the Celigo SuiteApp 2.0.
14063
- NetSuiteDistributedImport: NetSuite import using the distributed SuiteApp 2.0 adaptor (default for NetSuite).
14166
+ NetSuiteDistributedImport: NetSuite import using the distributed SuiteApp 2.0 adaptor (default for NetSuite when the SuiteApp or bundle is installed).
14167
+ NetSuiteHTTPImport: NetSuite import over its REST APIs — SuiteTalk REST record endpoints or a custom RESTlet — on a netsuite connection, without the Celigo SuiteApp or bundle.
14064
14168
  SalesforceImport: Salesforce-specific import using SOAP, REST, Metadata, or Composite APIs.
14065
14169
  JDBCImport: Database import via a generic JDBC connection (not for built-in RDBMS types).
14066
14170
  RDBMSImport: Database import for built-in RDBMS types such as SQL Server, MySQL, PostgreSQL, Snowflake, and Oracle.
@@ -14075,10 +14179,38 @@ components:
14075
14179
  examples:
14076
14180
  - HTTPImport
14077
14181
  - NetSuiteDistributedImport
14182
+ - NetSuiteHTTPImport
14078
14183
  - SalesforceImport
14079
14184
  - FTPImport
14080
14185
  - AiAgentImport
14081
14186
  - GuardrailImport
14187
+ nsDomainType:
14188
+ type: string
14189
+ enum:
14190
+ - suitetalk
14191
+ - restlet
14192
+ x-lowercase: true
14193
+ x-enumDescriptions:
14194
+ suitetalk: NetSuite SuiteTalk REST web services — record endpoints under /services/rest/record/v1
14195
+ restlet: A custom RESTlet script deployed in the NetSuite account, called at /app/site/hosting/restlet.nl?script=<id>&deploy=<n>
14196
+ description: |-
14197
+ Selects which NetSuite REST host a `NetSuiteHTTPImport` calls. The server derives the
14198
+ full base URL from the connection's NetSuite account
14199
+ (`https://<account>.suitetalk.api.netsuite.com` or `https://<account>.restlets.api.netsuite.com`)
14200
+ and signs each request with the connection's token-based credentials, so each
14201
+ `http.relativeURI` entry carries the complete path starting at `/services/rest/...` or
14202
+ `/app/site/hosting/restlet.nl`. Ignored on other adaptor types.
14203
+ x-celigo-ai-guidance:
14204
+ - |-
14205
+ Required on `NetSuiteHTTPImport`: omitting it fails the save with 422 "Path `nsDomainType`
14206
+ is required." The import's `_connectionId` must be a netsuite connection — an http
14207
+ connection fails with 422 invalid_connection_type.
14208
+ - |-
14209
+ With `suitetalk`, saving links `http._httpConnectorVersionId`, `_httpConnectorResourceId`
14210
+ and `_httpConnectorEndpointIds` to the platform's SuiteTalk connector from each
14211
+ `http.method` + `http.relativeURI` pair (for example `POST /services/rest/record/v1/customer`
14212
+ links to that record type's insert endpoint), so the UI's Simple view renders an
14213
+ API-authored step; `restlet` steps are not linked.
14082
14214
  externalId:
14083
14215
  type:
14084
14216
  - string
@@ -15111,6 +15243,16 @@ components:
15111
15243
  else:
15112
15244
  required:
15113
15245
  - _connectionId
15246
+ if:
15247
+ properties:
15248
+ adaptorType:
15249
+ const: NetSuiteHTTPImport
15250
+ required:
15251
+ - adaptorType
15252
+ then:
15253
+ required:
15254
+ - http
15255
+ - nsDomainType
15114
15256
  Error:
15115
15257
  type: object
15116
15258
  description: Standard error response envelope returned by integrator.io APIs.