@celigo/api-specs 0.2.209 → 0.2.211
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 +77 -34
- package/dist/connection.yml +78 -35
- package/dist/enduser.yml +77 -34
- package/dist/export.yml +58 -14
- package/dist/import.yml +79 -24
- package/dist/mcp-server.yml +77 -34
- package/dist/tool.yml +214 -72
- package/package.json +1 -1
- package/schemas.json +7 -3
package/dist/export.yml
CHANGED
|
@@ -1468,6 +1468,9 @@ components:
|
|
|
1468
1468
|
- exported_to_netsuite
|
|
1469
1469
|
Webhook:
|
|
1470
1470
|
type: object
|
|
1471
|
+
required:
|
|
1472
|
+
- verify
|
|
1473
|
+
x-celigo-ui-override: 'verify is required by the webhook listener form for every provider (exports/webhook.js: verify required:true; on a connector-backed listener the form pre-fills it from the connector definition before saving). The API enforces it only when provider is custom or absent — 422 missing_required_field on webhook.verify, "verify is required for export type webhook, provider = custom". For the named providers probed (slack, shopify, github) it stores a listener posted with key and no verify (201 each; the GET carries provider, key and formType simple) and requires a credential instead: without key (and no token) each answers 422 missing_required_field on webhook.key — "key is required for slack verification" / "key is required for shopify verification" / "key is required for github verification"; a slack listener posted with token and no key saved. Other named providers are unprobed. The requirement is kept so an authored document matches a form-saved one.'
|
|
1471
1474
|
description: Configuration for webhook listeners that receive data through incoming HTTP requests. Required when the export's `type` is `webhook`; omit for other export types. Senders POST to the export's listener URL, `https://api.integrator.io/v1/exports/{_id}/data` (or the same path on the account's regional API host); the platform validates each request using the configured `verify` method, passes the payload to subsequent flow steps, and returns a configurable HTTP response to the caller. A request is answered 204 by default when accepted, 401 when it fails verification, and 403 `unable_to_run_flows` while every flow the export feeds is disabled; a refused request is not queued, so the sender must resend it.
|
|
1472
1475
|
x-celigo-ai-guidance:
|
|
1473
1476
|
- Configuration object for real-time event listeners that receive data via incoming HTTP requests.
|
|
@@ -1542,7 +1545,7 @@ components:
|
|
|
1542
1545
|
properties:
|
|
1543
1546
|
provider:
|
|
1544
1547
|
type: string
|
|
1545
|
-
description: Source application sending the webhook,
|
|
1548
|
+
description: 'Source application sending the webhook. A named provider labels the listener and opens it in the Simple form view, where the form pre-fills that platform''s verification settings and payload parsing before saving; the API itself stores the document as sent and fills nothing in. Use `custom` (the default when omitted) for unlisted providers or when you need full manual control over the security configuration. A named provider requires a credential: `key` for the providers probed (shopify, github, slack — and slack also saves with `token` alone); the HMAC settings a provider''s form pre-fills are the form''s, not an API requirement (see the guidance below).'
|
|
1546
1549
|
x-celigo-ai-guidance:
|
|
1547
1550
|
- |-
|
|
1548
1551
|
Specifies the source application sending webhook data,
|
|
@@ -1553,10 +1556,18 @@ components:
|
|
|
1553
1556
|
This field determines how the webhook handles incoming requests:
|
|
1554
1557
|
|
|
1555
1558
|
- OPTIONAL: Defaults to "custom" if not specified
|
|
1556
|
-
-
|
|
1557
|
-
|
|
1558
|
-
|
|
1559
|
-
|
|
1559
|
+
- A named provider labels the listener, picks its form view (`formType`
|
|
1560
|
+
defaults to `simple`) and makes a credential required — probed for
|
|
1561
|
+
`slack`, `shopify` and `github`: without `key` (and no `token`) each
|
|
1562
|
+
fails with 422 missing_required_field on `webhook.key`, "key is required
|
|
1563
|
+
for slack verification" / "key is required for shopify verification" /
|
|
1564
|
+
"key is required for github verification"; a `slack` listener posted
|
|
1565
|
+
with `token` and no `key` saved. It does NOT make the API fill in
|
|
1566
|
+
`verify` and its companions — a document sent to the API stores exactly
|
|
1567
|
+
what it carries, and the listener form fills them from the connector
|
|
1568
|
+
definition before saving. Send them when the stored document should
|
|
1569
|
+
match a form-saved one (Slack: `verify: hmac`, `algorithm: sha256`,
|
|
1570
|
+
`encoding: base64`, `header: X-Slack-Signature`).
|
|
1560
1571
|
- |-
|
|
1561
1572
|
## IMPLEMENTATION GUIDANCE
|
|
1562
1573
|
|
|
@@ -1566,9 +1577,10 @@ components:
|
|
|
1566
1577
|
```
|
|
1567
1578
|
"provider": "shopify"
|
|
1568
1579
|
```
|
|
1569
|
-
-
|
|
1570
|
-
-
|
|
1571
|
-
|
|
1580
|
+
- Labels the listener as Shopify's and opens it in the Simple form view
|
|
1581
|
+
- Requires `key` (422 "key is required for shopify verification"); saves
|
|
1582
|
+
without `verify` and its companions, which the form would have filled in —
|
|
1583
|
+
send them for a document that matches a form-saved one
|
|
1572
1584
|
|
|
1573
1585
|
### Custom configuration
|
|
1574
1586
|
|
|
@@ -1584,7 +1596,7 @@ components:
|
|
|
1584
1596
|
|
|
1585
1597
|
Choose a specific provider when:
|
|
1586
1598
|
- The source system is explicitly listed in the enum values
|
|
1587
|
-
- You want
|
|
1599
|
+
- You want the form's pre-filled verification settings for that platform
|
|
1588
1600
|
- The integration must follow platform-specific practices
|
|
1589
1601
|
|
|
1590
1602
|
Choose "custom" when:
|
|
@@ -1631,7 +1643,7 @@ components:
|
|
|
1631
1643
|
shopify: Shopify store event webhooks with HMAC-SHA256 verification.
|
|
1632
1644
|
travis: Travis CI build event webhooks (travis-ci.com).
|
|
1633
1645
|
travis-org: Travis CI build event webhooks (travis-ci.org).
|
|
1634
|
-
slack: Slack workspace event webhooks with token
|
|
1646
|
+
slack: Slack workspace event webhooks. The Simple form pre-fills HMAC-SHA256 over the `X-Slack-Signature` header with the app's signing secret as `key`; the API itself accepts either `key` or `token` as the credential (probed 2026-10-29) and pre-fills nothing.
|
|
1635
1647
|
dropbox: Dropbox file change notification webhooks.
|
|
1636
1648
|
onfleet: Onfleet delivery management event webhooks.
|
|
1637
1649
|
helpscout: Help Scout customer support event webhooks.
|
|
@@ -1673,13 +1685,19 @@ components:
|
|
|
1673
1685
|
Which webhook export form the UI uses to edit this listener. A value sent on create or
|
|
1674
1686
|
update wins (case-insensitive — `Simple` is stored as `simple`); a PUT that omits it
|
|
1675
1687
|
keeps the stored value, and a new export without one gets the default for its
|
|
1676
|
-
`provider`. Every webhook export GET carries it.
|
|
1677
|
-
|
|
1678
|
-
|
|
1688
|
+
`provider`. Every webhook export GET carries it. The view changes nothing at run time:
|
|
1689
|
+
the listener URL, the verification and the flows are the same in both.
|
|
1690
|
+
x-celigo-ai-guidance:
|
|
1691
|
+
- |-
|
|
1692
|
+
Omit it on create — the API stamps the provider's default (`simple` for a named
|
|
1693
|
+
provider, `webhook` for `custom`), with or without `_httpConnectorId`, and keeps a
|
|
1694
|
+
value the user set by hand. The legacy UI values `http` / `assistant` fail with 422
|
|
1695
|
+
`enum`, and the field is not PATCH-whitelisted (422 "not a whitelisted property"):
|
|
1696
|
+
change it through a full save.
|
|
1679
1697
|
verify:
|
|
1680
1698
|
type: string
|
|
1681
1699
|
x-celigo-ui-override: Required by the webhook export form (verify is required:true). Encoded to mirror the form so builders produce connectable configurations.
|
|
1682
|
-
description: 'Verification method applied to every incoming request before processing; required for all webhook exports. Each method needs companion fields: `hmac` requires `key`, `algorithm`, `encoding`, and `header` (
|
|
1700
|
+
description: 'Verification method applied to every incoming request before processing; required for all webhook exports. Each method needs companion fields: `hmac` requires `key`, `algorithm`, `encoding`, and `header` (on connector-backed webhooks the form does not require them — it fills them from the connector definition before saving; the API itself copies nothing); `token` requires `token`, with `tokenLocation` defaulting to `body` and selecting which location-specific field applies; `basic` requires `username` and `password`; `secret_url` requires `token`. Prefer `hmac` when the source system supports it — it is the most secure option; `secret_url` relies only on URL obscurity and suits non-sensitive data or testing.'
|
|
1683
1701
|
x-celigo-ai-guidance:
|
|
1684
1702
|
- |-
|
|
1685
1703
|
## FIELD BEHAVIOR
|
|
@@ -2123,6 +2141,32 @@ components:
|
|
|
2123
2141
|
format: objectId
|
|
2124
2142
|
x-celigo-refModel: httpconnectors
|
|
2125
2143
|
description: HTTP connector backing this listener when the webhook is provided by an assistant/connector (e.g. Slack); set by the platform for connector-backed listeners.
|
|
2144
|
+
x-celigo-ai-guidance:
|
|
2145
|
+
- |-
|
|
2146
|
+
The save stores the document as sent and copies nothing from the connector: a
|
|
2147
|
+
listener posted with only `provider`, `key` and (optionally) `_httpConnectorId`
|
|
2148
|
+
saves with no `verify`, `algorithm`, `encoding` or `header` (probed for `slack`
|
|
2149
|
+
and `shopify`) — the API requires a credential for the provider and nothing else:
|
|
2150
|
+
without `key` (and no `token`) `slack`, `shopify` and `github` each fail with 422
|
|
2151
|
+
missing_required_field on `webhook.key` ("key is required for slack verification" /
|
|
2152
|
+
"key is required for shopify verification" / "key is required for github
|
|
2153
|
+
verification"), and a `slack` listener posted with `token` and no `key` saves. The
|
|
2154
|
+
listener form fills the verification fields from the connector's
|
|
2155
|
+
`supportedBy.export.preConfiguredFields` on every save (for Slack `verify: hmac`,
|
|
2156
|
+
`algorithm: sha256`, `encoding: base64`, `header: X-Slack-Signature`); an API
|
|
2157
|
+
caller that wants the stored document to match a form-saved one sends them itself.
|
|
2158
|
+
_httpConnectorApiId:
|
|
2159
|
+
type: string
|
|
2160
|
+
format: objectId
|
|
2161
|
+
x-celigo-refModel: httpconnectorapis
|
|
2162
|
+
description: API of a multi-API connector (an entry of the connector's `apis[]`) this listener is bound to — the form's API type, offered in the Simple view; omit for single-API connectors and universal webhooks.
|
|
2163
|
+
examples:
|
|
2164
|
+
- 673702e2f367e6469401dcf6
|
|
2165
|
+
x-celigo-ai-guidance:
|
|
2166
|
+
- |-
|
|
2167
|
+
Stored and echoed as sent on create and GET; a value that is not an ObjectId fails
|
|
2168
|
+
the save with 422 `invalid_field` ("Invalid value … for field
|
|
2169
|
+
'webhook._httpConnectorApiId'. Reason: BSONError.").
|
|
2126
2170
|
requestMediaType:
|
|
2127
2171
|
type: string
|
|
2128
2172
|
enum:
|
package/dist/import.yml
CHANGED
|
@@ -4286,13 +4286,13 @@ components:
|
|
|
4286
4286
|
jsonPath:
|
|
4287
4287
|
type: string
|
|
4288
4288
|
description: |
|
|
4289
|
-
JSONPath
|
|
4290
|
-
data feeding this subrecord. Semantics depend
|
|
4289
|
+
JSONPath from the source record root that selects
|
|
4290
|
+
the data feeding this subrecord. Semantics depend
|
|
4291
4291
|
on placement:
|
|
4292
4292
|
* Line-level (on `lists[].fields[].`
|
|
4293
|
-
`subRecordMapping`) —
|
|
4294
|
-
|
|
4295
|
-
|
|
4293
|
+
`subRecordMapping`) — the array of lines the
|
|
4294
|
+
sublist iterates (`lineItems`); `$` only when
|
|
4295
|
+
each record is itself one line.
|
|
4296
4296
|
* Body-level (on `fields[].subRecordMapping`)
|
|
4297
4297
|
— a path into the source record root.
|
|
4298
4298
|
Defaults to `$`.
|
|
@@ -4484,9 +4484,10 @@ components:
|
|
|
4484
4484
|
type: boolean
|
|
4485
4485
|
description: |-
|
|
4486
4486
|
When true, this field is a key for matching the record's existing sublist lines: a
|
|
4487
|
-
mapped line updates the one existing line whose key fields hold the same values
|
|
4488
|
-
|
|
4489
|
-
|
|
4487
|
+
mapped line updates the one existing line whose key fields hold the same values —
|
|
4488
|
+
every key field must match, so several keys narrow the match. `lists` says which
|
|
4489
|
+
records match lines, the keys used when no field sets `isKey`, and what a line that
|
|
4490
|
+
matches no line, or several, does.
|
|
4490
4491
|
immutable:
|
|
4491
4492
|
type: boolean
|
|
4492
4493
|
description: When true, this field is only set on record creation, not on updates.
|
|
@@ -4565,13 +4566,19 @@ components:
|
|
|
4565
4566
|
jsonPath:
|
|
4566
4567
|
type: string
|
|
4567
4568
|
description: |
|
|
4568
|
-
|
|
4569
|
-
|
|
4570
|
-
subrecord
|
|
4571
|
-
|
|
4572
|
-
|
|
4573
|
-
|
|
4574
|
-
Defaults to `$`.
|
|
4569
|
+
Path from the source record root to the
|
|
4570
|
+
array of lines whose elements feed this
|
|
4571
|
+
subrecord — the same array the sublist
|
|
4572
|
+
iterates (`lineItems`, `items`); the n-th
|
|
4573
|
+
element populates the n-th sublist line.
|
|
4574
|
+
`$` only when each source record is itself
|
|
4575
|
+
one line. Defaults to `$`.
|
|
4576
|
+
x-celigo-ai-guidance:
|
|
4577
|
+
- |-
|
|
4578
|
+
`$` on a record whose lines sit under a field renders no subrecord for any
|
|
4579
|
+
line, and NetSuite rejects the first numbered line with `Please configure the
|
|
4580
|
+
inventory detail in line N of the item list`; name the line array
|
|
4581
|
+
(`lineItems`), never the current-line context.
|
|
4575
4582
|
mapping:
|
|
4576
4583
|
type: object
|
|
4577
4584
|
description: |
|
|
@@ -4682,6 +4689,11 @@ components:
|
|
|
4682
4689
|
with `MULTIPLE_LINES_WITH_SAME_KEYS` ("Multiple lines found with keys item=<value> ..."). A
|
|
4683
4690
|
line that matches none is added as a new line, which an item fulfillment's `item` sublist
|
|
4684
4691
|
refuses with `SSS_INVALID_SUBLIST_OPERATION`: its lines are its order's.
|
|
4692
|
+
|
|
4693
|
+
On a fulfillment created from an order, a kit's lot-, serial- or bin-managed components are
|
|
4694
|
+
lines of their own under the kit's line, each with its own `line` and `orderline` (the
|
|
4695
|
+
component's own order line) and `kitmemberof` holding the kit line's id; the inventory detail
|
|
4696
|
+
belongs on those component lines, and a kit line refuses it.
|
|
4685
4697
|
x-celigo-ai-guidance:
|
|
4686
4698
|
- |-
|
|
4687
4699
|
To make an update replace a sublist's lines, also map the body field
|
|
@@ -4696,6 +4708,24 @@ components:
|
|
|
4696
4708
|
field, or, on a fulfillment, the order line's id mapped to `orderline`. Keying on the item fails
|
|
4697
4709
|
with `MULTIPLE_LINES_WITH_SAME_KEYS` when an order holds the same item on two lines, and records
|
|
4698
4710
|
that already hold repeated lines fail the same way once a key is set.
|
|
4711
|
+
- |-
|
|
4712
|
+
A key field is read from the existing lines, never written, so a read-only field keys as well
|
|
4713
|
+
as a writable one. The mapper's "Items : Line ID" is `line` (the fulfillment's own line number,
|
|
4714
|
+
equal to the order line only on a fresh full transform) and "Items : Line Number" is `linenum`;
|
|
4715
|
+
`orderline` and `kitmemberof` are not in its picker — type `item[*].orderline` /
|
|
4716
|
+
`item[*].kitmemberof` as the destination.
|
|
4717
|
+
- |-
|
|
4718
|
+
Kit components on a fulfillment: the item is the only default key that reaches a component
|
|
4719
|
+
line, so a component two kit lines share fails with `MULTIPLE_LINES_WITH_SAME_KEYS`. Keying the
|
|
4720
|
+
component rows on the KIT's order line (`line` or `orderline`) selects the kit line instead and
|
|
4721
|
+
the save fails with `You cannot create an inventory detail for this item`. When the source
|
|
4722
|
+
carries the kit's order line on its component rows, keep the item as a key and add
|
|
4723
|
+
`item[*].kitmemberof` mapped from that line id as a second key, keep the kit rows in the list
|
|
4724
|
+
(their empty `kitmemberof` matches the kit line) with `item[*].celigo_ignore_current_line_invdetail_subrecord`
|
|
4725
|
+
true so no inventory detail is written on them, and build the inventory detail from each
|
|
4726
|
+
component row's own picks; component rows alone leave every kit line unfulfilled (`You must
|
|
4727
|
+
enter at least one line item for this transaction`). When the source can supply each
|
|
4728
|
+
component line's own order line id, key every row on `orderline` instead.
|
|
4699
4729
|
x-celigo-agent:
|
|
4700
4730
|
- mapping
|
|
4701
4731
|
lookups:
|
|
@@ -8999,14 +9029,33 @@ components:
|
|
|
8999
9029
|
x-enumDescriptions:
|
|
9000
9030
|
pgp: Encrypt the file with PGP before it is written.
|
|
9001
9031
|
description: |-
|
|
9002
|
-
Encrypts the
|
|
9003
|
-
|
|
9004
|
-
|
|
9005
|
-
|
|
9006
|
-
|
|
9007
|
-
|
|
9008
|
-
|
|
9009
|
-
|
|
9032
|
+
Encrypts the file before it reaches the destination — a file generated from records
|
|
9033
|
+
or, on a `blob: true` transfer, the existing file being moved; omit it for an
|
|
9034
|
+
unencrypted file. `pgp` requires `pgp.symmetricKeyAlgorithm` and a connection holding
|
|
9035
|
+
the recipient's public key (`pgp.publicKey`). Not observed in a run here; per the file
|
|
9036
|
+
adaptor's code (IO-213945, the `blob: true` transfer path): with no `compressionFormat`,
|
|
9037
|
+
a file over 200 MB fails the record before encryption with `pgp_file_size_exceeded`
|
|
9038
|
+
("The file size exceeds the maximum limit of 200 MB supported for PGP encryption." —
|
|
9039
|
+
the adaptor's `errorStore.js` text); with `compressionFormat` set the adaptor skips that
|
|
9040
|
+
pre-check (the compressed size is not known up front) and the encryption service
|
|
9041
|
+
enforces its own 200 MB limit on the compressed file (`S3_FILE_SIZE_EXCEEDED`); a key
|
|
9042
|
+
the platform cannot use fails with the PGP service's own code (`PGP_PUBLICKEY_INVALID` /
|
|
9043
|
+
`PGP_PRIVATEKEY_INVALID` — "<operation> failed because the <key> is invalid."), and
|
|
9044
|
+
`encryption_error` ("error in encrypting the file") only when the service returns no
|
|
9045
|
+
code; the file is never written in clear and a transfer's encryption failure is not
|
|
9046
|
+
retried automatically. A file generated from records meets the same encryption-service
|
|
9047
|
+
limit with `S3_FILE_SIZE_EXCEEDED`.
|
|
9048
|
+
x-celigo-ui-override: 'The transfer forms for FTP, S3, the on-premise file system and the cloud file providers (Box, Dropbox, Google Drive, Azure Blob Storage, Google Cloud Storage, Azure Data Lake Storage Gen2, Celigo file storage) offer the Encrypt files control in both modes (imports/subForms/fileAdvanced.js: ''pgpencrypt'' visible for inputMode records and blob, disabled until the connection holds a PGP key). The connection-side PGP section (connections/subForms/fileAdvanced.js) is mounted by ftp.js, s3.js, filesystem.js, celigoapis.ts, tp.js and the Box / Dropbox / Google Drive / Azure storage account custom HTTP forms; the Google Cloud Storage (httpFramework.js) and ADLS Gen2 (http.js) connection forms do not mount it, so on those two the key is set through the API. The AS2, VAN and NetSuite file cabinet import forms do not carry the control.'
|
|
9049
|
+
x-celigo-ai-guidance:
|
|
9050
|
+
- |-
|
|
9051
|
+
Without `pgp.symmetricKeyAlgorithm` the save fails with 422 `missing_required_field` on
|
|
9052
|
+
`file.pgp.symmetricKeyAlgorithm`; on a connection without `pgp.publicKey` it fails with
|
|
9053
|
+
422 `missing_required_field` on `file.encrypt` ("pgp publicKey is required when encrypt
|
|
9054
|
+
is selected to perform file encryption."), and that check runs first, for any value.
|
|
9055
|
+
- |-
|
|
9056
|
+
`true` and `false` are rejected with 422 `enum` — the field is the string `pgp`, never a
|
|
9057
|
+
boolean. Blob transfers follow the same save rules and return `encrypt` and `pgp` on
|
|
9058
|
+
reads even without `file.type`.
|
|
9010
9059
|
csv:
|
|
9011
9060
|
type: object
|
|
9012
9061
|
description: CSV-specific configuration. Only used when `type` is `"csv"`.
|
|
@@ -9278,10 +9327,16 @@ components:
|
|
|
9278
9327
|
sha384: SHA-384 signing hash.
|
|
9279
9328
|
sha512: SHA-512 signing hash.
|
|
9280
9329
|
sha224: SHA-224 signing hash.
|
|
9281
|
-
description: Hash algorithm used when signing the encrypted file; set only when the recipient requires a
|
|
9330
|
+
description: Hash algorithm used when signing the encrypted file; set only when the recipient requires a signature, which also needs the connection's `pgp.privateKey` and `pgp.passphrase`.
|
|
9282
9331
|
examples:
|
|
9283
9332
|
- sha256
|
|
9284
9333
|
- sha512
|
|
9334
|
+
x-celigo-ai-guidance:
|
|
9335
|
+
- |-
|
|
9336
|
+
On a connection without `pgp.privateKey` the save fails with 422
|
|
9337
|
+
`missing_required_field` on `file.pgp.hashAlgorithm` ("pgp privateKey is required
|
|
9338
|
+
when hashAlgorithm is selected to perform file signature."); leave it unset unless
|
|
9339
|
+
the connection holds the private key.
|
|
9285
9340
|
skipRename:
|
|
9286
9341
|
type: boolean
|
|
9287
9342
|
description: |-
|
package/dist/mcp-server.yml
CHANGED
|
@@ -4891,26 +4891,36 @@ components:
|
|
|
4891
4891
|
PGP:
|
|
4892
4892
|
type: object
|
|
4893
4893
|
description: |-
|
|
4894
|
-
PGP
|
|
4895
|
-
|
|
4896
|
-
|
|
4897
|
-
`privateKey`
|
|
4894
|
+
PGP keys and options for the file transports — `ftp`, `s3`, the on-premise file system and the
|
|
4895
|
+
cloud file-provider connections such as Box, Dropbox, Google Drive, Azure Blob Storage and
|
|
4896
|
+
Celigo file storage. `publicKey` encrypts the files the connection's imports write,
|
|
4897
|
+
record-generated files and transferred (blob) files alike; `privateKey` with its `passphrase`
|
|
4898
|
+
decrypts the files its exports read and signs encrypted output. Supply at least one of the two.
|
|
4898
4899
|
properties:
|
|
4899
4900
|
publicKey:
|
|
4900
4901
|
type: string
|
|
4901
4902
|
description: |-
|
|
4902
|
-
ASCII-armored PGP public key used to encrypt
|
|
4903
|
-
|
|
4903
|
+
ASCII-armored PGP public key of the recipient, used to encrypt every file an import on this
|
|
4904
|
+
connection writes with `file.encrypt: pgp`; omit it for decrypt-only connections. Returned
|
|
4905
|
+
in clear on reads.
|
|
4904
4906
|
x-celigo-ai-guidance:
|
|
4905
4907
|
- |-
|
|
4906
|
-
|
|
4907
|
-
|
|
4908
|
+
An import on this connection cannot save `file.encrypt: pgp` without it — the save fails
|
|
4909
|
+
with 422 `missing_required_field` on `file.encrypt` ("pgp publicKey is required when
|
|
4910
|
+
encrypt is selected to perform file encryption."); the import form disables its Encrypt
|
|
4911
|
+
files control until the connection holds a key.
|
|
4908
4912
|
privateKey:
|
|
4909
4913
|
type: string
|
|
4910
4914
|
writeOnly: true
|
|
4911
4915
|
description: |-
|
|
4912
4916
|
ASCII-armored PGP private key used to decrypt inbound files after download (encrypted at rest;
|
|
4913
|
-
returned masked as `"******"`). Set this when the connection receives encrypted files
|
|
4917
|
+
returned masked as `"******"`). Set this when the connection receives encrypted files, or
|
|
4918
|
+
when its imports sign what they encrypt (`file.pgp.hashAlgorithm`).
|
|
4919
|
+
x-celigo-ai-guidance:
|
|
4920
|
+
- |-
|
|
4921
|
+
Signing needs it: an import that sets `file.pgp.hashAlgorithm` on a connection without a
|
|
4922
|
+
private key fails to save with 422 `missing_required_field` on `file.pgp.hashAlgorithm`
|
|
4923
|
+
("pgp privateKey is required when hashAlgorithm is selected to perform file signature.").
|
|
4914
4924
|
passphrase:
|
|
4915
4925
|
type: string
|
|
4916
4926
|
writeOnly: true
|
|
@@ -6692,10 +6702,11 @@ components:
|
|
|
6692
6702
|
retryHeader:
|
|
6693
6703
|
type: string
|
|
6694
6704
|
description: |
|
|
6695
|
-
|
|
6696
|
-
|
|
6697
|
-
|
|
6698
|
-
|
|
6705
|
+
Response header the retry reads for its wait once a response has been recognized
|
|
6706
|
+
as rate-limited — a delay in seconds or an HTTP date. It only sets the wait: a
|
|
6707
|
+
response carrying the header is not treated as throttled unless a status, header
|
|
6708
|
+
or body rule under `rateLimit` matches it. Change it only when the API names its
|
|
6709
|
+
retry-after header differently.
|
|
6699
6710
|
default: Retry-After
|
|
6700
6711
|
formType:
|
|
6701
6712
|
type: string
|
|
@@ -7425,42 +7436,60 @@ components:
|
|
|
7425
7436
|
rateLimit:
|
|
7426
7437
|
type: object
|
|
7427
7438
|
description: |
|
|
7428
|
-
|
|
7429
|
-
|
|
7430
|
-
|
|
7431
|
-
|
|
7432
|
-
|
|
7433
|
-
|
|
7439
|
+
Rules for recognizing a throttled response. When any rule is set, every response
|
|
7440
|
+
through the connection is checked against the status code, the header rules and
|
|
7441
|
+
the body rule, and the first match marks the request rate-limited; the retry then
|
|
7442
|
+
waits for the header named by the parent `retryHeader` (`Retry-After` by default).
|
|
7443
|
+
A 429 is recognized with no rules at all; a 2xx response is recognized only through
|
|
7444
|
+
a matching `failHeaders` rule or a matching `failPath` + `failValues` pair, which is
|
|
7445
|
+
how APIs that throttle inside a 200 body (GraphQL, Shopify among them) are handled.
|
|
7434
7446
|
properties:
|
|
7435
7447
|
failStatusCode:
|
|
7436
7448
|
type: number
|
|
7437
7449
|
description: |
|
|
7438
|
-
|
|
7439
|
-
|
|
7440
|
-
|
|
7450
|
+
Status code that marks a response rate-limited in place of the standard 429.
|
|
7451
|
+
Set it only when the API throttles with another non-success code; a 2xx value
|
|
7452
|
+
does not make successful responses count as throttled on its own.
|
|
7441
7453
|
default: 429
|
|
7442
7454
|
failPath:
|
|
7443
7455
|
type: string
|
|
7444
7456
|
description: |
|
|
7445
|
-
JSON path or XPath to
|
|
7446
|
-
|
|
7457
|
+
JSON path or XPath to the body field that carries the API's throttle indicator,
|
|
7458
|
+
for APIs that answer 200 with the error inside the body. Point at the field
|
|
7459
|
+
itself (`errors.0.extensions.code`), not at the array or object around it, and
|
|
7460
|
+
pair it with `failValues`, which supplies the values that mean "throttled".
|
|
7447
7461
|
examples:
|
|
7448
|
-
- errors
|
|
7462
|
+
- errors.0.extensions.code
|
|
7463
|
+
x-celigo-ai-guidance:
|
|
7464
|
+
- |-
|
|
7465
|
+
Saves on its own (the probe shows a `failPath` with no `failValues` is accepted),
|
|
7466
|
+
and the documented contract recognizes a 200 as throttled only when `failValues`
|
|
7467
|
+
is set as well. For Shopify GraphQL the platform's own example is
|
|
7468
|
+
`errors.0.extensions.code` with `failValues: ["THROTTLED"]`.
|
|
7449
7469
|
failValues:
|
|
7450
7470
|
type: array
|
|
7451
7471
|
items:
|
|
7452
7472
|
type: string
|
|
7453
7473
|
description: |
|
|
7454
|
-
Values at failPath that
|
|
7474
|
+
Values at `failPath` that mean the request was throttled; a match on any of them
|
|
7475
|
+
marks the response rate-limited.
|
|
7455
7476
|
examples:
|
|
7456
|
-
- -
|
|
7457
|
-
-
|
|
7477
|
+
- - THROTTLED
|
|
7478
|
+
- MAX_COST_EXCEEDED
|
|
7479
|
+
x-celigo-ai-guidance:
|
|
7480
|
+
- |-
|
|
7481
|
+
Needs `failPath`: `failValues` without it fails the save with 422
|
|
7482
|
+
`dependent_field` ("The field: failValues should not be specified without the
|
|
7483
|
+
field: failPath for the Connection.").
|
|
7458
7484
|
failHeaders:
|
|
7459
7485
|
type: array
|
|
7460
7486
|
description: |
|
|
7461
|
-
Response-header rules for
|
|
7462
|
-
optional `value`. A rule with
|
|
7463
|
-
|
|
7487
|
+
Response-header rules for recognizing a throttled response, each a header `name`
|
|
7488
|
+
with an optional `value`. A rule with a `value` matches when the response header
|
|
7489
|
+
carries that value — the stored text is compared with the header as received; a
|
|
7490
|
+
rule with no `value` matches whenever the header is present at all, so a header
|
|
7491
|
+
the API sends on every response (a remaining-quota counter) would mark every
|
|
7492
|
+
response throttled — give such a header a value.
|
|
7464
7493
|
items:
|
|
7465
7494
|
type: object
|
|
7466
7495
|
required:
|
|
@@ -7471,18 +7500,32 @@ components:
|
|
|
7471
7500
|
description: Response header the rule checks.
|
|
7472
7501
|
value:
|
|
7473
7502
|
type: string
|
|
7474
|
-
description: Header value the rule
|
|
7503
|
+
description: Header value the rule compares with the response header; omit to match on the header's presence alone. Stored as sent.
|
|
7475
7504
|
examples:
|
|
7476
7505
|
- - name: X-RateLimit-Remaining
|
|
7477
7506
|
value: '0'
|
|
7507
|
+
x-celigo-ai-guidance:
|
|
7508
|
+
- |-
|
|
7509
|
+
A rule without a `name` fails the save with 422 `invalid_header_format`; a rule
|
|
7510
|
+
with a name and no value saves and matches on presence. The value is stored as
|
|
7511
|
+
sent and not validated at save time.
|
|
7478
7512
|
limit:
|
|
7479
7513
|
type: number
|
|
7480
7514
|
minimum: 1
|
|
7515
|
+
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').
|
|
7481
7516
|
description: |
|
|
7482
|
-
|
|
7483
|
-
|
|
7517
|
+
Minimum spacing between consecutive requests through the connection, in
|
|
7518
|
+
milliseconds, for APIs that cap request rate rather than concurrency. It only
|
|
7519
|
+
applies when the connection runs one request at a time.
|
|
7484
7520
|
examples:
|
|
7485
7521
|
- 1000
|
|
7522
|
+
x-celigo-ai-guidance:
|
|
7523
|
+
- |-
|
|
7524
|
+
Saves only when `concurrencyLevel` is 1 — and, with `autoRecoverRateLimitErrors`
|
|
7525
|
+
on, `targetConcurrencyLevel` is 1 as well; otherwise the save fails with 422
|
|
7526
|
+
`invalid_concurrency_level` ("The field "connection.http.concurrencyLevel"
|
|
7527
|
+
should be set to 1 when the field "connection.http.rateLimit.limit" is
|
|
7528
|
+
populated."). A numeric string is stored as a number.
|
|
7486
7529
|
headers:
|
|
7487
7530
|
type: array
|
|
7488
7531
|
description: |
|