@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/tool.yml
CHANGED
|
@@ -7503,26 +7503,36 @@ components:
|
|
|
7503
7503
|
PGP:
|
|
7504
7504
|
type: object
|
|
7505
7505
|
description: |-
|
|
7506
|
-
PGP
|
|
7507
|
-
|
|
7508
|
-
|
|
7509
|
-
`privateKey`
|
|
7506
|
+
PGP keys and options for the file transports — `ftp`, `s3`, the on-premise file system and the
|
|
7507
|
+
cloud file-provider connections such as Box, Dropbox, Google Drive, Azure Blob Storage and
|
|
7508
|
+
Celigo file storage. `publicKey` encrypts the files the connection's imports write,
|
|
7509
|
+
record-generated files and transferred (blob) files alike; `privateKey` with its `passphrase`
|
|
7510
|
+
decrypts the files its exports read and signs encrypted output. Supply at least one of the two.
|
|
7510
7511
|
properties:
|
|
7511
7512
|
publicKey:
|
|
7512
7513
|
type: string
|
|
7513
7514
|
description: |-
|
|
7514
|
-
ASCII-armored PGP public key used to encrypt
|
|
7515
|
-
|
|
7515
|
+
ASCII-armored PGP public key of the recipient, used to encrypt every file an import on this
|
|
7516
|
+
connection writes with `file.encrypt: pgp`; omit it for decrypt-only connections. Returned
|
|
7517
|
+
in clear on reads.
|
|
7516
7518
|
x-celigo-ai-guidance:
|
|
7517
7519
|
- |-
|
|
7518
|
-
|
|
7519
|
-
|
|
7520
|
+
An import on this connection cannot save `file.encrypt: pgp` without it — the save fails
|
|
7521
|
+
with 422 `missing_required_field` on `file.encrypt` ("pgp publicKey is required when
|
|
7522
|
+
encrypt is selected to perform file encryption."); the import form disables its Encrypt
|
|
7523
|
+
files control until the connection holds a key.
|
|
7520
7524
|
privateKey:
|
|
7521
7525
|
type: string
|
|
7522
7526
|
writeOnly: true
|
|
7523
7527
|
description: |-
|
|
7524
7528
|
ASCII-armored PGP private key used to decrypt inbound files after download (encrypted at rest;
|
|
7525
|
-
returned masked as `"******"`). Set this when the connection receives encrypted files
|
|
7529
|
+
returned masked as `"******"`). Set this when the connection receives encrypted files, or
|
|
7530
|
+
when its imports sign what they encrypt (`file.pgp.hashAlgorithm`).
|
|
7531
|
+
x-celigo-ai-guidance:
|
|
7532
|
+
- |-
|
|
7533
|
+
Signing needs it: an import that sets `file.pgp.hashAlgorithm` on a connection without a
|
|
7534
|
+
private key fails to save with 422 `missing_required_field` on `file.pgp.hashAlgorithm`
|
|
7535
|
+
("pgp privateKey is required when hashAlgorithm is selected to perform file signature.").
|
|
7526
7536
|
passphrase:
|
|
7527
7537
|
type: string
|
|
7528
7538
|
writeOnly: true
|
|
@@ -9247,10 +9257,11 @@ components:
|
|
|
9247
9257
|
retryHeader:
|
|
9248
9258
|
type: string
|
|
9249
9259
|
description: |
|
|
9250
|
-
|
|
9251
|
-
|
|
9252
|
-
|
|
9253
|
-
|
|
9260
|
+
Response header the retry reads for its wait once a response has been recognized
|
|
9261
|
+
as rate-limited — a delay in seconds or an HTTP date. It only sets the wait: a
|
|
9262
|
+
response carrying the header is not treated as throttled unless a status, header
|
|
9263
|
+
or body rule under `rateLimit` matches it. Change it only when the API names its
|
|
9264
|
+
retry-after header differently.
|
|
9254
9265
|
default: Retry-After
|
|
9255
9266
|
formType:
|
|
9256
9267
|
type: string
|
|
@@ -9980,42 +9991,60 @@ components:
|
|
|
9980
9991
|
rateLimit:
|
|
9981
9992
|
type: object
|
|
9982
9993
|
description: |
|
|
9983
|
-
|
|
9984
|
-
|
|
9985
|
-
|
|
9986
|
-
|
|
9987
|
-
|
|
9988
|
-
|
|
9994
|
+
Rules for recognizing a throttled response. When any rule is set, every response
|
|
9995
|
+
through the connection is checked against the status code, the header rules and
|
|
9996
|
+
the body rule, and the first match marks the request rate-limited; the retry then
|
|
9997
|
+
waits for the header named by the parent `retryHeader` (`Retry-After` by default).
|
|
9998
|
+
A 429 is recognized with no rules at all; a 2xx response is recognized only through
|
|
9999
|
+
a matching `failHeaders` rule or a matching `failPath` + `failValues` pair, which is
|
|
10000
|
+
how APIs that throttle inside a 200 body (GraphQL, Shopify among them) are handled.
|
|
9989
10001
|
properties:
|
|
9990
10002
|
failStatusCode:
|
|
9991
10003
|
type: number
|
|
9992
10004
|
description: |
|
|
9993
|
-
|
|
9994
|
-
|
|
9995
|
-
|
|
10005
|
+
Status code that marks a response rate-limited in place of the standard 429.
|
|
10006
|
+
Set it only when the API throttles with another non-success code; a 2xx value
|
|
10007
|
+
does not make successful responses count as throttled on its own.
|
|
9996
10008
|
default: 429
|
|
9997
10009
|
failPath:
|
|
9998
10010
|
type: string
|
|
9999
10011
|
description: |
|
|
10000
|
-
JSON path or XPath to
|
|
10001
|
-
|
|
10012
|
+
JSON path or XPath to the body field that carries the API's throttle indicator,
|
|
10013
|
+
for APIs that answer 200 with the error inside the body. Point at the field
|
|
10014
|
+
itself (`errors.0.extensions.code`), not at the array or object around it, and
|
|
10015
|
+
pair it with `failValues`, which supplies the values that mean "throttled".
|
|
10002
10016
|
examples:
|
|
10003
|
-
- errors
|
|
10017
|
+
- errors.0.extensions.code
|
|
10018
|
+
x-celigo-ai-guidance:
|
|
10019
|
+
- |-
|
|
10020
|
+
Saves on its own (the probe shows a `failPath` with no `failValues` is accepted),
|
|
10021
|
+
and the documented contract recognizes a 200 as throttled only when `failValues`
|
|
10022
|
+
is set as well. For Shopify GraphQL the platform's own example is
|
|
10023
|
+
`errors.0.extensions.code` with `failValues: ["THROTTLED"]`.
|
|
10004
10024
|
failValues:
|
|
10005
10025
|
type: array
|
|
10006
10026
|
items:
|
|
10007
10027
|
type: string
|
|
10008
10028
|
description: |
|
|
10009
|
-
Values at failPath that
|
|
10029
|
+
Values at `failPath` that mean the request was throttled; a match on any of them
|
|
10030
|
+
marks the response rate-limited.
|
|
10010
10031
|
examples:
|
|
10011
|
-
- -
|
|
10012
|
-
-
|
|
10032
|
+
- - THROTTLED
|
|
10033
|
+
- MAX_COST_EXCEEDED
|
|
10034
|
+
x-celigo-ai-guidance:
|
|
10035
|
+
- |-
|
|
10036
|
+
Needs `failPath`: `failValues` without it fails the save with 422
|
|
10037
|
+
`dependent_field` ("The field: failValues should not be specified without the
|
|
10038
|
+
field: failPath for the Connection.").
|
|
10013
10039
|
failHeaders:
|
|
10014
10040
|
type: array
|
|
10015
10041
|
description: |
|
|
10016
|
-
Response-header rules for
|
|
10017
|
-
optional `value`. A rule with
|
|
10018
|
-
|
|
10042
|
+
Response-header rules for recognizing a throttled response, each a header `name`
|
|
10043
|
+
with an optional `value`. A rule with a `value` matches when the response header
|
|
10044
|
+
carries that value — the stored text is compared with the header as received; a
|
|
10045
|
+
rule with no `value` matches whenever the header is present at all, so a header
|
|
10046
|
+
the API sends on every response (a remaining-quota counter) would mark every
|
|
10047
|
+
response throttled — give such a header a value.
|
|
10019
10048
|
items:
|
|
10020
10049
|
type: object
|
|
10021
10050
|
required:
|
|
@@ -10026,18 +10055,32 @@ components:
|
|
|
10026
10055
|
description: Response header the rule checks.
|
|
10027
10056
|
value:
|
|
10028
10057
|
type: string
|
|
10029
|
-
description: Header value the rule
|
|
10058
|
+
description: Header value the rule compares with the response header; omit to match on the header's presence alone. Stored as sent.
|
|
10030
10059
|
examples:
|
|
10031
10060
|
- - name: X-RateLimit-Remaining
|
|
10032
10061
|
value: '0'
|
|
10062
|
+
x-celigo-ai-guidance:
|
|
10063
|
+
- |-
|
|
10064
|
+
A rule without a `name` fails the save with 422 `invalid_header_format`; a rule
|
|
10065
|
+
with a name and no value saves and matches on presence. The value is stored as
|
|
10066
|
+
sent and not validated at save time.
|
|
10033
10067
|
limit:
|
|
10034
10068
|
type: number
|
|
10035
10069
|
minimum: 1
|
|
10070
|
+
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').
|
|
10036
10071
|
description: |
|
|
10037
|
-
|
|
10038
|
-
|
|
10072
|
+
Minimum spacing between consecutive requests through the connection, in
|
|
10073
|
+
milliseconds, for APIs that cap request rate rather than concurrency. It only
|
|
10074
|
+
applies when the connection runs one request at a time.
|
|
10039
10075
|
examples:
|
|
10040
10076
|
- 1000
|
|
10077
|
+
x-celigo-ai-guidance:
|
|
10078
|
+
- |-
|
|
10079
|
+
Saves only when `concurrencyLevel` is 1 — and, with `autoRecoverRateLimitErrors`
|
|
10080
|
+
on, `targetConcurrencyLevel` is 1 as well; otherwise the save fails with 422
|
|
10081
|
+
`invalid_concurrency_level` ("The field "connection.http.concurrencyLevel"
|
|
10082
|
+
should be set to 1 when the field "connection.http.rateLimit.limit" is
|
|
10083
|
+
populated."). A numeric string is stored as a number.
|
|
10041
10084
|
headers:
|
|
10042
10085
|
type: array
|
|
10043
10086
|
description: |
|
|
@@ -16452,13 +16495,13 @@ components:
|
|
|
16452
16495
|
jsonPath:
|
|
16453
16496
|
type: string
|
|
16454
16497
|
description: |
|
|
16455
|
-
JSONPath
|
|
16456
|
-
data feeding this subrecord. Semantics depend
|
|
16498
|
+
JSONPath from the source record root that selects
|
|
16499
|
+
the data feeding this subrecord. Semantics depend
|
|
16457
16500
|
on placement:
|
|
16458
16501
|
* Line-level (on `lists[].fields[].`
|
|
16459
|
-
`subRecordMapping`) —
|
|
16460
|
-
|
|
16461
|
-
|
|
16502
|
+
`subRecordMapping`) — the array of lines the
|
|
16503
|
+
sublist iterates (`lineItems`); `$` only when
|
|
16504
|
+
each record is itself one line.
|
|
16462
16505
|
* Body-level (on `fields[].subRecordMapping`)
|
|
16463
16506
|
— a path into the source record root.
|
|
16464
16507
|
Defaults to `$`.
|
|
@@ -16650,9 +16693,10 @@ components:
|
|
|
16650
16693
|
type: boolean
|
|
16651
16694
|
description: |-
|
|
16652
16695
|
When true, this field is a key for matching the record's existing sublist lines: a
|
|
16653
|
-
mapped line updates the one existing line whose key fields hold the same values
|
|
16654
|
-
|
|
16655
|
-
|
|
16696
|
+
mapped line updates the one existing line whose key fields hold the same values —
|
|
16697
|
+
every key field must match, so several keys narrow the match. `lists` says which
|
|
16698
|
+
records match lines, the keys used when no field sets `isKey`, and what a line that
|
|
16699
|
+
matches no line, or several, does.
|
|
16656
16700
|
immutable:
|
|
16657
16701
|
type: boolean
|
|
16658
16702
|
description: When true, this field is only set on record creation, not on updates.
|
|
@@ -16731,13 +16775,19 @@ components:
|
|
|
16731
16775
|
jsonPath:
|
|
16732
16776
|
type: string
|
|
16733
16777
|
description: |
|
|
16734
|
-
|
|
16735
|
-
|
|
16736
|
-
subrecord
|
|
16737
|
-
|
|
16738
|
-
|
|
16739
|
-
|
|
16740
|
-
Defaults to `$`.
|
|
16778
|
+
Path from the source record root to the
|
|
16779
|
+
array of lines whose elements feed this
|
|
16780
|
+
subrecord — the same array the sublist
|
|
16781
|
+
iterates (`lineItems`, `items`); the n-th
|
|
16782
|
+
element populates the n-th sublist line.
|
|
16783
|
+
`$` only when each source record is itself
|
|
16784
|
+
one line. Defaults to `$`.
|
|
16785
|
+
x-celigo-ai-guidance:
|
|
16786
|
+
- |-
|
|
16787
|
+
`$` on a record whose lines sit under a field renders no subrecord for any
|
|
16788
|
+
line, and NetSuite rejects the first numbered line with `Please configure the
|
|
16789
|
+
inventory detail in line N of the item list`; name the line array
|
|
16790
|
+
(`lineItems`), never the current-line context.
|
|
16741
16791
|
mapping:
|
|
16742
16792
|
type: object
|
|
16743
16793
|
description: |
|
|
@@ -16848,6 +16898,11 @@ components:
|
|
|
16848
16898
|
with `MULTIPLE_LINES_WITH_SAME_KEYS` ("Multiple lines found with keys item=<value> ..."). A
|
|
16849
16899
|
line that matches none is added as a new line, which an item fulfillment's `item` sublist
|
|
16850
16900
|
refuses with `SSS_INVALID_SUBLIST_OPERATION`: its lines are its order's.
|
|
16901
|
+
|
|
16902
|
+
On a fulfillment created from an order, a kit's lot-, serial- or bin-managed components are
|
|
16903
|
+
lines of their own under the kit's line, each with its own `line` and `orderline` (the
|
|
16904
|
+
component's own order line) and `kitmemberof` holding the kit line's id; the inventory detail
|
|
16905
|
+
belongs on those component lines, and a kit line refuses it.
|
|
16851
16906
|
x-celigo-ai-guidance:
|
|
16852
16907
|
- |-
|
|
16853
16908
|
To make an update replace a sublist's lines, also map the body field
|
|
@@ -16862,6 +16917,24 @@ components:
|
|
|
16862
16917
|
field, or, on a fulfillment, the order line's id mapped to `orderline`. Keying on the item fails
|
|
16863
16918
|
with `MULTIPLE_LINES_WITH_SAME_KEYS` when an order holds the same item on two lines, and records
|
|
16864
16919
|
that already hold repeated lines fail the same way once a key is set.
|
|
16920
|
+
- |-
|
|
16921
|
+
A key field is read from the existing lines, never written, so a read-only field keys as well
|
|
16922
|
+
as a writable one. The mapper's "Items : Line ID" is `line` (the fulfillment's own line number,
|
|
16923
|
+
equal to the order line only on a fresh full transform) and "Items : Line Number" is `linenum`;
|
|
16924
|
+
`orderline` and `kitmemberof` are not in its picker — type `item[*].orderline` /
|
|
16925
|
+
`item[*].kitmemberof` as the destination.
|
|
16926
|
+
- |-
|
|
16927
|
+
Kit components on a fulfillment: the item is the only default key that reaches a component
|
|
16928
|
+
line, so a component two kit lines share fails with `MULTIPLE_LINES_WITH_SAME_KEYS`. Keying the
|
|
16929
|
+
component rows on the KIT's order line (`line` or `orderline`) selects the kit line instead and
|
|
16930
|
+
the save fails with `You cannot create an inventory detail for this item`. When the source
|
|
16931
|
+
carries the kit's order line on its component rows, keep the item as a key and add
|
|
16932
|
+
`item[*].kitmemberof` mapped from that line id as a second key, keep the kit rows in the list
|
|
16933
|
+
(their empty `kitmemberof` matches the kit line) with `item[*].celigo_ignore_current_line_invdetail_subrecord`
|
|
16934
|
+
true so no inventory detail is written on them, and build the inventory detail from each
|
|
16935
|
+
component row's own picks; component rows alone leave every kit line unfulfilled (`You must
|
|
16936
|
+
enter at least one line item for this transaction`). When the source can supply each
|
|
16937
|
+
component line's own order line id, key every row on `orderline` instead.
|
|
16865
16938
|
x-celigo-agent:
|
|
16866
16939
|
- mapping
|
|
16867
16940
|
lookups:
|
|
@@ -20886,14 +20959,33 @@ components:
|
|
|
20886
20959
|
x-enumDescriptions:
|
|
20887
20960
|
pgp: Encrypt the file with PGP before it is written.
|
|
20888
20961
|
description: |-
|
|
20889
|
-
Encrypts the
|
|
20890
|
-
|
|
20891
|
-
|
|
20892
|
-
|
|
20893
|
-
|
|
20894
|
-
|
|
20895
|
-
|
|
20896
|
-
|
|
20962
|
+
Encrypts the file before it reaches the destination — a file generated from records
|
|
20963
|
+
or, on a `blob: true` transfer, the existing file being moved; omit it for an
|
|
20964
|
+
unencrypted file. `pgp` requires `pgp.symmetricKeyAlgorithm` and a connection holding
|
|
20965
|
+
the recipient's public key (`pgp.publicKey`). Not observed in a run here; per the file
|
|
20966
|
+
adaptor's code (IO-213945, the `blob: true` transfer path): with no `compressionFormat`,
|
|
20967
|
+
a file over 200 MB fails the record before encryption with `pgp_file_size_exceeded`
|
|
20968
|
+
("The file size exceeds the maximum limit of 200 MB supported for PGP encryption." —
|
|
20969
|
+
the adaptor's `errorStore.js` text); with `compressionFormat` set the adaptor skips that
|
|
20970
|
+
pre-check (the compressed size is not known up front) and the encryption service
|
|
20971
|
+
enforces its own 200 MB limit on the compressed file (`S3_FILE_SIZE_EXCEEDED`); a key
|
|
20972
|
+
the platform cannot use fails with the PGP service's own code (`PGP_PUBLICKEY_INVALID` /
|
|
20973
|
+
`PGP_PRIVATEKEY_INVALID` — "<operation> failed because the <key> is invalid."), and
|
|
20974
|
+
`encryption_error` ("error in encrypting the file") only when the service returns no
|
|
20975
|
+
code; the file is never written in clear and a transfer's encryption failure is not
|
|
20976
|
+
retried automatically. A file generated from records meets the same encryption-service
|
|
20977
|
+
limit with `S3_FILE_SIZE_EXCEEDED`.
|
|
20978
|
+
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.'
|
|
20979
|
+
x-celigo-ai-guidance:
|
|
20980
|
+
- |-
|
|
20981
|
+
Without `pgp.symmetricKeyAlgorithm` the save fails with 422 `missing_required_field` on
|
|
20982
|
+
`file.pgp.symmetricKeyAlgorithm`; on a connection without `pgp.publicKey` it fails with
|
|
20983
|
+
422 `missing_required_field` on `file.encrypt` ("pgp publicKey is required when encrypt
|
|
20984
|
+
is selected to perform file encryption."), and that check runs first, for any value.
|
|
20985
|
+
- |-
|
|
20986
|
+
`true` and `false` are rejected with 422 `enum` — the field is the string `pgp`, never a
|
|
20987
|
+
boolean. Blob transfers follow the same save rules and return `encrypt` and `pgp` on
|
|
20988
|
+
reads even without `file.type`.
|
|
20897
20989
|
csv:
|
|
20898
20990
|
type: object
|
|
20899
20991
|
description: CSV-specific configuration. Only used when `type` is `"csv"`.
|
|
@@ -21165,10 +21257,16 @@ components:
|
|
|
21165
21257
|
sha384: SHA-384 signing hash.
|
|
21166
21258
|
sha512: SHA-512 signing hash.
|
|
21167
21259
|
sha224: SHA-224 signing hash.
|
|
21168
|
-
description: Hash algorithm used when signing the encrypted file; set only when the recipient requires a
|
|
21260
|
+
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`.
|
|
21169
21261
|
examples:
|
|
21170
21262
|
- sha256
|
|
21171
21263
|
- sha512
|
|
21264
|
+
x-celigo-ai-guidance:
|
|
21265
|
+
- |-
|
|
21266
|
+
On a connection without `pgp.privateKey` the save fails with 422
|
|
21267
|
+
`missing_required_field` on `file.pgp.hashAlgorithm` ("pgp privateKey is required
|
|
21268
|
+
when hashAlgorithm is selected to perform file signature."); leave it unset unless
|
|
21269
|
+
the connection holds the private key.
|
|
21172
21270
|
skipRename:
|
|
21173
21271
|
type: boolean
|
|
21174
21272
|
description: |-
|
|
@@ -27541,6 +27639,9 @@ components:
|
|
|
27541
27639
|
- exported_to_netsuite
|
|
27542
27640
|
Webhook:
|
|
27543
27641
|
type: object
|
|
27642
|
+
required:
|
|
27643
|
+
- verify
|
|
27644
|
+
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.'
|
|
27544
27645
|
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.
|
|
27545
27646
|
x-celigo-ai-guidance:
|
|
27546
27647
|
- Configuration object for real-time event listeners that receive data via incoming HTTP requests.
|
|
@@ -27615,7 +27716,7 @@ components:
|
|
|
27615
27716
|
properties:
|
|
27616
27717
|
provider:
|
|
27617
27718
|
type: string
|
|
27618
|
-
description: Source application sending the webhook,
|
|
27719
|
+
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).'
|
|
27619
27720
|
x-celigo-ai-guidance:
|
|
27620
27721
|
- |-
|
|
27621
27722
|
Specifies the source application sending webhook data,
|
|
@@ -27626,10 +27727,18 @@ components:
|
|
|
27626
27727
|
This field determines how the webhook handles incoming requests:
|
|
27627
27728
|
|
|
27628
27729
|
- OPTIONAL: Defaults to "custom" if not specified
|
|
27629
|
-
-
|
|
27630
|
-
|
|
27631
|
-
|
|
27632
|
-
|
|
27730
|
+
- A named provider labels the listener, picks its form view (`formType`
|
|
27731
|
+
defaults to `simple`) and makes a credential required — probed for
|
|
27732
|
+
`slack`, `shopify` and `github`: without `key` (and no `token`) each
|
|
27733
|
+
fails with 422 missing_required_field on `webhook.key`, "key is required
|
|
27734
|
+
for slack verification" / "key is required for shopify verification" /
|
|
27735
|
+
"key is required for github verification"; a `slack` listener posted
|
|
27736
|
+
with `token` and no `key` saved. It does NOT make the API fill in
|
|
27737
|
+
`verify` and its companions — a document sent to the API stores exactly
|
|
27738
|
+
what it carries, and the listener form fills them from the connector
|
|
27739
|
+
definition before saving. Send them when the stored document should
|
|
27740
|
+
match a form-saved one (Slack: `verify: hmac`, `algorithm: sha256`,
|
|
27741
|
+
`encoding: base64`, `header: X-Slack-Signature`).
|
|
27633
27742
|
- |-
|
|
27634
27743
|
## IMPLEMENTATION GUIDANCE
|
|
27635
27744
|
|
|
@@ -27639,9 +27748,10 @@ components:
|
|
|
27639
27748
|
```
|
|
27640
27749
|
"provider": "shopify"
|
|
27641
27750
|
```
|
|
27642
|
-
-
|
|
27643
|
-
-
|
|
27644
|
-
|
|
27751
|
+
- Labels the listener as Shopify's and opens it in the Simple form view
|
|
27752
|
+
- Requires `key` (422 "key is required for shopify verification"); saves
|
|
27753
|
+
without `verify` and its companions, which the form would have filled in —
|
|
27754
|
+
send them for a document that matches a form-saved one
|
|
27645
27755
|
|
|
27646
27756
|
### Custom configuration
|
|
27647
27757
|
|
|
@@ -27657,7 +27767,7 @@ components:
|
|
|
27657
27767
|
|
|
27658
27768
|
Choose a specific provider when:
|
|
27659
27769
|
- The source system is explicitly listed in the enum values
|
|
27660
|
-
- You want
|
|
27770
|
+
- You want the form's pre-filled verification settings for that platform
|
|
27661
27771
|
- The integration must follow platform-specific practices
|
|
27662
27772
|
|
|
27663
27773
|
Choose "custom" when:
|
|
@@ -27704,7 +27814,7 @@ components:
|
|
|
27704
27814
|
shopify: Shopify store event webhooks with HMAC-SHA256 verification.
|
|
27705
27815
|
travis: Travis CI build event webhooks (travis-ci.com).
|
|
27706
27816
|
travis-org: Travis CI build event webhooks (travis-ci.org).
|
|
27707
|
-
slack: Slack workspace event webhooks with token
|
|
27817
|
+
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.
|
|
27708
27818
|
dropbox: Dropbox file change notification webhooks.
|
|
27709
27819
|
onfleet: Onfleet delivery management event webhooks.
|
|
27710
27820
|
helpscout: Help Scout customer support event webhooks.
|
|
@@ -27746,13 +27856,19 @@ components:
|
|
|
27746
27856
|
Which webhook export form the UI uses to edit this listener. A value sent on create or
|
|
27747
27857
|
update wins (case-insensitive — `Simple` is stored as `simple`); a PUT that omits it
|
|
27748
27858
|
keeps the stored value, and a new export without one gets the default for its
|
|
27749
|
-
`provider`. Every webhook export GET carries it.
|
|
27750
|
-
|
|
27751
|
-
|
|
27859
|
+
`provider`. Every webhook export GET carries it. The view changes nothing at run time:
|
|
27860
|
+
the listener URL, the verification and the flows are the same in both.
|
|
27861
|
+
x-celigo-ai-guidance:
|
|
27862
|
+
- |-
|
|
27863
|
+
Omit it on create — the API stamps the provider's default (`simple` for a named
|
|
27864
|
+
provider, `webhook` for `custom`), with or without `_httpConnectorId`, and keeps a
|
|
27865
|
+
value the user set by hand. The legacy UI values `http` / `assistant` fail with 422
|
|
27866
|
+
`enum`, and the field is not PATCH-whitelisted (422 "not a whitelisted property"):
|
|
27867
|
+
change it through a full save.
|
|
27752
27868
|
verify:
|
|
27753
27869
|
type: string
|
|
27754
27870
|
x-celigo-ui-override: Required by the webhook export form (verify is required:true). Encoded to mirror the form so builders produce connectable configurations.
|
|
27755
|
-
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` (
|
|
27871
|
+
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.'
|
|
27756
27872
|
x-celigo-ai-guidance:
|
|
27757
27873
|
- |-
|
|
27758
27874
|
## FIELD BEHAVIOR
|
|
@@ -28196,6 +28312,32 @@ components:
|
|
|
28196
28312
|
format: objectId
|
|
28197
28313
|
x-celigo-refModel: httpconnectors
|
|
28198
28314
|
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.
|
|
28315
|
+
x-celigo-ai-guidance:
|
|
28316
|
+
- |-
|
|
28317
|
+
The save stores the document as sent and copies nothing from the connector: a
|
|
28318
|
+
listener posted with only `provider`, `key` and (optionally) `_httpConnectorId`
|
|
28319
|
+
saves with no `verify`, `algorithm`, `encoding` or `header` (probed for `slack`
|
|
28320
|
+
and `shopify`) — the API requires a credential for the provider and nothing else:
|
|
28321
|
+
without `key` (and no `token`) `slack`, `shopify` and `github` each fail with 422
|
|
28322
|
+
missing_required_field on `webhook.key` ("key is required for slack verification" /
|
|
28323
|
+
"key is required for shopify verification" / "key is required for github
|
|
28324
|
+
verification"), and a `slack` listener posted with `token` and no `key` saves. The
|
|
28325
|
+
listener form fills the verification fields from the connector's
|
|
28326
|
+
`supportedBy.export.preConfiguredFields` on every save (for Slack `verify: hmac`,
|
|
28327
|
+
`algorithm: sha256`, `encoding: base64`, `header: X-Slack-Signature`); an API
|
|
28328
|
+
caller that wants the stored document to match a form-saved one sends them itself.
|
|
28329
|
+
_httpConnectorApiId:
|
|
28330
|
+
type: string
|
|
28331
|
+
format: objectId
|
|
28332
|
+
x-celigo-refModel: httpconnectorapis
|
|
28333
|
+
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.
|
|
28334
|
+
examples:
|
|
28335
|
+
- 673702e2f367e6469401dcf6
|
|
28336
|
+
x-celigo-ai-guidance:
|
|
28337
|
+
- |-
|
|
28338
|
+
Stored and echoed as sent on create and GET; a value that is not an ObjectId fails
|
|
28339
|
+
the save with 422 `invalid_field` ("Invalid value … for field
|
|
28340
|
+
'webhook._httpConnectorApiId'. Reason: BSONError.").
|
|
28199
28341
|
requestMediaType:
|
|
28200
28342
|
type: string
|
|
28201
28343
|
enum:
|
package/package.json
CHANGED
package/schemas.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"provenance": {
|
|
3
3
|
"repo": "celigo/integrator-api-specs",
|
|
4
|
-
"iasCommit": "
|
|
5
|
-
"generatedAt": "2026-10-
|
|
4
|
+
"iasCommit": "055366b0",
|
|
5
|
+
"generatedAt": "2026-10-30"
|
|
6
6
|
},
|
|
7
7
|
"roots": {
|
|
8
8
|
"aiagent": 128,
|
|
@@ -4201,6 +4201,7 @@
|
|
|
4201
4201
|
"object"
|
|
4202
4202
|
],
|
|
4203
4203
|
"p": {
|
|
4204
|
+
"_httpConnectorApiId": 0,
|
|
4204
4205
|
"_httpConnectorId": 0,
|
|
4205
4206
|
"algorithm": 363,
|
|
4206
4207
|
"challengeResponseHeaders": 273,
|
|
@@ -4229,7 +4230,10 @@
|
|
|
4229
4230
|
"tokenQueryParamName": 0,
|
|
4230
4231
|
"username": 0,
|
|
4231
4232
|
"verify": 362
|
|
4232
|
-
}
|
|
4233
|
+
},
|
|
4234
|
+
"r": [
|
|
4235
|
+
"verify"
|
|
4236
|
+
]
|
|
4233
4237
|
},
|
|
4234
4238
|
{
|
|
4235
4239
|
"t": [
|