@celigo/api-specs 0.2.206 → 0.2.208

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
@@ -8505,10 +8505,12 @@ components:
8505
8505
  `targetConcurrencyLevel`. While true, `targetConcurrencyLevel` is the throughput lever: a
8506
8506
  `concurrencyLevel` sent in a PUT is ignored, and one sent in a PATCH is stored but the
8507
8507
  recovery machinery moves it back toward the target. Recovery never runs on `ftp`
8508
- connections: FTP errors aren't treated as rate limits.
8508
+ connections: FTP errors aren't treated as rate limits. A rate limit hit by a Tool
8509
+ invocation (`POST /v1/tools/{_id}/invoke`) or an export preview
8510
+ (`POST /v1/exports/preview`) leaves the connection's concurrency as it is.
8509
8511
  x-celigo-ai-guidance:
8510
8512
  - To change throughput while this is true, write `targetConcurrencyLevel`; a `concurrencyLevel` sent in a PUT returns 200 and changes nothing.
8511
- - Turning it on copies `concurrencyLevel` into `targetConcurrencyLevel`; turning it off unsets the target and leaves `concurrencyLevel` at its current value, which may be below the old target if a recovery was in progress. A `targetConcurrencyLevel` written while this is false is unset by the save.
8513
+ - Turning it on copies `concurrencyLevel` into `targetConcurrencyLevel`; turning it off unsets the target and leaves `concurrencyLevel` at its current value, which may be below the old target if a recovery was in progress. A `targetConcurrencyLevel` sent on a create that sets this false, or with the write that turns this off, is dropped; on a connection where this is already false, writing one fails with 422 `invalid_concurrency_level`.
8512
8514
  - These four settings (`concurrencyLevel`, `targetConcurrencyLevel`, `_borrowConcurrencyFromConnectionId`, this flag) accept a credential-free `PATCH /v1/connections/{_id}`. A PUT replaces the whole document, so send each secret back as its masked `******` value (that keeps it) or as a new value, and never drop one to keep it — an omitted password or `http.encrypted` is cleared, and a static token left out (with no `refreshMethod`) fails the PUT with 422.
8513
8515
  - On a create, while this is true, set the level with `targetConcurrencyLevel`: on `http`, `ftp`, `rdbms` and `mongodb` connections the save stores the target sent, or the adaptor's default without one (1 for `ftp`, 5 for `rdbms` and `mongodb`, 25 for `http` where the license's `concurrency` is at least 25), as both fields, whatever `concurrencyLevel` the body carried. A create that sends this as `false` keeps its `concurrencyLevel`.
8514
8516
  - On an `ftp` connection recovery never runs, and transfer threads are `ftp.multiThreadCount`.
@@ -9145,8 +9147,10 @@ components:
9145
9147
  While `autoRecoverRateLimitErrors` is true, a create sets `concurrencyLevel` to this value, and a
9146
9148
  create that omits it gets 1 for both. Auto-recovery never runs on FTP connections (FTP errors
9147
9149
  aren't treated as rate limits), so nothing climbs back to it.
9148
- Kept on a `PUT` that omits it, like `concurrencyLevel`; unset by the save while
9149
- `autoRecoverRateLimitErrors` is false.
9150
+ Kept on a `PUT` that omits it, like `concurrencyLevel`. A create that sends
9151
+ `autoRecoverRateLimitErrors` false, or a write that turns it off, drops it; on a connection
9152
+ where the flag is already false, sending it fails with 422 `invalid_concurrency_level`
9153
+ ("cannot be set when autoRecoverRateLimitErrors is false").
9150
9154
  minimum: 1
9151
9155
  maximum: 50
9152
9156
  examples:
@@ -9887,9 +9891,10 @@ components:
9887
9891
  Higher values increase throughput but may trigger API rate limits.
9888
9892
  Set this based on the target API's rate limit documentation.
9889
9893
  Send no more than the account's licensed maximum (25 standard, 50 with an Environments license).
9890
- A decimal is rejected with 422 `invalid_field_value` on every write (the same rule applies to every
9891
- adaptor's `concurrencyLevel` and `targetConcurrencyLevel`, and to `ftp.multiThreadCount`).
9892
- Platform-managed while `autoRecoverRateLimitErrors` is true — a create or PUT ignores the value (a create without `targetConcurrencyLevel` stores 25 where the license's `concurrency` is at least 25) and the recovery machinery moves it toward the target; set `targetConcurrencyLevel` instead.
9894
+ A create, a PATCH, and a PUT while `autoRecoverRateLimitErrors` is false reject a decimal with 422
9895
+ `invalid_field_value` and a boolean or a non-numeric string with 422 `invalid_concurrency_level`
9896
+ ("must be an integer").
9897
+ Platform-managed while `autoRecoverRateLimitErrors` is true — a create still checks the value but stores the target in its place (25 without a `targetConcurrencyLevel`, where the license's `concurrency` is at least 25), a PUT ignores it without checking it, and the recovery machinery moves it toward the target; set `targetConcurrencyLevel` instead.
9893
9898
  At level 1 an import's pages run one at a time, so a record's existence lookup and write finish before the next record's start (measured on a single import); the import's `idLockTemplate` serializes only same-key records and leaves the rest parallel.
9894
9899
  minimum: 1
9895
9900
  maximum: 50
@@ -9902,7 +9907,9 @@ components:
9902
9907
  Ceiling the platform climbs back to after rate-limit recovery, in steps of 25% of this value.
9903
9908
  Writing it also sets `concurrencyLevel` to the same value and stops any recovery in progress.
9904
9909
 
9905
- Honored only while `autoRecoverRateLimitErrors` is true; ignored, and unset, when it is false.
9910
+ Honored only while `autoRecoverRateLimitErrors` is true. A create that sends the flag as false, or a
9911
+ write that turns it off, drops it; on a connection where the flag is already false, sending it fails with 422
9912
+ `invalid_concurrency_level` ("cannot be set when autoRecoverRateLimitErrors is false").
9906
9913
  minimum: 1
9907
9914
  maximum: 50
9908
9915
  examples:
@@ -10673,6 +10680,26 @@ components:
10673
10680
  examples:
10674
10681
  - - rate_limit_exceeded
10675
10682
  - too_many_requests
10683
+ failHeaders:
10684
+ type: array
10685
+ description: |
10686
+ Response-header rules for detecting rate limiting, each a header `name` with an
10687
+ optional `value`. A rule with an empty `name` fails the save with 422
10688
+ `invalid_header_format`.
10689
+ items:
10690
+ type: object
10691
+ required:
10692
+ - name
10693
+ properties:
10694
+ name:
10695
+ type: string
10696
+ description: Response header the rule checks.
10697
+ value:
10698
+ type: string
10699
+ description: Header value the rule checks; omit to check the header alone.
10700
+ examples:
10701
+ - - name: X-RateLimit-Remaining
10702
+ value: '0'
10676
10703
  limit:
10677
10704
  type: number
10678
10705
  minimum: 1
@@ -11301,9 +11328,21 @@ components:
11301
11328
  - COMPUTE_WH
11302
11329
  schema:
11303
11330
  type: string
11304
- description: |
11305
- Default Snowflake schema. If omitted, queries must fully-qualify table names
11306
- (e.g., DATABASE.SCHEMA.TABLE).
11331
+ description: |-
11332
+ Default schema for the session: unqualified table names in queries resolve here, and
11333
+ optimized bulk load imports create their temporary staging table here even when the
11334
+ destination table is schema-qualified — so the connection's role must be able to
11335
+ create that table in it. When blank, optimized bulk load uses PUBLIC.
11336
+ x-celigo-ai-guidance:
11337
+ - |-
11338
+ When this names a schema the session cannot resolve — Snowflake reports it as not
11339
+ existing or not authorized for the role, and the session is left without a current
11340
+ schema — every optimized bulk load fails at the staging step with code `query_fail`
11341
+ and the message "Failed to run the bulk load query. Err: [TempTableQuery] The
11342
+ provided schema is invalid: <this value>" (the connector's rewrite of Snowflake's
11343
+ "This session does not have a current schema"). Fix: set this to a schema the role
11344
+ can create the staging table in — normally the destination table's own schema — or
11345
+ point the import at a second Snowflake connection with that default schema.
11307
11346
  examples:
11308
11347
  - PUBLIC
11309
11348
  role:
@@ -844,8 +844,9 @@ paths:
844
844
 
845
845
  Three settings are the exception and survive an omission: `endUserProvidedFields`
846
846
  (send `null` to clear it — `[]` is treated like an omission), and on `ftp` connections
847
- `ftp.concurrencyLevel` and `ftp.targetConcurrencyLevel` (the latter is unset whenever
848
- `autoRecoverRateLimitErrors` is false). `connectionRole` is read-only here: a body carrying
847
+ `ftp.concurrencyLevel` and `ftp.targetConcurrencyLevel` (the latter is dropped by the PUT that
848
+ turns `autoRecoverRateLimitErrors` off, and sending it on a connection where the flag is already
849
+ false fails with 422 `invalid_concurrency_level`). `connectionRole` is read-only here: a body carrying
849
850
  `mcpChild` is rejected.
850
851
 
851
852
  An OAuth connection's `http.auth.oauth.authURI` and `tokenURI` can't change: a body that
@@ -1022,18 +1023,21 @@ paths:
1022
1023
  | `/debugDate` | Debug logging expiry (ISO-8601, max 1 hour from now) |
1023
1024
  | `/debugUntil` | Alias for `/debugDate` |
1024
1025
  | `/<adaptor>/concurrencyLevel` | Concurrent requests allowed. Platform-managed while `autoRecoverRateLimitErrors` is true — the recovery machinery moves it toward the target, so set `targetConcurrencyLevel` instead |
1025
- | `/<adaptor>/targetConcurrencyLevel` | Ceiling auto-recovery climbs back to. Persists only while `autoRecoverRateLimitErrors` is true; while false the save unsets it |
1026
+ | `/<adaptor>/targetConcurrencyLevel` | Ceiling auto-recovery climbs back to. Accepted only while `autoRecoverRateLimitErrors` is true; while it is false the patch fails with 422 `invalid_concurrency_level` |
1026
1027
  | `/_borrowConcurrencyFromConnectionId` | Share another connection's concurrency budget. `remove` clears it |
1027
1028
  | `/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 |
1029
+ | `/http/rateLimit/failStatusCode`, `/http/rateLimit/failPath`, `/http/rateLimit/failHeaders` | Rate-limit detection rules. Send `failHeaders` as the whole array; on one element only `replace` of an existing entry works (e.g. `/http/rateLimit/failHeaders/0`), and `add` or `remove` on an element fails with 422 |
1030
+ | `/http/rateLimit/limit` | Requests per rate-limit window. Accepted only at a concurrency of 1: set `/http/targetConcurrencyLevel` (while `autoRecoverRateLimitErrors` is true) or `/http/concurrencyLevel` (while it is false) to 1 in the same patch; at any other level it fails with 422 `invalid_concurrency_level` |
1028
1031
  | `/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 |
1029
1032
 
1030
1033
  `replace` and `add` both set the value (a currently unset field is fine);
1031
1034
  `remove` unsets it. A `null` value is rejected. Any other path — including
1032
1035
  `/connectionRole`, `/netsuite/concurrencyLevelRESTlet`,
1033
- `/netsuite/concurrencyLevelWebServices` and `rateLimit` fields — fails with
1034
- `<path> is not a whitelisted property`.
1036
+ `/netsuite/concurrencyLevelWebServices`, `/http/rateLimit` as a whole and
1037
+ `/http/rateLimit/failValues` — fails with `<path> is not a whitelisted property`.
1035
1038
  Concurrency values must be whole numbers within the account's licensed
1036
- range (a decimal fails with 422 `invalid_field_value`). A whitelisted path under an adaptor
1039
+ range (a decimal fails with 422 `invalid_field_value`, a boolean or non-numeric
1040
+ string with 422 `invalid_concurrency_level`). A whitelisted path under an adaptor
1037
1041
  block the connection does not use is accepted but never read. The
1038
1042
  borrowed-from connection must exist in the account and may not itself borrow
1039
1043
  (422 `connection_borrows_from_another`), and a connection that others borrow
@@ -1621,11 +1625,14 @@ paths:
1621
1625
  Adaptors `POST /v1/imports/preview` rejects with `invalid_adaptor` run
1622
1626
  here — NetSuite and RDBMS verified alongside HTTP.
1623
1627
 
1624
- The step runs with the document's own `settings` only: hooks receive
1625
- `options.settings` with an `import` key but no `integration` or `flow`
1626
- key and no `_flowId` / `_integrationId`; `{{settings.integration.*}}`
1627
- and `{{settings.flow.*}}` templates render empty. To run the document
1628
- with the context a real run of its parent supplies, use the
1628
+ The step runs without integration or flow context: hooks receive
1629
+ `options.settings` with the document's `import` settings (and
1630
+ `connection` when the connection has settings) but no `integration` or
1631
+ `flow` key and no `_flowId` / `_integrationId`. A
1632
+ `{{settings.integration.*}}` or `{{settings.flow.*}}` template renders
1633
+ empty in a body; in an HTTP `relativeURI` it fails the record with 422
1634
+ `handlebars_template_parse_error`. To run the document with the
1635
+ context a real run of its parent supplies, use the
1629
1636
  integration-scoped forms —
1630
1637
  `POST /v1/integrations/{_integrationId}/flows/{_flowId}/connections/{_connectionId}/import`
1631
1638
  and the `tools/{_toolId}` and `apis/{_apiId}` siblings. The connection
@@ -1658,10 +1665,12 @@ paths:
1658
1665
  This executes the request against the live destination — a real write, even when the
1659
1666
  document carries a saved `mockResponse`. Treat it like a flow run, never like a preview.
1660
1667
  - |-
1661
- The step gets the document's own settings only: hooks see `options.settings = {import}`
1662
- with no `integration` / `flow` key and no `_flowId` / `_integrationId`, and
1663
- `{{settings.integration.*}}` / `{{settings.flow.*}}` render empty. A step whose hooks or
1664
- templates read those settings builds a different record here than in a flow run — send
1668
+ The step gets no integration or flow context: hooks see `options.settings` with `import`
1669
+ (and `connection` when the connection has settings) but no `integration` / `flow` key and
1670
+ no `_flowId` / `_integrationId`; `{{settings.integration.*}}` / `{{settings.flow.*}}`
1671
+ render empty in a body and fail the record with 422 `handlebars_template_parse_error` in
1672
+ an HTTP `relativeURI`. A step whose hooks or templates read those settings builds a
1673
+ different record here than in a flow run — send
1665
1674
  it through the integration-scoped form
1666
1675
  (`/v1/integrations/{_integrationId}/flows/{_flowId}/connections/{_connectionId}/import`,
1667
1676
  or the `tools` / `apis` sibling) instead, which resolves that context from the URL.
@@ -1969,13 +1978,13 @@ paths:
1969
1978
  description: |-
1970
1979
  Runs an import document sent in the request body — a virtual import —
1971
1980
  through the connection, with the flow and the integration in the
1972
- path supplying the execution context a real run gives the step — hooks receive `options.settings` with the flow's and the integration's settings (a resource with none contributes no key) plus `_flowId` / `_integrationId`, as on the flow's own preview chain.
1981
+ path supplying the execution context a real run gives the step — hooks receive `options.settings` with the flow's, the integration's and the connection's settings (a resource with none contributes no key) plus `_flowId` / `_integrationId`, as on the flow's own preview chain.
1973
1982
  Nothing is saved — the document can be an unsaved draft, a modified
1974
1983
  copy, or a saved import as fetched — and the request executes against
1975
1984
  the live destination: a real write; a saved
1976
1985
  `mockResponse` does not substitute. Pipeline and per-record result are
1977
1986
  those of `POST /v1/connections/{_id}/import`, which runs the document
1978
- with its own settings only. The flow must belong to the
1987
+ without integration or flow context. The flow must belong to the
1979
1988
  integration, the connection must be registered to it, and the caller
1980
1989
  needs manage access to the account or the integration.
1981
1990
  parameters:
@@ -2147,13 +2156,13 @@ paths:
2147
2156
  description: |-
2148
2157
  Runs an import document sent in the request body — a virtual import —
2149
2158
  through the connection, with the tool and the integration in the
2150
- path supplying the execution context — hooks receive `options.settings` with the integration's settings (none when it carries none) plus `_integrationId`, and no flow. That is more than a step gets in a real run of the tool, which sees no integration settings and no `_integrationId`.
2159
+ path supplying the execution context — hooks receive `options.settings` with the integration's and the connection's settings (a resource with none contributes no key) plus `_integrationId`, and no flow. That is more than a step gets in a real run of the tool, which sees no integration settings and no `_integrationId`.
2151
2160
  Nothing is saved — the document can be an unsaved draft, a modified
2152
2161
  copy, or a saved import as fetched — and the request executes against
2153
2162
  the live destination: a real write, not a dry run; a saved
2154
2163
  `mockResponse` does not substitute. Pipeline and per-record result are
2155
2164
  those of `POST /v1/connections/{_id}/import`, which runs the document
2156
- with its own settings only. The tool must belong to the
2165
+ without integration or flow context. The tool must belong to the
2157
2166
  integration, the connection must be registered to it, and the caller
2158
2167
  needs manage access to the account or the integration.
2159
2168
  parameters:
@@ -2325,13 +2334,13 @@ paths:
2325
2334
  description: |-
2326
2335
  Runs an import document sent in the request body — a virtual import —
2327
2336
  through the connection, with the API and the integration in the
2328
- path supplying the execution context — hooks receive `options.settings` with the integration's settings (none when it carries none) plus `_integrationId`, and no flow. A step in a real call of the API gets less: no integration settings and no `_integrationId`.
2337
+ path supplying the execution context — hooks receive `options.settings` with the integration's and the connection's settings (a resource with none contributes no key) plus `_integrationId`, and no flow. A step in a real call of the API gets less: no integration settings and no `_integrationId`.
2329
2338
  Nothing is saved — the document can be an unsaved draft, a modified
2330
2339
  copy, or a saved import as fetched — and the request executes against
2331
2340
  the live destination: a real write, not a dry run; a saved
2332
2341
  `mockResponse` does not substitute. Pipeline and per-record result are
2333
2342
  those of `POST /v1/connections/{_id}/import`, which runs the document
2334
- with its own settings only. The API must belong to the
2343
+ without integration or flow context. The API must belong to the
2335
2344
  integration, the connection must be registered to it, and the caller
2336
2345
  needs manage access to the account or the integration.
2337
2346
  parameters:
@@ -4329,10 +4338,12 @@ components:
4329
4338
  `targetConcurrencyLevel`. While true, `targetConcurrencyLevel` is the throughput lever: a
4330
4339
  `concurrencyLevel` sent in a PUT is ignored, and one sent in a PATCH is stored but the
4331
4340
  recovery machinery moves it back toward the target. Recovery never runs on `ftp`
4332
- connections: FTP errors aren't treated as rate limits.
4341
+ connections: FTP errors aren't treated as rate limits. A rate limit hit by a Tool
4342
+ invocation (`POST /v1/tools/{_id}/invoke`) or an export preview
4343
+ (`POST /v1/exports/preview`) leaves the connection's concurrency as it is.
4333
4344
  x-celigo-ai-guidance:
4334
4345
  - To change throughput while this is true, write `targetConcurrencyLevel`; a `concurrencyLevel` sent in a PUT returns 200 and changes nothing.
4335
- - Turning it on copies `concurrencyLevel` into `targetConcurrencyLevel`; turning it off unsets the target and leaves `concurrencyLevel` at its current value, which may be below the old target if a recovery was in progress. A `targetConcurrencyLevel` written while this is false is unset by the save.
4346
+ - Turning it on copies `concurrencyLevel` into `targetConcurrencyLevel`; turning it off unsets the target and leaves `concurrencyLevel` at its current value, which may be below the old target if a recovery was in progress. A `targetConcurrencyLevel` sent on a create that sets this false, or with the write that turns this off, is dropped; on a connection where this is already false, writing one fails with 422 `invalid_concurrency_level`.
4336
4347
  - These four settings (`concurrencyLevel`, `targetConcurrencyLevel`, `_borrowConcurrencyFromConnectionId`, this flag) accept a credential-free `PATCH /v1/connections/{_id}`. A PUT replaces the whole document, so send each secret back as its masked `******` value (that keeps it) or as a new value, and never drop one to keep it — an omitted password or `http.encrypted` is cleared, and a static token left out (with no `refreshMethod`) fails the PUT with 422.
4337
4348
  - On a create, while this is true, set the level with `targetConcurrencyLevel`: on `http`, `ftp`, `rdbms` and `mongodb` connections the save stores the target sent, or the adaptor's default without one (1 for `ftp`, 5 for `rdbms` and `mongodb`, 25 for `http` where the license's `concurrency` is at least 25), as both fields, whatever `concurrencyLevel` the body carried. A create that sends this as `false` keeps its `concurrencyLevel`.
4338
4349
  - On an `ftp` connection recovery never runs, and transfer threads are `ftp.multiThreadCount`.
@@ -4969,8 +4980,10 @@ components:
4969
4980
  While `autoRecoverRateLimitErrors` is true, a create sets `concurrencyLevel` to this value, and a
4970
4981
  create that omits it gets 1 for both. Auto-recovery never runs on FTP connections (FTP errors
4971
4982
  aren't treated as rate limits), so nothing climbs back to it.
4972
- Kept on a `PUT` that omits it, like `concurrencyLevel`; unset by the save while
4973
- `autoRecoverRateLimitErrors` is false.
4983
+ Kept on a `PUT` that omits it, like `concurrencyLevel`. A create that sends
4984
+ `autoRecoverRateLimitErrors` false, or a write that turns it off, drops it; on a connection
4985
+ where the flag is already false, sending it fails with 422 `invalid_concurrency_level`
4986
+ ("cannot be set when autoRecoverRateLimitErrors is false").
4974
4987
  minimum: 1
4975
4988
  maximum: 50
4976
4989
  examples:
@@ -5711,9 +5724,10 @@ components:
5711
5724
  Higher values increase throughput but may trigger API rate limits.
5712
5725
  Set this based on the target API's rate limit documentation.
5713
5726
  Send no more than the account's licensed maximum (25 standard, 50 with an Environments license).
5714
- A decimal is rejected with 422 `invalid_field_value` on every write (the same rule applies to every
5715
- adaptor's `concurrencyLevel` and `targetConcurrencyLevel`, and to `ftp.multiThreadCount`).
5716
- Platform-managed while `autoRecoverRateLimitErrors` is true — a create or PUT ignores the value (a create without `targetConcurrencyLevel` stores 25 where the license's `concurrency` is at least 25) and the recovery machinery moves it toward the target; set `targetConcurrencyLevel` instead.
5727
+ A create, a PATCH, and a PUT while `autoRecoverRateLimitErrors` is false reject a decimal with 422
5728
+ `invalid_field_value` and a boolean or a non-numeric string with 422 `invalid_concurrency_level`
5729
+ ("must be an integer").
5730
+ Platform-managed while `autoRecoverRateLimitErrors` is true — a create still checks the value but stores the target in its place (25 without a `targetConcurrencyLevel`, where the license's `concurrency` is at least 25), a PUT ignores it without checking it, and the recovery machinery moves it toward the target; set `targetConcurrencyLevel` instead.
5717
5731
  At level 1 an import's pages run one at a time, so a record's existence lookup and write finish before the next record's start (measured on a single import); the import's `idLockTemplate` serializes only same-key records and leaves the rest parallel.
5718
5732
  minimum: 1
5719
5733
  maximum: 50
@@ -5726,7 +5740,9 @@ components:
5726
5740
  Ceiling the platform climbs back to after rate-limit recovery, in steps of 25% of this value.
5727
5741
  Writing it also sets `concurrencyLevel` to the same value and stops any recovery in progress.
5728
5742
 
5729
- Honored only while `autoRecoverRateLimitErrors` is true; ignored, and unset, when it is false.
5743
+ Honored only while `autoRecoverRateLimitErrors` is true. A create that sends the flag as false, or a
5744
+ write that turns it off, drops it; on a connection where the flag is already false, sending it fails with 422
5745
+ `invalid_concurrency_level` ("cannot be set when autoRecoverRateLimitErrors is false").
5730
5746
  minimum: 1
5731
5747
  maximum: 50
5732
5748
  examples:
@@ -6497,6 +6513,26 @@ components:
6497
6513
  examples:
6498
6514
  - - rate_limit_exceeded
6499
6515
  - too_many_requests
6516
+ failHeaders:
6517
+ type: array
6518
+ description: |
6519
+ Response-header rules for detecting rate limiting, each a header `name` with an
6520
+ optional `value`. A rule with an empty `name` fails the save with 422
6521
+ `invalid_header_format`.
6522
+ items:
6523
+ type: object
6524
+ required:
6525
+ - name
6526
+ properties:
6527
+ name:
6528
+ type: string
6529
+ description: Response header the rule checks.
6530
+ value:
6531
+ type: string
6532
+ description: Header value the rule checks; omit to check the header alone.
6533
+ examples:
6534
+ - - name: X-RateLimit-Remaining
6535
+ value: '0'
6500
6536
  limit:
6501
6537
  type: number
6502
6538
  minimum: 1
@@ -7125,9 +7161,21 @@ components:
7125
7161
  - COMPUTE_WH
7126
7162
  schema:
7127
7163
  type: string
7128
- description: |
7129
- Default Snowflake schema. If omitted, queries must fully-qualify table names
7130
- (e.g., DATABASE.SCHEMA.TABLE).
7164
+ description: |-
7165
+ Default schema for the session: unqualified table names in queries resolve here, and
7166
+ optimized bulk load imports create their temporary staging table here even when the
7167
+ destination table is schema-qualified — so the connection's role must be able to
7168
+ create that table in it. When blank, optimized bulk load uses PUBLIC.
7169
+ x-celigo-ai-guidance:
7170
+ - |-
7171
+ When this names a schema the session cannot resolve — Snowflake reports it as not
7172
+ existing or not authorized for the role, and the session is left without a current
7173
+ schema — every optimized bulk load fails at the staging step with code `query_fail`
7174
+ and the message "Failed to run the bulk load query. Err: [TempTableQuery] The
7175
+ provided schema is invalid: <this value>" (the connector's rewrite of Snowflake's
7176
+ "This session does not have a current schema"). Fix: set this to a schema the role
7177
+ can create the staging table in — normally the destination table's own schema — or
7178
+ point the import at a second Snowflake connection with that default schema.
7131
7179
  examples:
7132
7180
  - PUBLIC
7133
7181
  role:
@@ -9834,7 +9882,8 @@ components:
9834
9882
  connection's traffic counts against the referenced connection's limit instead of its own,
9835
9883
  and its own concurrency and auto-recovery settings have no effect. One level only: the
9836
9884
  referenced connection may not itself borrow, and a connection that others borrow from
9837
- cannot start borrowing. A connection cannot reference itself (422).
9885
+ cannot start borrowing. Pointing it at the connection itself fails with 422
9886
+ `connection_borrows_from_another`, and an id that matches no connection with 422 `invalid_ref`.
9838
9887
  examples:
9839
9888
  - 615dfa0742763671275b70ab
9840
9889
  x-celigo-ai-guidance:
@@ -9863,6 +9912,8 @@ components:
9863
9912
  such an `http` create that sends only `concurrencyLevel: 10` is stored at 25. To keep the
9864
9913
  `concurrencyLevel` you send, create with this `false`.
9865
9914
  Recovery never runs on `ftp` connections: FTP errors aren't treated as rate limits.
9915
+ A rate limit hit by a Tool invocation (`POST /v1/tools/{_id}/invoke`) or an export preview
9916
+ (`POST /v1/exports/preview`) leaves the connection's concurrency as it is.
9866
9917
  __integrationIds:
9867
9918
  type: array
9868
9919
  maxItems: 100
@@ -10281,8 +10332,9 @@ components:
10281
10332
  type: object
10282
10333
  description: |-
10283
10334
  The outcome of running one input record through an import — one element
10284
- per record, in input order — shared by `POST /v1/imports/{_id}/invoke`
10285
- and the virtual import `POST /v1/connections/{_id}/import`. A record the
10335
+ per record, in input order — shared by `POST /v1/imports/{_id}/invoke`,
10336
+ the virtual import `POST /v1/connections/{_id}/import` and its
10337
+ integration-scoped forms. A record the
10286
10338
  import itself ignored before any request carries `ignored: true` and the
10287
10339
  `stage` that dropped it; a record the destination accepted carries its
10288
10340
  parsed response; a record the destination rejected — or that the
@@ -10372,8 +10424,9 @@ components:
10372
10424
  Hooks and templates see the context a real run of the parent gives them: for a flow step,
10373
10425
  `options.settings` carries `import`, `flow` and `integration` with `_flowId` /
10374
10426
  `_integrationId` — identical to the flow's own preview chain; for a tool or an API step it
10375
- carries `import` and `integration` with `_integrationId` and no flow. A parent or
10376
- integration with no settings contributes no key at all (no `integration` key when the
10427
+ carries `import` and `integration` with `_integrationId` and no flow. Every form adds
10428
+ `connection` when the connection in the path has settings. A parent, integration or
10429
+ connection with no settings contributes no key at all (no `integration` key when the
10377
10430
  integration carries none).
10378
10431
  - |-
10379
10432
  The connection in the path must be registered to the integration in the path (flows and
package/dist/enduser.yml CHANGED
@@ -2363,10 +2363,12 @@ components:
2363
2363
  `targetConcurrencyLevel`. While true, `targetConcurrencyLevel` is the throughput lever: a
2364
2364
  `concurrencyLevel` sent in a PUT is ignored, and one sent in a PATCH is stored but the
2365
2365
  recovery machinery moves it back toward the target. Recovery never runs on `ftp`
2366
- connections: FTP errors aren't treated as rate limits.
2366
+ connections: FTP errors aren't treated as rate limits. A rate limit hit by a Tool
2367
+ invocation (`POST /v1/tools/{_id}/invoke`) or an export preview
2368
+ (`POST /v1/exports/preview`) leaves the connection's concurrency as it is.
2367
2369
  x-celigo-ai-guidance:
2368
2370
  - To change throughput while this is true, write `targetConcurrencyLevel`; a `concurrencyLevel` sent in a PUT returns 200 and changes nothing.
2369
- - Turning it on copies `concurrencyLevel` into `targetConcurrencyLevel`; turning it off unsets the target and leaves `concurrencyLevel` at its current value, which may be below the old target if a recovery was in progress. A `targetConcurrencyLevel` written while this is false is unset by the save.
2371
+ - Turning it on copies `concurrencyLevel` into `targetConcurrencyLevel`; turning it off unsets the target and leaves `concurrencyLevel` at its current value, which may be below the old target if a recovery was in progress. A `targetConcurrencyLevel` sent on a create that sets this false, or with the write that turns this off, is dropped; on a connection where this is already false, writing one fails with 422 `invalid_concurrency_level`.
2370
2372
  - These four settings (`concurrencyLevel`, `targetConcurrencyLevel`, `_borrowConcurrencyFromConnectionId`, this flag) accept a credential-free `PATCH /v1/connections/{_id}`. A PUT replaces the whole document, so send each secret back as its masked `******` value (that keeps it) or as a new value, and never drop one to keep it — an omitted password or `http.encrypted` is cleared, and a static token left out (with no `refreshMethod`) fails the PUT with 422.
2371
2373
  - On a create, while this is true, set the level with `targetConcurrencyLevel`: on `http`, `ftp`, `rdbms` and `mongodb` connections the save stores the target sent, or the adaptor's default without one (1 for `ftp`, 5 for `rdbms` and `mongodb`, 25 for `http` where the license's `concurrency` is at least 25), as both fields, whatever `concurrencyLevel` the body carried. A create that sends this as `false` keeps its `concurrencyLevel`.
2372
2374
  - On an `ftp` connection recovery never runs, and transfer threads are `ftp.multiThreadCount`.
@@ -3003,8 +3005,10 @@ components:
3003
3005
  While `autoRecoverRateLimitErrors` is true, a create sets `concurrencyLevel` to this value, and a
3004
3006
  create that omits it gets 1 for both. Auto-recovery never runs on FTP connections (FTP errors
3005
3007
  aren't treated as rate limits), so nothing climbs back to it.
3006
- Kept on a `PUT` that omits it, like `concurrencyLevel`; unset by the save while
3007
- `autoRecoverRateLimitErrors` is false.
3008
+ Kept on a `PUT` that omits it, like `concurrencyLevel`. A create that sends
3009
+ `autoRecoverRateLimitErrors` false, or a write that turns it off, drops it; on a connection
3010
+ where the flag is already false, sending it fails with 422 `invalid_concurrency_level`
3011
+ ("cannot be set when autoRecoverRateLimitErrors is false").
3008
3012
  minimum: 1
3009
3013
  maximum: 50
3010
3014
  examples:
@@ -3745,9 +3749,10 @@ components:
3745
3749
  Higher values increase throughput but may trigger API rate limits.
3746
3750
  Set this based on the target API's rate limit documentation.
3747
3751
  Send no more than the account's licensed maximum (25 standard, 50 with an Environments license).
3748
- A decimal is rejected with 422 `invalid_field_value` on every write (the same rule applies to every
3749
- adaptor's `concurrencyLevel` and `targetConcurrencyLevel`, and to `ftp.multiThreadCount`).
3750
- Platform-managed while `autoRecoverRateLimitErrors` is true — a create or PUT ignores the value (a create without `targetConcurrencyLevel` stores 25 where the license's `concurrency` is at least 25) and the recovery machinery moves it toward the target; set `targetConcurrencyLevel` instead.
3752
+ A create, a PATCH, and a PUT while `autoRecoverRateLimitErrors` is false reject a decimal with 422
3753
+ `invalid_field_value` and a boolean or a non-numeric string with 422 `invalid_concurrency_level`
3754
+ ("must be an integer").
3755
+ Platform-managed while `autoRecoverRateLimitErrors` is true — a create still checks the value but stores the target in its place (25 without a `targetConcurrencyLevel`, where the license's `concurrency` is at least 25), a PUT ignores it without checking it, and the recovery machinery moves it toward the target; set `targetConcurrencyLevel` instead.
3751
3756
  At level 1 an import's pages run one at a time, so a record's existence lookup and write finish before the next record's start (measured on a single import); the import's `idLockTemplate` serializes only same-key records and leaves the rest parallel.
3752
3757
  minimum: 1
3753
3758
  maximum: 50
@@ -3760,7 +3765,9 @@ components:
3760
3765
  Ceiling the platform climbs back to after rate-limit recovery, in steps of 25% of this value.
3761
3766
  Writing it also sets `concurrencyLevel` to the same value and stops any recovery in progress.
3762
3767
 
3763
- Honored only while `autoRecoverRateLimitErrors` is true; ignored, and unset, when it is false.
3768
+ Honored only while `autoRecoverRateLimitErrors` is true. A create that sends the flag as false, or a
3769
+ write that turns it off, drops it; on a connection where the flag is already false, sending it fails with 422
3770
+ `invalid_concurrency_level` ("cannot be set when autoRecoverRateLimitErrors is false").
3764
3771
  minimum: 1
3765
3772
  maximum: 50
3766
3773
  examples:
@@ -4531,6 +4538,26 @@ components:
4531
4538
  examples:
4532
4539
  - - rate_limit_exceeded
4533
4540
  - too_many_requests
4541
+ failHeaders:
4542
+ type: array
4543
+ description: |
4544
+ Response-header rules for detecting rate limiting, each a header `name` with an
4545
+ optional `value`. A rule with an empty `name` fails the save with 422
4546
+ `invalid_header_format`.
4547
+ items:
4548
+ type: object
4549
+ required:
4550
+ - name
4551
+ properties:
4552
+ name:
4553
+ type: string
4554
+ description: Response header the rule checks.
4555
+ value:
4556
+ type: string
4557
+ description: Header value the rule checks; omit to check the header alone.
4558
+ examples:
4559
+ - - name: X-RateLimit-Remaining
4560
+ value: '0'
4534
4561
  limit:
4535
4562
  type: number
4536
4563
  minimum: 1
@@ -5159,9 +5186,21 @@ components:
5159
5186
  - COMPUTE_WH
5160
5187
  schema:
5161
5188
  type: string
5162
- description: |
5163
- Default Snowflake schema. If omitted, queries must fully-qualify table names
5164
- (e.g., DATABASE.SCHEMA.TABLE).
5189
+ description: |-
5190
+ Default schema for the session: unqualified table names in queries resolve here, and
5191
+ optimized bulk load imports create their temporary staging table here even when the
5192
+ destination table is schema-qualified — so the connection's role must be able to
5193
+ create that table in it. When blank, optimized bulk load uses PUBLIC.
5194
+ x-celigo-ai-guidance:
5195
+ - |-
5196
+ When this names a schema the session cannot resolve — Snowflake reports it as not
5197
+ existing or not authorized for the role, and the session is left without a current
5198
+ schema — every optimized bulk load fails at the staging step with code `query_fail`
5199
+ and the message "Failed to run the bulk load query. Err: [TempTableQuery] The
5200
+ provided schema is invalid: <this value>" (the connector's rewrite of Snowflake's
5201
+ "This session does not have a current schema"). Fix: set this to a schema the role
5202
+ can create the staging table in — normally the destination table's own schema — or
5203
+ point the import at a second Snowflake connection with that default schema.
5165
5204
  examples:
5166
5205
  - PUBLIC
5167
5206
  role: