@celigo/api-specs 0.2.69 → 0.2.71

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
@@ -144,7 +144,9 @@ paths:
144
144
  description: |-
145
145
  Creates a new API. For `script` mode, include `script._scriptId` and `script.function` (the
146
146
  server also copies these to the top level in the response). For `builder` mode,
147
- `builder.request` is required (at minimum `relativeURI` and `method`).
147
+ `builder.request` can be added later — an API created without it has no route until
148
+ `relativeURI` and `method` are set — but when it is present it must carry both, or the
149
+ request fails with 422 `invalid_api_builder_request`.
148
150
 
149
151
  Builder-mode APIs are created with `logging: {"mode": "basic"}` when the account license
150
152
  has logging enabled -- the request body cannot override this (`logging` is ignored on POST
@@ -666,7 +668,13 @@ paths:
666
668
  summary: Update the grouping for one or more APIs
667
669
  description: |-
668
670
  Assigns or removes an API grouping for the specified API resources. Pass
669
- `_apiGroupingId: null` to ungroup. Nonexistent API IDs are silently accepted.
671
+ `_apiGroupingId: null` or omit it to ungroup. Nonexistent API IDs are silently accepted.
672
+
673
+ Every API in `_apiIds` must belong to the same integration, and the grouping must be
674
+ one of that integration's `apiGroupings`. Each API is re-saved through full validation,
675
+ so an API that cannot be saved as it stands (for example a builder API whose response
676
+ router is not configured yet) fails the request with 400 `apigrouping_update_error`;
677
+ regroup such an API with a full `PUT /v1/apis/{_id}` instead.
670
678
  requestBody:
671
679
  required: true
672
680
  content:
@@ -704,7 +712,34 @@ paths:
704
712
  '204':
705
713
  description: API grouping updated successfully (no body returned).
706
714
  '400':
707
- $ref: '#/components/responses/400-bad-request'
715
+ description: |-
716
+ The request was rejected: the APIs span more than one integration
717
+ (`invalid_request`), or one API could not be re-saved with the new grouping
718
+ (`apigrouping_update_error` — the grouping belongs to another integration, or the
719
+ API fails its own validation).
720
+ content:
721
+ application/json:
722
+ schema:
723
+ $ref: '#/components/schemas/Error'
724
+ examples:
725
+ differentIntegrations:
726
+ summary: APIs belong to different integrations
727
+ value:
728
+ errors:
729
+ - code: invalid_request
730
+ message: Unable to update apis for apigrouping, since apis belongs to different integrations.
731
+ groupingNotInIntegration:
732
+ summary: Grouping belongs to another integration
733
+ value:
734
+ errors:
735
+ - code: apigrouping_update_error
736
+ message: 'Failed to update api grouping for api: Get Customer. Error: API grouping does not belong to Integration: 6a429af50547257e3301246c.'
737
+ apiFailsValidation:
738
+ summary: API cannot be re-saved as it stands
739
+ value:
740
+ errors:
741
+ - code: apigrouping_update_error
742
+ message: 'Failed to update api grouping for api: Get Customer. Error: Response router id must be "apiRouter"..'
708
743
  '401':
709
744
  $ref: '#/components/responses/401-unauthorized'
710
745
  /v1/apis/{_id}/logs:
@@ -2119,7 +2154,8 @@ paths:
2119
2154
  combination of `version`, `method`, and `relativeURI` must be unique. Reusing all
2120
2155
  three returns a 422 `clone_api_already_exists`. Pass `_integrationId` to create the
2121
2156
  clone inside an integration — when omitted, the clone is created standalone rather
2122
- than inheriting the source API's integration.
2157
+ than inheriting the source API's integration. Add `_apiGroupingId` to file the clone
2158
+ under one of that integration's `apiGroupings`.
2123
2159
 
2124
2160
  Only **builder-type** APIs can be cloned — cloning any other API type returns a 400
2125
2161
  `clone_not_supported`.
@@ -2168,12 +2204,32 @@ paths:
2168
2204
  standalone — it does not inherit the source API's integration.
2169
2205
  examples:
2170
2206
  - 6a429af50547257e3301246c
2207
+ _apiGroupingId:
2208
+ type:
2209
+ - string
2210
+ - 'null'
2211
+ format: objectId
2212
+ description: |-
2213
+ Grouping inside the target integration that the clone is filed under; `null`
2214
+ or omitted leaves it ungrouped. Honored only together with `_integrationId` —
2215
+ sent without it, the clone is created standalone and the grouping is dropped
2216
+ silently. A grouping that belongs to a different integration fails the clone
2217
+ with 422 `apigrouping_not_belong` and nothing is created.
2218
+ examples:
2219
+ - 60a1b2c3d4e5f60012345678
2171
2220
  examples:
2172
2221
  default:
2173
2222
  summary: Clone to a new version
2174
2223
  value:
2175
2224
  version: v2
2176
2225
  name: IDP (v2)
2226
+ intoGroup:
2227
+ summary: Clone into an integration's API grouping
2228
+ value:
2229
+ version: v2
2230
+ name: IDP (v2)
2231
+ _integrationId: 6a429af50547257e3301246c
2232
+ _apiGroupingId: 60a1b2c3d4e5f60012345678
2177
2233
  responses:
2178
2234
  '201':
2179
2235
  description: |-
@@ -2234,8 +2290,9 @@ paths:
2234
2290
  $ref: '#/components/responses/404-not-found'
2235
2291
  '422':
2236
2292
  description: |-
2237
- An API with the same `version`, `method`, and `relativeURI` already exists. Clone
2238
- with a different `version` (or change the method/URI) to create a distinct API.
2293
+ An API with the same `version`, `method`, and `relativeURI` already exists — clone
2294
+ with a different `version` (or change the method/URI) to create a distinct API — or
2295
+ `_apiGroupingId` is not one of the target integration's `apiGroupings`.
2239
2296
  content:
2240
2297
  application/json:
2241
2298
  schema:
@@ -2246,6 +2303,13 @@ paths:
2246
2303
  errors:
2247
2304
  - code: clone_api_already_exists
2248
2305
  message: The clone API already exists with the same version, method and relative uri.
2306
+ groupingNotInIntegration:
2307
+ summary: Grouping belongs to a different integration
2308
+ value:
2309
+ errors:
2310
+ - field: _apiGroupingId
2311
+ code: apigrouping_not_belong
2312
+ message: 'Failed to create Api for _id "68ae4264b5f755d2dd3796b4" due to: API grouping does not belong to Integration: 6a429af50547257e3301246c'
2249
2313
  /v1/apis/{_id}/clone/validate:
2250
2314
  post:
2251
2315
  x-internal: false
@@ -3332,6 +3396,15 @@ components:
3332
3396
  API. On reads the field is omitted when unset, never `null`.
3333
3397
  examples:
3334
3398
  - 60a1b2c3d4e5f60012345678
3399
+ x-celigo-ai-guidance:
3400
+ - |-
3401
+ The id must be one of the `apiGroupings` of the integration named by _integrationId
3402
+ in the same write; any other id fails with 422 `apigrouping_not_belong` — including
3403
+ a PUT that changes _integrationId but keeps the previous grouping. When moving an
3404
+ API, send the target integration's grouping or `null` (Unassigned).
3405
+ - |-
3406
+ `PATCH /v1/apis/{_id}` rejects `/_apiGroupingId` (422, not a whitelisted property);
3407
+ regroup with a full PUT or with `PUT /v1/apis/updateApiGrouping`.
3335
3408
  description:
3336
3409
  type: string
3337
3410
  description: Optional description of the API's purpose.
@@ -3678,11 +3751,13 @@ components:
3678
3751
  description: |-
3679
3752
  Request body for creating or updating an API.
3680
3753
 
3681
- For builder-mode APIs, populate the `builder` object (at minimum
3682
- `builder.request.relativeURI` and `builder.request.method`); the `script`
3683
- field is ignored. For script-mode APIs, populate `script` with `_scriptId`
3684
- and `function`; the `builder` field is ignored. On PUT, send the complete
3685
- object — omitted fields revert to defaults.
3754
+ For builder-mode APIs, populate the `builder` object; the `script` field is
3755
+ ignored. `builder.request` can be omitted on create — the API has no route
3756
+ until `relativeURI` and `method` are set — but when it is present it must
3757
+ carry both, or the write fails with 422 `invalid_api_builder_request`. For
3758
+ script-mode APIs, populate `script` with `_scriptId` and `function`; the
3759
+ `builder` field is ignored. On PUT, send the complete object — omitted
3760
+ fields revert to defaults.
3686
3761
 
3687
3762
  Set `type` explicitly to `builder` or `script`. The server infers `script`
3688
3763
  when `type` is omitted, but new APIs must declare it.
@@ -4856,12 +4931,24 @@ components:
4856
4931
  type: string
4857
4932
  format: objectId
4858
4933
  x-celigo-refModel: connections
4859
- description: |
4860
- Reference to another connection to share concurrency limits with.
4861
- When set, this connection's concurrency is counted against the referenced
4862
- connection's limit instead of maintaining its own.
4934
+ description: |-
4935
+ Reference to another connection to share concurrency limits with. When set, this
4936
+ connection's traffic counts against the referenced connection's limit instead of its own,
4937
+ and its own concurrency and auto-recovery settings have no effect. One level only: the
4938
+ referenced connection may not itself borrow, and a connection that others borrow from
4939
+ cannot start borrowing.
4863
4940
  examples:
4864
4941
  - 615dfa0742763671275b70ab
4942
+ x-celigo-ai-guidance:
4943
+ - |-
4944
+ Set this when several connections target one external account whose API enforces a
4945
+ single account-wide concurrency limit (for example one NetSuite account): put the limit
4946
+ on one parent connection and point the others here, so their combined traffic can never
4947
+ exceed it.
4948
+ - |-
4949
+ A borrower drains through the parent's queue as well as its ceiling, so a high-volume
4950
+ borrower competes with the parent's own flows — settle the priority split before
4951
+ choosing who borrows from whom.
4865
4952
  debugDate:
4866
4953
  type: string
4867
4954
  format: date-time
@@ -5239,21 +5326,52 @@ components:
5239
5326
  Required for some authentication configurations to identify the calling application.
5240
5327
  concurrencyLevel:
5241
5328
  type: integer
5242
- description: |
5243
- General concurrency level for this connection. Controls the overall
5244
- maximum concurrent requests across all operation types.
5245
- Values above the account's licensed maximum (25 standard, 50 with an Environments license) are silently clamped down.
5329
+ description: |-
5330
+ Maximum number of requests this connection sends to NetSuite in parallel, across SOAP,
5331
+ REST and RESTlet calls. Values above the integrator.io license ceiling (25 standard, 50
5332
+ with an Environments license) are stored as that ceiling. NetSuite separately enforces one
5333
+ concurrency limit per NetSuite account that every caller of its SOAP, REST and RESTlet
5334
+ APIs shares — all integrator.io connections to that account and every other client
5335
+ calling those APIs from outside integrator.io (other integrations, third-party tools).
5246
5336
  minimum: 1
5247
5337
  maximum: 50
5248
5338
  default: 5
5339
+ x-celigo-ai-guidance:
5340
+ - |-
5341
+ Before raising this connection's ceiling — `targetConcurrencyLevel` while
5342
+ `autoRecoverRateLimitErrors` is on (the default; a PUT of `concurrencyLevel` then
5343
+ changes nothing), `concurrencyLevel` only while it is off — total the ceilings of every
5344
+ connection that targets the same NetSuite `account` and `environment` (a connection
5345
+ that borrows counts under its parent) and keep that total, plus whatever calls the
5346
+ account's APIs from outside integrator.io, within the NetSuite account limit; a value
5347
+ that fits this connection alone can still push the whole account over.
5348
+ - |-
5349
+ The NetSuite limit is the service-tier base (Standard 5, Premium 15, Enterprise and
5350
+ Ultimate 20; legacy tiers 5–20) plus 10 per SuiteCloud Plus license; a sandbox matches
5351
+ its production account. Development and partner accounts are fixed at 5 and do not
5352
+ scale with licenses. NetSuite shows the limit at Setup > Integration > Integration
5353
+ Management > Integration Governance; integrator.io cannot read it — ask for the number
5354
+ rather than assuming headroom.
5355
+ - |-
5356
+ Over the limit, NetSuite rejects requests from every caller of that account at once,
5357
+ not only this connection's — SOAP: `ExceededConcurrentRequestLimitFault` /
5358
+ `WS_REQUEST_BLOCKED`; REST web services: HTTP 429; RESTlets: HTTP 400
5359
+ `SSS_REQUEST_LIMIT_EXCEEDED`. To run several connections against one NetSuite account,
5360
+ put the limit on one parent and point the others at it with
5361
+ `_borrowConcurrencyFromConnectionId`; otherwise raise in small steps.
5249
5362
  targetConcurrencyLevel:
5250
5363
  type: integer
5251
- description: |
5364
+ description: |-
5252
5365
  Target concurrency level for auto-scaling. The system adjusts concurrency
5253
5366
  between 1 and this value based on rate limit and governance feedback.
5254
5367
  minimum: 1
5255
5368
  maximum: 50
5256
5369
  default: 5
5370
+ x-celigo-ai-guidance:
5371
+ - |-
5372
+ With `autoRecoverRateLimitErrors` on, this is the level the connection climbs back to
5373
+ after a recovery, so it — not `concurrencyLevel` — is the value that must fit the shared
5374
+ NetSuite account budget described on `concurrencyLevel`.
5257
5375
  _iClientId:
5258
5376
  type: string
5259
5377
  format: objectId
@@ -3164,12 +3164,24 @@ components:
3164
3164
  type: string
3165
3165
  format: objectId
3166
3166
  x-celigo-refModel: connections
3167
- description: |
3168
- Reference to another connection to share concurrency limits with.
3169
- When set, this connection's concurrency is counted against the referenced
3170
- connection's limit instead of maintaining its own.
3167
+ description: |-
3168
+ Reference to another connection to share concurrency limits with. When set, this
3169
+ connection's traffic counts against the referenced connection's limit instead of its own,
3170
+ and its own concurrency and auto-recovery settings have no effect. One level only: the
3171
+ referenced connection may not itself borrow, and a connection that others borrow from
3172
+ cannot start borrowing.
3171
3173
  examples:
3172
3174
  - 615dfa0742763671275b70ab
3175
+ x-celigo-ai-guidance:
3176
+ - |-
3177
+ Set this when several connections target one external account whose API enforces a
3178
+ single account-wide concurrency limit (for example one NetSuite account): put the limit
3179
+ on one parent connection and point the others here, so their combined traffic can never
3180
+ exceed it.
3181
+ - |-
3182
+ A borrower drains through the parent's queue as well as its ceiling, so a high-volume
3183
+ borrower competes with the parent's own flows — settle the priority split before
3184
+ choosing who borrows from whom.
3173
3185
  debugDate:
3174
3186
  type: string
3175
3187
  format: date-time
@@ -3547,21 +3559,52 @@ components:
3547
3559
  Required for some authentication configurations to identify the calling application.
3548
3560
  concurrencyLevel:
3549
3561
  type: integer
3550
- description: |
3551
- General concurrency level for this connection. Controls the overall
3552
- maximum concurrent requests across all operation types.
3553
- Values above the account's licensed maximum (25 standard, 50 with an Environments license) are silently clamped down.
3562
+ description: |-
3563
+ Maximum number of requests this connection sends to NetSuite in parallel, across SOAP,
3564
+ REST and RESTlet calls. Values above the integrator.io license ceiling (25 standard, 50
3565
+ with an Environments license) are stored as that ceiling. NetSuite separately enforces one
3566
+ concurrency limit per NetSuite account that every caller of its SOAP, REST and RESTlet
3567
+ APIs shares — all integrator.io connections to that account and every other client
3568
+ calling those APIs from outside integrator.io (other integrations, third-party tools).
3554
3569
  minimum: 1
3555
3570
  maximum: 50
3556
3571
  default: 5
3572
+ x-celigo-ai-guidance:
3573
+ - |-
3574
+ Before raising this connection's ceiling — `targetConcurrencyLevel` while
3575
+ `autoRecoverRateLimitErrors` is on (the default; a PUT of `concurrencyLevel` then
3576
+ changes nothing), `concurrencyLevel` only while it is off — total the ceilings of every
3577
+ connection that targets the same NetSuite `account` and `environment` (a connection
3578
+ that borrows counts under its parent) and keep that total, plus whatever calls the
3579
+ account's APIs from outside integrator.io, within the NetSuite account limit; a value
3580
+ that fits this connection alone can still push the whole account over.
3581
+ - |-
3582
+ The NetSuite limit is the service-tier base (Standard 5, Premium 15, Enterprise and
3583
+ Ultimate 20; legacy tiers 5–20) plus 10 per SuiteCloud Plus license; a sandbox matches
3584
+ its production account. Development and partner accounts are fixed at 5 and do not
3585
+ scale with licenses. NetSuite shows the limit at Setup > Integration > Integration
3586
+ Management > Integration Governance; integrator.io cannot read it — ask for the number
3587
+ rather than assuming headroom.
3588
+ - |-
3589
+ Over the limit, NetSuite rejects requests from every caller of that account at once,
3590
+ not only this connection's — SOAP: `ExceededConcurrentRequestLimitFault` /
3591
+ `WS_REQUEST_BLOCKED`; REST web services: HTTP 429; RESTlets: HTTP 400
3592
+ `SSS_REQUEST_LIMIT_EXCEEDED`. To run several connections against one NetSuite account,
3593
+ put the limit on one parent and point the others at it with
3594
+ `_borrowConcurrencyFromConnectionId`; otherwise raise in small steps.
3557
3595
  targetConcurrencyLevel:
3558
3596
  type: integer
3559
- description: |
3597
+ description: |-
3560
3598
  Target concurrency level for auto-scaling. The system adjusts concurrency
3561
3599
  between 1 and this value based on rate limit and governance feedback.
3562
3600
  minimum: 1
3563
3601
  maximum: 50
3564
3602
  default: 5
3603
+ x-celigo-ai-guidance:
3604
+ - |-
3605
+ With `autoRecoverRateLimitErrors` on, this is the level the connection climbs back to
3606
+ after a recovery, so it — not `concurrencyLevel` — is the value that must fit the shared
3607
+ NetSuite account budget described on `concurrencyLevel`.
3565
3608
  _iClientId:
3566
3609
  type: string
3567
3610
  format: objectId
@@ -8266,6 +8309,16 @@ components:
8266
8309
  cannot start borrowing.
8267
8310
  examples:
8268
8311
  - 615dfa0742763671275b70ab
8312
+ x-celigo-ai-guidance:
8313
+ - |-
8314
+ Set this when several connections target one external account whose API enforces a
8315
+ single account-wide concurrency limit (for example one NetSuite account): put the limit
8316
+ on one parent connection and point the others here, so their combined traffic can never
8317
+ exceed it.
8318
+ - |-
8319
+ A borrower drains through the parent's queue as well as its ceiling, so a high-volume
8320
+ borrower competes with the parent's own flows — settle the priority split before
8321
+ choosing who borrows from whom.
8269
8322
  autoRecoverRateLimitErrors:
8270
8323
  type: boolean
8271
8324
  default: true
package/dist/enduser.yml CHANGED
@@ -2177,12 +2177,24 @@ components:
2177
2177
  type: string
2178
2178
  format: objectId
2179
2179
  x-celigo-refModel: connections
2180
- description: |
2181
- Reference to another connection to share concurrency limits with.
2182
- When set, this connection's concurrency is counted against the referenced
2183
- connection's limit instead of maintaining its own.
2180
+ description: |-
2181
+ Reference to another connection to share concurrency limits with. When set, this
2182
+ connection's traffic counts against the referenced connection's limit instead of its own,
2183
+ and its own concurrency and auto-recovery settings have no effect. One level only: the
2184
+ referenced connection may not itself borrow, and a connection that others borrow from
2185
+ cannot start borrowing.
2184
2186
  examples:
2185
2187
  - 615dfa0742763671275b70ab
2188
+ x-celigo-ai-guidance:
2189
+ - |-
2190
+ Set this when several connections target one external account whose API enforces a
2191
+ single account-wide concurrency limit (for example one NetSuite account): put the limit
2192
+ on one parent connection and point the others here, so their combined traffic can never
2193
+ exceed it.
2194
+ - |-
2195
+ A borrower drains through the parent's queue as well as its ceiling, so a high-volume
2196
+ borrower competes with the parent's own flows — settle the priority split before
2197
+ choosing who borrows from whom.
2186
2198
  debugDate:
2187
2199
  type: string
2188
2200
  format: date-time
@@ -2560,21 +2572,52 @@ components:
2560
2572
  Required for some authentication configurations to identify the calling application.
2561
2573
  concurrencyLevel:
2562
2574
  type: integer
2563
- description: |
2564
- General concurrency level for this connection. Controls the overall
2565
- maximum concurrent requests across all operation types.
2566
- Values above the account's licensed maximum (25 standard, 50 with an Environments license) are silently clamped down.
2575
+ description: |-
2576
+ Maximum number of requests this connection sends to NetSuite in parallel, across SOAP,
2577
+ REST and RESTlet calls. Values above the integrator.io license ceiling (25 standard, 50
2578
+ with an Environments license) are stored as that ceiling. NetSuite separately enforces one
2579
+ concurrency limit per NetSuite account that every caller of its SOAP, REST and RESTlet
2580
+ APIs shares — all integrator.io connections to that account and every other client
2581
+ calling those APIs from outside integrator.io (other integrations, third-party tools).
2567
2582
  minimum: 1
2568
2583
  maximum: 50
2569
2584
  default: 5
2585
+ x-celigo-ai-guidance:
2586
+ - |-
2587
+ Before raising this connection's ceiling — `targetConcurrencyLevel` while
2588
+ `autoRecoverRateLimitErrors` is on (the default; a PUT of `concurrencyLevel` then
2589
+ changes nothing), `concurrencyLevel` only while it is off — total the ceilings of every
2590
+ connection that targets the same NetSuite `account` and `environment` (a connection
2591
+ that borrows counts under its parent) and keep that total, plus whatever calls the
2592
+ account's APIs from outside integrator.io, within the NetSuite account limit; a value
2593
+ that fits this connection alone can still push the whole account over.
2594
+ - |-
2595
+ The NetSuite limit is the service-tier base (Standard 5, Premium 15, Enterprise and
2596
+ Ultimate 20; legacy tiers 5–20) plus 10 per SuiteCloud Plus license; a sandbox matches
2597
+ its production account. Development and partner accounts are fixed at 5 and do not
2598
+ scale with licenses. NetSuite shows the limit at Setup > Integration > Integration
2599
+ Management > Integration Governance; integrator.io cannot read it — ask for the number
2600
+ rather than assuming headroom.
2601
+ - |-
2602
+ Over the limit, NetSuite rejects requests from every caller of that account at once,
2603
+ not only this connection's — SOAP: `ExceededConcurrentRequestLimitFault` /
2604
+ `WS_REQUEST_BLOCKED`; REST web services: HTTP 429; RESTlets: HTTP 400
2605
+ `SSS_REQUEST_LIMIT_EXCEEDED`. To run several connections against one NetSuite account,
2606
+ put the limit on one parent and point the others at it with
2607
+ `_borrowConcurrencyFromConnectionId`; otherwise raise in small steps.
2570
2608
  targetConcurrencyLevel:
2571
2609
  type: integer
2572
- description: |
2610
+ description: |-
2573
2611
  Target concurrency level for auto-scaling. The system adjusts concurrency
2574
2612
  between 1 and this value based on rate limit and governance feedback.
2575
2613
  minimum: 1
2576
2614
  maximum: 50
2577
2615
  default: 5
2616
+ x-celigo-ai-guidance:
2617
+ - |-
2618
+ With `autoRecoverRateLimitErrors` on, this is the level the connection climbs back to
2619
+ after a recovery, so it — not `concurrencyLevel` — is the value that must fit the shared
2620
+ NetSuite account budget described on `concurrencyLevel`.
2578
2621
  _iClientId:
2579
2622
  type: string
2580
2623
  format: objectId
@@ -287,7 +287,9 @@ paths:
287
287
  | `/flowGroupings` | Flow grouping configuration |
288
288
  | `/apiGroupings` | API grouping configuration |
289
289
 
290
- All other paths are rejected with `422`.
290
+ All other paths are rejected with `422`. A successful patch returns no body, so the
291
+ server-assigned `_id` of a grouping added through `/flowGroupings` or `/apiGroupings`
292
+ is only available from a follow-up `GET`.
291
293
  operationId: patchIntegration
292
294
  tags:
293
295
  - Integrations
@@ -4088,7 +4090,19 @@ components:
4088
4090
 
4089
4091
  Used to group APIs into named sections with their own settings/settingsForm.
4090
4092
  Works identically to `flowGroupings` but for API resources. Create groupings here,
4091
- then assign APIs to them via `PUT /v1/apis/updateApiGrouping`.
4093
+ then assign APIs to them via `PUT /v1/apis/updateApiGrouping`. A grouping that still
4094
+ has member APIs survives being removed from this array — ungroup its APIs first.
4095
+ x-celigo-ai-guidance:
4096
+ - |-
4097
+ `Unassigned` is a reserved name (422 `invalid_apigrouping_name`) and names must be
4098
+ unique within the integration (422 `duplicate_field`).
4099
+ - |-
4100
+ Removing a grouping that still has member APIs returns success but leaves the
4101
+ grouping in place; move those APIs with `PUT /v1/apis/updateApiGrouping` first.
4102
+ - |-
4103
+ `POST` and `PUT` answer with the saved integration, so a new grouping's `_id` is
4104
+ in the response; `PATCH` answers `204` with no body, so after a patch the `_id`
4105
+ comes from a follow-up `GET`.
4092
4106
  items:
4093
4107
  type: object
4094
4108
  additionalProperties: true
@@ -3987,12 +3987,24 @@ components:
3987
3987
  type: string
3988
3988
  format: objectId
3989
3989
  x-celigo-refModel: connections
3990
- description: |
3991
- Reference to another connection to share concurrency limits with.
3992
- When set, this connection's concurrency is counted against the referenced
3993
- connection's limit instead of maintaining its own.
3990
+ description: |-
3991
+ Reference to another connection to share concurrency limits with. When set, this
3992
+ connection's traffic counts against the referenced connection's limit instead of its own,
3993
+ and its own concurrency and auto-recovery settings have no effect. One level only: the
3994
+ referenced connection may not itself borrow, and a connection that others borrow from
3995
+ cannot start borrowing.
3994
3996
  examples:
3995
3997
  - 615dfa0742763671275b70ab
3998
+ x-celigo-ai-guidance:
3999
+ - |-
4000
+ Set this when several connections target one external account whose API enforces a
4001
+ single account-wide concurrency limit (for example one NetSuite account): put the limit
4002
+ on one parent connection and point the others here, so their combined traffic can never
4003
+ exceed it.
4004
+ - |-
4005
+ A borrower drains through the parent's queue as well as its ceiling, so a high-volume
4006
+ borrower competes with the parent's own flows — settle the priority split before
4007
+ choosing who borrows from whom.
3996
4008
  debugDate:
3997
4009
  type: string
3998
4010
  format: date-time
@@ -4370,21 +4382,52 @@ components:
4370
4382
  Required for some authentication configurations to identify the calling application.
4371
4383
  concurrencyLevel:
4372
4384
  type: integer
4373
- description: |
4374
- General concurrency level for this connection. Controls the overall
4375
- maximum concurrent requests across all operation types.
4376
- Values above the account's licensed maximum (25 standard, 50 with an Environments license) are silently clamped down.
4385
+ description: |-
4386
+ Maximum number of requests this connection sends to NetSuite in parallel, across SOAP,
4387
+ REST and RESTlet calls. Values above the integrator.io license ceiling (25 standard, 50
4388
+ with an Environments license) are stored as that ceiling. NetSuite separately enforces one
4389
+ concurrency limit per NetSuite account that every caller of its SOAP, REST and RESTlet
4390
+ APIs shares — all integrator.io connections to that account and every other client
4391
+ calling those APIs from outside integrator.io (other integrations, third-party tools).
4377
4392
  minimum: 1
4378
4393
  maximum: 50
4379
4394
  default: 5
4395
+ x-celigo-ai-guidance:
4396
+ - |-
4397
+ Before raising this connection's ceiling — `targetConcurrencyLevel` while
4398
+ `autoRecoverRateLimitErrors` is on (the default; a PUT of `concurrencyLevel` then
4399
+ changes nothing), `concurrencyLevel` only while it is off — total the ceilings of every
4400
+ connection that targets the same NetSuite `account` and `environment` (a connection
4401
+ that borrows counts under its parent) and keep that total, plus whatever calls the
4402
+ account's APIs from outside integrator.io, within the NetSuite account limit; a value
4403
+ that fits this connection alone can still push the whole account over.
4404
+ - |-
4405
+ The NetSuite limit is the service-tier base (Standard 5, Premium 15, Enterprise and
4406
+ Ultimate 20; legacy tiers 5–20) plus 10 per SuiteCloud Plus license; a sandbox matches
4407
+ its production account. Development and partner accounts are fixed at 5 and do not
4408
+ scale with licenses. NetSuite shows the limit at Setup > Integration > Integration
4409
+ Management > Integration Governance; integrator.io cannot read it — ask for the number
4410
+ rather than assuming headroom.
4411
+ - |-
4412
+ Over the limit, NetSuite rejects requests from every caller of that account at once,
4413
+ not only this connection's — SOAP: `ExceededConcurrentRequestLimitFault` /
4414
+ `WS_REQUEST_BLOCKED`; REST web services: HTTP 429; RESTlets: HTTP 400
4415
+ `SSS_REQUEST_LIMIT_EXCEEDED`. To run several connections against one NetSuite account,
4416
+ put the limit on one parent and point the others at it with
4417
+ `_borrowConcurrencyFromConnectionId`; otherwise raise in small steps.
4380
4418
  targetConcurrencyLevel:
4381
4419
  type: integer
4382
- description: |
4420
+ description: |-
4383
4421
  Target concurrency level for auto-scaling. The system adjusts concurrency
4384
4422
  between 1 and this value based on rate limit and governance feedback.
4385
4423
  minimum: 1
4386
4424
  maximum: 50
4387
4425
  default: 5
4426
+ x-celigo-ai-guidance:
4427
+ - |-
4428
+ With `autoRecoverRateLimitErrors` on, this is the level the connection climbs back to
4429
+ after a recovery, so it — not `concurrencyLevel` — is the value that must fit the shared
4430
+ NetSuite account budget described on `concurrencyLevel`.
4388
4431
  _iClientId:
4389
4432
  type: string
4390
4433
  format: objectId
package/dist/tool.yml CHANGED
@@ -6602,12 +6602,24 @@ components:
6602
6602
  type: string
6603
6603
  format: objectId
6604
6604
  x-celigo-refModel: connections
6605
- description: |
6606
- Reference to another connection to share concurrency limits with.
6607
- When set, this connection's concurrency is counted against the referenced
6608
- connection's limit instead of maintaining its own.
6605
+ description: |-
6606
+ Reference to another connection to share concurrency limits with. When set, this
6607
+ connection's traffic counts against the referenced connection's limit instead of its own,
6608
+ and its own concurrency and auto-recovery settings have no effect. One level only: the
6609
+ referenced connection may not itself borrow, and a connection that others borrow from
6610
+ cannot start borrowing.
6609
6611
  examples:
6610
6612
  - 615dfa0742763671275b70ab
6613
+ x-celigo-ai-guidance:
6614
+ - |-
6615
+ Set this when several connections target one external account whose API enforces a
6616
+ single account-wide concurrency limit (for example one NetSuite account): put the limit
6617
+ on one parent connection and point the others here, so their combined traffic can never
6618
+ exceed it.
6619
+ - |-
6620
+ A borrower drains through the parent's queue as well as its ceiling, so a high-volume
6621
+ borrower competes with the parent's own flows — settle the priority split before
6622
+ choosing who borrows from whom.
6611
6623
  debugDate:
6612
6624
  type: string
6613
6625
  format: date-time
@@ -6985,21 +6997,52 @@ components:
6985
6997
  Required for some authentication configurations to identify the calling application.
6986
6998
  concurrencyLevel:
6987
6999
  type: integer
6988
- description: |
6989
- General concurrency level for this connection. Controls the overall
6990
- maximum concurrent requests across all operation types.
6991
- Values above the account's licensed maximum (25 standard, 50 with an Environments license) are silently clamped down.
7000
+ description: |-
7001
+ Maximum number of requests this connection sends to NetSuite in parallel, across SOAP,
7002
+ REST and RESTlet calls. Values above the integrator.io license ceiling (25 standard, 50
7003
+ with an Environments license) are stored as that ceiling. NetSuite separately enforces one
7004
+ concurrency limit per NetSuite account that every caller of its SOAP, REST and RESTlet
7005
+ APIs shares — all integrator.io connections to that account and every other client
7006
+ calling those APIs from outside integrator.io (other integrations, third-party tools).
6992
7007
  minimum: 1
6993
7008
  maximum: 50
6994
7009
  default: 5
7010
+ x-celigo-ai-guidance:
7011
+ - |-
7012
+ Before raising this connection's ceiling — `targetConcurrencyLevel` while
7013
+ `autoRecoverRateLimitErrors` is on (the default; a PUT of `concurrencyLevel` then
7014
+ changes nothing), `concurrencyLevel` only while it is off — total the ceilings of every
7015
+ connection that targets the same NetSuite `account` and `environment` (a connection
7016
+ that borrows counts under its parent) and keep that total, plus whatever calls the
7017
+ account's APIs from outside integrator.io, within the NetSuite account limit; a value
7018
+ that fits this connection alone can still push the whole account over.
7019
+ - |-
7020
+ The NetSuite limit is the service-tier base (Standard 5, Premium 15, Enterprise and
7021
+ Ultimate 20; legacy tiers 5–20) plus 10 per SuiteCloud Plus license; a sandbox matches
7022
+ its production account. Development and partner accounts are fixed at 5 and do not
7023
+ scale with licenses. NetSuite shows the limit at Setup > Integration > Integration
7024
+ Management > Integration Governance; integrator.io cannot read it — ask for the number
7025
+ rather than assuming headroom.
7026
+ - |-
7027
+ Over the limit, NetSuite rejects requests from every caller of that account at once,
7028
+ not only this connection's — SOAP: `ExceededConcurrentRequestLimitFault` /
7029
+ `WS_REQUEST_BLOCKED`; REST web services: HTTP 429; RESTlets: HTTP 400
7030
+ `SSS_REQUEST_LIMIT_EXCEEDED`. To run several connections against one NetSuite account,
7031
+ put the limit on one parent and point the others at it with
7032
+ `_borrowConcurrencyFromConnectionId`; otherwise raise in small steps.
6995
7033
  targetConcurrencyLevel:
6996
7034
  type: integer
6997
- description: |
7035
+ description: |-
6998
7036
  Target concurrency level for auto-scaling. The system adjusts concurrency
6999
7037
  between 1 and this value based on rate limit and governance feedback.
7000
7038
  minimum: 1
7001
7039
  maximum: 50
7002
7040
  default: 5
7041
+ x-celigo-ai-guidance:
7042
+ - |-
7043
+ With `autoRecoverRateLimitErrors` on, this is the level the connection climbs back to
7044
+ after a recovery, so it — not `concurrencyLevel` — is the value that must fit the shared
7045
+ NetSuite account budget described on `concurrencyLevel`.
7003
7046
  _iClientId:
7004
7047
  type: string
7005
7048
  format: objectId
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@celigo/api-specs",
3
- "version": "0.2.69",
3
+ "version": "0.2.71",
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": "5a9800c",
4
+ "iasCommit": "de043a7",
5
5
  "generatedAt": "2026-10-02"
6
6
  },
7
7
  "roots": {