@celigo/api-specs 0.2.39 → 0.2.41

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.
@@ -156,6 +156,11 @@ paths:
156
156
  `404`, and `422` responses); failures during the post-save registration itself do not
157
157
  roll back the new connection and are reported in `__failedIntegrationRegistrations` on
158
158
  the `201` response.
159
+
160
+ Creates `standard` connections only: a body with `connectionRole: mcpChild` is rejected,
161
+ because MCP end-user child connections are written solely by the end-user setup page. To
162
+ make a connection the parent that an MCP server collects end-user credentials for, list the
163
+ per-user fields in `endUserProvidedFields`.
159
164
  operationId: createConnection
160
165
  tags:
161
166
  - Connections
@@ -193,6 +198,34 @@ paths:
193
198
  type: custom
194
199
  __integrationIds:
195
200
  - 6a55be91d16ee8270022893e
201
+ httpMcpParent:
202
+ summary: HTTP connection that MCP end users supply their own API key for
203
+ value:
204
+ name: Support Desk API
205
+ type: http
206
+ endUserProvidedFields:
207
+ - http.encrypted.apiKey
208
+ http:
209
+ mediaType: json
210
+ baseURI: https://api.example.com
211
+ auth:
212
+ type: custom
213
+ headers:
214
+ - name: X-API-Key
215
+ value: '{{{connection.http.encrypted.apiKey}}}'
216
+ encrypted:
217
+ apiKey: <owner-api-key>
218
+ httpAwsIam:
219
+ summary: HTTP connection signing requests with an AWS IAM role (iClient)
220
+ value:
221
+ name: SQS - orders account
222
+ type: http
223
+ http:
224
+ mediaType: json
225
+ baseURI: https://sqs.us-east-1.amazonaws.com
226
+ _iClientId: 6ab1f51c7b3d01a908423f0a
227
+ auth:
228
+ type: awsiam
196
229
  netsuiteTokenAuto:
197
230
  summary: NetSuite connection (automatic token-based auth — recommended)
198
231
  value:
@@ -453,6 +486,7 @@ paths:
453
486
  lastModified: '2026-06-08T00:45:50.951Z'
454
487
  type: http
455
488
  name: My HTTP API
489
+ connectionRole: standard
456
490
  enableMicroBatchForOneToMany: true
457
491
  enableCsvObjectParsing: true
458
492
  autoRecoverRateLimitErrors: true
@@ -559,7 +593,9 @@ paths:
559
593
  description: |-
560
594
  Unprocessable entity. The request was well-formed but was unable to be followed
561
595
  due to semantic errors — for example, a missing config object for the connection
562
- `type`, or an invalid `__integrationIds` value. The connection is not created.
596
+ `type`, an invalid `__integrationIds` value, a decimal concurrency value, an
597
+ `http._iClientId` that does not satisfy the auth type's iClient rules, or an
598
+ `mcpChild` role. The connection is not created.
563
599
  content:
564
600
  application/json:
565
601
  schema:
@@ -589,16 +625,67 @@ paths:
589
625
  errors:
590
626
  - code: invalid_request
591
627
  message: __integrationIds must not contain duplicate integration IDs.
628
+ mcpChildNotAllowed:
629
+ summary: connectionRole is mcpChild
630
+ value:
631
+ errors:
632
+ - code: mcp_child_generic_route_not_allowed
633
+ message: An mcpChild connection cannot be created, updated or deleted through the connections API, including the recurse and recycle bin routes.
634
+ endUserProvidedFieldParentOwned:
635
+ summary: endUserProvidedFields names a field the account owns
636
+ value:
637
+ errors:
638
+ - field: endUserProvidedFields
639
+ code: mcp_end_user_provided_field_not_allowed
640
+ message: http._iClientId is managed by the account owner and cannot be requested from an end user.
641
+ concurrencyNotInteger:
642
+ summary: Decimal concurrency value
643
+ value:
644
+ errors:
645
+ - field: http.concurrencyLevel
646
+ code: invalid_field_value
647
+ message: The field "http.concurrencyLevel" must be a whole number (no decimals) between 1 and 50.
648
+ awsIamIClientMissing:
649
+ summary: auth.type awsiam without http._iClientId
650
+ value:
651
+ errors:
652
+ - field: http._iClientId
653
+ code: missing_required_field
654
+ message: 'Expected field: _iClientId to be present.'
655
+ awsIamIClientWrongProvider:
656
+ summary: awsiam connection referencing a non-awsIam iClient
657
+ value:
658
+ errors:
659
+ - field: http._iClientId
660
+ code: invalid_field
661
+ message: IClient provider must be awsIam for HTTP IAM Role authentication.
662
+ awsIamRoleArnPrefix:
663
+ summary: awsIam iClient whose role name lacks the celigo-http-adaptor- prefix
664
+ value:
665
+ errors:
666
+ - field: http._iClientId
667
+ code: invalid_field_value
668
+ message: HTTP IAM Role authentication requires awsIam.roleArn to reference a role name starting with celigo-http-adaptor-.
669
+ iClientOtherAccount:
670
+ summary: iClient owned by another account
671
+ value:
672
+ errors:
673
+ - field: http._iClientId
674
+ code: invalid_ref
675
+ message: The referenced IClient must belong to the same user.
676
+ adlsIClientWrongProvider:
677
+ summary: Azure Data Lake Storage Gen2 connection referencing a non-service-principal iClient
678
+ value:
679
+ errors:
680
+ - field: http._iClientId
681
+ code: invalid_field
682
+ message: IClient provider must be azureserviceprincipal for Azure Data Lake Storage Gen2 connections.
592
683
  x-celigo-ai-guidance:
593
684
  - |-
594
- Performs a comprehensive test of the connection including authentication, permissions,
595
- and basic data operations to verify the connection is fully operational.
596
-
597
- This is more thorough than a ping operation and may include:
598
- - Sample data retrieval
599
- - Permission verification for read/write operations
600
- - Schema or metadata validation
601
- - Rate limiting and quota checks
685
+ Send exactly one adaptor config object, the one named by `type`. Credentials are accepted
686
+ in clear on create and come back masked as "******"; the response also carries the
687
+ server-populated fields (`connectionRole: standard`, `concurrencyLevel`,
688
+ `targetConcurrencyLevel`, `microServices`).
602
689
  /v1/connections/{_id}:
603
690
  get:
604
691
  x-internal: false
@@ -649,6 +736,31 @@ paths:
649
736
  disableHttp: false
650
737
  disableNetSuiteDistributed: false
651
738
  disableRdbms: false
739
+ httpMcpParent:
740
+ summary: HTTP connection that MCP end users supply their own API key for
741
+ value:
742
+ _id: 6ab1f41f4db5688fd8ca71fb
743
+ createdAt: '2026-09-21T20:21:03.924Z'
744
+ lastModified: '2026-09-21T20:22:22.140Z'
745
+ type: http
746
+ name: Support Desk API
747
+ connectionRole: standard
748
+ endUserProvidedFields:
749
+ - http.encrypted.apiKey
750
+ enableMicroBatchForOneToMany: true
751
+ enableCsvObjectParsing: true
752
+ autoRecoverRateLimitErrors: true
753
+ http:
754
+ formType: http
755
+ mediaType: json
756
+ baseURI: https://api.example.com
757
+ concurrencyLevel: 25
758
+ targetConcurrencyLevel: 25
759
+ encrypted: '******'
760
+ isRest: false
761
+ useNewAuthFailSchema: true
762
+ auth:
763
+ type: custom
652
764
  mcp:
653
765
  summary: MCP connection
654
766
  value:
@@ -682,7 +794,15 @@ paths:
682
794
  summary: Update a connection
683
795
  description: |
684
796
  Updates an existing connection configuration. This is a full-replace operation —
685
- send the complete connection document, not just the fields you want to change.
797
+ send the complete connection document, not just the fields you want to change; a field
798
+ omitted from the body is cleared, including credentials (re-send them, or the masked
799
+ `"******"` value clears them too).
800
+
801
+ Three settings are the exception and survive an omission: `endUserProvidedFields`
802
+ (send `null` to clear it — `[]` is treated like an omission), and on `ftp` connections
803
+ `ftp.concurrencyLevel` and `ftp.targetConcurrencyLevel` (the latter is unset whenever
804
+ `autoRecoverRateLimitErrors` is false). `connectionRole` is read-only here: a body carrying
805
+ `mcpChild` is rejected.
686
806
  operationId: updateConnection
687
807
  tags:
688
808
  - Connections
@@ -792,11 +912,47 @@ paths:
792
912
  '404':
793
913
  $ref: '#/components/responses/404-not-found'
794
914
  '422':
795
- $ref: '#/components/responses/422-unprocessable-entity'
915
+ description: |-
916
+ Unprocessable entity. The body was well-formed but fails the connection's validation
917
+ rules — the same rules as on create (missing config object, decimal concurrency,
918
+ iClient rules, parent-owned `endUserProvidedFields` path, `mcpChild` role).
919
+ content:
920
+ application/json:
921
+ schema:
922
+ $ref: '#/components/schemas/Error'
923
+ examples:
924
+ default:
925
+ summary: Semantic validation failure
926
+ value:
927
+ errors:
928
+ - code: unprocessable_entity
929
+ message: The request could not be processed due to a semantic error.
930
+ mcpChildNotAllowed:
931
+ summary: connectionRole is mcpChild
932
+ value:
933
+ errors:
934
+ - code: mcp_child_generic_route_not_allowed
935
+ message: An mcpChild connection cannot be created, updated or deleted through the connections API, including the recurse and recycle bin routes.
936
+ endUserProvidedFieldParentOwned:
937
+ summary: endUserProvidedFields names a field the account owns
938
+ value:
939
+ errors:
940
+ - field: endUserProvidedFields
941
+ code: mcp_end_user_provided_field_not_allowed
942
+ message: type is managed by the account owner and cannot be requested from an end user.
943
+ concurrencyNotInteger:
944
+ summary: Decimal concurrency value
945
+ value:
946
+ errors:
947
+ - field: ftp.multiThreadCount
948
+ code: invalid_field_value
949
+ message: The field "ftp.multiThreadCount" must be a whole number (no decimals) between 1 and 50.
796
950
  x-celigo-ai-guidance:
797
951
  - |-
798
- Updates an existing connection configuration. This operation supports partial updates
799
- where only the provided fields will be modified.
952
+ PUT replaces the document: GET it first, change what you need, and send the whole body
953
+ back with the real credential values (masked "******" values clear the stored secret).
954
+ To change only name, debug window, or concurrency settings without touching credentials,
955
+ use PATCH instead.
800
956
  patch:
801
957
  x-internal: false
802
958
  summary: Patch a connection
@@ -817,16 +973,19 @@ paths:
817
973
  | `/<adaptor>/targetConcurrencyLevel` | Ceiling auto-recovery climbs back to. Persists only while `autoRecoverRateLimitErrors` is true; while false the save unsets it |
818
974
  | `/_borrowConcurrencyFromConnectionId` | Share another connection's concurrency budget. `remove` clears it |
819
975
  | `/autoRecoverRateLimitErrors` | Rate-limit auto-recovery toggle. Turning it on copies the current level into the target; turning it off unsets the target and leaves the level at its current value |
976
+ | `/endUserProvidedFields` | Dot-paths MCP end users must supply on their own child copy of this connection. `replace` with `[]` or `remove` clears the list, and `add` on `/endUserProvidedFields/-` appends one path; a path the account owns (`type`, `_agentId`, `wrapper._stackId`, any `<adaptor>._iClientId`) is rejected |
820
977
 
821
978
  `replace` and `add` both set the value (a currently unset field is fine);
822
979
  `remove` unsets it. A `null` value is rejected. Any other path — including
823
- `/netsuite/concurrencyLevelRESTlet`, `/netsuite/concurrencyLevelWebServices`
824
- and `rateLimit` fields — fails with `<path> is not a whitelisted property`.
825
- Concurrency values must be whole numbers; out-of-range integers are clamped
826
- into the account's licensed range rather than rejected. A whitelisted path
827
- under an adaptor block the connection does not use is accepted but never
828
- read. The borrowed-from connection must exist in the account, may not itself
829
- borrow, and a connection that others borrow from cannot start borrowing.
980
+ `/connectionRole`, `/netsuite/concurrencyLevelRESTlet`,
981
+ `/netsuite/concurrencyLevelWebServices` and `rateLimit` fields — fails with
982
+ `<path> is not a whitelisted property`.
983
+ Concurrency values must be whole numbers (a decimal fails with 422
984
+ `invalid_field_value`); out-of-range integers are clamped into the account's
985
+ licensed range rather than rejected. A whitelisted path under an adaptor
986
+ block the connection does not use is accepted but never read. The
987
+ borrowed-from connection must exist in the account, may not itself borrow,
988
+ and a connection that others borrow from cannot start borrowing.
830
989
  Settings-only changes are recorded in the connection's audit log.
831
990
  operationId: patchConnection
832
991
  tags:
@@ -883,6 +1042,13 @@ paths:
883
1042
  value:
884
1043
  - op: remove
885
1044
  path: /_borrowConcurrencyFromConnectionId
1045
+ set_end_user_provided_fields:
1046
+ summary: Make MCP end users supply their own API key on this connection
1047
+ value:
1048
+ - op: replace
1049
+ path: /endUserProvidedFields
1050
+ value:
1051
+ - http.encrypted.apiKey
886
1052
  responses:
887
1053
  '204':
888
1054
  description: Connection patched successfully
@@ -891,7 +1057,33 @@ paths:
891
1057
  '404':
892
1058
  $ref: '#/components/responses/404-not-found'
893
1059
  '422':
894
- $ref: '#/components/responses/422-unprocessable-entity'
1060
+ description: |-
1061
+ Patch rejected — a path outside the whitelist, a `null` value, a decimal concurrency
1062
+ value, or an `endUserProvidedFields` entry the account owns.
1063
+ content:
1064
+ application/json:
1065
+ schema:
1066
+ $ref: '#/components/schemas/Error'
1067
+ examples:
1068
+ nonWhitelisted:
1069
+ summary: Path is not patchable
1070
+ value:
1071
+ errors:
1072
+ - message: /connectionRole is not a whitelisted property
1073
+ concurrencyNotInteger:
1074
+ summary: Decimal concurrency value
1075
+ value:
1076
+ errors:
1077
+ - field: http.targetConcurrencyLevel
1078
+ code: invalid_field_value
1079
+ message: The field "http.targetConcurrencyLevel" must be a whole number (no decimals) between 1 and 50.
1080
+ endUserProvidedFieldParentOwned:
1081
+ summary: endUserProvidedFields names a field the account owns
1082
+ value:
1083
+ errors:
1084
+ - field: endUserProvidedFields
1085
+ code: mcp_end_user_provided_field_not_allowed
1086
+ message: _agentId is managed by the account owner and cannot be requested from an end user.
895
1087
  delete:
896
1088
  x-internal: false
897
1089
  summary: Delete a connection
@@ -924,8 +1116,9 @@ paths:
924
1116
  $ref: '#/components/responses/422-dependency-conflict'
925
1117
  x-celigo-ai-guidance:
926
1118
  - |-
927
- Deletes a connection permanently. This operation cannot be undone.
928
- The connection must not be in use by any active flows or integrations.
1119
+ Soft-deletes the connection into the recycle bin (restorable for 30 days). Check
1120
+ `GET /v1/connections/{_id}/dependencies` first — a connection still referenced by flows,
1121
+ exports, or imports is rejected with 422.
929
1122
  /v1/connections/{_id}/ping:
930
1123
  get:
931
1124
  x-internal: false
@@ -1410,6 +1603,96 @@ paths:
1410
1603
  $ref: '#/components/responses/401-unauthorized'
1411
1604
  '404':
1412
1605
  $ref: '#/components/responses/404-not-found'
1606
+ /v1/connections/{_id}/debug/{typeId}:
1607
+ get:
1608
+ x-internal: false
1609
+ operationId: getConnectionDebugLogsForResource
1610
+ tags:
1611
+ - Connections
1612
+ summary: Fetch a connection's debug logs for one export or import
1613
+ description: |-
1614
+ Same buffered debug log stream as `GET /v1/connections/{_id}/debug`, narrowed to the
1615
+ request/response pairs recorded for a single export or import (`typeId`) that uses the
1616
+ connection. Use it instead of filtering the shared stream client-side when one flow step
1617
+ is under investigation. Capture is still gated by the connection's `debugDate`, so the
1618
+ stream is empty until debug logging is enabled.
1619
+
1620
+ `typeId` must be the id of an export or import in the account; an id that resolves to
1621
+ neither answers 404, and a value that is not an ObjectId answers 400.
1622
+ parameters:
1623
+ - name: _id
1624
+ in: path
1625
+ required: true
1626
+ description: The connection id.
1627
+ schema:
1628
+ type: string
1629
+ format: objectId
1630
+ x-celigo-refModel: connections
1631
+ - name: typeId
1632
+ in: path
1633
+ required: true
1634
+ description: Id of the export or import whose traffic through the connection to return.
1635
+ schema:
1636
+ type: string
1637
+ format: objectId
1638
+ responses:
1639
+ '200':
1640
+ description: Debug log stream (plain text) for the given export or import.
1641
+ content:
1642
+ text/plain:
1643
+ schema:
1644
+ type: string
1645
+ description: |-
1646
+ Newline-separated debug log entries in the same format as
1647
+ `GET /v1/connections/{_id}/debug`: a header line
1648
+ (`timestamp traceKey resourceType resourceId`) followed by a JSON payload line,
1649
+ entries separated by blank lines. Every entry's `resourceId` equals `typeId`.
1650
+ examples:
1651
+ default:
1652
+ value: |
1653
+ 2026-04-19T03:44:06.673Z b45a75a5b72e4522972e55edf26de1c8 import 69e44eb7a749d34a975a4747
1654
+ {"url":"https://httpbin.org/post","method":"POST","body":"{\"id\":\"_id\"}","headers":{"X-None":"********","content-type":"application/json"},"requestIndex":0}
1655
+
1656
+ 2026-04-19T03:44:06.774Z b45a75a5b72e4522972e55edf26de1c8 import 69e44eb7a749d34a975a4747
1657
+ {"headers":{"date":"Sun, 19 Apr 2026 03:44:06 GMT","content-type":"application/json"},"body":"{\"ok\":true}"}
1658
+ '204':
1659
+ description: |-
1660
+ No debug logs for this export or import — debug capture is off (no future `debugDate`),
1661
+ the step has not run through the connection since it was enabled, or the buffer was
1662
+ cleared.
1663
+ '400':
1664
+ description: '`typeId` is not a valid ObjectId.'
1665
+ content:
1666
+ application/json:
1667
+ schema:
1668
+ $ref: '#/components/schemas/Error'
1669
+ examples:
1670
+ invalidTypeId:
1671
+ value:
1672
+ errors:
1673
+ - code: invalid_ref
1674
+ message: Please provide a valid typeId.
1675
+ '401':
1676
+ $ref: '#/components/responses/401-unauthorized'
1677
+ '404':
1678
+ description: The connection, or the export/import named by `typeId`, does not exist in the account.
1679
+ content:
1680
+ application/json:
1681
+ schema:
1682
+ $ref: '#/components/schemas/Error'
1683
+ examples:
1684
+ connectionNotFound:
1685
+ summary: Unknown connection id
1686
+ value:
1687
+ errors:
1688
+ - code: invalid_ref
1689
+ message: Connection not found.
1690
+ resourceNotFound:
1691
+ summary: typeId is neither an export nor an import
1692
+ value:
1693
+ errors:
1694
+ - code: invalid_ref
1695
+ message: Export/Import not found.
1413
1696
  /v1/connections/{_id}/metadata:
1414
1697
  put:
1415
1698
  x-internal: false
@@ -1708,7 +1991,8 @@ paths:
1708
1991
  `authorizationUrl` response field serves both OAuth 2.0 and OAuth 1.0a connections (NetSuite
1709
1992
  returns an OAuth 1.0a URL with an `oauth_token` parameter).
1710
1993
 
1711
- Note the resource segment is singular — `/v1/connection/{_id}/oauth2`, not plural. The URL's
1994
+ The resource segment is singular — `/v1/connection/{_id}/oauth2`; the plural form
1995
+ `/v1/connections/{_id}/oauth2` is an alias that answers identically. The URL's
1712
1996
  `state` token is one-time and expires quickly, so request a fresh one if the flow is
1713
1997
  interrupted, then poll `GET /v1/connections/{_id}` until `needsAuthorization` is `false`.
1714
1998
  parameters:
@@ -1839,7 +2123,8 @@ paths:
1839
2123
  few seconds. Only connections of type `netsuite` are accepted.
1840
2124
 
1841
2125
  Use this instead of the connection's `netsuite.suiteAppInstalled`, which reflects only the
1842
- SuiteApp as detected the last time the connection authenticated.
2126
+ SuiteApp as detected the last time the connection authenticated. For a single combined
2127
+ reachability result, or for a Salesforce connection, use `GET /v1/connections/{_id}/distributed`.
1843
2128
  operationId: getConnectionDistributedApps
1844
2129
  tags:
1845
2130
  - Connections
@@ -1879,6 +2164,19 @@ paths:
1879
2164
  success: true
1880
2165
  suiteapp:
1881
2166
  success: true
2167
+ neither_installed:
2168
+ summary: Neither component installed (NetSuite reports the RESTlets missing)
2169
+ value:
2170
+ bundle:
2171
+ success: false
2172
+ statusCode: 404
2173
+ resBody: That Suitelet is invalid, disabled, or no longer exists.
2174
+ URL: https://tstdrv1234567.app.netsuite.com/app/bundler/bundledetails.nl?sourcecompanyid=TSTDRV916910&domain=PRODUCTION&config=F&id=20038
2175
+ suiteapp:
2176
+ success: false
2177
+ statusCode: 404
2178
+ resBody: That Suitelet is invalid, disabled, or no longer exists.
2179
+ URL: https://tstdrv1234567.app.netsuite.com/suiteapp/ui/marketplace.nl?whence=#/app?id=com.celigo.integratorio
1882
2180
  '401':
1883
2181
  $ref: '#/components/responses/401-unauthorized'
1884
2182
  '404':
@@ -1913,6 +2211,87 @@ paths:
1913
2211
  - |-
1914
2212
  A non-NetSuite connection answers 422 with the message "invalid connection type: <type>"
1915
2213
  and no `code`; an unknown `_id` answers 404 `invalid_ref`.
2214
+ /v1/connections/{_id}/distributed:
2215
+ get:
2216
+ x-internal: false
2217
+ summary: Ping the distributed adaptor behind a connection
2218
+ description: |-
2219
+ Pings, live, the Celigo distributed adaptor installed in the account behind a `netsuite`
2220
+ or `salesforce` connection — the integrator.io bundle or SuiteApp RESTlet in NetSuite, the
2221
+ Celigo managed package in Salesforce — and reports one combined result. Round-trips to the
2222
+ remote system, so expect a few seconds. The distributed adaptor is what NetSuite real-time
2223
+ exports and `netsuite_da` imports, and Salesforce real-time exports, run through, so this
2224
+ is the check to run before building them.
2225
+
2226
+ Use `GET /v1/connections/{_id}/distributedApps` instead when you need the NetSuite bundle
2227
+ and SuiteApp reported separately; this endpoint is the only one of the two that also covers
2228
+ Salesforce. Any other connection type is rejected with 422.
2229
+ operationId: pingConnectionDistributedAdaptor
2230
+ tags:
2231
+ - Connections
2232
+ parameters:
2233
+ - in: path
2234
+ name: _id
2235
+ required: true
2236
+ schema:
2237
+ type: string
2238
+ format: objectId
2239
+ x-celigo-refModel: connections
2240
+ description: NetSuite or Salesforce connection to check.
2241
+ responses:
2242
+ '200':
2243
+ description: 'Ping result. `success: false` is still HTTP 200 — inspect the body.'
2244
+ content:
2245
+ application/json:
2246
+ schema:
2247
+ $ref: '#/components/schemas/DistributedAdaptorStatus'
2248
+ examples:
2249
+ installed:
2250
+ summary: Distributed adaptor reachable
2251
+ value:
2252
+ success: true
2253
+ netsuiteMissing:
2254
+ summary: NetSuite account without the Celigo bundle or SuiteApp
2255
+ value:
2256
+ success: false
2257
+ statusCode: 404
2258
+ resBody: That Suitelet is invalid, disabled, or no longer exists.
2259
+ bundleURL: https://tstdrv1234567.app.netsuite.com/app/bundler/bundledetails.nl?sourcecompanyid=TSTDRV916910&domain=PRODUCTION&config=F&id=20038
2260
+ salesforceOffline:
2261
+ summary: Salesforce connection that is offline
2262
+ value:
2263
+ success: false
2264
+ resBody: 'Connection is taken offline: expired access/refresh token'
2265
+ bundleURL: https://mycompany.my.salesforce.com/packaging/installPackage.apexp?p0=04t3m000000Q89d
2266
+ '401':
2267
+ $ref: '#/components/responses/401-unauthorized'
2268
+ '404':
2269
+ description: No connection found for the given `_id`.
2270
+ content:
2271
+ application/json:
2272
+ schema:
2273
+ $ref: '#/components/schemas/Error'
2274
+ examples:
2275
+ invalid_ref:
2276
+ value:
2277
+ errors:
2278
+ - code: invalid_ref
2279
+ message: Connection not found for the given id.
2280
+ '422':
2281
+ description: The connection exists but is neither a NetSuite nor a Salesforce connection.
2282
+ content:
2283
+ application/json:
2284
+ schema:
2285
+ $ref: '#/components/schemas/Error'
2286
+ examples:
2287
+ invalid_connection_type:
2288
+ value:
2289
+ errors:
2290
+ - message: 'invalid connection type: http'
2291
+ x-celigo-ai-guidance:
2292
+ - |-
2293
+ A non-NetSuite, non-Salesforce connection answers 422 with the message "invalid
2294
+ connection type: <type>" and no `code`; an unknown `_id` answers 404 `invalid_ref`.
1916
2295
  /v1/salesforce/metadata/connections/{_id}/sObjectTypes:
1917
2296
  get:
1918
2297
  x-internal: false
@@ -2823,11 +3202,75 @@ components:
2823
3202
  readOnly: true
2824
3203
  examples:
2825
3204
  - 5f29dbc69e8a0f0e29a491b7
3205
+ connectionRole:
3206
+ type: string
3207
+ enum:
3208
+ - standard
3209
+ - mcpChild
3210
+ x-enumDescriptions:
3211
+ standard: An ordinary account-owned connection, created and edited through this API
3212
+ mcpChild: An MCP end user's private credential copy of a parent connection, created by the end-user setup page
3213
+ readOnly: true
3214
+ description: |-
3215
+ Distinguishes account-owned connections from the per-end-user credential copies
3216
+ MCP servers collect. Absent on connections last saved before the field existed,
3217
+ which behave as `standard`. Sending `mcpChild` on `POST` or `PUT /v1/connections`
3218
+ fails with 422 `mcp_child_generic_route_not_allowed`, and `/connectionRole` is not a
3219
+ patchable path; child connections are written only by the MCP end-user setup page,
3220
+ never through `/v1`.
3221
+ examples:
3222
+ - standard
3223
+ endUserProvidedFields:
3224
+ type: array
3225
+ items:
3226
+ type: string
3227
+ description: |-
3228
+ Dot-paths of this connection's fields (for example `http.encrypted.apiKey` or
3229
+ `rdbms.user`) that each MCP end user must supply on their own `mcpChild` copy instead
3230
+ of inheriting the parent's value. Only returned on a `standard` connection that has
3231
+ paths set; never returned on a child. Writable through `POST`, `PUT`, and `PATCH`.
3232
+ examples:
3233
+ - - http.encrypted.apiKey
3234
+ - http.unencrypted.accountId
3235
+ _parentConnectionId:
3236
+ type: string
3237
+ format: objectId
3238
+ x-celigo-refModel: connections
3239
+ readOnly: true
3240
+ description: |-
3241
+ Parent connection this child copies its non-credential configuration from. Present
3242
+ only when `connectionRole` is `mcpChild`; set by the end-user setup page and ignored
3243
+ when sent on a standard connection.
3244
+ examples:
3245
+ - 615dfa0742763671275b70ab
3246
+ _mcpOwnerId:
3247
+ type: string
3248
+ format: objectId
3249
+ x-celigo-refModel: users
3250
+ readOnly: true
3251
+ description: |-
3252
+ Account owner whose parent connection and MCP servers this child belongs to. Present
3253
+ only when `connectionRole` is `mcpChild`; on a child, `_userId` is the end user and
3254
+ this field is the account.
3255
+ examples:
3256
+ - 5d2e1f0a9b8c7d6e5f4a3b2c
3257
+ _parentSyncedAt:
3258
+ type: string
3259
+ format: date-time
3260
+ readOnly: true
3261
+ description: |-
3262
+ Timestamp when the child's non-credential fields were last synced from the parent
3263
+ connection. Present only when `connectionRole` is `mcpChild`.
3264
+ examples:
3265
+ - '2026-09-15T18:42:10.331Z'
2826
3266
  _userId:
2827
3267
  type: string
2828
3268
  format: objectId
2829
3269
  x-celigo-refModel: users
2830
- description: User who owns this connection.
3270
+ description: |-
3271
+ End user who owns this `mcpChild` connection's credentials. Present only when
3272
+ `connectionRole` is `mcpChild`; a standard connection belongs to the account and
3273
+ omits this field.
2831
3274
  readOnly: true
2832
3275
  examples:
2833
3276
  - 5d2e1f0a9b8c7d6e5f4a3b2c
@@ -3101,7 +3544,7 @@ components:
3101
3544
  NetSuite application ID from the integration record.
3102
3545
  Required for some authentication configurations to identify the calling application.
3103
3546
  concurrencyLevel:
3104
- type: number
3547
+ type: integer
3105
3548
  description: |
3106
3549
  General concurrency level for this connection. Controls the overall
3107
3550
  maximum concurrent requests across all operation types.
@@ -3110,7 +3553,7 @@ components:
3110
3553
  maximum: 50
3111
3554
  default: 5
3112
3555
  targetConcurrencyLevel:
3113
- type: number
3556
+ type: integer
3114
3557
  description: |
3115
3558
  Target concurrency level for auto-scaling. The system adjusts concurrency
3116
3559
  between 1 and this value based on rate limit and governance feedback.
@@ -3254,7 +3697,7 @@ components:
3254
3697
  - 'Never set or repair this field to fix an authentication failure: an empty or absent list is the normal stored state, and UI saves reset API-written values.'
3255
3698
  - For a custom Connected App (`salesforce._iClientId` set), requested scopes are configured on the iClient's `oauth2.scope` and constrained by the Connected App inside Salesforce — not on the connection.
3256
3699
  concurrencyLevel:
3257
- type: number
3700
+ type: integer
3258
3701
  description: |-
3259
3702
  Maximum number of concurrent API requests to Salesforce. Salesforce enforces per-org API
3260
3703
  request limits, so setting this high consumes the org's API call allocation faster. Values
@@ -3264,7 +3707,7 @@ components:
3264
3707
  maximum: 50
3265
3708
  default: 5
3266
3709
  targetConcurrencyLevel:
3267
- type: number
3710
+ type: integer
3268
3711
  description: |-
3269
3712
  Upper bound for auto-scaling concurrency. When automatic rate-limit recovery is enabled, the
3270
3713
  system adjusts concurrency between 1 and this value based on rate-limit feedback from
@@ -3427,19 +3870,24 @@ components:
3427
3870
  examples:
3428
3871
  - 66a1b2c3d4e5f60718293a4b
3429
3872
  concurrencyLevel:
3430
- type: number
3873
+ type: integer
3431
3874
  description: |
3432
3875
  Maximum number of concurrent file transfer operations.
3433
3876
  FTP servers often have low connection limits — keep this value conservative.
3434
3877
  Values above the account's licensed maximum (25 standard, 50 with an Environments license) are silently clamped down.
3878
+ Unlike the rest of the `ftp` object, a `PUT` that omits this field keeps the stored value instead of clearing it.
3435
3879
  minimum: 1
3436
3880
  maximum: 50
3437
3881
  default: 1
3882
+ examples:
3883
+ - 3
3438
3884
  targetConcurrencyLevel:
3439
- type: number
3885
+ type: integer
3440
3886
  description: |
3441
3887
  Target concurrency level for auto-scaling. The system adjusts concurrency
3442
3888
  between 1 and this value based on server response feedback.
3889
+ Kept on a `PUT` that omits it, like `concurrencyLevel`; unset by the save while
3890
+ `autoRecoverRateLimitErrors` is false.
3443
3891
  minimum: 1
3444
3892
  maximum: 50
3445
3893
  examples:
@@ -3454,7 +3902,8 @@ components:
3454
3902
  save the value is mirrored into `userConcurrencyLevel` (and into
3455
3903
  `userTargetConcurrencyLevel` when auto-recovery of rate-limit errors
3456
3904
  is active with `targetConcurrencyLevel` set); clearing it clears the
3457
- mirrors.
3905
+ mirrors. Not preserved across a `PUT` — re-send it with the rest of
3906
+ the `ftp` object or it is cleared.
3458
3907
  examples:
3459
3908
  - 2
3460
3909
  userConcurrencyLevel:
@@ -3544,7 +3993,7 @@ components:
3544
3993
  examples:
3545
3994
  - my-data-lake
3546
3995
  concurrencyLevel:
3547
- type: number
3996
+ type: integer
3548
3997
  description: |-
3549
3998
  Maximum number of concurrent S3 operations. Applies when `autoRecoverRateLimitErrors` is
3550
3999
  false; when auto-recover is on (the default) concurrency auto-scales up to
@@ -3554,7 +4003,7 @@ components:
3554
4003
  maximum: 50
3555
4004
  default: 5
3556
4005
  targetConcurrencyLevel:
3557
- type: number
4006
+ type: integer
3558
4007
  description: |-
3559
4008
  Upper bound for auto-scaled concurrency when `autoRecoverRateLimitErrors` is true (the
3560
4009
  default). The system raises and lowers concurrency between 1 and this value based on
@@ -4042,7 +4491,7 @@ components:
4042
4491
  "Amazon-Hybrid", populate unencrypted.marketplaceId ("ATVPDKIKX0DER") and
4043
4492
  unencrypted.sellingRegion ("northAmerica"), and let the user finish the connection in the
4044
4493
  Celigo UI. Omitting either field fails the POST with 422 "Expected field: marketplaceId to be present".
4045
- x-celigo-ui-override: The auth.type conditional below encodes the connection form's credential requireds. Most are also API-enforced; the form-only additions (the API creates the connection without them, or accepts a weaker rule) are auth.basic.password (the API accepts a username alone), auth.token.location, auth.token.headerName (wsse), auth.cookie.method, auth.cookie.body, and _iClientId (oauth) — each flagged on its own field.
4494
+ x-celigo-ui-override: The auth.type conditional below encodes the connection form's credential requireds. Most are also API-enforced; the form-only additions (the API creates the connection without them, or accepts a weaker rule) are auth.basic.password (the API accepts a username alone), auth.token.location, auth.token.headerName (wsse), auth.cookie.method, auth.cookie.body, and _iClientId (oauth) — each flagged on its own field. _iClientId for awsiam is both form- and API-required.
4046
4495
  required:
4047
4496
  - baseURI
4048
4497
  - mediaType
@@ -4129,19 +4578,23 @@ components:
4129
4578
  NEVER disable in production — it removes protection against man-in-the-middle attacks.
4130
4579
  default: false
4131
4580
  concurrencyLevel:
4132
- type: number
4581
+ type: integer
4133
4582
  description: |
4134
4583
  Maximum number of concurrent HTTP requests this connection can make simultaneously.
4135
4584
 
4136
4585
  Higher values increase throughput but may trigger API rate limits.
4137
4586
  Set this based on the target API's rate limit documentation.
4138
- Values above the account's licensed maximum (25 standard, 50 with an Environments license) are silently clamped down.
4587
+ Values above the account's licensed maximum (25 standard, 50 with an Environments license) are silently clamped down,
4588
+ but a decimal is rejected with 422 `invalid_field_value` on every write (the same rule applies to every
4589
+ adaptor's `concurrencyLevel` and `targetConcurrencyLevel`, and to `ftp.multiThreadCount`).
4139
4590
  Platform-managed while `autoRecoverRateLimitErrors` is true — a PUT ignores the value and the recovery machinery moves it toward the target; set `targetConcurrencyLevel` instead.
4140
4591
  minimum: 1
4141
4592
  maximum: 50
4142
4593
  default: 25
4594
+ examples:
4595
+ - 10
4143
4596
  targetConcurrencyLevel:
4144
- type: number
4597
+ type: integer
4145
4598
  description: |
4146
4599
  Ceiling the platform climbs back to after rate-limit recovery, in steps of 25% of this value.
4147
4600
  Writing it also sets `concurrencyLevel` to the same value and stops any recovery in progress.
@@ -4360,10 +4813,12 @@ components:
4360
4813
  x-lowercase: true
4361
4814
  x-celigo-ai-guidance:
4362
4815
  - |-
4363
- When type is "awsiam", the connection must also carry
4364
- http._iClientId pointing at an AWS-IAM iClient — the save is
4365
- rejected without it. The signing credentials live on the
4366
- iClient, not on the connection.
4816
+ When type is "awsiam", the connection must also carry http._iClientId pointing at
4817
+ an iClient with provider "awsIam" that belongs to the same account and has
4818
+ awsIam.roleArn whose role name starts with "celigo-http-adaptor-"; the save fails
4819
+ with 422 (missing_required_field, invalid_field, invalid_field_value, or invalid_ref
4820
+ respectively) when any of these is off. The signing credentials live on the iClient,
4821
+ not on the connection.
4367
4822
  examples:
4368
4823
  - token
4369
4824
  failStatusCode:
@@ -5009,28 +5464,64 @@ components:
5009
5464
  type: string
5010
5465
  format: objectId
5011
5466
  x-celigo-refModel: iclients
5012
- description: ID of the iClient used for OAuth authentication.
5467
+ description: |-
5468
+ iClient that holds the credentials this connection signs with: the OAuth 2.0 client for
5469
+ `auth.type` `oauth` (including the `azureserviceprincipal` service principal an Azure
5470
+ Data Lake Storage Gen2 connection authenticates with and the `googleserviceaccount` key
5471
+ a Google Cloud Storage connection uses), or the `awsIam` role for `auth.type` `awsiam`.
5472
+ Must belong to the same account as the connection. Omit for every other auth type.
5013
5473
  examples:
5014
5474
  - 6203a7e4f321d800129a1b8e
5015
- x-celigo-ui-override: Required by the connection form for oauth (OAuth 2.0) auth; the API creates the connection without it (the OAuth authorization is completed afterward).
5475
+ x-celigo-ui-override: 'Required by the connection form for oauth (subForms/httpOAuth.js: required true, iClient filter provider custom_oauth2, or googleserviceaccount / azureserviceprincipal for the GCS and ADLS Gen2 variants) and for awsIam (subForms/httpAwsIam.js: required true, filter provider awsIam). For oauth the API creates the connection without it and the authorization is completed afterward; for awsiam the API also rejects its absence (see the if/then rule on this schema).'
5476
+ x-celigo-ai-guidance:
5477
+ - |-
5478
+ For auth.type "awsiam" the referenced iClient must have provider "awsIam" (any other
5479
+ provider → 422 invalid_field "IClient provider must be awsIam for HTTP IAM Role
5480
+ authentication."), must carry awsIam.roleArn (missing → 422 missing_required_field
5481
+ "Expected field: awsIam.roleArn to be present."), and its role name must start with
5482
+ "celigo-http-adaptor-" (otherwise → 422 invalid_field_value). Omitting _iClientId
5483
+ altogether → 422 missing_required_field "Expected field: _iClientId to be present."
5484
+ - |-
5485
+ An Azure Data Lake Storage Gen2 connection (assistant "azuredatalakestoragegen2", or any
5486
+ http.baseURI containing "dfs.core.windows.net") must reference an iClient with provider
5487
+ "azureserviceprincipal"; any other provider fails the save with 422 invalid_field
5488
+ "IClient provider must be azureserviceprincipal for Azure Data Lake Storage Gen2
5489
+ connections."
5490
+ - |-
5491
+ The iClient must belong to the same account as the connection — an iClient id from
5492
+ another account fails with 422 invalid_ref "The referenced IClient must belong to the
5493
+ same user."
5016
5494
  _httpConnectorId:
5017
5495
  type: string
5018
5496
  format: objectId
5019
5497
  x-celigo-refModel: httpconnectors
5020
- description: ID of the HTTP connector template this connection is based on.
5498
+ description: |-
5499
+ HTTP connector (pre-built application template) this connection is linked to. Linking
5500
+ lets exports and imports on the connection pick endpoints from the connector's catalog and
5501
+ drives the `assistant` form in the UI. An id that does not resolve to an accessible
5502
+ connector is dropped from the saved document rather than rejected — read the response back
5503
+ to confirm the link took.
5021
5504
  examples:
5022
5505
  - 5d8f6a2b9c1e4f00112a3b4c
5023
5506
  _httpConnectorApiId:
5024
5507
  type: string
5025
5508
  format: objectId
5026
5509
  x-celigo-refModel: httpconnectorapis
5027
- description: ID of the HTTP connector API definition (an API within the referenced HTTP connector).
5510
+ description: |-
5511
+ API within the linked HTTP connector that this connection targets, for connectors that
5512
+ publish more than one API. Only meaningful together with `_httpConnectorId`; an id that is
5513
+ not one of that connector's APIs is dropped on save, not rejected.
5028
5514
  examples:
5029
5515
  - 5d8f6a2b9c1e4f00112a3b4d
5030
5516
  _httpConnectorVersionId:
5031
5517
  type: string
5032
5518
  format: objectId
5033
- description: ID of the HTTP connector version (a version within the referenced HTTP connector).
5519
+ description: |-
5520
+ Version entry of the linked HTTP connector (an item of the connector's `versions` array)
5521
+ whose endpoint definitions this connection uses. Only meaningful together with
5522
+ `_httpConnectorId`; an id that is not one of that connector's published versions is
5523
+ replaced by a published version of the connector on create and dropped on update, never
5524
+ rejected.
5034
5525
  examples:
5035
5526
  - 5d8f6a2b9c1e4f00112a3b4e
5036
5527
  isRest:
@@ -5056,6 +5547,20 @@ components:
5056
5547
  required:
5057
5548
  - marketplaceId
5058
5549
  - sellingRegion
5550
+ else:
5551
+ if:
5552
+ properties:
5553
+ auth:
5554
+ properties:
5555
+ type:
5556
+ const: awsiam
5557
+ required:
5558
+ - type
5559
+ required:
5560
+ - auth
5561
+ then:
5562
+ required:
5563
+ - _iClientId
5059
5564
  RDBMS:
5060
5565
  type: object
5061
5566
  description: |-
@@ -5258,7 +5763,7 @@ components:
5258
5763
  examples:
5259
5764
  - dedicated
5260
5765
  concurrencyLevel:
5261
- type: number
5766
+ type: integer
5262
5767
  description: |
5263
5768
  Maximum number of concurrent database connections.
5264
5769
  Set based on the database server's connection limit and available resources.
@@ -5267,7 +5772,7 @@ components:
5267
5772
  maximum: 50
5268
5773
  default: 5
5269
5774
  targetConcurrencyLevel:
5270
- type: number
5775
+ type: integer
5271
5776
  description: |
5272
5777
  Target concurrency level for auto-scaling. The system adjusts the number of
5273
5778
  concurrent connections between 1 and this value based on performance feedback.
@@ -5800,7 +6305,7 @@ components:
5800
6305
  examples:
5801
6306
  - admin
5802
6307
  concurrencyLevel:
5803
- type: number
6308
+ type: integer
5804
6309
  description: |
5805
6310
  Maximum number of concurrent MongoDB operations.
5806
6311
  Values above the account's licensed maximum (25 standard, 50 with an Environments license) are silently clamped down.
@@ -5808,7 +6313,7 @@ components:
5808
6313
  maximum: 50
5809
6314
  default: 5
5810
6315
  targetConcurrencyLevel:
5811
- type: number
6316
+ type: integer
5812
6317
  description: |
5813
6318
  Target concurrency level for auto-scaling. The system adjusts concurrency
5814
6319
  between 1 and this value based on rate limit feedback.
@@ -6361,7 +6866,7 @@ components:
6361
6866
  Required when signing or encryption is enabled (not NONE).
6362
6867
  Auto-generated self-signed certificates will be injected if not provided.
6363
6868
  concurrencyLevel:
6364
- type: number
6869
+ type: integer
6365
6870
  description: |-
6366
6871
  Maximum number of messages processed concurrently for this connection. The default of 5
6367
6872
  is safe for most partners. Values above the account's licensed maximum (25 standard, 50
@@ -6370,7 +6875,7 @@ components:
6370
6875
  maximum: 50
6371
6876
  default: 5
6372
6877
  targetConcurrencyLevel:
6373
- type: number
6878
+ type: integer
6374
6879
  description: |-
6375
6880
  Concurrency ceiling integrator.io scales up to when auto-recovering from rate-limit
6376
6881
  errors. Only applies when autoRecoverRateLimitErrors is true on the connection.
@@ -6410,7 +6915,7 @@ components:
6410
6915
  The system verifies the directory exists and is accessible.
6411
6916
  Example: "/data/integrations/incoming" or "C:\\Data\\Integrations".
6412
6917
  concurrencyLevel:
6413
- type: number
6918
+ type: integer
6414
6919
  description: |-
6415
6920
  Maximum number of files processed concurrently. Cannot exceed `targetConcurrencyLevel`; a higher
6416
6921
  value is silently clamped down to it. Values above the account's licensed maximum (25 standard,
@@ -6419,7 +6924,7 @@ components:
6419
6924
  maximum: 50
6420
6925
  default: 1
6421
6926
  targetConcurrencyLevel:
6422
- type: number
6927
+ type: integer
6423
6928
  description: |-
6424
6929
  Upper bound for auto-scaling. The agent scales concurrency between 1 and this value based on
6425
6930
  throughput, so it also caps `concurrencyLevel`. Values above the account's licensed maximum
@@ -6863,7 +7368,7 @@ components:
6863
7368
  examples:
6864
7369
  - wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
6865
7370
  concurrencyLevel:
6866
- type: number
7371
+ type: integer
6867
7372
  description: |-
6868
7373
  Maximum number of DynamoDB requests this connection runs at once.
6869
7374
 
@@ -6877,7 +7382,7 @@ components:
6877
7382
  Maximum number of concurrent DynamoDB operations.
6878
7383
  DynamoDB throughput is governed by table-level read/write capacity units.
6879
7384
  targetConcurrencyLevel:
6880
- type: number
7385
+ type: integer
6881
7386
  description: |-
6882
7387
  Concurrency ceiling for auto-scaling. The system adjusts the active concurrency between 1
6883
7388
  and this value based on rate-limit feedback. Only applied when `autoRecoverRateLimitErrors`
@@ -7037,7 +7542,7 @@ components:
7037
7542
  - name: ServerDataSource
7038
7543
  value: NetSuite2.com
7039
7544
  concurrencyLevel:
7040
- type: number
7545
+ type: integer
7041
7546
  description: |
7042
7547
  Maximum number of concurrent database connections.
7043
7548
  JDBC connections often run through a single Agent, so keep this value
@@ -7049,7 +7554,7 @@ components:
7049
7554
  examples:
7050
7555
  - 5
7051
7556
  targetConcurrencyLevel:
7052
- type: number
7557
+ type: integer
7053
7558
  description: |
7054
7559
  Target concurrency level for auto-scaling. The system adjusts the number of
7055
7560
  concurrent connections between 1 and this value based on performance feedback.
@@ -7345,7 +7850,7 @@ components:
7345
7850
  examples:
7346
7851
  - 566686c4d0b969657e7850ba
7347
7852
  concurrencyLevel:
7348
- type: number
7853
+ type: integer
7349
7854
  description: |
7350
7855
  Maximum number of concurrent operations through this wrapper connection.
7351
7856
  Values above the account's licensed maximum (25 standard, 50 with an Environments license) are silently clamped down.
@@ -7353,7 +7858,7 @@ components:
7353
7858
  maximum: 50
7354
7859
  default: 5
7355
7860
  targetConcurrencyLevel:
7356
- type: number
7861
+ type: integer
7357
7862
  description: |
7358
7863
  Target concurrency level for auto-scaling. The system adjusts concurrency
7359
7864
  between 1 and this value based on performance feedback.
@@ -7770,6 +8275,31 @@ components:
7770
8275
  __failedIntegrationRegistrations with code not_allowed.
7771
8276
  examples:
7772
8277
  - - 6a55be91d16ee8270022893e
8278
+ endUserProvidedFields:
8279
+ type:
8280
+ - array
8281
+ - 'null'
8282
+ items:
8283
+ type: string
8284
+ description: |-
8285
+ Dot-paths of this connection's fields (for example `http.encrypted.apiKey` or
8286
+ `rdbms.user`) that each MCP end user must supply on their own `mcpChild` copy instead of
8287
+ inheriting the parent's value. Set it on the parent connection an MCP server collects
8288
+ end-user credentials for; omit it everywhere else. Omitting it (or sending `[]`) on
8289
+ `PUT` keeps the stored paths; send `null` to clear them.
8290
+ x-celigo-ai-guidance:
8291
+ - |-
8292
+ List only the credential and tenant fields that differ per end user, never a path the
8293
+ account owns: `type`, `_agentId`, `wrapper._stackId`, or any `<adaptor>._iClientId`
8294
+ (e.g. `http._iClientId`) fails the save with 422
8295
+ `mcp_end_user_provided_field_not_allowed`.
8296
+ - |-
8297
+ This is the only MCP end-user field writable through `/v1/connections`; the child
8298
+ connections themselves are created by the end-user setup page, and `connectionRole:
8299
+ mcpChild` in a `POST` or `PUT` body fails with 422 `mcp_child_generic_route_not_allowed`.
8300
+ examples:
8301
+ - - http.encrypted.apiKey
8302
+ - http.unencrypted.accountId
7773
8303
  debugDate:
7774
8304
  type: string
7775
8305
  format: date-time
@@ -8490,6 +9020,13 @@ components:
8490
9020
  description: Display name of the dependent resource.
8491
9021
  examples:
8492
9022
  - Import Orders to NetSuite
9023
+ type:
9024
+ type: string
9025
+ description: |-
9026
+ Sub-type of the dependent resource when its collection distinguishes one, such as
9027
+ `stream` for a listener export. Only present for resource types that carry a `type`.
9028
+ examples:
9029
+ - stream
8493
9030
  paths:
8494
9031
  type: array
8495
9032
  description: |-
@@ -8559,12 +9096,63 @@ components:
8559
9096
  properties:
8560
9097
  success:
8561
9098
  type: boolean
8562
- description: When true, the component is installed in the connected NetSuite account.
9099
+ description: When true, the component is installed in the connected NetSuite account. The remaining fields are present only when false.
9100
+ examples:
9101
+ - true
9102
+ statusCode:
9103
+ type: integer
9104
+ description: HTTP status NetSuite returned for the failed check — 404 when the component's RESTlet is not installed.
9105
+ examples:
9106
+ - 404
9107
+ resBody:
9108
+ type: string
9109
+ description: NetSuite's error text for the failed check.
9110
+ examples:
9111
+ - That Suitelet is invalid, disabled, or no longer exists.
8563
9112
  URL:
8564
9113
  type: string
9114
+ format: uri
8565
9115
  description: |-
8566
9116
  Install link for the component. Absent when `success` is true; the integrator.io UI
8567
9117
  reads it to render its install prompt when the component is missing.
9118
+ examples:
9119
+ - https://tstdrv1234567.app.netsuite.com/suiteapp/ui/marketplace.nl?whence=#/app?id=com.celigo.integratorio
9120
+ DistributedAdaptorStatus:
9121
+ type: object
9122
+ required:
9123
+ - success
9124
+ description: Result of pinging the Celigo distributed adaptor installed in the connected account.
9125
+ properties:
9126
+ success:
9127
+ type: boolean
9128
+ description: |-
9129
+ When true, the Celigo distributed adaptor (the integrator.io bundle or SuiteApp in
9130
+ NetSuite, the Celigo managed package in Salesforce) answered the ping and the
9131
+ connection can run distributed exports and imports. The remaining fields are present
9132
+ only when false.
9133
+ examples:
9134
+ - true
9135
+ statusCode:
9136
+ type: integer
9137
+ description: |-
9138
+ HTTP status the remote system returned for the failed ping — for example 404 when
9139
+ NetSuite reports the Celigo RESTlet is not installed. Absent when the failure did not
9140
+ reach the remote system (for example, a connection that is offline).
9141
+ examples:
9142
+ - 404
9143
+ resBody:
9144
+ type: string
9145
+ description: Remote system's error text, or the platform's reason when the ping was not attempted.
9146
+ examples:
9147
+ - That Suitelet is invalid, disabled, or no longer exists.
9148
+ bundleURL:
9149
+ type: string
9150
+ format: uri
9151
+ description: |-
9152
+ Install link for the missing component in the connected account — the NetSuite bundle
9153
+ details page, or the Salesforce package installer — for the UI's install prompt.
9154
+ examples:
9155
+ - https://tstdrv1234567.app.netsuite.com/app/bundler/bundledetails.nl?sourcecompanyid=TSTDRV916910&domain=PRODUCTION&config=F&id=20038
8568
9156
  SObjectType:
8569
9157
  type: object
8570
9158
  description: |
@@ -9082,9 +9670,10 @@ components:
9082
9670
  errors:
9083
9671
  - code: invalid_request
9084
9672
  message: The request body failed validation.
9085
- 422-unprocessable-entity:
9086
- description: |
9087
- Unprocessable entity. The request was well-formed but was unable to be followed due to semantic errors.
9673
+ 422-dependency-conflict:
9674
+ description: |-
9675
+ The resource has dependents that must be deleted first. Each entry
9676
+ in the `errors` array names one blocking resource.
9088
9677
  content:
9089
9678
  application/json:
9090
9679
  schema:
@@ -9093,12 +9682,11 @@ components:
9093
9682
  default:
9094
9683
  value:
9095
9684
  errors:
9096
- - code: unprocessable_entity
9097
- message: The request could not be processed due to a semantic error.
9098
- 422-dependency-conflict:
9099
- description: |-
9100
- The resource has dependents that must be deleted first. Each entry
9101
- in the `errors` array names one blocking resource.
9685
+ - code: dependencies_not_deleted
9686
+ message: export 6902d88c10b42b2eaac9b2a1 must be deleted before you can delete connection 6398ddf316be761fb16a6523
9687
+ 422-unprocessable-entity:
9688
+ description: |
9689
+ Unprocessable entity. The request was well-formed but was unable to be followed due to semantic errors.
9102
9690
  content:
9103
9691
  application/json:
9104
9692
  schema:
@@ -9107,7 +9695,7 @@ components:
9107
9695
  default:
9108
9696
  value:
9109
9697
  errors:
9110
- - code: dependencies_not_deleted
9111
- message: export 6902d88c10b42b2eaac9b2a1 must be deleted before you can delete connection 6398ddf316be761fb16a6523
9698
+ - code: unprocessable_entity
9699
+ message: The request could not be processed due to a semantic error.
9112
9700
  x-enable-proxy: true
9113
9701
  x-internal: false