@celigo/api-specs 0.2.167 → 0.2.169

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/api.yml CHANGED
@@ -5932,6 +5932,14 @@ components:
5932
5932
  Do NOT include the protocol prefix (e.g., use "ftp.example.com", not "sftp://ftp.example.com").
5933
5933
  examples:
5934
5934
  - sftp.example.com
5935
+ x-celigo-ai-guidance:
5936
+ - |-
5937
+ Don't point a connection at this environment's own Celigo file server (its
5938
+ `endpoint.hostname`, with a username ending in `@<identifier>`, the server's own
5939
+ `identifier`): a flow reads those files from Celigo Storage directly, and the save
5940
+ refuses that pairing with 422 `fileserver_loopback_not_supported`. Another
5941
+ environment's file server on the same host, such as a trading partner's, is an
5942
+ ordinary connection.
5935
5943
  port:
5936
5944
  type: number
5937
5945
  description: |
@@ -6055,7 +6063,8 @@ components:
6055
6063
  description: |
6056
6064
  Maximum number of concurrent file transfer operations.
6057
6065
  FTP servers often have low connection limits — keep this value conservative.
6058
- Send no more than the account's licensed maximum (25 standard, 50 with an Environments license).
6066
+ Send no more than the account's licensed maximum, the license's `concurrency` (25 standard,
6067
+ 50 with an Environments license).
6059
6068
  Unlike the rest of the `ftp` object, a `PUT` that omits this field keeps the stored value instead of clearing it.
6060
6069
  minimum: 1
6061
6070
  maximum: 50
@@ -6079,7 +6088,7 @@ components:
6079
6088
  description: |-
6080
6089
  Number of parallel transfer threads for this FTP connection. Must be a
6081
6090
  whole number — decimals are rejected on save. Send no more than the
6082
- account's licensed concurrency maximum. On
6091
+ account's licensed concurrency maximum, the same as for `concurrencyLevel`. On
6083
6092
  save the value is mirrored into `userConcurrencyLevel` (and into
6084
6093
  `userTargetConcurrencyLevel` when auto-recovery of rate-limit errors
6085
6094
  is active with `targetConcurrencyLevel` set); clearing it clears the
@@ -1185,7 +1185,8 @@ paths:
1185
1185
  `POST /v1/connections/{_id}/ping`, with no request body to send. Runs the adaptor's ping
1186
1186
  routine against the connection identified by `_id` to verify its credentials and network
1187
1187
  configuration still work; no data is read, written, or modified. An `http` connection with
1188
- no `http.ping` answers `{code: 200}` without sending any request.
1188
+ no `http.ping` answers `{code: 200}` without sending any request, unless it authorizes with
1189
+ an authorization code and holds no token yet: that one answers `missing_token`.
1189
1190
 
1190
1191
  Inspect the response body, not the HTTP status, to determine the outcome: success and
1191
1192
  adaptor-level failures both return HTTP 200 — success is `{code: 200}`, failures are
@@ -1259,8 +1260,10 @@ paths:
1259
1260
  whichever verb the client supports. Both verbs return HTTP 200 with {code: 200} on
1260
1261
  success and HTTP 200 with {errors: [...]} on adaptor-level failure, so inspect the body,
1261
1262
  not the status code. On an `http` connection, {code: 200} shows reachability only once
1262
- `http.ping` is set: with no ping configured, nothing is sent and the answer is always
1263
- {code: 200}.
1263
+ `http.ping` is set: with no ping configured, nothing is sent and the answer is
1264
+ {code: 200}, or `missing_token` for an authorization-code OAuth connection that holds no
1265
+ token yet. An OAuth connection requests a token only when the target answers 401, so a
1266
+ ping of an endpoint that needs no authentication passes without testing the OAuth setup.
1264
1267
  post:
1265
1268
  x-internal: false
1266
1269
  summary: Ping an existing connection
@@ -1270,8 +1273,11 @@ paths:
1270
1273
  adaptor-specific (HTTP sends the `http.ping` request, RDBMS/JDBC open a driver session,
1271
1274
  MCP issues a tools/list, NetSuite/Salesforce do a token or session validation). An `http`
1272
1275
  connection with no `http.ping` passes with `{code: 200}` without sending any request, so
1273
- the ping proves nothing about it until a ping is configured. The request body is optional
1274
- and ignored.
1276
+ the ping proves nothing about it until a ping is configured; one that authorizes with an
1277
+ authorization code and holds no token yet answers `missing_token` instead. An OAuth
1278
+ connection requests a token only when the target answers 401, so a ping of an endpoint
1279
+ that needs no authentication passes without testing the OAuth setup. The request body
1280
+ is optional and ignored.
1275
1281
 
1276
1282
  Inspect the response body, not the HTTP status, to determine the outcome: success and
1277
1283
  adaptor-level failures both return HTTP 200 — success is `{code: 200}`, failures are
@@ -1383,8 +1389,10 @@ paths:
1383
1389
  - Return connection status and any error details
1384
1390
 
1385
1391
  Exception: an `http` connection with no `http.ping` answers {code: 200} without sending
1386
- any request, so it proves nothing until a ping (ideally one that needs the connection's
1387
- credentials) is configured.
1392
+ any request (or `missing_token`, for an authorization-code OAuth connection that holds no
1393
+ token yet), so it proves nothing until a ping is configured — one that needs the
1394
+ connection's credentials, since an OAuth connection requests a token only when the target
1395
+ answers 401.
1388
1396
  /v1/connections/{_id}/proxy:
1389
1397
  post:
1390
1398
  x-internal: false
@@ -2942,6 +2950,8 @@ paths:
2942
2950
  `/v1/connections/{_id}/oauth2` is an alias that answers identically. The URL's
2943
2951
  `state` token is one-time and expires quickly, so request a fresh one if the flow is
2944
2952
  interrupted, then poll `GET /v1/connections/{_id}` until `needsAuthorization` is `false`.
2953
+ On a connection that uses PKCE (an iClient with `oauth2.pkceCodeChallengeMethod`), each call
2954
+ issues a new `code_challenge`, so send the user to the most recent URL only.
2945
2955
 
2946
2956
  The URL's `redirect_uri` is the account's Celigo callback
2947
2957
  (`https://integrator.io/connection/oauth2callback` on North America), which the provider's
@@ -4780,6 +4790,14 @@ components:
4780
4790
  Do NOT include the protocol prefix (e.g., use "ftp.example.com", not "sftp://ftp.example.com").
4781
4791
  examples:
4782
4792
  - sftp.example.com
4793
+ x-celigo-ai-guidance:
4794
+ - |-
4795
+ Don't point a connection at this environment's own Celigo file server (its
4796
+ `endpoint.hostname`, with a username ending in `@<identifier>`, the server's own
4797
+ `identifier`): a flow reads those files from Celigo Storage directly, and the save
4798
+ refuses that pairing with 422 `fileserver_loopback_not_supported`. Another
4799
+ environment's file server on the same host, such as a trading partner's, is an
4800
+ ordinary connection.
4783
4801
  port:
4784
4802
  type: number
4785
4803
  description: |
@@ -4903,7 +4921,8 @@ components:
4903
4921
  description: |
4904
4922
  Maximum number of concurrent file transfer operations.
4905
4923
  FTP servers often have low connection limits — keep this value conservative.
4906
- Send no more than the account's licensed maximum (25 standard, 50 with an Environments license).
4924
+ Send no more than the account's licensed maximum, the license's `concurrency` (25 standard,
4925
+ 50 with an Environments license).
4907
4926
  Unlike the rest of the `ftp` object, a `PUT` that omits this field keeps the stored value instead of clearing it.
4908
4927
  minimum: 1
4909
4928
  maximum: 50
@@ -4927,7 +4946,7 @@ components:
4927
4946
  description: |-
4928
4947
  Number of parallel transfer threads for this FTP connection. Must be a
4929
4948
  whole number — decimals are rejected on save. Send no more than the
4930
- account's licensed concurrency maximum. On
4949
+ account's licensed concurrency maximum, the same as for `concurrencyLevel`. On
4931
4950
  save the value is mirrored into `userConcurrencyLevel` (and into
4932
4951
  `userTargetConcurrencyLevel` when auto-recovery of rate-limit errors
4933
4952
  is active with `targetConcurrencyLevel` set); clearing it clears the
package/dist/enduser.yml CHANGED
@@ -2847,6 +2847,14 @@ components:
2847
2847
  Do NOT include the protocol prefix (e.g., use "ftp.example.com", not "sftp://ftp.example.com").
2848
2848
  examples:
2849
2849
  - sftp.example.com
2850
+ x-celigo-ai-guidance:
2851
+ - |-
2852
+ Don't point a connection at this environment's own Celigo file server (its
2853
+ `endpoint.hostname`, with a username ending in `@<identifier>`, the server's own
2854
+ `identifier`): a flow reads those files from Celigo Storage directly, and the save
2855
+ refuses that pairing with 422 `fileserver_loopback_not_supported`. Another
2856
+ environment's file server on the same host, such as a trading partner's, is an
2857
+ ordinary connection.
2850
2858
  port:
2851
2859
  type: number
2852
2860
  description: |
@@ -2970,7 +2978,8 @@ components:
2970
2978
  description: |
2971
2979
  Maximum number of concurrent file transfer operations.
2972
2980
  FTP servers often have low connection limits — keep this value conservative.
2973
- Send no more than the account's licensed maximum (25 standard, 50 with an Environments license).
2981
+ Send no more than the account's licensed maximum, the license's `concurrency` (25 standard,
2982
+ 50 with an Environments license).
2974
2983
  Unlike the rest of the `ftp` object, a `PUT` that omits this field keeps the stored value instead of clearing it.
2975
2984
  minimum: 1
2976
2985
  maximum: 50
@@ -2994,7 +3003,7 @@ components:
2994
3003
  description: |-
2995
3004
  Number of parallel transfer threads for this FTP connection. Must be a
2996
3005
  whole number — decimals are rejected on save. Send no more than the
2997
- account's licensed concurrency maximum. On
3006
+ account's licensed concurrency maximum, the same as for `concurrencyLevel`. On
2998
3007
  save the value is mirrored into `userConcurrencyLevel` (and into
2999
3008
  `userTargetConcurrencyLevel` when auto-recovery of rate-limit errors
3000
3009
  is active with `targetConcurrencyLevel` set); clearing it clears the
@@ -43,8 +43,9 @@ paths:
43
43
  `startTime` must be within the last 30 days and the span to `endTime` must not exceed 3 days.
44
44
  If `endTime` is omitted, the server defaults it to the current time. Poll
45
45
  `GET /v1/eventreports/{_id}` until `status` is `completed`, then download the CSV via
46
- `GET /v1/eventreports/{_id}/signedURL`. The create response includes `_requestedByUserId`;
47
- subsequent GET responses replace this with the `requestedByUser` object (name + email).
46
+ `GET /v1/eventreports/{_id}/signedURL`; generation can take several minutes. The create
47
+ response includes `_requestedByUserId`; subsequent GET responses replace this with the
48
+ `requestedByUser` object (name + email).
48
49
  requestBody:
49
50
  required: true
50
51
  content:
@@ -94,7 +95,42 @@ paths:
94
95
  '401':
95
96
  $ref: '#/components/responses/401-unauthorized'
96
97
  '422':
97
- $ref: '#/components/responses/422-unprocessable-entity'
98
+ description: |-
99
+ The window is out of bounds -- `startTime` more than 30 days back, `endTime` before
100
+ `startTime`, or a span over 3 days -- or `_flowIds` is empty. No report is created.
101
+ content:
102
+ application/json:
103
+ schema:
104
+ $ref: '#/components/schemas/Error'
105
+ examples:
106
+ span_over_three_days:
107
+ summary: Window longer than 3 days
108
+ value:
109
+ errors:
110
+ - field: endTime
111
+ code: invalid_range
112
+ message: For event report, the time gap between start and end time can't exceed 3 days.
113
+ start_over_thirty_days:
114
+ summary: Start more than 30 days back
115
+ value:
116
+ errors:
117
+ - field: startTime
118
+ code: invalid_starttime
119
+ message: The start time for the event report can't go beyond 30 days.
120
+ end_before_start:
121
+ summary: endTime before startTime
122
+ value:
123
+ errors:
124
+ - field: startTime
125
+ code: invalid_range
126
+ message: The end time can't be before than start time.
127
+ no_flows:
128
+ summary: Empty _flowIds
129
+ value:
130
+ errors:
131
+ - field: type
132
+ code: invalid_flowevents
133
+ message: Please select the flows for which the flow event report needs to be generated.
98
134
  get:
99
135
  x-internal: false
100
136
  operationId: listEventReports
@@ -227,6 +263,10 @@ paths:
227
263
  The URL is valid for approximately 15 minutes. Only works when the report `status` is
228
264
  `completed` -- requesting it in any other status returns 400. If the URL has expired,
229
265
  call this endpoint again to get a fresh one.
266
+
267
+ The file is served with `Content-Encoding: gzip`, so download it with a client that decodes
268
+ it (`curl --compressed`) or gunzip it afterwards. Its columns start `traceKey`, `time`,
269
+ `type`, `timeTaken`, `_flowJobId`.
230
270
  parameters:
231
271
  - name: _id
232
272
  in: path
@@ -670,19 +710,6 @@ components:
670
710
  errors:
671
711
  - code: invalid_request
672
712
  message: The request body failed validation.
673
- 422-unprocessable-entity:
674
- description: |
675
- Unprocessable entity. The request was well-formed but was unable to be followed due to semantic errors.
676
- content:
677
- application/json:
678
- schema:
679
- $ref: '#/components/schemas/Error'
680
- examples:
681
- default:
682
- value:
683
- errors:
684
- - code: unprocessable_entity
685
- message: The request could not be processed due to a semantic error.
686
713
  404-not-found:
687
714
  description: |
688
715
  Not found. The requested resource does not exist or is not visible to the caller.
package/dist/export.yml CHANGED
@@ -5580,7 +5580,10 @@ components:
5580
5580
  description: |-
5581
5581
  When true, a file whose records partially fail parsing against the file definition
5582
5582
  still emits the records that did parse, instead of failing the entire file. Applies to
5583
- file-definition (fixed-width, EDI) parsing only.
5583
+ file-definition (fixed-width, EDI) parsing only. For X12 and EDIFACT the unit is the
5584
+ transaction set (ST–SE, UNH–UNT), and it takes effect only with an EDI profile linked:
5585
+ a failed set is set aside and reported as an error while the file's other sets go on
5586
+ as records. Without this flag, one failed set fails the whole file.
5584
5587
  examples:
5585
5588
  - true
5586
5589
  - false
@@ -1163,8 +1163,12 @@ components:
1163
1163
  Primarily relevant for EDI EDIFACT format.
1164
1164
  skipEDIValidation:
1165
1165
  type: boolean
1166
+ default: true
1166
1167
  description: |
1167
- Whether to skip EDI structural validation during parsing.
1168
+ Whether to skip EDI element validation during parsing: element lengths, data types,
1169
+ code lists, mandatory elements and element relationships. Omitted means skipped, so
1170
+ these checks run only when it is `false`. Profile checks (`skipEDIProfileValidation`)
1171
+ and missing mandatory segments are separate and still apply.
1168
1172
  skipEDIProfileValidation:
1169
1173
  type: boolean
1170
1174
  default: false
@@ -1188,6 +1192,11 @@ components:
1188
1192
  `maxOccurrence` is 1 or unset, matches only the first row: in fixed-width and delimited
1189
1193
  files the parser drops the rest without an error, and an X12 parse fails at the next row,
1190
1194
  naming a mandatory segment as missing.
1195
+ - |-
1196
+ Cloning an export that uses a file definition also creates a new file definition, with the
1197
+ same name, and points the cloned export at it: the export's clone preview lists it as a
1198
+ `FileDefinition` object. Two definitions with one name can follow, so tell them apart by
1199
+ `_id`.
1191
1200
  ResourceResponse:
1192
1201
  type: object
1193
1202
  description: Response
@@ -1024,97 +1024,6 @@ paths:
1024
1024
  errors:
1025
1025
  - code: invalid_ref
1026
1026
  message: Integration not found.
1027
- /v1/integrations/{_id}/clonefamily:
1028
- get:
1029
- x-internal: false
1030
- operationId: listIntegrationCloneFamily
1031
- tags:
1032
- - Integrations
1033
- summary: List an integration's clone family
1034
- description: |-
1035
- Returns every member of the integration's clone family -- the original plus every clone
1036
- (recursively, across environments). Used by ILM to decide which integrations can be pull/push
1037
- sources or targets for the current integration.
1038
-
1039
- This endpoint requires the `integrator-ashareid` header to establish a shared-account context.
1040
- For simpler clone-relationship lookups, the integration's own `_sourceId` field points to the
1041
- parent it was cloned from, and `GET /v1/integrations?_sourceId=<id>` lists the children.
1042
- parameters:
1043
- - name: integrator-ashareid
1044
- in: header
1045
- required: true
1046
- description: |-
1047
- Account-share id that scopes the request to a specific shared-account context. The bearer
1048
- token's user must be the `sharedWithUser` of this ashare.
1049
- schema:
1050
- type: string
1051
- format: objectId
1052
- examples:
1053
- - 6798f4dc43db9184f4bc8ee0
1054
- - name: _id
1055
- in: path
1056
- required: true
1057
- description: Integration id.
1058
- schema:
1059
- type: string
1060
- format: objectId
1061
- x-celigo-refModel: integrations
1062
- examples:
1063
- - 6842261335b64c0bcb308e4f
1064
- responses:
1065
- '200':
1066
- description: Clone family members.
1067
- content:
1068
- application/json:
1069
- schema:
1070
- $ref: '#/components/schemas/CloneFamilyResponse'
1071
- examples:
1072
- family:
1073
- summary: Original integration plus one clone in another environment
1074
- value:
1075
- - _id: 6842261335b64c0bcb308e4f
1076
- name: Shopify → NetSuite Orders
1077
- - _id: 68f52162f00a35a1b26eaafb
1078
- name: Clone - Shopify → NetSuite Orders
1079
- _envId: 67b123456789abcdef012345
1080
- '401':
1081
- $ref: '#/components/responses/401-unauthorized'
1082
- '403':
1083
- description: |-
1084
- Either the `integrator-ashareid` header is malformed (code: `invalid_header_value`) or it
1085
- was omitted entirely (code: `get_not_allowed`, "GET resource not allowed for the given
1086
- model.").
1087
- content:
1088
- application/json:
1089
- schema:
1090
- $ref: '#/components/schemas/Error'
1091
- examples:
1092
- get_not_allowed:
1093
- summary: Header omitted entirely
1094
- value:
1095
- errors:
1096
- - code: get_not_allowed
1097
- message: GET resource not allowed for the given model.
1098
- invalid_header_value:
1099
- summary: Header malformed (not a 24-char hex id)
1100
- value:
1101
- errors:
1102
- - code: invalid_header_value
1103
- message: The value provided for request header Integrator-AShareId is invalid.
1104
- '404':
1105
- description: |-
1106
- Integration unknown, or the `integrator-ashareid` references a share whose `sharedWithUser`
1107
- isn't the bearer token's user (code: `access_restricted`).
1108
- content:
1109
- application/json:
1110
- schema:
1111
- $ref: '#/components/schemas/Error'
1112
- examples:
1113
- access_restricted:
1114
- value:
1115
- errors:
1116
- - code: access_restricted
1117
- message: Your access to an integrator.io environment or account has been disabled. For more information, contact account administrator.
1118
1027
  /v1/integrations/{_id}/flows:
1119
1028
  get:
1120
1029
  x-internal: false
@@ -2575,103 +2484,6 @@ paths:
2575
2484
  $ref: '#/components/responses/401-unauthorized'
2576
2485
  '404':
2577
2486
  $ref: '#/components/responses/404-not-found'
2578
- /v1/integrations/{_id}/iLMIgnore:
2579
- get:
2580
- x-internal: false
2581
- operationId: getIntegrationILMIgnoreFields
2582
- tags:
2583
- - Integrations
2584
- summary: List available ILM ignore fields
2585
- description: |-
2586
- Returns the catalog of *available* fields that can be ignored when pulling changes between
2587
- related integrations. Keys are lowercase resource types (`integration`, `flow`, `export`,
2588
- `import`, `connection`, `script`, ...); values are arrays of dot-path field names that can be
2589
- excluded from an ILM pull/revert. The key set is platform-driven — treat the response, not
2590
- the example list, as the authoritative catalog.
2591
-
2592
- This endpoint requires the `integrator-ashareid` header to establish a shared-account context.
2593
- The current ignore configuration lives on the integration's `iLMIgnore` field (readable via
2594
- `GET /v1/integrations/{_id}`); this endpoint only returns the menu of what *can* be ignored.
2595
- To change the configuration, PATCH the integration with
2596
- `[{op:"replace", path:"/iLMIgnore", value:{...}}]`.
2597
- parameters:
2598
- - name: integrator-ashareid
2599
- in: header
2600
- required: true
2601
- description: |-
2602
- Account-share id that scopes the request to a specific shared-account context. The bearer
2603
- token's user must be the `sharedWithUser` of this ashare.
2604
- schema:
2605
- type: string
2606
- format: objectId
2607
- examples:
2608
- - 6798f4dc43db9184f4bc8ee0
2609
- - name: _id
2610
- in: path
2611
- required: true
2612
- description: Integration id.
2613
- schema:
2614
- type: string
2615
- format: objectId
2616
- x-celigo-refModel: integrations
2617
- examples:
2618
- - 6842261335b64c0bcb308e4f
2619
- responses:
2620
- '200':
2621
- description: Available ignore fields per resource type.
2622
- content:
2623
- application/json:
2624
- schema:
2625
- $ref: '#/components/schemas/ILMIgnoreResponse'
2626
- examples:
2627
- default:
2628
- value:
2629
- integration:
2630
- - name
2631
- - description
2632
- flow:
2633
- - disabled
2634
- - name
2635
- export:
2636
- - name
2637
- - http.body
2638
- '401':
2639
- $ref: '#/components/responses/401-unauthorized'
2640
- '403':
2641
- description: |-
2642
- Either the `integrator-ashareid` header is malformed (code: `invalid_header_value`) or it
2643
- was omitted entirely (code: `get_not_allowed`).
2644
- content:
2645
- application/json:
2646
- schema:
2647
- $ref: '#/components/schemas/Error'
2648
- examples:
2649
- get_not_allowed:
2650
- summary: Header omitted entirely
2651
- value:
2652
- errors:
2653
- - code: get_not_allowed
2654
- message: GET resource not allowed for the given model.
2655
- invalid_header_value:
2656
- summary: Header malformed (not a 24-char hex id)
2657
- value:
2658
- errors:
2659
- - code: invalid_header_value
2660
- message: The value provided for request header Integrator-AShareId is invalid.
2661
- '404':
2662
- description: |-
2663
- Integration unknown, or the `integrator-ashareid` references a share whose `sharedWithUser`
2664
- isn't the bearer token's user (code: `access_restricted`).
2665
- content:
2666
- application/json:
2667
- schema:
2668
- $ref: '#/components/schemas/Error'
2669
- examples:
2670
- access_restricted:
2671
- value:
2672
- errors:
2673
- - code: access_restricted
2674
- message: Your access to an integrator.io environment or account has been disabled. For more information, contact account administrator.
2675
2487
  /v1/integrations/{_id}/template:
2676
2488
  get:
2677
2489
  x-internal: false
@@ -4957,36 +4769,6 @@ components:
4957
4769
  type: string
4958
4770
  examples:
4959
4771
  - '6044134138'
4960
- CloneFamilyResponse:
4961
- type: array
4962
- description: |-
4963
- Members of an integration's clone family — the original integration plus every clone (including
4964
- clones of clones, across environments). Used by ILM to decide which integrations can pull from or
4965
- push to the current one.
4966
- items:
4967
- type: object
4968
- description: One integration in the clone family.
4969
- properties:
4970
- _id:
4971
- type: string
4972
- format: objectId
4973
- description: Integration id.
4974
- x-celigo-refModel: integrations
4975
- examples:
4976
- - 6842261335b64c0bcb308e4f
4977
- name:
4978
- type: string
4979
- description: Display name of the integration.
4980
- examples:
4981
- - Shopify → NetSuite Orders
4982
- _envId:
4983
- type: string
4984
- format: objectId
4985
- x-celigo-refModel: environments
4986
- examples:
4987
- - 67b123456789abcdef012345
4988
- description: Environment id the integration belongs to.
4989
- additionalProperties: true
4990
4772
  LookupCacheBase:
4991
4773
  type: object
4992
4774
  description: Writable fields shared by the request and response schemas.
@@ -5345,38 +5127,6 @@ components:
5345
5127
  - To register an existing topic instead, use `PUT /v1/integrations/{_id}/topics/{_topicId}/register`.
5346
5128
  examples:
5347
5129
  - - 6ab1f4a138d7733b45998d99
5348
- ILMIgnoreResponse:
5349
- type: object
5350
- description: |-
5351
- Catalog of resource-type → field-path lists that are *available* to be ignored during ILM pulls
5352
- and reverts. This is the full menu of what can be configured — to see the current ignore
5353
- configuration, read the `iLMIgnore` field on the integration itself via
5354
- `GET /v1/integrations/{_id}`.
5355
-
5356
- Keys are lowercase resource type names (e.g. `integration`, `flow`, `export`, `import`,
5357
- `connection`, `script`). Each value is an array of dot-path strings naming fields that can be
5358
- excluded. Only resource types that have configurable ignores appear as keys.
5359
- additionalProperties:
5360
- type: array
5361
- description: Field paths (dotted) that can be ignored for this resource type.
5362
- items:
5363
- type: string
5364
- example:
5365
- integration:
5366
- - settings.general.description
5367
- - settings.general.name
5368
- flow:
5369
- - scheduling.startTime
5370
- - disabled
5371
- export:
5372
- - http.relativeURI
5373
- - delta.dateField
5374
- import:
5375
- - http.relativeURI
5376
- - mapping
5377
- connection:
5378
- - http.baseURI
5379
- - http.auth.token.token
5380
5130
  DependencyEntry:
5381
5131
  type: object
5382
5132
  description: A single resource that depends on the queried resource.
@@ -4679,6 +4679,14 @@ components:
4679
4679
  Do NOT include the protocol prefix (e.g., use "ftp.example.com", not "sftp://ftp.example.com").
4680
4680
  examples:
4681
4681
  - sftp.example.com
4682
+ x-celigo-ai-guidance:
4683
+ - |-
4684
+ Don't point a connection at this environment's own Celigo file server (its
4685
+ `endpoint.hostname`, with a username ending in `@<identifier>`, the server's own
4686
+ `identifier`): a flow reads those files from Celigo Storage directly, and the save
4687
+ refuses that pairing with 422 `fileserver_loopback_not_supported`. Another
4688
+ environment's file server on the same host, such as a trading partner's, is an
4689
+ ordinary connection.
4682
4690
  port:
4683
4691
  type: number
4684
4692
  description: |
@@ -4802,7 +4810,8 @@ components:
4802
4810
  description: |
4803
4811
  Maximum number of concurrent file transfer operations.
4804
4812
  FTP servers often have low connection limits — keep this value conservative.
4805
- Send no more than the account's licensed maximum (25 standard, 50 with an Environments license).
4813
+ Send no more than the account's licensed maximum, the license's `concurrency` (25 standard,
4814
+ 50 with an Environments license).
4806
4815
  Unlike the rest of the `ftp` object, a `PUT` that omits this field keeps the stored value instead of clearing it.
4807
4816
  minimum: 1
4808
4817
  maximum: 50
@@ -4826,7 +4835,7 @@ components:
4826
4835
  description: |-
4827
4836
  Number of parallel transfer threads for this FTP connection. Must be a
4828
4837
  whole number — decimals are rejected on save. Send no more than the
4829
- account's licensed concurrency maximum. On
4838
+ account's licensed concurrency maximum, the same as for `concurrencyLevel`. On
4830
4839
  save the value is mirrored into `userConcurrencyLevel` (and into
4831
4840
  `userTargetConcurrencyLevel` when auto-recovery of rate-limit errors
4832
4841
  is active with `targetConcurrencyLevel` set); clearing it clears the
@@ -419,9 +419,13 @@ paths:
419
419
  Resources are auto-purged after 30 days. A purge removes only the
420
420
  named resource: purge the bin entries that still reference it first
421
421
  (a deleted flow references its integration and the exports and imports
422
- it used). An integration's Celigo Storage system folder is the
423
- exception: the folder and everything in it go to the bin with the
424
- integration and are purged with it.
422
+ it used). Purging a flow leaves its integration, exports, imports and
423
+ scripts where they are. A few purges remove more than the named
424
+ document: an integration's Celigo Storage system folder (with
425
+ everything in it) goes to the bin with the integration and is purged
426
+ with it; purging a connection first deletes the end users' own copies
427
+ of it (their MCP connections) for good; and purging a topic deletes
428
+ its stored messages.
425
429
  parameters:
426
430
  - $ref: '#/components/parameters/ResourceType'
427
431
  - name: _id
package/dist/state.yml CHANGED
@@ -35,6 +35,10 @@ tags:
35
35
  Values must be non-empty JSON objects or arrays. Bare primitives,
36
36
  `null`, and empty containers (`{}`, `[]`) are rejected.
37
37
 
38
+ Each export, import or integration holds at most 10 keys, and the
39
+ global scope at most 100. A new key past the limit is refused with 422
40
+ `limit_reached`; replacing an existing key still works.
41
+
38
42
  Prefer resource-scoped state over global state when the data belongs
39
43
  to a specific export, import, or integration. State keys are upserted —
40
44
  PUT creates if absent, replaces if present. There is no PATCH; send the
@@ -243,15 +247,25 @@ paths:
243
247
  '422':
244
248
  description: |-
245
249
  The request body is empty, or is an empty container (`{}` or
246
- `[]`).
250
+ `[]`), or the key is new and the account already holds 100 global
251
+ keys.
247
252
  content:
248
253
  application/json:
249
254
  schema:
250
255
  $ref: '#/components/schemas/Error'
251
- example:
252
- errors:
253
- - code: missing_request_body
254
- message: Please send state as request body in the PUT request.
256
+ examples:
257
+ missing_request_body:
258
+ summary: Empty body or empty container
259
+ value:
260
+ errors:
261
+ - code: missing_request_body
262
+ message: Please send state as request body in the PUT request.
263
+ limit_reached:
264
+ summary: The account already holds 100 global keys
265
+ value:
266
+ errors:
267
+ - code: limit_reached
268
+ message: 'Cannot save state, allowed number of states already reached for user : 60f1a2b3c4d5e6f7a8b9c0d1'
255
269
  delete:
256
270
  x-internal: false
257
271
  operationId: deleteGlobalStateKey
@@ -710,15 +724,24 @@ paths:
710
724
  '422':
711
725
  description: |-
712
726
  The request body is empty, or is an empty container (`{}` or
713
- `[]`).
727
+ `[]`), or the key is new and the resource already holds 10 keys.
714
728
  content:
715
729
  application/json:
716
730
  schema:
717
731
  $ref: '#/components/schemas/Error'
718
- example:
719
- errors:
720
- - code: missing_request_body
721
- message: Please send state as request body in the PUT request.
732
+ examples:
733
+ missing_request_body:
734
+ summary: Empty body or empty container
735
+ value:
736
+ errors:
737
+ - code: missing_request_body
738
+ message: Please send state as request body in the PUT request.
739
+ limit_reached:
740
+ summary: The resource already holds 10 keys
741
+ value:
742
+ errors:
743
+ - code: limit_reached
744
+ message: 'Cannot save state, allowed number of states already reached for export : 66a1f2c3b4d5e6f7a8b9c0d1'
722
745
  delete:
723
746
  x-internal: false
724
747
  operationId: deleteResourceStateKey
package/dist/sync.yml CHANGED
@@ -242,7 +242,10 @@ paths:
242
242
  description: |-
243
243
  Validation failed. `source._connectionId` is missing
244
244
  (`missing_source_connection`), the integration was not created with
245
- `syncs: true` (`integration_not_for_sync`), the destination duplicates another sync
245
+ `syncs: true` (`integration_not_for_sync`), `destination._connectionId` isn't a
246
+ connection in the account (`missing_destination_connection`), the destination
247
+ connection is offline while a `database` or `schema` is set
248
+ (`offline_destination_connection`), the destination duplicates another sync
246
249
  (`duplicate_destination_host`), the destination connector rejected the
247
250
  sync configuration (`invalid_destination_sync_config`), two enabled
248
251
  datasets resolve to the same destination table
@@ -444,14 +447,21 @@ paths:
444
447
  description: |-
445
448
  Validation failed. `source._connectionId` is missing
446
449
  (`missing_source_connection`), the sync is not ready to enable
447
- (`sync_not_enabled`), the destination duplicates another sync
450
+ (`sync_not_enabled`), the update drops the saved destination connection or names a
451
+ connection that doesn't exist (`missing_destination_connection`, "Destination
452
+ connection is missing in the request"), the new destination connection is another
453
+ warehouse type than the saved one (`duplicate_destination_type`, "Destination
454
+ connection type is not same as the previous destination connection type"), a new
455
+ `database` or `schema` was sent while the destination connection is offline
456
+ (`offline_destination_connection` — the platform creates the schema when the
457
+ destination is saved), the destination duplicates another sync
448
458
  (`duplicate_destination_host`), the destination connector rejected the
449
459
  sync configuration (`invalid_destination_sync_config`), two enabled
450
460
  datasets resolve to the same destination table
451
461
  (`conflicting_table_name`), a field exceeds its size limit
452
462
  (`size_limit_exceeded`), the drift policy is inconsistent
453
463
  (`drift_policy_invalid_setup`), or the destination's application differs from
454
- the integration's other syncs or from the sync's saved destination.
464
+ the integration's other syncs.
455
465
  content:
456
466
  application/json:
457
467
  schema:
@@ -798,8 +808,9 @@ paths:
798
808
  description: |-
799
809
  Bad request. The body is not a non-empty array (`INVALID_REQUEST_BODY` /
800
810
  `EMPTY_REQUEST_BODY`), an item has both or neither of `_id`/`externalId`
801
- (`dataset_externalId_id_required`), an `externalId` already exists or an `_id`
802
- does not belong to the sync, `tableName` values collide
811
+ (`dataset_externalId_id_required`), an `externalId` already exists on the sync
812
+ (`create_dataset_present`) or an `_id` does not belong to it
813
+ (`update_dataset_not_present`), `tableName` values collide
803
814
  (`duplicate_dataset_table_names`), or an export dataset's export uses a
804
815
  different connection than the sync (`connection_mismatch`).
805
816
  content:
@@ -3016,8 +3027,10 @@ paths:
3016
3027
  deltaFields:
3017
3028
  type: array
3018
3029
  description: |-
3019
- Column names usable as the incremental-extraction cursor
3020
- (`exportProperties.delta.dateField`).
3030
+ Column names usable as the incremental-extraction cursor. A
3031
+ Salesforce dataset uses the first entry itself; a NetSuite
3032
+ saved-search dataset names its cursor in
3033
+ `exportProperties.delta.dateField`.
3021
3034
  items:
3022
3035
  type: string
3023
3036
  examples:
@@ -3438,7 +3451,8 @@ paths:
3438
3451
  type: boolean
3439
3452
  description: |-
3440
3453
  Only present (as `true`) when the export no longer uses the
3441
- sync's source connection.
3454
+ sync's source connection, or is no longer among the source
3455
+ connection's exports (for example, it was deleted).
3442
3456
  examples:
3443
3457
  - true
3444
3458
  totalFieldCount:
@@ -4421,8 +4435,10 @@ components:
4421
4435
  type: string
4422
4436
  description: |-
4423
4437
  Source field that carries each record's last-modified timestamp, used as
4424
- the delta cursor. Required for NetSuite datasets that extract via a
4425
- `netsuite.recordType`; Salesforce datasets derive it automatically.
4438
+ the delta cursor. Used by NetSuite saved-search datasets, where it is
4439
+ required when a `netsuite.recordType` is set. Salesforce datasets take the
4440
+ first entry of the column read's `deltaFields` instead, and HTTP-connector
4441
+ datasets have no date field: their delta filter is part of the request.
4426
4442
  examples:
4427
4443
  - lastmodifieddate
4428
4444
  netsuite:
@@ -4431,9 +4447,13 @@ components:
4431
4447
  properties:
4432
4448
  recordType:
4433
4449
  type: string
4450
+ writeOnly: true
4434
4451
  description: |-
4435
4452
  NetSuite record type backing a saved-search dataset. When set with
4436
- `exportProperties.type: delta`, a `delta.dateField` is required.
4453
+ `exportProperties.type: delta`, a `delta.dateField` is required. Write-only:
4454
+ dataset reads don't return it, so an update item built from a read-back
4455
+ clears it; the sync's next run restores a missing value from the saved
4456
+ search's catalog entry (`appSpecificProperties.recordType`).
4437
4457
  examples:
4438
4458
  - salesorder
4439
4459
  driftPolicy:
@@ -4466,8 +4486,10 @@ components:
4466
4486
  readOnly: true
4467
4487
  description: |-
4468
4488
  Only present (as `true`) in list responses, on export-backed datasets whose
4469
- export no longer uses the sync's source connection. Repoint the export or
4470
- recreate the dataset to resume replicating it.
4489
+ export no longer uses the sync's source connection. The source catalog listing
4490
+ also flags an export-backed dataset whose export it no longer lists, such as a
4491
+ deleted export. Repoint the export or recreate the dataset to resume replicating
4492
+ it.
4471
4493
  examples:
4472
4494
  - true
4473
4495
  DatasetUpsertItem:
@@ -4595,8 +4617,10 @@ components:
4595
4617
  type: string
4596
4618
  description: |-
4597
4619
  Source field carrying each record's last-modified timestamp, used as the
4598
- delta cursor. Required for NetSuite datasets extracted via a
4599
- `netsuite.recordType`; Salesforce datasets derive it automatically.
4620
+ delta cursor. Used by NetSuite saved-search datasets, where it is required
4621
+ when a `netsuite.recordType` is set; it isn't checked against the column
4622
+ read's `deltaFields`. Salesforce datasets take the first `deltaFields` entry
4623
+ instead, and HTTP-connector datasets take no date field.
4600
4624
  examples:
4601
4625
  - lastmodifieddate
4602
4626
  netsuite:
@@ -4606,8 +4630,11 @@ components:
4606
4630
  recordType:
4607
4631
  type: string
4608
4632
  description: |-
4609
- NetSuite record type backing a saved-search dataset. When set with
4610
- `exportProperties.type: delta`, a `delta.dateField` is required.
4633
+ NetSuite record type backing a saved-search dataset, from the saved search's
4634
+ catalog entry (`appSpecificProperties.recordType`). When set with
4635
+ `exportProperties.type: delta`, a `delta.dateField` is required. Reads never
4636
+ return it, so an update item built from a read-back clears it unless you add
4637
+ it back; the sync's next run restores a missing value from the catalog.
4611
4638
  examples:
4612
4639
  - salesorder
4613
4640
  driftPolicy:
@@ -4649,7 +4676,11 @@ components:
4649
4676
  Scopes this run to these datasets on the sync. Omit the field to run every
4650
4677
  enabled dataset; an empty array is rejected. Each id must belong to this sync
4651
4678
  and be enabled, and subset selection on a normal run is rejected unless the
4652
- account has partial normal sync enabled.
4679
+ account has partial normal sync enabled. A selection larger than the per-run
4680
+ maximum is accepted here but stops the run as it starts: no table runs, and
4681
+ the sync's errors record `max_datasets_exceeded` ("Selected datasets exceed the
4682
+ maximum allowed per run (N). Reduce the selection and retry."). Split a large
4683
+ selection across runs.
4653
4684
  items:
4654
4685
  type: string
4655
4686
  format: objectId
package/dist/tool.yml CHANGED
@@ -8187,6 +8187,14 @@ components:
8187
8187
  Do NOT include the protocol prefix (e.g., use "ftp.example.com", not "sftp://ftp.example.com").
8188
8188
  examples:
8189
8189
  - sftp.example.com
8190
+ x-celigo-ai-guidance:
8191
+ - |-
8192
+ Don't point a connection at this environment's own Celigo file server (its
8193
+ `endpoint.hostname`, with a username ending in `@<identifier>`, the server's own
8194
+ `identifier`): a flow reads those files from Celigo Storage directly, and the save
8195
+ refuses that pairing with 422 `fileserver_loopback_not_supported`. Another
8196
+ environment's file server on the same host, such as a trading partner's, is an
8197
+ ordinary connection.
8190
8198
  port:
8191
8199
  type: number
8192
8200
  description: |
@@ -8310,7 +8318,8 @@ components:
8310
8318
  description: |
8311
8319
  Maximum number of concurrent file transfer operations.
8312
8320
  FTP servers often have low connection limits — keep this value conservative.
8313
- Send no more than the account's licensed maximum (25 standard, 50 with an Environments license).
8321
+ Send no more than the account's licensed maximum, the license's `concurrency` (25 standard,
8322
+ 50 with an Environments license).
8314
8323
  Unlike the rest of the `ftp` object, a `PUT` that omits this field keeps the stored value instead of clearing it.
8315
8324
  minimum: 1
8316
8325
  maximum: 50
@@ -8334,7 +8343,7 @@ components:
8334
8343
  description: |-
8335
8344
  Number of parallel transfer threads for this FTP connection. Must be a
8336
8345
  whole number — decimals are rejected on save. Send no more than the
8337
- account's licensed concurrency maximum. On
8346
+ account's licensed concurrency maximum, the same as for `concurrencyLevel`. On
8338
8347
  save the value is mirrored into `userConcurrencyLevel` (and into
8339
8348
  `userTargetConcurrencyLevel` when auto-recovery of rate-limit errors
8340
8349
  is active with `targetConcurrencyLevel` set); clearing it clears the
@@ -30253,7 +30262,10 @@ components:
30253
30262
  description: |-
30254
30263
  When true, a file whose records partially fail parsing against the file definition
30255
30264
  still emits the records that did parse, instead of failing the entire file. Applies to
30256
- file-definition (fixed-width, EDI) parsing only.
30265
+ file-definition (fixed-width, EDI) parsing only. For X12 and EDIFACT the unit is the
30266
+ transaction set (ST–SE, UNH–UNT), and it takes effect only with an EDI profile linked:
30267
+ a failed set is set aside and reported as an error while the file's other sets go on
30268
+ as records. Without this flag, one failed set fails the whole file.
30257
30269
  examples:
30258
30270
  - true
30259
30271
  - false
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@celigo/api-specs",
3
- "version": "0.2.167",
3
+ "version": "0.2.169",
4
4
  "private": false,
5
5
  "description": "Public OpenAPI bundles (dist/) and the celigo-cli lint schema pack (schemas.json).",
6
6
  "keywords": [
package/schemas.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "provenance": {
3
3
  "repo": "celigo/integrator-api-specs",
4
- "iasCommit": "560182fc",
4
+ "iasCommit": "750b2035",
5
5
  "generatedAt": "2026-10-22"
6
6
  },
7
7
  "roots": {