@apteva/integrations 0.3.5 → 0.3.6
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/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +28 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/webhook-registrar.d.ts +78 -0
- package/dist/webhook-registrar.d.ts.map +1 -0
- package/dist/webhook-registrar.js +280 -0
- package/dist/webhook-registrar.js.map +1 -0
- package/package.json +1 -1
- package/src/apps/brevo.json +15 -1
- package/src/apps/chargebee.json +4 -1
- package/src/apps/convertkit.json +4 -1
- package/src/apps/gigs-marketplace.json +4 -1
- package/src/apps/github.json +22 -5
- package/src/apps/gohighlevel.json +4 -1
- package/src/apps/helpscout.json +4 -1
- package/src/apps/hubspot.json +4 -1
- package/src/apps/intercom.json +4 -1
- package/src/apps/jira.json +14 -1
- package/src/apps/late.json +4 -1
- package/src/apps/linear.json +4 -1
- package/src/apps/mailchimp.json +25 -1
- package/src/apps/notion.json +6 -3
- package/src/apps/omnikit-cms.json +18 -1
- package/src/apps/omnikit-messaging.json +18 -1
- package/src/apps/sendgrid-email.json +19 -1
- package/src/apps/shopify.json +16 -1
- package/src/apps/slack.json +4 -1
- package/src/apps/socialcast.json +11 -8
- package/src/apps/stripe-payments.json +13 -1
- package/src/apps/stripe.json +13 -1
- package/src/apps/twilio.json +12 -9
- package/src/apps/typeform.json +4 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
export type { AppTemplate, AppAuthConfig, AuthType, OAuthConfig, CredentialField, AppToolTemplate, AppWebhookConfig, AppWebhookEvent, Connection, ConnectionCredentials, LocalTriggerConfig, GeneratedMcpServer, GeneratedMcpTool, IntegrationsStorage, } from "./types.js";
|
|
1
|
+
export type { AppTemplate, AppAuthConfig, AuthType, OAuthConfig, CredentialField, AppToolTemplate, AppWebhookConfig, AppWebhookEvent, WebhookRegistrationConfig, Connection, ConnectionCredentials, LocalTriggerConfig, GeneratedMcpServer, GeneratedMcpTool, IntegrationsStorage, } from "./types.js";
|
|
2
2
|
export { loadAppTemplates, getAppTemplate, listAppSlugs, listApps, resetAppCache, } from "./apps/index.js";
|
|
3
3
|
export { executeTool } from "./http-executor.js";
|
|
4
4
|
export type { ExecuteToolOptions, ExecuteToolResult } from "./http-executor.js";
|
|
5
5
|
export { getAuthorizationUrl, exchangeCode, refreshAccessToken, tokensToCredentials, isTokenExpired, } from "./oauth.js";
|
|
6
6
|
export type { OAuthStartOptions, OAuthCallbackOptions, OAuthRefreshOptions, OAuthTokenResult, } from "./oauth.js";
|
|
7
7
|
export { generateMcpServer } from "./mcp-generator.js";
|
|
8
|
+
export { registerWebhook, unregisterWebhook, listWebhooks, canAutoRegister, getManualSetupInstructions, } from "./webhook-registrar.js";
|
|
9
|
+
export type { RegisterWebhookOptions, RegisterWebhookResult, UnregisterWebhookOptions, ListWebhooksOptions, ListWebhooksResult, } from "./webhook-registrar.js";
|
|
8
10
|
export { LocalIntegrationProvider } from "./providers/local.js";
|
|
9
11
|
export type { LocalProviderConfig } from "./providers/local.js";
|
|
10
12
|
export { LocalTriggerProvider } from "./triggers/local.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,WAAW,EACX,aAAa,EACb,QAAQ,EACR,WAAW,EACX,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,QAAQ,EACR,aAAa,GACd,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAGhF,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,GACf,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAGvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChE,YAAY,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAGhE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,WAAW,EACX,aAAa,EACb,QAAQ,EACR,WAAW,EACX,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,yBAAyB,EACzB,UAAU,EACV,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,QAAQ,EACR,aAAa,GACd,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAGhF,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,GACf,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAGvD,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,0BAA0B,GAC3B,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACV,sBAAsB,EACtB,qBAAqB,EACrB,wBAAwB,EACxB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChE,YAAY,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAGhE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -6,6 +6,8 @@ export { executeTool } from "./http-executor.js";
|
|
|
6
6
|
export { getAuthorizationUrl, exchangeCode, refreshAccessToken, tokensToCredentials, isTokenExpired, } from "./oauth.js";
|
|
7
7
|
// ─── MCP Server Generator ───
|
|
8
8
|
export { generateMcpServer } from "./mcp-generator.js";
|
|
9
|
+
// ─── Webhook Registrar ───
|
|
10
|
+
export { registerWebhook, unregisterWebhook, listWebhooks, canAutoRegister, getManualSetupInstructions, } from "./webhook-registrar.js";
|
|
9
11
|
// ─── Local Integration Provider ───
|
|
10
12
|
export { LocalIntegrationProvider } from "./providers/local.js";
|
|
11
13
|
// ─── Local Trigger Provider ───
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAmBA,wBAAwB;AACxB,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,QAAQ,EACR,aAAa,GACd,MAAM,iBAAiB,CAAC;AAEzB,6BAA6B;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD,uBAAuB;AACvB,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,GACf,MAAM,YAAY,CAAC;AAQpB,+BAA+B;AAC/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,4BAA4B;AAC5B,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,0BAA0B,GAC3B,MAAM,wBAAwB,CAAC;AAShC,qCAAqC;AACrC,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAGhE,iCAAiC;AACjC,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -12,6 +12,34 @@ export interface AppTemplate {
|
|
|
12
12
|
export interface AppWebhookConfig {
|
|
13
13
|
signature_header: string;
|
|
14
14
|
events: AppWebhookEvent[];
|
|
15
|
+
registration?: WebhookRegistrationConfig;
|
|
16
|
+
}
|
|
17
|
+
export interface WebhookRegistrationConfig {
|
|
18
|
+
/** HTTP method for registering webhook */
|
|
19
|
+
method: "POST" | "PUT" | "PATCH";
|
|
20
|
+
/** API path for registering webhook (relative to base_url) */
|
|
21
|
+
path: string;
|
|
22
|
+
/** Field name in request body for the callback URL */
|
|
23
|
+
url_field: string;
|
|
24
|
+
/** Field name for events list (if API supports filtering by event) */
|
|
25
|
+
events_field?: string;
|
|
26
|
+
/** Field name for the webhook secret */
|
|
27
|
+
secret_field?: string;
|
|
28
|
+
/** Static fields always included in registration request */
|
|
29
|
+
extra?: Record<string, unknown>;
|
|
30
|
+
/** Content-Type for registration request (default: "application/json") */
|
|
31
|
+
content_type?: string;
|
|
32
|
+
/** Where to find the webhook ID in the response (dot-notation, e.g. "id" or "result.id") */
|
|
33
|
+
id_field?: string;
|
|
34
|
+
/** HTTP method + path to delete a webhook. {id} placeholder for webhook ID */
|
|
35
|
+
delete_path?: string;
|
|
36
|
+
delete_method?: "DELETE" | "POST";
|
|
37
|
+
/** HTTP method + path to list existing webhooks */
|
|
38
|
+
list_path?: string;
|
|
39
|
+
/** Where to find webhook array in list response (dot-notation) */
|
|
40
|
+
list_field?: string;
|
|
41
|
+
/** Notes for services that can't auto-register (UI-only setup) */
|
|
42
|
+
manual_setup?: string;
|
|
15
43
|
}
|
|
16
44
|
export interface AppWebhookEvent {
|
|
17
45
|
name: string;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,IAAI,EAAE,aAAa,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC7B;AAED,MAAM,WAAW,gBAAgB;IAC/B,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,eAAe,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Webhook Registrar — automatically registers/unregisters webhook endpoints
|
|
3
|
+
* with external services using their APIs.
|
|
4
|
+
*
|
|
5
|
+
* Uses the `webhooks.registration` config from app templates to know
|
|
6
|
+
* which API to call, what fields to send, and how to parse the response.
|
|
7
|
+
*/
|
|
8
|
+
import type { AppTemplate, ConnectionCredentials } from "./types.js";
|
|
9
|
+
export interface RegisterWebhookOptions {
|
|
10
|
+
/** App template with webhook registration config */
|
|
11
|
+
app: AppTemplate;
|
|
12
|
+
/** Decrypted credentials for the connection */
|
|
13
|
+
credentials: ConnectionCredentials;
|
|
14
|
+
/** The callback URL to register (e.g. https://instance/api/webhooks/local) */
|
|
15
|
+
callbackUrl: string;
|
|
16
|
+
/** Event names to subscribe to (from app.webhooks.events[].name) */
|
|
17
|
+
events?: string[];
|
|
18
|
+
/** HMAC secret to send to the service for signing payloads */
|
|
19
|
+
secret?: string;
|
|
20
|
+
/** Request timeout in ms (default 15000) */
|
|
21
|
+
timeout?: number;
|
|
22
|
+
}
|
|
23
|
+
export interface RegisterWebhookResult {
|
|
24
|
+
success: boolean;
|
|
25
|
+
/** Webhook ID returned by the service (for future deletion) */
|
|
26
|
+
webhookId?: string;
|
|
27
|
+
/** Raw response data */
|
|
28
|
+
data?: unknown;
|
|
29
|
+
/** Error message if failed */
|
|
30
|
+
error?: string;
|
|
31
|
+
/** Whether this service requires manual setup instead */
|
|
32
|
+
manualSetup?: string;
|
|
33
|
+
}
|
|
34
|
+
export interface UnregisterWebhookOptions {
|
|
35
|
+
app: AppTemplate;
|
|
36
|
+
credentials: ConnectionCredentials;
|
|
37
|
+
webhookId: string;
|
|
38
|
+
timeout?: number;
|
|
39
|
+
}
|
|
40
|
+
export interface ListWebhooksOptions {
|
|
41
|
+
app: AppTemplate;
|
|
42
|
+
credentials: ConnectionCredentials;
|
|
43
|
+
timeout?: number;
|
|
44
|
+
}
|
|
45
|
+
export interface ListWebhooksResult {
|
|
46
|
+
success: boolean;
|
|
47
|
+
webhooks?: Array<{
|
|
48
|
+
id: string;
|
|
49
|
+
url?: string;
|
|
50
|
+
events?: string[];
|
|
51
|
+
active?: boolean;
|
|
52
|
+
}>;
|
|
53
|
+
error?: string;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Check if an app supports automatic webhook registration.
|
|
57
|
+
*/
|
|
58
|
+
export declare function canAutoRegister(app: AppTemplate): boolean;
|
|
59
|
+
/**
|
|
60
|
+
* Get manual setup instructions if auto-registration isn't supported.
|
|
61
|
+
*/
|
|
62
|
+
export declare function getManualSetupInstructions(app: AppTemplate): string | null;
|
|
63
|
+
/**
|
|
64
|
+
* Register a webhook with an external service.
|
|
65
|
+
*/
|
|
66
|
+
export declare function registerWebhook(opts: RegisterWebhookOptions): Promise<RegisterWebhookResult>;
|
|
67
|
+
/**
|
|
68
|
+
* Unregister (delete) a webhook from an external service.
|
|
69
|
+
*/
|
|
70
|
+
export declare function unregisterWebhook(opts: UnregisterWebhookOptions): Promise<{
|
|
71
|
+
success: boolean;
|
|
72
|
+
error?: string;
|
|
73
|
+
}>;
|
|
74
|
+
/**
|
|
75
|
+
* List existing webhooks registered with an external service.
|
|
76
|
+
*/
|
|
77
|
+
export declare function listWebhooks(opts: ListWebhooksOptions): Promise<ListWebhooksResult>;
|
|
78
|
+
//# sourceMappingURL=webhook-registrar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhook-registrar.d.ts","sourceRoot":"","sources":["../src/webhook-registrar.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,qBAAqB,EAEtB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,sBAAsB;IACrC,oDAAoD;IACpD,GAAG,EAAE,WAAW,CAAC;IACjB,+CAA+C;IAC/C,WAAW,EAAE,qBAAqB,CAAC;IACnC,8EAA8E;IAC9E,WAAW,EAAE,MAAM,CAAC;IACpB,oEAAoE;IACpE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,8DAA8D;IAC9D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4CAA4C;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wBAAwB;IACxB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,wBAAwB;IACvC,GAAG,EAAE,WAAW,CAAC;IACjB,WAAW,EAAE,qBAAqB,CAAC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,WAAW,CAAC;IACjB,WAAW,EAAE,qBAAqB,CAAC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACpF,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAEzD;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI,CAE1E;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,sBAAsB,GAC3B,OAAO,CAAC,qBAAqB,CAAC,CAmFhC;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,wBAAwB,GAC7B,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CA+B/C;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,mBAAmB,GACxB,OAAO,CAAC,kBAAkB,CAAC,CAgD7B"}
|
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Webhook Registrar — automatically registers/unregisters webhook endpoints
|
|
3
|
+
* with external services using their APIs.
|
|
4
|
+
*
|
|
5
|
+
* Uses the `webhooks.registration` config from app templates to know
|
|
6
|
+
* which API to call, what fields to send, and how to parse the response.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Check if an app supports automatic webhook registration.
|
|
10
|
+
*/
|
|
11
|
+
export function canAutoRegister(app) {
|
|
12
|
+
return !!(app.webhooks?.registration && !app.webhooks.registration.manual_setup);
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Get manual setup instructions if auto-registration isn't supported.
|
|
16
|
+
*/
|
|
17
|
+
export function getManualSetupInstructions(app) {
|
|
18
|
+
return app.webhooks?.registration?.manual_setup || null;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Register a webhook with an external service.
|
|
22
|
+
*/
|
|
23
|
+
export async function registerWebhook(opts) {
|
|
24
|
+
const { app, credentials, callbackUrl, events, secret, timeout = 15000 } = opts;
|
|
25
|
+
const reg = app.webhooks?.registration;
|
|
26
|
+
if (!reg) {
|
|
27
|
+
return { success: false, error: "No webhook registration config for this app" };
|
|
28
|
+
}
|
|
29
|
+
if (reg.manual_setup) {
|
|
30
|
+
return { success: false, manualSetup: reg.manual_setup };
|
|
31
|
+
}
|
|
32
|
+
// Build URL
|
|
33
|
+
const url = buildUrl(app.base_url, reg.path, credentials);
|
|
34
|
+
// Build headers
|
|
35
|
+
const headers = buildAuthHeaders(app, credentials);
|
|
36
|
+
const contentType = reg.content_type || "application/json";
|
|
37
|
+
headers["Content-Type"] = contentType;
|
|
38
|
+
// Build request body — supports nested dot-notation fields like "config.url" or "webhook.address"
|
|
39
|
+
const body = {};
|
|
40
|
+
// Static extra fields first (so specific fields override)
|
|
41
|
+
if (reg.extra) {
|
|
42
|
+
deepMerge(body, reg.extra);
|
|
43
|
+
}
|
|
44
|
+
// Callback URL
|
|
45
|
+
setNestedField(body, reg.url_field, callbackUrl);
|
|
46
|
+
// Events
|
|
47
|
+
if (reg.events_field && events && events.length > 0) {
|
|
48
|
+
setNestedField(body, reg.events_field, events);
|
|
49
|
+
}
|
|
50
|
+
// Secret
|
|
51
|
+
if (reg.secret_field && secret) {
|
|
52
|
+
setNestedField(body, reg.secret_field, secret);
|
|
53
|
+
}
|
|
54
|
+
try {
|
|
55
|
+
const response = await fetch(url, {
|
|
56
|
+
method: reg.method,
|
|
57
|
+
headers,
|
|
58
|
+
body: contentType.includes("x-www-form-urlencoded")
|
|
59
|
+
? buildFormBody(flattenForForm(body))
|
|
60
|
+
: JSON.stringify(body),
|
|
61
|
+
signal: AbortSignal.timeout(timeout),
|
|
62
|
+
});
|
|
63
|
+
let data;
|
|
64
|
+
const ct = response.headers.get("content-type") || "";
|
|
65
|
+
if (ct.includes("application/json")) {
|
|
66
|
+
data = await response.json();
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
data = await response.text();
|
|
70
|
+
}
|
|
71
|
+
if (!response.ok) {
|
|
72
|
+
return {
|
|
73
|
+
success: false,
|
|
74
|
+
error: `HTTP ${response.status}: ${typeof data === "string" ? data : JSON.stringify(data)}`,
|
|
75
|
+
data,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
// Extract webhook ID from response
|
|
79
|
+
const webhookId = reg.id_field && data && typeof data === "object"
|
|
80
|
+
? extractPath(data, reg.id_field)
|
|
81
|
+
: undefined;
|
|
82
|
+
return {
|
|
83
|
+
success: true,
|
|
84
|
+
webhookId: webhookId ? String(webhookId) : undefined,
|
|
85
|
+
data,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
return {
|
|
90
|
+
success: false,
|
|
91
|
+
error: error instanceof Error ? error.message : String(error),
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Unregister (delete) a webhook from an external service.
|
|
97
|
+
*/
|
|
98
|
+
export async function unregisterWebhook(opts) {
|
|
99
|
+
const { app, credentials, webhookId, timeout = 15000 } = opts;
|
|
100
|
+
const reg = app.webhooks?.registration;
|
|
101
|
+
if (!reg?.delete_path) {
|
|
102
|
+
return { success: false, error: "No webhook delete config for this app" };
|
|
103
|
+
}
|
|
104
|
+
const path = reg.delete_path.replace("{id}", encodeURIComponent(webhookId));
|
|
105
|
+
const url = buildUrl(app.base_url, path, credentials);
|
|
106
|
+
const headers = buildAuthHeaders(app, credentials);
|
|
107
|
+
try {
|
|
108
|
+
const response = await fetch(url, {
|
|
109
|
+
method: reg.delete_method || "DELETE",
|
|
110
|
+
headers,
|
|
111
|
+
signal: AbortSignal.timeout(timeout),
|
|
112
|
+
});
|
|
113
|
+
if (!response.ok) {
|
|
114
|
+
const text = await response.text();
|
|
115
|
+
return { success: false, error: `HTTP ${response.status}: ${text}` };
|
|
116
|
+
}
|
|
117
|
+
return { success: true };
|
|
118
|
+
}
|
|
119
|
+
catch (error) {
|
|
120
|
+
return {
|
|
121
|
+
success: false,
|
|
122
|
+
error: error instanceof Error ? error.message : String(error),
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* List existing webhooks registered with an external service.
|
|
128
|
+
*/
|
|
129
|
+
export async function listWebhooks(opts) {
|
|
130
|
+
const { app, credentials, timeout = 15000 } = opts;
|
|
131
|
+
const reg = app.webhooks?.registration;
|
|
132
|
+
if (!reg?.list_path) {
|
|
133
|
+
return { success: false, error: "No webhook list config for this app" };
|
|
134
|
+
}
|
|
135
|
+
const url = buildUrl(app.base_url, reg.list_path, credentials);
|
|
136
|
+
const headers = buildAuthHeaders(app, credentials);
|
|
137
|
+
try {
|
|
138
|
+
const response = await fetch(url, {
|
|
139
|
+
method: "GET",
|
|
140
|
+
headers,
|
|
141
|
+
signal: AbortSignal.timeout(timeout),
|
|
142
|
+
});
|
|
143
|
+
if (!response.ok) {
|
|
144
|
+
const text = await response.text();
|
|
145
|
+
return { success: false, error: `HTTP ${response.status}: ${text}` };
|
|
146
|
+
}
|
|
147
|
+
const data = await response.json();
|
|
148
|
+
// Extract webhooks array from response
|
|
149
|
+
let webhooksRaw = [];
|
|
150
|
+
if (reg.list_field) {
|
|
151
|
+
const extracted = extractPath(data, reg.list_field);
|
|
152
|
+
if (Array.isArray(extracted))
|
|
153
|
+
webhooksRaw = extracted;
|
|
154
|
+
}
|
|
155
|
+
else if (Array.isArray(data)) {
|
|
156
|
+
webhooksRaw = data;
|
|
157
|
+
}
|
|
158
|
+
const webhooks = webhooksRaw.map((w) => ({
|
|
159
|
+
id: String(w.id || w.webhook_id || ""),
|
|
160
|
+
url: w.url || w.address || w.endpoint || w.callback_url || undefined,
|
|
161
|
+
events: w.events || w.enabled_events || w.topics || undefined,
|
|
162
|
+
active: w.active !== undefined ? !!w.active : (w.status === "active" || true),
|
|
163
|
+
}));
|
|
164
|
+
return { success: true, webhooks };
|
|
165
|
+
}
|
|
166
|
+
catch (error) {
|
|
167
|
+
return {
|
|
168
|
+
success: false,
|
|
169
|
+
error: error instanceof Error ? error.message : String(error),
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
// ─── Helpers ───
|
|
174
|
+
function buildUrl(baseUrl, path, credentials) {
|
|
175
|
+
// Replace {param} placeholders in base_url and path with credential fields
|
|
176
|
+
let resolved = `${baseUrl.replace(/\/$/, "")}${path}`;
|
|
177
|
+
resolved = resolved.replace(/\{(\w+)\}/g, (_match, key) => {
|
|
178
|
+
return credentials.fields?.[key] || "";
|
|
179
|
+
});
|
|
180
|
+
return resolved;
|
|
181
|
+
}
|
|
182
|
+
function buildAuthHeaders(app, credentials) {
|
|
183
|
+
const headers = {};
|
|
184
|
+
if (app.auth.headers) {
|
|
185
|
+
for (const [key, template] of Object.entries(app.auth.headers)) {
|
|
186
|
+
headers[key] = resolveTemplate(template, credentials);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
return headers;
|
|
190
|
+
}
|
|
191
|
+
function resolveTemplate(template, credentials) {
|
|
192
|
+
return template.replace(/\{\{(\w+)\}\}/g, (_match, key) => {
|
|
193
|
+
switch (key) {
|
|
194
|
+
case "token":
|
|
195
|
+
return credentials.access_token || credentials.bearer_token || credentials.api_key || "";
|
|
196
|
+
case "api_key":
|
|
197
|
+
return credentials.api_key || "";
|
|
198
|
+
case "username":
|
|
199
|
+
return credentials.username || "";
|
|
200
|
+
case "password":
|
|
201
|
+
return credentials.password || "";
|
|
202
|
+
default:
|
|
203
|
+
return credentials.fields?.[key] || "";
|
|
204
|
+
}
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
function extractPath(data, jsonPath) {
|
|
208
|
+
const parts = jsonPath.split(".");
|
|
209
|
+
let current = data;
|
|
210
|
+
for (const part of parts) {
|
|
211
|
+
if (current === null || current === undefined)
|
|
212
|
+
return current;
|
|
213
|
+
if (typeof current === "object") {
|
|
214
|
+
current = current[part];
|
|
215
|
+
}
|
|
216
|
+
else {
|
|
217
|
+
return undefined;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
return current;
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Set a value at a dot-notation path in an object, creating intermediate objects as needed.
|
|
224
|
+
* e.g. setNestedField(body, "config.url", "https://...") → body.config.url = "https://..."
|
|
225
|
+
*/
|
|
226
|
+
function setNestedField(obj, path, value) {
|
|
227
|
+
const parts = path.split(".");
|
|
228
|
+
let current = obj;
|
|
229
|
+
for (let i = 0; i < parts.length - 1; i++) {
|
|
230
|
+
if (!(parts[i] in current) || typeof current[parts[i]] !== "object") {
|
|
231
|
+
current[parts[i]] = {};
|
|
232
|
+
}
|
|
233
|
+
current = current[parts[i]];
|
|
234
|
+
}
|
|
235
|
+
current[parts[parts.length - 1]] = value;
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Deep merge source into target (mutates target).
|
|
239
|
+
*/
|
|
240
|
+
function deepMerge(target, source) {
|
|
241
|
+
for (const [key, value] of Object.entries(source)) {
|
|
242
|
+
if (value && typeof value === "object" && !Array.isArray(value) && typeof target[key] === "object" && target[key]) {
|
|
243
|
+
deepMerge(target[key], value);
|
|
244
|
+
}
|
|
245
|
+
else {
|
|
246
|
+
target[key] = value;
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Flatten nested objects for form-urlencoded encoding.
|
|
252
|
+
* e.g. { enabled_events: ["a", "b"] } → { "enabled_events[0]": "a", "enabled_events[1]": "b" }
|
|
253
|
+
* Stripe-style array encoding.
|
|
254
|
+
*/
|
|
255
|
+
function flattenForForm(obj, prefix = "") {
|
|
256
|
+
const result = {};
|
|
257
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
258
|
+
const fullKey = prefix ? `${prefix}[${key}]` : key;
|
|
259
|
+
if (Array.isArray(value)) {
|
|
260
|
+
for (let i = 0; i < value.length; i++) {
|
|
261
|
+
result[`${fullKey}[${i}]`] = String(value[i]);
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
else if (value && typeof value === "object") {
|
|
265
|
+
Object.assign(result, flattenForForm(value, fullKey));
|
|
266
|
+
}
|
|
267
|
+
else if (value !== undefined && value !== null) {
|
|
268
|
+
result[fullKey] = String(value);
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
return result;
|
|
272
|
+
}
|
|
273
|
+
function buildFormBody(params) {
|
|
274
|
+
const parts = [];
|
|
275
|
+
for (const [key, value] of Object.entries(params)) {
|
|
276
|
+
parts.push(`${encodeURIComponent(key)}=${encodeURIComponent(value)}`);
|
|
277
|
+
}
|
|
278
|
+
return parts.join("&");
|
|
279
|
+
}
|
|
280
|
+
//# sourceMappingURL=webhook-registrar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhook-registrar.js","sourceRoot":"","sources":["../src/webhook-registrar.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@apteva/integrations",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.6",
|
|
4
4
|
"description": "Local integrations, connections, and webhooks for Apteva. Self-contained app templates, OAuth engine, and trigger provider.",
|
|
5
5
|
"author": "Apteva <hello@apteva.com>",
|
|
6
6
|
"license": "Elastic-2.0",
|
package/src/apps/brevo.json
CHANGED
|
@@ -1487,6 +1487,20 @@
|
|
|
1487
1487
|
"name": "contactDeleted",
|
|
1488
1488
|
"description": "Contact was deleted from the account"
|
|
1489
1489
|
}
|
|
1490
|
-
]
|
|
1490
|
+
],
|
|
1491
|
+
"registration": {
|
|
1492
|
+
"method": "POST",
|
|
1493
|
+
"path": "/webhooks",
|
|
1494
|
+
"url_field": "url",
|
|
1495
|
+
"events_field": "events",
|
|
1496
|
+
"extra": {
|
|
1497
|
+
"type": "transactional"
|
|
1498
|
+
},
|
|
1499
|
+
"id_field": "id",
|
|
1500
|
+
"delete_path": "/webhooks/{id}",
|
|
1501
|
+
"delete_method": "DELETE",
|
|
1502
|
+
"list_path": "/webhooks",
|
|
1503
|
+
"list_field": "webhooks"
|
|
1504
|
+
}
|
|
1491
1505
|
}
|
|
1492
1506
|
}
|
package/src/apps/chargebee.json
CHANGED
package/src/apps/convertkit.json
CHANGED
|
@@ -1482,6 +1482,9 @@
|
|
|
1482
1482
|
"name": "gig.instruction_completed",
|
|
1483
1483
|
"description": "Gig instruction marked complete"
|
|
1484
1484
|
}
|
|
1485
|
-
]
|
|
1485
|
+
],
|
|
1486
|
+
"registration": {
|
|
1487
|
+
"manual_setup": "Configure webhooks in the Gigs Marketplace dashboard settings."
|
|
1488
|
+
}
|
|
1486
1489
|
}
|
|
1487
1490
|
}
|
package/src/apps/github.json
CHANGED
|
@@ -306,7 +306,7 @@
|
|
|
306
306
|
},
|
|
307
307
|
{
|
|
308
308
|
"name": "get_contents",
|
|
309
|
-
"description": "Get repository contents
|
|
309
|
+
"description": "Get repository contents \u2014 a file (with content) or directory listing. For files up to 1MB, content is base64 encoded.",
|
|
310
310
|
"method": "GET",
|
|
311
311
|
"path": "/repos/%7B%7Bowner%7D%7D/%7B%7Brepo%7D%7D/contents/%7B%7Bpath%7D%7D",
|
|
312
312
|
"input_schema": {
|
|
@@ -520,11 +520,11 @@
|
|
|
520
520
|
},
|
|
521
521
|
"since": {
|
|
522
522
|
"type": "string",
|
|
523
|
-
"description": "ISO 8601 date
|
|
523
|
+
"description": "ISO 8601 date \u2014 only commits after this date"
|
|
524
524
|
},
|
|
525
525
|
"until": {
|
|
526
526
|
"type": "string",
|
|
527
|
-
"description": "ISO 8601 date
|
|
527
|
+
"description": "ISO 8601 date \u2014 only commits before this date"
|
|
528
528
|
},
|
|
529
529
|
"per_page": {
|
|
530
530
|
"type": "integer",
|
|
@@ -689,7 +689,7 @@
|
|
|
689
689
|
},
|
|
690
690
|
{
|
|
691
691
|
"name": "update_issue",
|
|
692
|
-
"description": "Update an issue
|
|
692
|
+
"description": "Update an issue \u2014 change title, body, state, labels, or assignees",
|
|
693
693
|
"method": "PATCH",
|
|
694
694
|
"path": "/repos/%7B%7Bowner%7D%7D/%7B%7Brepo%7D%7D/issues/%7B%7Bissue_number%7D%7D",
|
|
695
695
|
"input_schema": {
|
|
@@ -1586,6 +1586,23 @@
|
|
|
1586
1586
|
"name": "deployment_status",
|
|
1587
1587
|
"description": "Deployment status updated"
|
|
1588
1588
|
}
|
|
1589
|
-
]
|
|
1589
|
+
],
|
|
1590
|
+
"registration": {
|
|
1591
|
+
"method": "POST",
|
|
1592
|
+
"path": "/repos/{owner}/{repo}/hooks",
|
|
1593
|
+
"url_field": "config.url",
|
|
1594
|
+
"events_field": "events",
|
|
1595
|
+
"secret_field": "config.secret",
|
|
1596
|
+
"extra": {
|
|
1597
|
+
"config": {
|
|
1598
|
+
"content_type": "json"
|
|
1599
|
+
},
|
|
1600
|
+
"active": true
|
|
1601
|
+
},
|
|
1602
|
+
"id_field": "id",
|
|
1603
|
+
"delete_path": "/repos/{owner}/{repo}/hooks/{id}",
|
|
1604
|
+
"delete_method": "DELETE",
|
|
1605
|
+
"list_path": "/repos/{owner}/{repo}/hooks"
|
|
1606
|
+
}
|
|
1590
1607
|
}
|
|
1591
1608
|
}
|
package/src/apps/helpscout.json
CHANGED
package/src/apps/hubspot.json
CHANGED
|
@@ -726,6 +726,9 @@
|
|
|
726
726
|
"name": "ticket.deletion",
|
|
727
727
|
"description": "Ticket deleted"
|
|
728
728
|
}
|
|
729
|
-
]
|
|
729
|
+
],
|
|
730
|
+
"registration": {
|
|
731
|
+
"manual_setup": "Go to HubSpot Settings > Integrations > Private Apps > Your App > Webhooks to register. HubSpot webhooks require an app-level subscription, not a per-token API call."
|
|
732
|
+
}
|
|
730
733
|
}
|
|
731
734
|
}
|
package/src/apps/intercom.json
CHANGED
package/src/apps/jira.json
CHANGED
|
@@ -266,6 +266,19 @@
|
|
|
266
266
|
"name": "worklog_created",
|
|
267
267
|
"description": "Work log entry added"
|
|
268
268
|
}
|
|
269
|
-
]
|
|
269
|
+
],
|
|
270
|
+
"registration": {
|
|
271
|
+
"method": "POST",
|
|
272
|
+
"path": "/rest/webhooks/1.0/webhook",
|
|
273
|
+
"url_field": "url",
|
|
274
|
+
"events_field": "events",
|
|
275
|
+
"extra": {
|
|
276
|
+
"name": "Apteva Webhook"
|
|
277
|
+
},
|
|
278
|
+
"id_field": "self",
|
|
279
|
+
"delete_path": "/rest/webhooks/1.0/webhook/{id}",
|
|
280
|
+
"delete_method": "DELETE",
|
|
281
|
+
"list_path": "/rest/webhooks/1.0/webhook"
|
|
282
|
+
}
|
|
270
283
|
}
|
|
271
284
|
}
|
package/src/apps/late.json
CHANGED
package/src/apps/linear.json
CHANGED
|
@@ -262,6 +262,9 @@
|
|
|
262
262
|
"name": "label.created",
|
|
263
263
|
"description": "New label created"
|
|
264
264
|
}
|
|
265
|
-
]
|
|
265
|
+
],
|
|
266
|
+
"registration": {
|
|
267
|
+
"manual_setup": "Go to Linear Settings > API > Webhooks to register your webhook URL. Linear does not support webhook creation via REST API \u2014 it requires GraphQL mutations."
|
|
268
|
+
}
|
|
266
269
|
}
|
|
267
270
|
}
|
package/src/apps/mailchimp.json
CHANGED
|
@@ -258,6 +258,30 @@
|
|
|
258
258
|
"name": "profile.updated",
|
|
259
259
|
"description": "Subscriber profile changed"
|
|
260
260
|
}
|
|
261
|
-
]
|
|
261
|
+
],
|
|
262
|
+
"registration": {
|
|
263
|
+
"method": "POST",
|
|
264
|
+
"path": "/lists/{list_id}/webhooks",
|
|
265
|
+
"url_field": "url",
|
|
266
|
+
"extra": {
|
|
267
|
+
"sources": {
|
|
268
|
+
"user": true,
|
|
269
|
+
"admin": true,
|
|
270
|
+
"api": true
|
|
271
|
+
},
|
|
272
|
+
"events": {
|
|
273
|
+
"subscribe": true,
|
|
274
|
+
"unsubscribe": true,
|
|
275
|
+
"profile": true,
|
|
276
|
+
"cleaned": true,
|
|
277
|
+
"campaign": true
|
|
278
|
+
}
|
|
279
|
+
},
|
|
280
|
+
"id_field": "id",
|
|
281
|
+
"delete_path": "/lists/{list_id}/webhooks/{id}",
|
|
282
|
+
"delete_method": "DELETE",
|
|
283
|
+
"list_path": "/lists/{list_id}/webhooks",
|
|
284
|
+
"list_field": "webhooks"
|
|
285
|
+
}
|
|
262
286
|
}
|
|
263
287
|
}
|
package/src/apps/notion.json
CHANGED
|
@@ -158,7 +158,7 @@
|
|
|
158
158
|
},
|
|
159
159
|
"icon": {
|
|
160
160
|
"type": "object",
|
|
161
|
-
"description": "Database icon. Example: { \"type\": \"emoji\", \"emoji\": \"
|
|
161
|
+
"description": "Database icon. Example: { \"type\": \"emoji\", \"emoji\": \"\ud83d\udccb\" }"
|
|
162
162
|
},
|
|
163
163
|
"cover": {
|
|
164
164
|
"type": "object",
|
|
@@ -243,7 +243,7 @@
|
|
|
243
243
|
},
|
|
244
244
|
"icon": {
|
|
245
245
|
"type": "object",
|
|
246
|
-
"description": "Page icon. Example: { \"type\": \"emoji\", \"emoji\": \"
|
|
246
|
+
"description": "Page icon. Example: { \"type\": \"emoji\", \"emoji\": \"\ud83d\udcc4\" }"
|
|
247
247
|
},
|
|
248
248
|
"cover": {
|
|
249
249
|
"type": "object",
|
|
@@ -640,6 +640,9 @@
|
|
|
640
640
|
"name": "comment.deleted",
|
|
641
641
|
"description": "A comment is removed"
|
|
642
642
|
}
|
|
643
|
-
]
|
|
643
|
+
],
|
|
644
|
+
"registration": {
|
|
645
|
+
"manual_setup": "Notion webhooks are in beta. Go to notion.so/my-integrations > Your Integration to configure webhook URL."
|
|
646
|
+
}
|
|
644
647
|
}
|
|
645
648
|
}
|
|
@@ -923,6 +923,23 @@
|
|
|
923
923
|
"name": "content.unpublished",
|
|
924
924
|
"description": "Published content entry unpublished"
|
|
925
925
|
}
|
|
926
|
-
]
|
|
926
|
+
],
|
|
927
|
+
"registration": {
|
|
928
|
+
"method": "POST",
|
|
929
|
+
"path": "/webhooks-register",
|
|
930
|
+
"url_field": "endpoint_url",
|
|
931
|
+
"events_field": "event_types",
|
|
932
|
+
"secret_field": "secret_key",
|
|
933
|
+
"extra": {
|
|
934
|
+
"name": "Apteva Webhook",
|
|
935
|
+
"auth_type": "hmac-sha256",
|
|
936
|
+
"direction": "outgoing"
|
|
937
|
+
},
|
|
938
|
+
"id_field": "id",
|
|
939
|
+
"delete_path": "/webhooks-delete/{id}",
|
|
940
|
+
"delete_method": "DELETE",
|
|
941
|
+
"list_path": "/webhooks-list",
|
|
942
|
+
"list_field": "webhooks"
|
|
943
|
+
}
|
|
927
944
|
}
|
|
928
945
|
}
|
|
@@ -1890,6 +1890,23 @@
|
|
|
1890
1890
|
"name": "messaging.campaign_failed",
|
|
1891
1891
|
"description": "Campaign failed to send"
|
|
1892
1892
|
}
|
|
1893
|
-
]
|
|
1893
|
+
],
|
|
1894
|
+
"registration": {
|
|
1895
|
+
"method": "POST",
|
|
1896
|
+
"path": "/webhooks-register",
|
|
1897
|
+
"url_field": "endpoint_url",
|
|
1898
|
+
"events_field": "event_types",
|
|
1899
|
+
"secret_field": "secret_key",
|
|
1900
|
+
"extra": {
|
|
1901
|
+
"name": "Apteva Webhook",
|
|
1902
|
+
"auth_type": "hmac-sha256",
|
|
1903
|
+
"direction": "outgoing"
|
|
1904
|
+
},
|
|
1905
|
+
"id_field": "id",
|
|
1906
|
+
"delete_path": "/webhooks-delete/{id}",
|
|
1907
|
+
"delete_method": "DELETE",
|
|
1908
|
+
"list_path": "/webhooks-list",
|
|
1909
|
+
"list_field": "webhooks"
|
|
1910
|
+
}
|
|
1894
1911
|
}
|
|
1895
1912
|
}
|
|
@@ -269,6 +269,24 @@
|
|
|
269
269
|
"name": "email.unsubscribe",
|
|
270
270
|
"description": "Recipient unsubscribed"
|
|
271
271
|
}
|
|
272
|
-
]
|
|
272
|
+
],
|
|
273
|
+
"registration": {
|
|
274
|
+
"method": "PATCH",
|
|
275
|
+
"path": "/user/webhooks/event/settings",
|
|
276
|
+
"url_field": "url",
|
|
277
|
+
"extra": {
|
|
278
|
+
"enabled": true,
|
|
279
|
+
"bounce": true,
|
|
280
|
+
"click": true,
|
|
281
|
+
"deferred": true,
|
|
282
|
+
"delivered": true,
|
|
283
|
+
"dropped": true,
|
|
284
|
+
"open": true,
|
|
285
|
+
"processed": true,
|
|
286
|
+
"spam_report": true,
|
|
287
|
+
"unsubscribe": true
|
|
288
|
+
},
|
|
289
|
+
"list_path": "/user/webhooks/event/settings"
|
|
290
|
+
}
|
|
273
291
|
}
|
|
274
292
|
}
|
package/src/apps/shopify.json
CHANGED
|
@@ -1281,6 +1281,21 @@
|
|
|
1281
1281
|
"name": "app/uninstalled",
|
|
1282
1282
|
"description": "App uninstalled from store"
|
|
1283
1283
|
}
|
|
1284
|
-
]
|
|
1284
|
+
],
|
|
1285
|
+
"registration": {
|
|
1286
|
+
"method": "POST",
|
|
1287
|
+
"path": "/webhooks.json",
|
|
1288
|
+
"url_field": "webhook.address",
|
|
1289
|
+
"extra": {
|
|
1290
|
+
"webhook": {
|
|
1291
|
+
"format": "json"
|
|
1292
|
+
}
|
|
1293
|
+
},
|
|
1294
|
+
"id_field": "webhook.id",
|
|
1295
|
+
"delete_path": "/webhooks/{id}.json",
|
|
1296
|
+
"delete_method": "DELETE",
|
|
1297
|
+
"list_path": "/webhooks.json",
|
|
1298
|
+
"list_field": "webhooks"
|
|
1299
|
+
}
|
|
1285
1300
|
}
|
|
1286
1301
|
}
|
package/src/apps/slack.json
CHANGED
|
@@ -314,6 +314,9 @@
|
|
|
314
314
|
"name": "team.join",
|
|
315
315
|
"description": "New user joined workspace"
|
|
316
316
|
}
|
|
317
|
-
]
|
|
317
|
+
],
|
|
318
|
+
"registration": {
|
|
319
|
+
"manual_setup": "Go to api.slack.com/apps > Your App > Event Subscriptions to register your webhook URL. Slack requires app-level configuration, not API calls."
|
|
320
|
+
}
|
|
318
321
|
}
|
|
319
322
|
}
|
package/src/apps/socialcast.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"slug": "socialcast",
|
|
3
3
|
"name": "SocialCast",
|
|
4
|
-
"description": "Unified social media posting platform
|
|
4
|
+
"description": "Unified social media posting platform \u2014 connect accounts across 9 platforms and publish everywhere at once",
|
|
5
5
|
"logo": "https://socialcast.dev/favicon-192.png",
|
|
6
6
|
"categories": [
|
|
7
7
|
"social-media",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"tools": [
|
|
36
36
|
{
|
|
37
37
|
"name": "list_accounts",
|
|
38
|
-
"description": "List all connected social media accounts for the project. Optionally filter by platform or status. Accounts with status 'active' are fully configured and ready to post
|
|
38
|
+
"description": "List all connected social media accounts for the project. Optionally filter by platform or status. Accounts with status 'active' are fully configured and ready to post \u2014 do NOT suggest setup steps for active accounts. The platform_metadata field contains internal IDs used by the system (pageId, instagramAccountId, etc.) and should not be interpreted as incomplete setup.",
|
|
39
39
|
"method": "GET",
|
|
40
40
|
"path": "/accounts",
|
|
41
41
|
"input_schema": {
|
|
@@ -217,7 +217,7 @@
|
|
|
217
217
|
},
|
|
218
218
|
"media_urls": {
|
|
219
219
|
"type": "array",
|
|
220
|
-
"description": "Media attachments
|
|
220
|
+
"description": "Media attachments \u2014 array of objects with url, type (image/video), and optional alt_text",
|
|
221
221
|
"items": {
|
|
222
222
|
"type": "object",
|
|
223
223
|
"properties": {
|
|
@@ -266,7 +266,7 @@
|
|
|
266
266
|
},
|
|
267
267
|
"platform_overrides": {
|
|
268
268
|
"type": "object",
|
|
269
|
-
"description": "Per-platform overrides keyed by platform name. Only include platforms you want to customize. Available fields per platform: youtube: {title, description, tags (array), privacyStatus (public/unlisted/private), categoryId (default 22=People & Blogs)}. reddit: {title, subreddit, text, nsfw}. pinterest: {title, description, board_id}. tiktok: {title, text, privacyLevel}. linkedin: {text, visibility}. facebook: {text, title (video only)}. twitter: {text}. instagram: {text}. telegram: {text, chatId, parseMode}. All fields are optional
|
|
269
|
+
"description": "Per-platform overrides keyed by platform name. Only include platforms you want to customize. Available fields per platform: youtube: {title, description, tags (array), privacyStatus (public/unlisted/private), categoryId (default 22=People & Blogs)}. reddit: {title, subreddit, text, nsfw}. pinterest: {title, description, board_id}. tiktok: {title, text, privacyLevel}. linkedin: {text, visibility}. facebook: {text, title (video only)}. twitter: {text}. instagram: {text}. telegram: {text, chatId, parseMode}. All fields are optional \u2014 omitted fields fall back to the main post text.",
|
|
270
270
|
"properties": {
|
|
271
271
|
"twitter": {
|
|
272
272
|
"type": "object"
|
|
@@ -481,7 +481,7 @@
|
|
|
481
481
|
},
|
|
482
482
|
{
|
|
483
483
|
"name": "list_inbox",
|
|
484
|
-
"description": "List social inbox items
|
|
484
|
+
"description": "List social inbox items \u2014 comments, replies, and DMs received on your connected accounts. Filter by platform, account, status, or type. Returns items sorted by most recent first with unread count.",
|
|
485
485
|
"method": "GET",
|
|
486
486
|
"path": "/inbox",
|
|
487
487
|
"input_schema": {
|
|
@@ -604,7 +604,7 @@
|
|
|
604
604
|
},
|
|
605
605
|
{
|
|
606
606
|
"name": "update_inbox",
|
|
607
|
-
"description": "Update the status of inbox items
|
|
607
|
+
"description": "Update the status of inbox items \u2014 mark as read, replied, or archived. Supports single item, bulk IDs, or mark-all-read for an account.",
|
|
608
608
|
"method": "PUT",
|
|
609
609
|
"path": "/inbox",
|
|
610
610
|
"input_schema": {
|
|
@@ -637,7 +637,7 @@
|
|
|
637
637
|
},
|
|
638
638
|
"social_account_id": {
|
|
639
639
|
"type": "integer",
|
|
640
|
-
"description": "Filter for mark_all_read
|
|
640
|
+
"description": "Filter for mark_all_read \u2014 only mark items from this account"
|
|
641
641
|
}
|
|
642
642
|
}
|
|
643
643
|
}
|
|
@@ -693,6 +693,9 @@
|
|
|
693
693
|
"name": "social.comment.deleted",
|
|
694
694
|
"description": "A comment was removed from a post"
|
|
695
695
|
}
|
|
696
|
-
]
|
|
696
|
+
],
|
|
697
|
+
"registration": {
|
|
698
|
+
"manual_setup": "Configure webhooks in the SocialCast dashboard settings."
|
|
699
|
+
}
|
|
697
700
|
}
|
|
698
701
|
}
|
|
@@ -895,6 +895,18 @@
|
|
|
895
895
|
"name": "charge.refunded",
|
|
896
896
|
"description": "Occurs when a charge is refunded"
|
|
897
897
|
}
|
|
898
|
-
]
|
|
898
|
+
],
|
|
899
|
+
"registration": {
|
|
900
|
+
"method": "POST",
|
|
901
|
+
"path": "/webhook_endpoints",
|
|
902
|
+
"url_field": "url",
|
|
903
|
+
"events_field": "enabled_events",
|
|
904
|
+
"content_type": "application/x-www-form-urlencoded",
|
|
905
|
+
"id_field": "id",
|
|
906
|
+
"delete_path": "/webhook_endpoints/{id}",
|
|
907
|
+
"delete_method": "DELETE",
|
|
908
|
+
"list_path": "/webhook_endpoints",
|
|
909
|
+
"list_field": "data"
|
|
910
|
+
}
|
|
899
911
|
}
|
|
900
912
|
}
|
package/src/apps/stripe.json
CHANGED
|
@@ -573,6 +573,18 @@
|
|
|
573
573
|
"name": "charge.refunded",
|
|
574
574
|
"description": "Occurs when a charge is refunded"
|
|
575
575
|
}
|
|
576
|
-
]
|
|
576
|
+
],
|
|
577
|
+
"registration": {
|
|
578
|
+
"method": "POST",
|
|
579
|
+
"path": "/webhook_endpoints",
|
|
580
|
+
"url_field": "url",
|
|
581
|
+
"events_field": "enabled_events",
|
|
582
|
+
"content_type": "application/x-www-form-urlencoded",
|
|
583
|
+
"id_field": "id",
|
|
584
|
+
"delete_path": "/webhook_endpoints/{id}",
|
|
585
|
+
"delete_method": "DELETE",
|
|
586
|
+
"list_path": "/webhook_endpoints",
|
|
587
|
+
"list_field": "data"
|
|
588
|
+
}
|
|
577
589
|
}
|
|
578
590
|
}
|
package/src/apps/twilio.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"slug": "twilio",
|
|
3
3
|
"name": "Twilio",
|
|
4
|
-
"description": "Twilio communications platform
|
|
4
|
+
"description": "Twilio communications platform \u2014 SMS, MMS, voice calls, WhatsApp, phone numbers, recordings, usage, and verification",
|
|
5
5
|
"logo": "https://www.google.com/s2/favicons?domain=twilio.com&sz=128",
|
|
6
6
|
"categories": [
|
|
7
7
|
"messaging",
|
|
@@ -133,7 +133,7 @@
|
|
|
133
133
|
"whatsapp"
|
|
134
134
|
],
|
|
135
135
|
"default": "whatsapp",
|
|
136
|
-
"description": "Channel type
|
|
136
|
+
"description": "Channel type \u2014 must be 'whatsapp'"
|
|
137
137
|
}
|
|
138
138
|
},
|
|
139
139
|
"required": [
|
|
@@ -320,7 +320,7 @@
|
|
|
320
320
|
},
|
|
321
321
|
{
|
|
322
322
|
"name": "update_call",
|
|
323
|
-
"description": "Modify an in-progress call
|
|
323
|
+
"description": "Modify an in-progress call \u2014 redirect to new TwiML, end the call, or pause/resume recording.",
|
|
324
324
|
"method": "POST",
|
|
325
325
|
"path": "/Accounts/%7B%7Bcredential.account_sid%7D%7D/Calls/%7B%7BCallSid%7D%7D.json",
|
|
326
326
|
"input_schema": {
|
|
@@ -408,7 +408,7 @@
|
|
|
408
408
|
},
|
|
409
409
|
{
|
|
410
410
|
"name": "update_phone_number",
|
|
411
|
-
"description": "Update configuration for a phone number
|
|
411
|
+
"description": "Update configuration for a phone number \u2014 webhooks, friendly name, voice/SMS settings.",
|
|
412
412
|
"method": "POST",
|
|
413
413
|
"path": "/Accounts/%7B%7Bcredential.account_sid%7D%7D/IncomingPhoneNumbers/%7B%7BPhoneNumberSid%7D%7D.json",
|
|
414
414
|
"input_schema": {
|
|
@@ -624,7 +624,7 @@
|
|
|
624
624
|
},
|
|
625
625
|
{
|
|
626
626
|
"name": "get_usage",
|
|
627
|
-
"description": "Retrieve usage records for your account
|
|
627
|
+
"description": "Retrieve usage records for your account \u2014 see costs per category (calls, SMS, numbers, etc.).",
|
|
628
628
|
"method": "GET",
|
|
629
629
|
"path": "/Accounts/%7B%7Bcredential.account_sid%7D%7D/Usage/Records.json",
|
|
630
630
|
"input_schema": {
|
|
@@ -668,7 +668,7 @@
|
|
|
668
668
|
},
|
|
669
669
|
{
|
|
670
670
|
"name": "get_whatsapp_sender",
|
|
671
|
-
"description": "Get details of a specific WhatsApp Business sender by SID
|
|
671
|
+
"description": "Get details of a specific WhatsApp Business sender by SID \u2014 status, phone number, profile info, and capabilities.",
|
|
672
672
|
"method": "GET",
|
|
673
673
|
"path": "/v2/Channels/Senders/%7B%7BSenderSid%7D%7D",
|
|
674
674
|
"input_schema": {
|
|
@@ -795,7 +795,7 @@
|
|
|
795
795
|
},
|
|
796
796
|
{
|
|
797
797
|
"name": "get_content_template",
|
|
798
|
-
"description": "Retrieve details of a specific content template by SID
|
|
798
|
+
"description": "Retrieve details of a specific content template by SID \u2014 body, variables, type, and approval status.",
|
|
799
799
|
"method": "GET",
|
|
800
800
|
"path": "/v1/Content/%7B%7BContentSid%7D%7D",
|
|
801
801
|
"input_schema": {
|
|
@@ -897,7 +897,7 @@
|
|
|
897
897
|
},
|
|
898
898
|
{
|
|
899
899
|
"name": "lookup_phone_number",
|
|
900
|
-
"description": "Look up information about a phone number
|
|
900
|
+
"description": "Look up information about a phone number \u2014 carrier, caller name, line type (mobile/landline/voip).",
|
|
901
901
|
"method": "GET",
|
|
902
902
|
"path": "/v2/PhoneNumbers/%7B%7BPhoneNumber%7D%7D",
|
|
903
903
|
"input_schema": {
|
|
@@ -1052,6 +1052,9 @@
|
|
|
1052
1052
|
"name": "recording.completed",
|
|
1053
1053
|
"description": "Call recording ready"
|
|
1054
1054
|
}
|
|
1055
|
-
]
|
|
1055
|
+
],
|
|
1056
|
+
"registration": {
|
|
1057
|
+
"manual_setup": "Twilio webhooks are configured per-phone-number. Go to Twilio Console > Phone Numbers > Your Number to set the webhook URL for SMS/Voice."
|
|
1058
|
+
}
|
|
1056
1059
|
}
|
|
1057
1060
|
}
|
package/src/apps/typeform.json
CHANGED