@celigo/api-specs 0.2.208 → 0.2.210

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
@@ -8116,26 +8116,36 @@ components:
8116
8116
  PGP:
8117
8117
  type: object
8118
8118
  description: |-
8119
- PGP encryption settings for file-based connections (ftp, s3, and similar). When set, files are
8120
- PGP-encrypted before upload and/or decrypted after download. Supply at least one of `publicKey`
8121
- (to encrypt outbound files) or `privateKey` (to decrypt inbound files); set `passphrase` whenever
8122
- `privateKey` is provided.
8119
+ PGP keys and options for the file transports — `ftp`, `s3`, the on-premise file system and the
8120
+ cloud file-provider connections such as Box, Dropbox, Google Drive, Azure Blob Storage and
8121
+ Celigo file storage. `publicKey` encrypts the files the connection's imports write,
8122
+ record-generated files and transferred (blob) files alike; `privateKey` with its `passphrase`
8123
+ decrypts the files its exports read and signs encrypted output. Supply at least one of the two.
8123
8124
  properties:
8124
8125
  publicKey:
8125
8126
  type: string
8126
8127
  description: |-
8127
- ASCII-armored PGP public key used to encrypt outbound files before upload.
8128
- Set this when the connection sends encrypted files; omit it for decrypt-only connections.
8128
+ ASCII-armored PGP public key of the recipient, used to encrypt every file an import on this
8129
+ connection writes with `file.encrypt: pgp`; omit it for decrypt-only connections. Returned
8130
+ in clear on reads.
8129
8131
  x-celigo-ai-guidance:
8130
8132
  - |-
8131
- Public key for JWT verification. Optional — used when the API requires
8132
- the public key to be registered for signature verification.
8133
+ An import on this connection cannot save `file.encrypt: pgp` without it — the save fails
8134
+ with 422 `missing_required_field` on `file.encrypt` ("pgp publicKey is required when
8135
+ encrypt is selected to perform file encryption."); the import form disables its Encrypt
8136
+ files control until the connection holds a key.
8133
8137
  privateKey:
8134
8138
  type: string
8135
8139
  writeOnly: true
8136
8140
  description: |-
8137
8141
  ASCII-armored PGP private key used to decrypt inbound files after download (encrypted at rest;
8138
- returned masked as `"******"`). Set this when the connection receives encrypted files.
8142
+ returned masked as `"******"`). Set this when the connection receives encrypted files, or
8143
+ when its imports sign what they encrypt (`file.pgp.hashAlgorithm`).
8144
+ x-celigo-ai-guidance:
8145
+ - |-
8146
+ Signing needs it: an import that sets `file.pgp.hashAlgorithm` on a connection without a
8147
+ private key fails to save with 422 `missing_required_field` on `file.pgp.hashAlgorithm`
8148
+ ("pgp privateKey is required when hashAlgorithm is selected to perform file signature.").
8139
8149
  passphrase:
8140
8150
  type: string
8141
8151
  writeOnly: true
@@ -9917,10 +9927,11 @@ components:
9917
9927
  retryHeader:
9918
9928
  type: string
9919
9929
  description: |
9920
- HTTP response header name that contains the retry delay (in seconds) when rate-limited.
9921
-
9922
- Defaults to "Retry-After" which is the HTTP standard. Only change this if the API
9923
- uses a non-standard header name for retry-after values.
9930
+ Response header the retry reads for its wait once a response has been recognized
9931
+ as rate-limited — a delay in seconds or an HTTP date. It only sets the wait: a
9932
+ response carrying the header is not treated as throttled unless a status, header
9933
+ or body rule under `rateLimit` matches it. Change it only when the API names its
9934
+ retry-after header differently.
9924
9935
  default: Retry-After
9925
9936
  formType:
9926
9937
  type: string
@@ -10650,42 +10661,60 @@ components:
10650
10661
  rateLimit:
10651
10662
  type: object
10652
10663
  description: |
10653
- Rate limiting configuration. Defines how the system detects and handles
10654
- API rate limit responses.
10655
-
10656
- When rate limiting is detected, the system pauses requests and waits for
10657
- the retry-after period before resuming. The retryHeader field on the parent
10658
- HTTP object controls which response header contains the wait time.
10664
+ Rules for recognizing a throttled response. When any rule is set, every response
10665
+ through the connection is checked against the status code, the header rules and
10666
+ the body rule, and the first match marks the request rate-limited; the retry then
10667
+ waits for the header named by the parent `retryHeader` (`Retry-After` by default).
10668
+ A 429 is recognized with no rules at all; a 2xx response is recognized only through
10669
+ a matching `failHeaders` rule or a matching `failPath` + `failValues` pair, which is
10670
+ how APIs that throttle inside a 200 body (GraphQL, Shopify among them) are handled.
10659
10671
  properties:
10660
10672
  failStatusCode:
10661
10673
  type: number
10662
10674
  description: |
10663
- HTTP status code that indicates the API is rate-limiting requests.
10664
- Defaults to 429 (Too Many Requests) which is the HTTP standard.
10665
- Change only if the API uses a non-standard status code for rate limits.
10675
+ Status code that marks a response rate-limited in place of the standard 429.
10676
+ Set it only when the API throttles with another non-success code; a 2xx value
10677
+ does not make successful responses count as throttled on its own.
10666
10678
  default: 429
10667
10679
  failPath:
10668
10680
  type: string
10669
10681
  description: |
10670
- JSON path or XPath to check in response bodies for rate limit indicators.
10671
- Used when APIs return 200 OK but embed rate limit errors in the response body.
10682
+ JSON path or XPath to the body field that carries the API's throttle indicator,
10683
+ for APIs that answer 200 with the error inside the body. Point at the field
10684
+ itself (`errors.0.extensions.code`), not at the array or object around it, and
10685
+ pair it with `failValues`, which supplies the values that mean "throttled".
10672
10686
  examples:
10673
- - errors[0].code
10687
+ - errors.0.extensions.code
10688
+ x-celigo-ai-guidance:
10689
+ - |-
10690
+ Saves on its own (the probe shows a `failPath` with no `failValues` is accepted),
10691
+ and the documented contract recognizes a 200 as throttled only when `failValues`
10692
+ is set as well. For Shopify GraphQL the platform's own example is
10693
+ `errors.0.extensions.code` with `failValues: ["THROTTLED"]`.
10674
10694
  failValues:
10675
10695
  type: array
10676
10696
  items:
10677
10697
  type: string
10678
10698
  description: |
10679
- Values at failPath that indicate rate limiting. Requires failPath to be set.
10699
+ Values at `failPath` that mean the request was throttled; a match on any of them
10700
+ marks the response rate-limited.
10680
10701
  examples:
10681
- - - rate_limit_exceeded
10682
- - too_many_requests
10702
+ - - THROTTLED
10703
+ - MAX_COST_EXCEEDED
10704
+ x-celigo-ai-guidance:
10705
+ - |-
10706
+ Needs `failPath`: `failValues` without it fails the save with 422
10707
+ `dependent_field` ("The field: failValues should not be specified without the
10708
+ field: failPath for the Connection.").
10683
10709
  failHeaders:
10684
10710
  type: array
10685
10711
  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`.
10712
+ Response-header rules for recognizing a throttled response, each a header `name`
10713
+ with an optional `value`. A rule with a `value` matches when the response header
10714
+ carries that value — the stored text is compared with the header as received; a
10715
+ rule with no `value` matches whenever the header is present at all, so a header
10716
+ the API sends on every response (a remaining-quota counter) would mark every
10717
+ response throttled — give such a header a value.
10689
10718
  items:
10690
10719
  type: object
10691
10720
  required:
@@ -10696,18 +10725,32 @@ components:
10696
10725
  description: Response header the rule checks.
10697
10726
  value:
10698
10727
  type: string
10699
- description: Header value the rule checks; omit to check the header alone.
10728
+ description: Header value the rule compares with the response header; omit to match on the header's presence alone. Stored as sent.
10700
10729
  examples:
10701
10730
  - - name: X-RateLimit-Remaining
10702
10731
  value: '0'
10732
+ x-celigo-ai-guidance:
10733
+ - |-
10734
+ A rule without a `name` fails the save with 422 `invalid_header_format`; a rule
10735
+ with a name and no value saves and matches on presence. The value is stored as
10736
+ sent and not validated at save time.
10703
10737
  limit:
10704
10738
  type: number
10705
10739
  minimum: 1
10740
+ x-celigo-ui-override: Semantics mirror the connection form, which labels the field "Wait time between HTTP requests" and requires the value in milliseconds (fieldDefinitions/resources/connection.js 'http.rateLimit.limit').
10706
10741
  description: |
10707
- Maximum number of requests per rate-limit window. When set, the connection's
10708
- effective concurrency level must be 1 to ensure proper rate limit enforcement.
10742
+ Minimum spacing between consecutive requests through the connection, in
10743
+ milliseconds, for APIs that cap request rate rather than concurrency. It only
10744
+ applies when the connection runs one request at a time.
10709
10745
  examples:
10710
10746
  - 1000
10747
+ x-celigo-ai-guidance:
10748
+ - |-
10749
+ Saves only when `concurrencyLevel` is 1 — and, with `autoRecoverRateLimitErrors`
10750
+ on, `targetConcurrencyLevel` is 1 as well; otherwise the save fails with 422
10751
+ `invalid_concurrency_level` ("The field "connection.http.concurrencyLevel"
10752
+ should be set to 1 when the field "connection.http.rateLimit.limit" is
10753
+ populated."). A numeric string is stored as a number.
10711
10754
  headers:
10712
10755
  type: array
10713
10756
  description: |
@@ -1027,7 +1027,7 @@ paths:
1027
1027
  | `/_borrowConcurrencyFromConnectionId` | Share another connection's concurrency budget. `remove` clears it |
1028
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
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` |
1030
+ | `/http/rateLimit/limit` | Wait between consecutive requests, in milliseconds. 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` |
1031
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 |
1032
1032
 
1033
1033
  `replace` and `add` both set the value (a currently unset field is fine);
@@ -3949,26 +3949,36 @@ components:
3949
3949
  PGP:
3950
3950
  type: object
3951
3951
  description: |-
3952
- PGP encryption settings for file-based connections (ftp, s3, and similar). When set, files are
3953
- PGP-encrypted before upload and/or decrypted after download. Supply at least one of `publicKey`
3954
- (to encrypt outbound files) or `privateKey` (to decrypt inbound files); set `passphrase` whenever
3955
- `privateKey` is provided.
3952
+ PGP keys and options for the file transports — `ftp`, `s3`, the on-premise file system and the
3953
+ cloud file-provider connections such as Box, Dropbox, Google Drive, Azure Blob Storage and
3954
+ Celigo file storage. `publicKey` encrypts the files the connection's imports write,
3955
+ record-generated files and transferred (blob) files alike; `privateKey` with its `passphrase`
3956
+ decrypts the files its exports read and signs encrypted output. Supply at least one of the two.
3956
3957
  properties:
3957
3958
  publicKey:
3958
3959
  type: string
3959
3960
  description: |-
3960
- ASCII-armored PGP public key used to encrypt outbound files before upload.
3961
- Set this when the connection sends encrypted files; omit it for decrypt-only connections.
3961
+ ASCII-armored PGP public key of the recipient, used to encrypt every file an import on this
3962
+ connection writes with `file.encrypt: pgp`; omit it for decrypt-only connections. Returned
3963
+ in clear on reads.
3962
3964
  x-celigo-ai-guidance:
3963
3965
  - |-
3964
- Public key for JWT verification. Optional — used when the API requires
3965
- the public key to be registered for signature verification.
3966
+ An import on this connection cannot save `file.encrypt: pgp` without it — the save fails
3967
+ with 422 `missing_required_field` on `file.encrypt` ("pgp publicKey is required when
3968
+ encrypt is selected to perform file encryption."); the import form disables its Encrypt
3969
+ files control until the connection holds a key.
3966
3970
  privateKey:
3967
3971
  type: string
3968
3972
  writeOnly: true
3969
3973
  description: |-
3970
3974
  ASCII-armored PGP private key used to decrypt inbound files after download (encrypted at rest;
3971
- returned masked as `"******"`). Set this when the connection receives encrypted files.
3975
+ returned masked as `"******"`). Set this when the connection receives encrypted files, or
3976
+ when its imports sign what they encrypt (`file.pgp.hashAlgorithm`).
3977
+ x-celigo-ai-guidance:
3978
+ - |-
3979
+ Signing needs it: an import that sets `file.pgp.hashAlgorithm` on a connection without a
3980
+ private key fails to save with 422 `missing_required_field` on `file.pgp.hashAlgorithm`
3981
+ ("pgp privateKey is required when hashAlgorithm is selected to perform file signature.").
3972
3982
  passphrase:
3973
3983
  type: string
3974
3984
  writeOnly: true
@@ -5750,10 +5760,11 @@ components:
5750
5760
  retryHeader:
5751
5761
  type: string
5752
5762
  description: |
5753
- HTTP response header name that contains the retry delay (in seconds) when rate-limited.
5754
-
5755
- Defaults to "Retry-After" which is the HTTP standard. Only change this if the API
5756
- uses a non-standard header name for retry-after values.
5763
+ Response header the retry reads for its wait once a response has been recognized
5764
+ as rate-limited — a delay in seconds or an HTTP date. It only sets the wait: a
5765
+ response carrying the header is not treated as throttled unless a status, header
5766
+ or body rule under `rateLimit` matches it. Change it only when the API names its
5767
+ retry-after header differently.
5757
5768
  default: Retry-After
5758
5769
  formType:
5759
5770
  type: string
@@ -6483,42 +6494,60 @@ components:
6483
6494
  rateLimit:
6484
6495
  type: object
6485
6496
  description: |
6486
- Rate limiting configuration. Defines how the system detects and handles
6487
- API rate limit responses.
6488
-
6489
- When rate limiting is detected, the system pauses requests and waits for
6490
- the retry-after period before resuming. The retryHeader field on the parent
6491
- HTTP object controls which response header contains the wait time.
6497
+ Rules for recognizing a throttled response. When any rule is set, every response
6498
+ through the connection is checked against the status code, the header rules and
6499
+ the body rule, and the first match marks the request rate-limited; the retry then
6500
+ waits for the header named by the parent `retryHeader` (`Retry-After` by default).
6501
+ A 429 is recognized with no rules at all; a 2xx response is recognized only through
6502
+ a matching `failHeaders` rule or a matching `failPath` + `failValues` pair, which is
6503
+ how APIs that throttle inside a 200 body (GraphQL, Shopify among them) are handled.
6492
6504
  properties:
6493
6505
  failStatusCode:
6494
6506
  type: number
6495
6507
  description: |
6496
- HTTP status code that indicates the API is rate-limiting requests.
6497
- Defaults to 429 (Too Many Requests) which is the HTTP standard.
6498
- Change only if the API uses a non-standard status code for rate limits.
6508
+ Status code that marks a response rate-limited in place of the standard 429.
6509
+ Set it only when the API throttles with another non-success code; a 2xx value
6510
+ does not make successful responses count as throttled on its own.
6499
6511
  default: 429
6500
6512
  failPath:
6501
6513
  type: string
6502
6514
  description: |
6503
- JSON path or XPath to check in response bodies for rate limit indicators.
6504
- Used when APIs return 200 OK but embed rate limit errors in the response body.
6515
+ JSON path or XPath to the body field that carries the API's throttle indicator,
6516
+ for APIs that answer 200 with the error inside the body. Point at the field
6517
+ itself (`errors.0.extensions.code`), not at the array or object around it, and
6518
+ pair it with `failValues`, which supplies the values that mean "throttled".
6505
6519
  examples:
6506
- - errors[0].code
6520
+ - errors.0.extensions.code
6521
+ x-celigo-ai-guidance:
6522
+ - |-
6523
+ Saves on its own (the probe shows a `failPath` with no `failValues` is accepted),
6524
+ and the documented contract recognizes a 200 as throttled only when `failValues`
6525
+ is set as well. For Shopify GraphQL the platform's own example is
6526
+ `errors.0.extensions.code` with `failValues: ["THROTTLED"]`.
6507
6527
  failValues:
6508
6528
  type: array
6509
6529
  items:
6510
6530
  type: string
6511
6531
  description: |
6512
- Values at failPath that indicate rate limiting. Requires failPath to be set.
6532
+ Values at `failPath` that mean the request was throttled; a match on any of them
6533
+ marks the response rate-limited.
6513
6534
  examples:
6514
- - - rate_limit_exceeded
6515
- - too_many_requests
6535
+ - - THROTTLED
6536
+ - MAX_COST_EXCEEDED
6537
+ x-celigo-ai-guidance:
6538
+ - |-
6539
+ Needs `failPath`: `failValues` without it fails the save with 422
6540
+ `dependent_field` ("The field: failValues should not be specified without the
6541
+ field: failPath for the Connection.").
6516
6542
  failHeaders:
6517
6543
  type: array
6518
6544
  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`.
6545
+ Response-header rules for recognizing a throttled response, each a header `name`
6546
+ with an optional `value`. A rule with a `value` matches when the response header
6547
+ carries that value — the stored text is compared with the header as received; a
6548
+ rule with no `value` matches whenever the header is present at all, so a header
6549
+ the API sends on every response (a remaining-quota counter) would mark every
6550
+ response throttled — give such a header a value.
6522
6551
  items:
6523
6552
  type: object
6524
6553
  required:
@@ -6529,18 +6558,32 @@ components:
6529
6558
  description: Response header the rule checks.
6530
6559
  value:
6531
6560
  type: string
6532
- description: Header value the rule checks; omit to check the header alone.
6561
+ description: Header value the rule compares with the response header; omit to match on the header's presence alone. Stored as sent.
6533
6562
  examples:
6534
6563
  - - name: X-RateLimit-Remaining
6535
6564
  value: '0'
6565
+ x-celigo-ai-guidance:
6566
+ - |-
6567
+ A rule without a `name` fails the save with 422 `invalid_header_format`; a rule
6568
+ with a name and no value saves and matches on presence. The value is stored as
6569
+ sent and not validated at save time.
6536
6570
  limit:
6537
6571
  type: number
6538
6572
  minimum: 1
6573
+ x-celigo-ui-override: Semantics mirror the connection form, which labels the field "Wait time between HTTP requests" and requires the value in milliseconds (fieldDefinitions/resources/connection.js 'http.rateLimit.limit').
6539
6574
  description: |
6540
- Maximum number of requests per rate-limit window. When set, the connection's
6541
- effective concurrency level must be 1 to ensure proper rate limit enforcement.
6575
+ Minimum spacing between consecutive requests through the connection, in
6576
+ milliseconds, for APIs that cap request rate rather than concurrency. It only
6577
+ applies when the connection runs one request at a time.
6542
6578
  examples:
6543
6579
  - 1000
6580
+ x-celigo-ai-guidance:
6581
+ - |-
6582
+ Saves only when `concurrencyLevel` is 1 — and, with `autoRecoverRateLimitErrors`
6583
+ on, `targetConcurrencyLevel` is 1 as well; otherwise the save fails with 422
6584
+ `invalid_concurrency_level` ("The field "connection.http.concurrencyLevel"
6585
+ should be set to 1 when the field "connection.http.rateLimit.limit" is
6586
+ populated."). A numeric string is stored as a number.
6544
6587
  headers:
6545
6588
  type: array
6546
6589
  description: |
package/dist/enduser.yml CHANGED
@@ -1974,26 +1974,36 @@ components:
1974
1974
  PGP:
1975
1975
  type: object
1976
1976
  description: |-
1977
- PGP encryption settings for file-based connections (ftp, s3, and similar). When set, files are
1978
- PGP-encrypted before upload and/or decrypted after download. Supply at least one of `publicKey`
1979
- (to encrypt outbound files) or `privateKey` (to decrypt inbound files); set `passphrase` whenever
1980
- `privateKey` is provided.
1977
+ PGP keys and options for the file transports — `ftp`, `s3`, the on-premise file system and the
1978
+ cloud file-provider connections such as Box, Dropbox, Google Drive, Azure Blob Storage and
1979
+ Celigo file storage. `publicKey` encrypts the files the connection's imports write,
1980
+ record-generated files and transferred (blob) files alike; `privateKey` with its `passphrase`
1981
+ decrypts the files its exports read and signs encrypted output. Supply at least one of the two.
1981
1982
  properties:
1982
1983
  publicKey:
1983
1984
  type: string
1984
1985
  description: |-
1985
- ASCII-armored PGP public key used to encrypt outbound files before upload.
1986
- Set this when the connection sends encrypted files; omit it for decrypt-only connections.
1986
+ ASCII-armored PGP public key of the recipient, used to encrypt every file an import on this
1987
+ connection writes with `file.encrypt: pgp`; omit it for decrypt-only connections. Returned
1988
+ in clear on reads.
1987
1989
  x-celigo-ai-guidance:
1988
1990
  - |-
1989
- Public key for JWT verification. Optional — used when the API requires
1990
- the public key to be registered for signature verification.
1991
+ An import on this connection cannot save `file.encrypt: pgp` without it — the save fails
1992
+ with 422 `missing_required_field` on `file.encrypt` ("pgp publicKey is required when
1993
+ encrypt is selected to perform file encryption."); the import form disables its Encrypt
1994
+ files control until the connection holds a key.
1991
1995
  privateKey:
1992
1996
  type: string
1993
1997
  writeOnly: true
1994
1998
  description: |-
1995
1999
  ASCII-armored PGP private key used to decrypt inbound files after download (encrypted at rest;
1996
- returned masked as `"******"`). Set this when the connection receives encrypted files.
2000
+ returned masked as `"******"`). Set this when the connection receives encrypted files, or
2001
+ when its imports sign what they encrypt (`file.pgp.hashAlgorithm`).
2002
+ x-celigo-ai-guidance:
2003
+ - |-
2004
+ Signing needs it: an import that sets `file.pgp.hashAlgorithm` on a connection without a
2005
+ private key fails to save with 422 `missing_required_field` on `file.pgp.hashAlgorithm`
2006
+ ("pgp privateKey is required when hashAlgorithm is selected to perform file signature.").
1997
2007
  passphrase:
1998
2008
  type: string
1999
2009
  writeOnly: true
@@ -3775,10 +3785,11 @@ components:
3775
3785
  retryHeader:
3776
3786
  type: string
3777
3787
  description: |
3778
- HTTP response header name that contains the retry delay (in seconds) when rate-limited.
3779
-
3780
- Defaults to "Retry-After" which is the HTTP standard. Only change this if the API
3781
- uses a non-standard header name for retry-after values.
3788
+ Response header the retry reads for its wait once a response has been recognized
3789
+ as rate-limited — a delay in seconds or an HTTP date. It only sets the wait: a
3790
+ response carrying the header is not treated as throttled unless a status, header
3791
+ or body rule under `rateLimit` matches it. Change it only when the API names its
3792
+ retry-after header differently.
3782
3793
  default: Retry-After
3783
3794
  formType:
3784
3795
  type: string
@@ -4508,42 +4519,60 @@ components:
4508
4519
  rateLimit:
4509
4520
  type: object
4510
4521
  description: |
4511
- Rate limiting configuration. Defines how the system detects and handles
4512
- API rate limit responses.
4513
-
4514
- When rate limiting is detected, the system pauses requests and waits for
4515
- the retry-after period before resuming. The retryHeader field on the parent
4516
- HTTP object controls which response header contains the wait time.
4522
+ Rules for recognizing a throttled response. When any rule is set, every response
4523
+ through the connection is checked against the status code, the header rules and
4524
+ the body rule, and the first match marks the request rate-limited; the retry then
4525
+ waits for the header named by the parent `retryHeader` (`Retry-After` by default).
4526
+ A 429 is recognized with no rules at all; a 2xx response is recognized only through
4527
+ a matching `failHeaders` rule or a matching `failPath` + `failValues` pair, which is
4528
+ how APIs that throttle inside a 200 body (GraphQL, Shopify among them) are handled.
4517
4529
  properties:
4518
4530
  failStatusCode:
4519
4531
  type: number
4520
4532
  description: |
4521
- HTTP status code that indicates the API is rate-limiting requests.
4522
- Defaults to 429 (Too Many Requests) which is the HTTP standard.
4523
- Change only if the API uses a non-standard status code for rate limits.
4533
+ Status code that marks a response rate-limited in place of the standard 429.
4534
+ Set it only when the API throttles with another non-success code; a 2xx value
4535
+ does not make successful responses count as throttled on its own.
4524
4536
  default: 429
4525
4537
  failPath:
4526
4538
  type: string
4527
4539
  description: |
4528
- JSON path or XPath to check in response bodies for rate limit indicators.
4529
- Used when APIs return 200 OK but embed rate limit errors in the response body.
4540
+ JSON path or XPath to the body field that carries the API's throttle indicator,
4541
+ for APIs that answer 200 with the error inside the body. Point at the field
4542
+ itself (`errors.0.extensions.code`), not at the array or object around it, and
4543
+ pair it with `failValues`, which supplies the values that mean "throttled".
4530
4544
  examples:
4531
- - errors[0].code
4545
+ - errors.0.extensions.code
4546
+ x-celigo-ai-guidance:
4547
+ - |-
4548
+ Saves on its own (the probe shows a `failPath` with no `failValues` is accepted),
4549
+ and the documented contract recognizes a 200 as throttled only when `failValues`
4550
+ is set as well. For Shopify GraphQL the platform's own example is
4551
+ `errors.0.extensions.code` with `failValues: ["THROTTLED"]`.
4532
4552
  failValues:
4533
4553
  type: array
4534
4554
  items:
4535
4555
  type: string
4536
4556
  description: |
4537
- Values at failPath that indicate rate limiting. Requires failPath to be set.
4557
+ Values at `failPath` that mean the request was throttled; a match on any of them
4558
+ marks the response rate-limited.
4538
4559
  examples:
4539
- - - rate_limit_exceeded
4540
- - too_many_requests
4560
+ - - THROTTLED
4561
+ - MAX_COST_EXCEEDED
4562
+ x-celigo-ai-guidance:
4563
+ - |-
4564
+ Needs `failPath`: `failValues` without it fails the save with 422
4565
+ `dependent_field` ("The field: failValues should not be specified without the
4566
+ field: failPath for the Connection.").
4541
4567
  failHeaders:
4542
4568
  type: array
4543
4569
  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`.
4570
+ Response-header rules for recognizing a throttled response, each a header `name`
4571
+ with an optional `value`. A rule with a `value` matches when the response header
4572
+ carries that value — the stored text is compared with the header as received; a
4573
+ rule with no `value` matches whenever the header is present at all, so a header
4574
+ the API sends on every response (a remaining-quota counter) would mark every
4575
+ response throttled — give such a header a value.
4547
4576
  items:
4548
4577
  type: object
4549
4578
  required:
@@ -4554,18 +4583,32 @@ components:
4554
4583
  description: Response header the rule checks.
4555
4584
  value:
4556
4585
  type: string
4557
- description: Header value the rule checks; omit to check the header alone.
4586
+ description: Header value the rule compares with the response header; omit to match on the header's presence alone. Stored as sent.
4558
4587
  examples:
4559
4588
  - - name: X-RateLimit-Remaining
4560
4589
  value: '0'
4590
+ x-celigo-ai-guidance:
4591
+ - |-
4592
+ A rule without a `name` fails the save with 422 `invalid_header_format`; a rule
4593
+ with a name and no value saves and matches on presence. The value is stored as
4594
+ sent and not validated at save time.
4561
4595
  limit:
4562
4596
  type: number
4563
4597
  minimum: 1
4598
+ x-celigo-ui-override: Semantics mirror the connection form, which labels the field "Wait time between HTTP requests" and requires the value in milliseconds (fieldDefinitions/resources/connection.js 'http.rateLimit.limit').
4564
4599
  description: |
4565
- Maximum number of requests per rate-limit window. When set, the connection's
4566
- effective concurrency level must be 1 to ensure proper rate limit enforcement.
4600
+ Minimum spacing between consecutive requests through the connection, in
4601
+ milliseconds, for APIs that cap request rate rather than concurrency. It only
4602
+ applies when the connection runs one request at a time.
4567
4603
  examples:
4568
4604
  - 1000
4605
+ x-celigo-ai-guidance:
4606
+ - |-
4607
+ Saves only when `concurrencyLevel` is 1 — and, with `autoRecoverRateLimitErrors`
4608
+ on, `targetConcurrencyLevel` is 1 as well; otherwise the save fails with 422
4609
+ `invalid_concurrency_level` ("The field "connection.http.concurrencyLevel"
4610
+ should be set to 1 when the field "connection.http.rateLimit.limit" is
4611
+ populated."). A numeric string is stored as a number.
4569
4612
  headers:
4570
4613
  type: array
4571
4614
  description: |