@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/export.yml CHANGED
@@ -904,10 +904,15 @@ components:
904
904
  iterate ``{{#each rows}}``); hook code sees the array as the
905
905
  record element and must not assume object shape.
906
906
  - |-
907
- Transform 2.0 cannot reshape a grouped record at the array root —
908
- ``mode: "modify"`` passes the array through untouched and
909
- ``mode: "create"`` yields an empty object. Reshape grouped data in
910
- a preSavePage hook (or downstream postResponseMap) instead.
907
+ A grouped record is ONE record: Mapper 2.0 and Transform 2.0 root
908
+ JSONPath at the array (``$[0].<field>`` / ``$[*].<field>``;
909
+ ``$.<field>`` resolves nothing), and a Transform 2.0 in ``mode:
910
+ "create"`` reshapes it in place — header fields from ``$[0]``, a
911
+ lines array from a ``buildArrayHelper`` over ``$[*]`` (``mode:
912
+ "modify"`` has no object to overlay and passes the array through
913
+ untouched). Changing how many records the page carries — each
914
+ row becoming its own record for every downstream step — is the
915
+ ``preSavePage`` hook's job alone.
911
916
  items:
912
917
  type: string
913
918
  examples:
@@ -5906,7 +5911,10 @@ components:
5906
5911
  - \\NAS\Accounting\AP
5907
5912
  Http:
5908
5913
  type: object
5909
- description: Configuration for HTTP exports. Required when the export's `_connectionId` references a connection of type `http`.
5914
+ description: |-
5915
+ Configuration for HTTP exports. Required when the export's `_connectionId` references a
5916
+ connection of type `http`, and on `NetSuiteHTTPExport` (NetSuite's REST APIs on a `netsuite`
5917
+ connection, where `nsDomainType` supplies the host).
5910
5918
  x-celigo-ai-guidance:
5911
5919
  - |-
5912
5920
  IMPORTANT:
@@ -5914,6 +5922,12 @@ components:
5914
5922
  this object MUST be populated for the export to function properly.
5915
5923
  This is a required configuration for all HTTP based exports,
5916
5924
  as determined by the connection associated with the export.
5925
+ - |-
5926
+ A `NetSuiteHTTPExport` uses this same object on a netsuite connection: `relativeURI`
5927
+ carries the full path from `/services/rest/...` (SuiteTalk) or
5928
+ `/app/site/hosting/restlet.nl?script=<id>&deploy=<n>` (custom RESTlet), the host and the
5929
+ token signature come from the connection, and `type` must stay unset (file, blob and
5930
+ csvstream are rejected with 422 unsupported_type).
5917
5931
  properties:
5918
5932
  type:
5919
5933
  type: string
@@ -6063,7 +6077,7 @@ components:
6063
6077
  x-celigo-agent:
6064
6078
  - handlebars
6065
6079
  x-celigo-handlebars-context: pre-mapped
6066
- description: 'Resource path appended to the connection''s `baseURI` to form the complete request URL. Path segments, query parameters, or the entire value can be built with handlebars expressions for endpoints determined at runtime. For lookup exports (`isLookup: true`) with mappings configured, handlebars always render against the original pre-mapped input record, so fields removed or renamed by mappings remain available for URI construction.'
6080
+ description: 'Resource path appended to the connection''s `baseURI` to form the complete request URL. Path segments, query parameters, or the entire value can be built with handlebars expressions for endpoints determined at runtime. For lookup exports (`isLookup: true`) with mappings configured, handlebars always render against the original pre-mapped input record, so fields removed or renamed by mappings remain available for URI construction. On `NetSuiteHTTPExport` the base URL is derived from the NetSuite connection and `nsDomainType`, so the path starts at `/services/rest/...` or `/app/site/hosting/restlet.nl`.'
6067
6081
  x-celigo-ai-guidance:
6068
6082
  - The resource path portion of the API endpoint used for this export.
6069
6083
  - |-
@@ -12801,9 +12815,11 @@ components:
12801
12815
  This field supports THREE DISTINCT PATTERNS that are easily distinguished:
12802
12816
 
12803
12817
  **1. json Path Syntax**
12804
- - MUST start with '$.' prefix
12818
+ - MUST start with '$' — the record root. An object record is addressed as
12819
+ '$.field'; a grouped (array) record as '$[0].field' / '$[*].field'
12805
12820
  - Used for precisely targeting data in structured JSON objects
12806
- - Examples: '$.customer.firstName', '$.items[0].price', '$.addresses[*].street'
12821
+ - Examples: '$.customer.firstName', '$.items[0].price', '$.addresses[*].street',
12822
+ '$[*].Tax' (every row of a grouped record)
12807
12823
  - Wildcards like [*] extract multiple values/objects
12808
12824
 
12809
12825
  ```json
@@ -12814,7 +12830,8 @@ components:
12814
12830
  - Contains '{{' and '}}' pattern
12815
12831
  - Evaluated by the AFE 2.0 handlebars template engine
12816
12832
  - Can include logic, formatting, and computation
12817
- - Access input record fields with {{record.fieldName}} notation
12833
+ - Access input record fields with {{record.fieldName}} notation; a grouped
12834
+ (array) record binds as `rows` instead — {{rows.0.fieldName}} / {{#each rows}}
12818
12835
  - Examples: "{{record.firstName}} {{record.lastName}}", "{{#if record.isActive}}Active{{else}}Inactive{{/if}}"
12819
12836
  - Valid on `object`, `objectarray`, and primitive-array dataTypes as
12820
12837
  well as scalars — the rendered template output must parse into the
@@ -12825,7 +12842,7 @@ components:
12825
12842
  ```
12826
12843
 
12827
12844
  **3. Hard-Coded Value (literal string)**
12828
- - Does NOT start with '$.'
12845
+ - Does NOT start with '$'
12829
12846
  - Does NOT contain handlebars '{{' syntax
12830
12847
  - System treats it as a literal string value
12831
12848
  - VERY COMMON for setting static/constant values
@@ -12847,10 +12864,38 @@ components:
12847
12864
  - The system maintains this context even in deeply nested mappings
12848
12865
  - For object mappings without child mappings, extract should return a complete object
12849
12866
  - When both extract and mappings are defined for objects, extract is applied first
12867
+ - The root is the record as it arrives: an object record roots at `$.field`; a
12868
+ grouped record (an array of rows — grouped exports, file key columns, NetSuite
12869
+ grouped saved searches) roots at the array, so its rows are addressed as
12870
+ `$[0].field` (one row) or `$[*].field` (every row). A root that contradicts the
12871
+ record's shape resolves to nothing without an error.
12850
12872
 
12851
12873
  For most simple field-to-field mappings, prefer JSON path syntax for its clarity and performance.
12852
12874
  For hard-coded values, simply use the literal string as the extract value.
12853
12875
  x-celigo-ai-guidance:
12876
+ - |-
12877
+ ## GROUPED (ARRAY) RECORDS
12878
+ Decide the JSONPath root from the record's shape before writing
12879
+ any extract. When the record is an array of rows, `$.field`,
12880
+ `$.properties.field` and `$.rows[*].field` all resolve to
12881
+ nothing — the processor still reports success and the request
12882
+ body ships as `{}`. Address rows as `$[0].field` (that row's
12883
+ value, typed) or `$[*].field` (every row: joined with commas
12884
+ into a `string` destination; rejected with
12885
+ `incompatible_destination_conversion` into a `number`
12886
+ destination). Column labels with spaces work as
12887
+ `$[*][Order Number]`, `$[*].[Order Number]`, or
12888
+ `$[*]['Order Number']`. For one destination element per row
12889
+ the two array kinds take different helper forms: a primitive
12890
+ array (`stringarray` / `numberarray`) uses `buildArrayHelper:
12891
+ [{"extract": "$[*].field"}]`; an `objectarray` uses
12892
+ `buildArrayHelper: [{"extract": "$[*]", "mappings": [...]}]`
12893
+ with the children addressing the row relatively (`$.field`,
12894
+ `{{rows.field}}`). An `extract` placed directly on the
12895
+ array-typed field yields nothing. Handlebars
12896
+ extracts bind the array record as `rows` (`{{rows.0.field}}`),
12897
+ an object record as `record`. The reverse holds too: `$[*]` on
12898
+ an object record iterates the object's values, not rows.
12854
12899
  - |-
12855
12900
  ## SIZE LIMIT
12856
12901
  The platform's import save validator caps this field at **1024
@@ -13108,7 +13153,11 @@ components:
13108
13153
  (`$.items[*]`), `"$"` (the record root), or omission — a
13109
13154
  constructed entry (child `mappings` with the extract omitted or
13110
13155
  `"$"`; the two spellings are equivalent) contributes exactly one
13111
- element, and entries append in order. Indexed or comma-joined
13156
+ element, and entries append in order. On a grouped (array)
13157
+ record the record itself is the array to iterate: `"$[*]"`
13158
+ yields one `objectarray` element per row (children address the
13159
+ row as `$.field`), and `"$[*].field"` yields one primitive-array
13160
+ value per row. Indexed or comma-joined
13112
13161
  entry extracts (`"$[0]"`, `"$[0],$[0]"`) are not valid: the
13113
13162
  processor renders the entire destination array as null with no
13114
13163
  validation error. To emit a fixed number of static elements, add
@@ -13129,7 +13178,9 @@ components:
13129
13178
 
13130
13179
  **For Simple Arrays (stringarray, numberarray, booleanarray)**
13131
13180
  - Only the 'extract' field is used to pull values
13132
- - JSON path with wildcards (e.g., $.items[*].name) returns multiple values
13181
+ - JSON path with wildcards (e.g., $.items[*].name) returns multiple values;
13182
+ on a grouped (array) record the record itself is the array, so the
13183
+ path roots at it ($[*].name — one value per row)
13133
13184
  - Each result is converted to the appropriate primitive type
13134
13185
  ```json
13135
13186
  {
@@ -13231,11 +13282,13 @@ components:
13231
13282
  - When both extract and mappings are provided, the system creates special composite objects
13232
13283
  that maintain hierarchical context during processing
13233
13284
  - This enables accessing both the current array element AND its parent context
13234
- - An ITERATING entry's extract MUST use JSON path syntax starting with '$.'
13235
- (e.g. '$.items[*]'). A CONSTRUCTED entry (child mappings building one element)
13236
- instead omits extract or sets it to exactly "$" — never rewrite "$" into a
13237
- '$.'-prefixed, indexed, or comma-joined form ('$[0]', '$[0],$[0]'): those render
13238
- the entire destination array as null without raising a validation error
13285
+ - An ITERATING entry's extract MUST be a JSON path that iterates an array:
13286
+ '$.items[*]' when the array is a field of an object record, or '$[*]'
13287
+ (objectarray) / '$[*].field' (primitive arrays) when the record itself is a
13288
+ grouped array of rows. A CONSTRUCTED entry (child mappings building one
13289
+ element) instead omits extract or sets it to exactly "$" — never rewrite "$"
13290
+ into an indexed or comma-joined form ('$[0]', '$[0],$[0]'): those render the
13291
+ entire destination array as null without raising a validation error
13239
13292
  - Each array helper entry acts independently, potentially adding multiple elements
13240
13293
 
13241
13294
  The buildArrayHelper is the most complex part of the mappings system - always analyze the
@@ -13649,9 +13702,11 @@ components:
13649
13702
  This field supports THREE DISTINCT PATTERNS that are easily distinguished:
13650
13703
 
13651
13704
  **1. json Path Syntax**
13652
- - MUST start with '$.' prefix
13705
+ - MUST start with '$' — the record root. An object record is addressed as
13706
+ '$.field'; a grouped (array) record as '$[0].field' / '$[*].field'
13653
13707
  - Used for precisely targeting data in structured JSON objects
13654
- - Examples: '$.customer.firstName', '$.items[0].price', '$.addresses[*].street'
13708
+ - Examples: '$.customer.firstName', '$.items[0].price', '$.addresses[*].street',
13709
+ '$[*].Tax' (every row of a grouped record)
13655
13710
  - Wildcards like [*] extract multiple values/objects
13656
13711
 
13657
13712
  ```json
@@ -13662,7 +13717,8 @@ components:
13662
13717
  - Contains '{{' and '}}' pattern
13663
13718
  - Evaluated by the AFE 2.0 handlebars template engine
13664
13719
  - Can include logic, formatting, and computation
13665
- - Access input record fields with {{record.fieldName}} notation
13720
+ - Access input record fields with {{record.fieldName}} notation; a grouped
13721
+ (array) record binds as `rows` instead — {{rows.0.fieldName}} / {{#each rows}}
13666
13722
  - Examples: "{{record.firstName}} {{record.lastName}}", "{{#if record.isActive}}Active{{else}}Inactive{{/if}}"
13667
13723
  - Valid on `object`, `objectarray`, and primitive-array dataTypes as
13668
13724
  well as scalars — the rendered template output must parse into the
@@ -13673,7 +13729,7 @@ components:
13673
13729
  ```
13674
13730
 
13675
13731
  **3. Hard-Coded Value (literal string)**
13676
- - Does NOT start with '$.'
13732
+ - Does NOT start with '$'
13677
13733
  - Does NOT contain handlebars '{{' syntax
13678
13734
  - System treats it as a literal string value
13679
13735
  - VERY COMMON for setting static/constant values
@@ -13695,10 +13751,38 @@ components:
13695
13751
  - The system maintains this context even in deeply nested mappings
13696
13752
  - For object mappings without child mappings, extract should return a complete object
13697
13753
  - When both extract and mappings are defined for objects, extract is applied first
13754
+ - The root is the record as it arrives: an object record roots at `$.field`; a
13755
+ grouped record (an array of rows — grouped exports, file key columns, NetSuite
13756
+ grouped saved searches) roots at the array, so its rows are addressed as
13757
+ `$[0].field` (one row) or `$[*].field` (every row). A root that contradicts the
13758
+ record's shape resolves to nothing without an error.
13698
13759
 
13699
13760
  For most simple field-to-field mappings, prefer JSON path syntax for its clarity and performance.
13700
13761
  For hard-coded values, simply use the literal string as the extract value.
13701
13762
  x-celigo-ai-guidance:
13763
+ - |-
13764
+ ## GROUPED (ARRAY) RECORDS
13765
+ Decide the JSONPath root from the record's shape before writing
13766
+ any extract. When the record is an array of rows, `$.field`,
13767
+ `$.properties.field` and `$.rows[*].field` all resolve to
13768
+ nothing — the processor still reports success and the request
13769
+ body ships as `{}`. Address rows as `$[0].field` (that row's
13770
+ value, typed) or `$[*].field` (every row: joined with commas
13771
+ into a `string` destination; rejected with
13772
+ `incompatible_destination_conversion` into a `number`
13773
+ destination). Column labels with spaces work as
13774
+ `$[*][Order Number]`, `$[*].[Order Number]`, or
13775
+ `$[*]['Order Number']`. For one destination element per row
13776
+ the two array kinds take different helper forms: a primitive
13777
+ array (`stringarray` / `numberarray`) uses `buildArrayHelper:
13778
+ [{"extract": "$[*].field"}]`; an `objectarray` uses
13779
+ `buildArrayHelper: [{"extract": "$[*]", "mappings": [...]}]`
13780
+ with the children addressing the row relatively (`$.field`,
13781
+ `{{rows.field}}`). An `extract` placed directly on the
13782
+ array-typed field yields nothing. Handlebars
13783
+ extracts bind the array record as `rows` (`{{rows.0.field}}`),
13784
+ an object record as `record`. The reverse holds too: `$[*]` on
13785
+ an object record iterates the object's values, not rows.
13702
13786
  - |-
13703
13787
  ## SIZE LIMIT
13704
13788
  The platform's import save validator caps this field at **1024
@@ -13956,7 +14040,11 @@ components:
13956
14040
  (`$.items[*]`), `"$"` (the record root), or omission — a
13957
14041
  constructed entry (child `mappings` with the extract omitted or
13958
14042
  `"$"`; the two spellings are equivalent) contributes exactly one
13959
- element, and entries append in order. Indexed or comma-joined
14043
+ element, and entries append in order. On a grouped (array)
14044
+ record the record itself is the array to iterate: `"$[*]"`
14045
+ yields one `objectarray` element per row (children address the
14046
+ row as `$.field`), and `"$[*].field"` yields one primitive-array
14047
+ value per row. Indexed or comma-joined
13960
14048
  entry extracts (`"$[0]"`, `"$[0],$[0]"`) are not valid: the
13961
14049
  processor renders the entire destination array as null with no
13962
14050
  validation error. To emit a fixed number of static elements, add
@@ -13977,7 +14065,9 @@ components:
13977
14065
 
13978
14066
  **For Simple Arrays (stringarray, numberarray, booleanarray)**
13979
14067
  - Only the 'extract' field is used to pull values
13980
- - JSON path with wildcards (e.g., $.items[*].name) returns multiple values
14068
+ - JSON path with wildcards (e.g., $.items[*].name) returns multiple values;
14069
+ on a grouped (array) record the record itself is the array, so the
14070
+ path roots at it ($[*].name — one value per row)
13981
14071
  - Each result is converted to the appropriate primitive type
13982
14072
  ```json
13983
14073
  {
@@ -14079,11 +14169,13 @@ components:
14079
14169
  - When both extract and mappings are provided, the system creates special composite objects
14080
14170
  that maintain hierarchical context during processing
14081
14171
  - This enables accessing both the current array element AND its parent context
14082
- - An ITERATING entry's extract MUST use JSON path syntax starting with '$.'
14083
- (e.g. '$.items[*]'). A CONSTRUCTED entry (child mappings building one element)
14084
- instead omits extract or sets it to exactly "$" — never rewrite "$" into a
14085
- '$.'-prefixed, indexed, or comma-joined form ('$[0]', '$[0],$[0]'): those render
14086
- the entire destination array as null without raising a validation error
14172
+ - An ITERATING entry's extract MUST be a JSON path that iterates an array:
14173
+ '$.items[*]' when the array is a field of an object record, or '$[*]'
14174
+ (objectarray) / '$[*].field' (primitive arrays) when the record itself is a
14175
+ grouped array of rows. A CONSTRUCTED entry (child mappings building one
14176
+ element) instead omits extract or sets it to exactly "$" — never rewrite "$"
14177
+ into an indexed or comma-joined form ('$[0]', '$[0],$[0]'): those render the
14178
+ entire destination array as null without raising a validation error
14087
14179
  - Each array helper entry acts independently, potentially adding multiple elements
14088
14180
 
14089
14181
  The buildArrayHelper is the most complex part of the mappings system - always analyze the
@@ -14809,6 +14901,16 @@ components:
14809
14901
  x-enumDescriptions:
14810
14902
  create: Builds entirely new output records from inputs, ignoring unmapped fields.
14811
14903
  modify: Makes targeted edits to existing records, preserving unmapped fields.
14904
+ x-celigo-ai-guidance:
14905
+ - |-
14906
+ On a grouped record (the export groups rows, so the record is an
14907
+ array) only `create` can author output — build it from the rows with
14908
+ `$[0].field`, `$[*].field`, or a `buildArrayHelper` over `$[*]`.
14909
+ `modify` has no object to overlay onto an array: the record passes
14910
+ through untouched and the processor reports success. Either mode
14911
+ reshapes the inside of one record; neither changes how many records
14912
+ the page carries (that is the export's `preSavePage` hook) or whether
14913
+ the export groups at all (that is its grouping setting).
14812
14914
  examples:
14813
14915
  - create
14814
14916
  - modify
@@ -15787,7 +15889,8 @@ components:
15787
15889
  - 'null'
15788
15890
  description: |-
15789
15891
  Connection this export uses to reach the source system. The connection's type must be
15790
- compatible with the export's `adaptorType` (e.g. an `HTTPExport` needs an `http` connection).
15892
+ compatible with the export's `adaptorType` (e.g. an `HTTPExport` needs an `http` connection;
15893
+ `NetSuiteExport` and `NetSuiteHTTPExport` both need a `netsuite` connection).
15791
15894
  Server-required unless `type` is `webhook` or `simple` (those receive data instead of fetching it).
15792
15895
  examples:
15793
15896
  - 60a2c4e6f321d800129a1a3c
@@ -15803,6 +15906,7 @@ components:
15803
15906
  - AS2Export
15804
15907
  - S3Export
15805
15908
  - NetSuiteExport
15909
+ - NetSuiteHTTPExport
15806
15910
  - SalesforceExport
15807
15911
  - JDBCExport
15808
15912
  - RDBMSExport
@@ -15818,7 +15922,8 @@ components:
15818
15922
  FTPExport: Exports files from FTP or SFTP servers.
15819
15923
  AS2Export: Exports data using the AS2 (Applicability Statement 2) secure file transfer protocol.
15820
15924
  S3Export: Exports files from Amazon S3 cloud storage buckets.
15821
- NetSuiteExport: Exports data from Oracle NetSuite using saved searches, RESTlets, or SuiteApp.
15925
+ NetSuiteExport: Exports data from Oracle NetSuite through the Celigo SuiteApp/bundle RESTlets (saved searches or search criteria), SOAP web services, real-time listeners, or the file cabinet.
15926
+ NetSuiteHTTPExport: Exports records from Oracle NetSuite over its REST APIs — SuiteTalk REST record endpoints and SuiteQL, or a custom RESTlet — on a netsuite connection, with no saved search and no Celigo SuiteApp involved.
15822
15927
  SalesforceExport: Exports data from Salesforce using SOQL queries or real-time events.
15823
15928
  JDBCExport: Exports data from databases using JDBC connections.
15824
15929
  RDBMSExport: Exports data from relational databases using SQL queries.
@@ -15832,7 +15937,71 @@ components:
15832
15937
  examples:
15833
15938
  - HTTPExport
15834
15939
  - NetSuiteExport
15940
+ - NetSuiteHTTPExport
15835
15941
  - SalesforceExport
15942
+ x-celigo-ai-guidance:
15943
+ - |-
15944
+ On a netsuite connection, default to `NetSuiteHTTPExport` (with `nsDomainType` and an
15945
+ `http` object) for exports and lookups: it reads records over NetSuite's REST APIs with
15946
+ nothing to create in NetSuite first — SuiteQL for filtered or multi-table extracts, the
15947
+ record endpoint `GET /services/rest/record/v1/<type>/{id}` for one record. Choose
15948
+ `NetSuiteExport` when the user names an existing saved search or asks for one, for
15949
+ real-time listeners (`type: distributed`), and for file-cabinet exports; never convert an
15950
+ existing `NetSuiteExport` to `NetSuiteHTTPExport` unless asked.
15951
+ - |-
15952
+ When authoring a NetSuite REST export, send `adaptorType: "NetSuiteHTTPExport"` explicitly:
15953
+ on a netsuite connection the server otherwise infers `NetSuiteExport` and rejects the
15954
+ document with 422 "netsuite subschema not defined", even though `nsDomainType` and `http`
15955
+ are present.
15956
+ nsDomainType:
15957
+ type: string
15958
+ enum:
15959
+ - suitetalk
15960
+ - restlet
15961
+ x-lowercase: true
15962
+ x-enumDescriptions:
15963
+ suitetalk: NetSuite SuiteTalk REST web services — record endpoints under /services/rest/record/v1 and SuiteQL under /services/rest/query/v1
15964
+ restlet: A custom RESTlet script deployed in the NetSuite account, called at /app/site/hosting/restlet.nl?script=<id>&deploy=<n>
15965
+ description: |-
15966
+ Selects which NetSuite REST host a `NetSuiteHTTPExport` calls. The server derives the
15967
+ full base URL from the connection's NetSuite account
15968
+ (`https://<account>.suitetalk.api.netsuite.com` or `https://<account>.restlets.api.netsuite.com`)
15969
+ and signs each request with the connection's token-based credentials, so `http.relativeURI`
15970
+ carries the complete path starting at `/services/rest/...` or `/app/site/hosting/restlet.nl`.
15971
+ Ignored on other adaptor types.
15972
+ x-celigo-ai-guidance:
15973
+ - |-
15974
+ Required on `NetSuiteHTTPExport`: omitting it fails the save with 422 "Path `nsDomainType`
15975
+ is required." and any other value fails with 422 "is not a valid enum value for path
15976
+ `nsDomainType`". The export's `_connectionId` must be a netsuite connection — an http
15977
+ connection fails with 422 invalid_connection_type.
15978
+ - |-
15979
+ With `suitetalk`, saving links `http._httpConnectorVersionId`, `_httpConnectorResourceId`
15980
+ and `_httpConnectorEndpointId` to the platform's SuiteTalk connector from `http.method` +
15981
+ `http.relativeURI`, so the UI's Simple view renders an API-authored step; `restlet` steps
15982
+ are not linked.
15983
+ - |-
15984
+ The record list endpoint (`GET /services/rest/record/v1/<type>?limit=<n>&offset={{{export.http.paging.skip}}}`)
15985
+ returns only `{id, links}` per item, so it yields no business fields on its own. For
15986
+ records with fields use SuiteQL: `POST /services/rest/query/v1/suiteql?limit=<n>&offset={{{export.http.paging.skip}}}`,
15987
+ header `Prefer: transient`, `http.body` `{"q": "<SuiteQL>"}`, `http.paging.method: skip`,
15988
+ `http.response.resourcePath: items`; the response envelope carries `hasMore` and
15989
+ `totalResults`. SuiteQL column names are the Records Catalog names (lowercase, e.g.
15990
+ `entityid`, `lastmodifieddate`), not the REST record field names.
15991
+ - |-
15992
+ For incremental runs set `type: delta`, embed `{{lastExportDateTime}}` in the SuiteQL
15993
+ `WHERE` clause (or the record endpoint's `q` parameter) and set `delta.dateFormat` to the
15994
+ format the query compares against, e.g. `to_char(lastmodifieddate,'YYYY-MM-DD HH24:MI:SS') >= '{{lastExportDateTime}}'`
15995
+ with `delta.dateFormat: "YYYY-MM-DD HH:mm:ss"`. In a preview the placeholder renders
15996
+ empty, so preview results do not reflect the delta window.
15997
+ - |-
15998
+ NetSuite must have the REST Web Services feature enabled (Setup > Company > Enable
15999
+ Features > SuiteCloud); otherwise every SuiteTalk call fails with NetSuite 403
16000
+ FEATURE_DISABLED "The 'REST Web Services' feature is not enabled". Custom RESTlets do
16001
+ not need it.
16002
+ - |-
16003
+ `http.type` file, blob, and csvstream are each rejected with 422 unsupported_type
16004
+ ("NetSuiteHTTPExport does not support type: <value>") — REST steps are record-based only.
15836
16005
  type:
15837
16006
  type:
15838
16007
  - string
@@ -16104,8 +16273,8 @@ components:
16104
16273
  description: |-
16105
16274
  Field mappings applied to each incoming record before a lookup HTTP request is made,
16106
16275
  reshaping the upstream record into the structure the lookup target API expects. Only
16107
- supported when `isLookup` is true and `adaptorType` is `HTTPExport`; do not set it on
16108
- source exports or non-HTTP lookups.
16276
+ supported when `isLookup` is true and `adaptorType` is `HTTPExport` or
16277
+ `NetSuiteHTTPExport`; do not set it on source exports or other lookup adaptors.
16109
16278
  allOf:
16110
16279
  - $ref: '#/components/schemas/Mappings'
16111
16280
  x-celigo-ai-guidance:
@@ -16118,8 +16287,9 @@ components:
16118
16287
  1. ``isLookup`` is ``true`` (the export is being used as a
16119
16288
  lookup step, not a source export), AND
16120
16289
  2. ``adaptorType`` is ``"HTTPExport"`` (generic REST/SOAP
16121
- HTTP lookup — not NetSuite, Salesforce, RDBMS, file-based,
16122
- or any other adaptor).
16290
+ HTTP lookup) or ``"NetSuiteHTTPExport"`` (NetSuite REST
16291
+ APIs) — not the saved-search NetSuite adaptor, Salesforce,
16292
+ RDBMS, file-based, or any other adaptor.
16123
16293
 
16124
16294
  For any other combination (source exports, non-HTTP lookup
16125
16295
  exports), do **not** emit this field. Explain the constraint
@@ -16643,92 +16813,103 @@ components:
16643
16813
  if:
16644
16814
  properties:
16645
16815
  adaptorType:
16646
- const: SalesforceExport
16816
+ const: NetSuiteHTTPExport
16647
16817
  required:
16648
16818
  - adaptorType
16649
16819
  then:
16650
16820
  required:
16651
- - salesforce
16821
+ - http
16822
+ - nsDomainType
16652
16823
  else:
16653
16824
  if:
16654
16825
  properties:
16655
16826
  adaptorType:
16656
- const: JDBCExport
16827
+ const: SalesforceExport
16657
16828
  required:
16658
16829
  - adaptorType
16659
16830
  then:
16660
16831
  required:
16661
- - jdbc
16832
+ - salesforce
16662
16833
  else:
16663
16834
  if:
16664
16835
  properties:
16665
16836
  adaptorType:
16666
- const: RDBMSExport
16837
+ const: JDBCExport
16667
16838
  required:
16668
16839
  - adaptorType
16669
16840
  then:
16670
16841
  required:
16671
- - rdbms
16842
+ - jdbc
16672
16843
  else:
16673
16844
  if:
16674
16845
  properties:
16675
16846
  adaptorType:
16676
- const: MongodbExport
16847
+ const: RDBMSExport
16677
16848
  required:
16678
16849
  - adaptorType
16679
16850
  then:
16680
16851
  required:
16681
- - mongodb
16852
+ - rdbms
16682
16853
  else:
16683
16854
  if:
16684
16855
  properties:
16685
16856
  adaptorType:
16686
- const: DynamodbExport
16857
+ const: MongodbExport
16687
16858
  required:
16688
16859
  - adaptorType
16689
16860
  then:
16690
16861
  required:
16691
- - dynamodb
16862
+ - mongodb
16692
16863
  else:
16693
16864
  if:
16694
16865
  properties:
16695
16866
  adaptorType:
16696
- const: WrapperExport
16867
+ const: DynamodbExport
16697
16868
  required:
16698
16869
  - adaptorType
16699
16870
  then:
16700
16871
  required:
16701
- - wrapper
16872
+ - dynamodb
16702
16873
  else:
16703
16874
  if:
16704
16875
  properties:
16705
16876
  adaptorType:
16706
- const: WebhookExport
16877
+ const: WrapperExport
16707
16878
  required:
16708
16879
  - adaptorType
16709
16880
  then:
16710
16881
  required:
16711
- - webhook
16882
+ - wrapper
16712
16883
  else:
16713
16884
  if:
16714
16885
  properties:
16715
16886
  adaptorType:
16716
- const: FileSystemExport
16887
+ const: WebhookExport
16717
16888
  required:
16718
16889
  - adaptorType
16719
16890
  then:
16720
16891
  required:
16721
- - filesystem
16892
+ - webhook
16722
16893
  else:
16723
16894
  if:
16724
16895
  properties:
16725
16896
  adaptorType:
16726
- const: RESTExport
16897
+ const: FileSystemExport
16727
16898
  required:
16728
16899
  - adaptorType
16729
16900
  then:
16730
16901
  required:
16731
- - http
16902
+ - filesystem
16903
+ else:
16904
+ if:
16905
+ properties:
16906
+ adaptorType:
16907
+ const: RESTExport
16908
+ required:
16909
+ - adaptorType
16910
+ then:
16911
+ required:
16912
+ - http
16732
16913
  Error:
16733
16914
  type: object
16734
16915
  description: Standard error response envelope returned by integrator.io APIs.