@apteva/integrations 0.3.4 → 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.
Files changed (45) hide show
  1. package/dist/index.d.ts +3 -1
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +2 -0
  4. package/dist/index.js.map +1 -1
  5. package/dist/types.d.ts +37 -0
  6. package/dist/types.d.ts.map +1 -1
  7. package/dist/webhook-registrar.d.ts +78 -0
  8. package/dist/webhook-registrar.d.ts.map +1 -0
  9. package/dist/webhook-registrar.js +280 -0
  10. package/dist/webhook-registrar.js.map +1 -0
  11. package/package.json +1 -1
  12. package/src/apps/brevo.json +84 -1
  13. package/src/apps/chargebee.json +41 -1
  14. package/src/apps/convertkit.json +33 -1
  15. package/src/apps/gigs-marketplace.json +49 -1
  16. package/src/apps/github.json +75 -5
  17. package/src/apps/gohighlevel.json +45 -1
  18. package/src/apps/helpscout.json +57 -1
  19. package/src/apps/hubspot.json +53 -1
  20. package/src/apps/intercom.json +49 -1
  21. package/src/apps/jira.json +59 -1
  22. package/src/apps/late.json +33 -1
  23. package/src/apps/linear.json +49 -1
  24. package/src/apps/mailchimp.json +50 -1
  25. package/src/apps/notion.json +59 -3
  26. package/src/apps/omnikit-analytics.json +4 -5
  27. package/src/apps/omnikit-api-gateway.json +4 -5
  28. package/src/apps/omnikit-billing.json +4 -5
  29. package/src/apps/omnikit-cms.json +51 -6
  30. package/src/apps/omnikit-functions.json +4 -5
  31. package/src/apps/omnikit-intelligence.json +7 -8
  32. package/src/apps/omnikit-management.json +4 -5
  33. package/src/apps/omnikit-media.json +4 -5
  34. package/src/apps/omnikit-messaging.json +91 -6
  35. package/src/apps/omnikit-redirects.json +4 -5
  36. package/src/apps/omnikit-webhooks.json +4 -5
  37. package/src/apps/omnikit-workflows.json +4 -5
  38. package/src/apps/sendgrid-email.json +60 -1
  39. package/src/apps/shopify.json +85 -1
  40. package/src/apps/slack.json +49 -1
  41. package/src/apps/socialcast.json +36 -8
  42. package/src/apps/stripe-payments.json +66 -1
  43. package/src/apps/stripe.json +66 -1
  44. package/src/apps/twilio.json +61 -9
  45. package/src/apps/typeform.json +13 -1
package/dist/index.d.ts CHANGED
@@ -1,10 +1,12 @@
1
- export type { AppTemplate, AppAuthConfig, AuthType, OAuthConfig, CredentialField, AppToolTemplate, 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";
@@ -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,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":"AAgBA,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,qCAAqC;AACrC,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAGhE,iCAAiC;AACjC,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC"}
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
@@ -7,6 +7,43 @@ export interface AppTemplate {
7
7
  auth: AppAuthConfig;
8
8
  base_url: string;
9
9
  tools: AppToolTemplate[];
10
+ webhooks?: AppWebhookConfig;
11
+ }
12
+ export interface AppWebhookConfig {
13
+ signature_header: string;
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;
43
+ }
44
+ export interface AppWebhookEvent {
45
+ name: string;
46
+ description: string;
10
47
  }
11
48
  export interface AppAuthConfig {
12
49
  types: AuthType[];
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
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.4",
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",
@@ -1419,5 +1419,88 @@
1419
1419
  ]
1420
1420
  }
1421
1421
  }
1422
- ]
1422
+ ],
1423
+ "webhooks": {
1424
+ "signature_header": "x-brevo-signature",
1425
+ "events": [
1426
+ {
1427
+ "name": "sent",
1428
+ "description": "An email was sent to the recipient"
1429
+ },
1430
+ {
1431
+ "name": "hardBounce",
1432
+ "description": "Email permanently bounced (invalid address, domain not found, etc.)"
1433
+ },
1434
+ {
1435
+ "name": "softBounce",
1436
+ "description": "Email temporarily bounced (mailbox full, server unavailable, etc.)"
1437
+ },
1438
+ {
1439
+ "name": "blocked",
1440
+ "description": "Email was blocked before sending (blacklisted contact, etc.)"
1441
+ },
1442
+ {
1443
+ "name": "spam",
1444
+ "description": "Recipient marked the email as spam"
1445
+ },
1446
+ {
1447
+ "name": "delivered",
1448
+ "description": "Email was successfully delivered to the recipient's mailbox"
1449
+ },
1450
+ {
1451
+ "name": "request",
1452
+ "description": "Email send request was received by Brevo"
1453
+ },
1454
+ {
1455
+ "name": "click",
1456
+ "description": "A link in the email was clicked by the recipient"
1457
+ },
1458
+ {
1459
+ "name": "invalid",
1460
+ "description": "Email address was detected as invalid"
1461
+ },
1462
+ {
1463
+ "name": "deferred",
1464
+ "description": "Email delivery was deferred by the receiving server"
1465
+ },
1466
+ {
1467
+ "name": "opened",
1468
+ "description": "Email was opened by the recipient"
1469
+ },
1470
+ {
1471
+ "name": "uniqueOpened",
1472
+ "description": "Email was opened for the first time by the recipient"
1473
+ },
1474
+ {
1475
+ "name": "unsubscribed",
1476
+ "description": "Recipient unsubscribed from the mailing list"
1477
+ },
1478
+ {
1479
+ "name": "listAddition",
1480
+ "description": "Contact was added to a mailing list"
1481
+ },
1482
+ {
1483
+ "name": "contactUpdated",
1484
+ "description": "Contact information was updated"
1485
+ },
1486
+ {
1487
+ "name": "contactDeleted",
1488
+ "description": "Contact was deleted from the account"
1489
+ }
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
+ }
1505
+ }
1423
1506
  }
@@ -222,5 +222,45 @@
222
222
  ]
223
223
  }
224
224
  }
225
- ]
225
+ ],
226
+ "webhooks": {
227
+ "signature_header": "x-chargebee-signature",
228
+ "events": [
229
+ {
230
+ "name": "subscription_created",
231
+ "description": "New subscription created"
232
+ },
233
+ {
234
+ "name": "subscription_renewed",
235
+ "description": "Subscription renewed"
236
+ },
237
+ {
238
+ "name": "subscription_cancelled",
239
+ "description": "Subscription cancelled"
240
+ },
241
+ {
242
+ "name": "subscription_changed",
243
+ "description": "Subscription plan changed"
244
+ },
245
+ {
246
+ "name": "payment_succeeded",
247
+ "description": "Payment successfully processed"
248
+ },
249
+ {
250
+ "name": "payment_failed",
251
+ "description": "Payment attempt failed"
252
+ },
253
+ {
254
+ "name": "invoice_generated",
255
+ "description": "New invoice generated"
256
+ },
257
+ {
258
+ "name": "customer_created",
259
+ "description": "New customer created"
260
+ }
261
+ ],
262
+ "registration": {
263
+ "manual_setup": "Go to Chargebee Settings > Configure Chargebee > Webhooks to register your webhook URL."
264
+ }
265
+ }
226
266
  }