@automate.ax/catalog 0.84.0 → 0.85.0

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/catalog.d.ts CHANGED
@@ -681,6 +681,16 @@ export declare const whatsappService: {
681
681
  readonly id: "whatsapp";
682
682
  readonly name: "WhatsApp";
683
683
  };
684
+ export declare const webflowService: {
685
+ readonly connectionMethods: readonly [{
686
+ readonly id: "oauth";
687
+ readonly name: "OAuth";
688
+ readonly type: "redirect";
689
+ }];
690
+ readonly description: "Connect Webflow sites and workspaces.";
691
+ readonly id: "webflow";
692
+ readonly name: "Webflow";
693
+ };
684
694
  export declare const xaiService: {
685
695
  readonly id: "xai";
686
696
  readonly name: string;
@@ -1336,6 +1346,15 @@ export declare const integrationCatalog: readonly [{
1336
1346
  readonly id: "vercel";
1337
1347
  readonly name: "Vercel";
1338
1348
  readonly preferredConnectionMethodId: "oauth";
1349
+ }, {
1350
+ readonly connectionMethods: readonly [{
1351
+ readonly id: "oauth";
1352
+ readonly name: "OAuth";
1353
+ readonly type: "redirect";
1354
+ }];
1355
+ readonly description: "Connect Webflow sites and workspaces.";
1356
+ readonly id: "webflow";
1357
+ readonly name: "Webflow";
1339
1358
  }, {
1340
1359
  readonly connectionMethods: readonly [{
1341
1360
  readonly id: "embedded-signup";
package/dist/catalog.js CHANGED
@@ -391,6 +391,12 @@ export const whatsappService = defineIntegrationService({
391
391
  id: "whatsapp",
392
392
  name: "WhatsApp",
393
393
  });
394
+ export const webflowService = defineIntegrationService({
395
+ connectionMethods: [{ id: "oauth", name: "OAuth", type: "redirect" }],
396
+ description: "Connect Webflow sites and workspaces.",
397
+ id: "webflow",
398
+ name: "Webflow",
399
+ });
394
400
  export const xaiService = defineApiKeyService({
395
401
  description: "Connect an xAI API key.",
396
402
  id: "xai",
@@ -435,6 +441,7 @@ export const integrationCatalog = defineIntegrationCatalog([
435
441
  trelloService,
436
442
  vercelAiGatewayService,
437
443
  vercelService,
444
+ webflowService,
438
445
  whatsappService,
439
446
  xaiService,
440
447
  ]);
package/dist/index.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- export { airtableService, anthropicService, apolloService, asanaService, brevoService, cerebrasService, chatgptService, cloudflareService, codexService, cohereService, convexService, deepinfraService, deepseekService, firecrawlService, fireworksService, getIntegrationService, githubService, googleGenaiService, googleService, groqService, huggingfaceService, integrationCatalog, linearService, microsoftService, millionverifierService, mistralService, openaiService, openrouterService, perplexityService, postgresService, resendService, scrapflyService, slackService, stripeService, tidycalService, togetheraiService, trelloService, vercelAiGatewayService, vercelService, whatsappService, xaiService, type IntegrationServiceId, } from "./catalog.js";
1
+ export { airtableService, anthropicService, apolloService, asanaService, brevoService, cerebrasService, chatgptService, cloudflareService, codexService, cohereService, convexService, deepinfraService, deepseekService, firecrawlService, fireworksService, getIntegrationService, githubService, googleGenaiService, googleService, groqService, huggingfaceService, integrationCatalog, linearService, microsoftService, millionverifierService, mistralService, openaiService, openrouterService, perplexityService, postgresService, resendService, scrapflyService, slackService, stripeService, tidycalService, togetheraiService, trelloService, vercelAiGatewayService, vercelService, webflowService, whatsappService, xaiService, type IntegrationServiceId, } from "./catalog.js";
2
2
  export { defineIntegrationCatalog, defineIntegrationService, integrationScope, type IntegrationAccountConnectionOption, type IntegrationAccountRequirement, type IntegrationConnectionDefinition, type IntegrationConnectionNotice, type IntegrationFormField, type IntegrationScopeRequirement, type IntegrationServiceDefinition, type ScopeRequirementGroup, type TriggerDefinition, type TriggerPresentation, type TriggerPresentationContext, type TriggerPresentationDetail, type TriggerScopePresentation, type TriggerPresentationValue, } from "./types.js";
3
3
  export { getDashboardRunEndpoint, getDashboardRunEndpointKey, getHttpTriggerEndpoint, getHttpTriggerEndpointKey, getMailhookAddress, getMailhookAddressKey, DASHBOARD_RUN_CONFIG_SCHEMA, getTriggerDefinition, getTriggerName, getTriggerPresentation, isTriggerVisible, PLATFORM_EMAIL_DOMAIN, triggerCatalog, triggerDefinitions, type DashboardRunConfig, type DashboardRunEndpointOptions, type DashboardRunField, type HttpTriggerEndpointOptions, type HttpTriggerScope, type MailhookAddressOptions, type MailhookScope, type TriggerType, } from "./triggers/index.js";
package/dist/index.js CHANGED
@@ -1,3 +1,3 @@
1
- export { airtableService, anthropicService, apolloService, asanaService, brevoService, cerebrasService, chatgptService, cloudflareService, codexService, cohereService, convexService, deepinfraService, deepseekService, firecrawlService, fireworksService, getIntegrationService, githubService, googleGenaiService, googleService, groqService, huggingfaceService, integrationCatalog, linearService, microsoftService, millionverifierService, mistralService, openaiService, openrouterService, perplexityService, postgresService, resendService, scrapflyService, slackService, stripeService, tidycalService, togetheraiService, trelloService, vercelAiGatewayService, vercelService, whatsappService, xaiService, } from "./catalog.js";
1
+ export { airtableService, anthropicService, apolloService, asanaService, brevoService, cerebrasService, chatgptService, cloudflareService, codexService, cohereService, convexService, deepinfraService, deepseekService, firecrawlService, fireworksService, getIntegrationService, githubService, googleGenaiService, googleService, groqService, huggingfaceService, integrationCatalog, linearService, microsoftService, millionverifierService, mistralService, openaiService, openrouterService, perplexityService, postgresService, resendService, scrapflyService, slackService, stripeService, tidycalService, togetheraiService, trelloService, vercelAiGatewayService, vercelService, webflowService, whatsappService, xaiService, } from "./catalog.js";
2
2
  export { defineIntegrationCatalog, defineIntegrationService, integrationScope, } from "./types.js";
3
3
  export { getDashboardRunEndpoint, getDashboardRunEndpointKey, getHttpTriggerEndpoint, getHttpTriggerEndpointKey, getMailhookAddress, getMailhookAddressKey, DASHBOARD_RUN_CONFIG_SCHEMA, getTriggerDefinition, getTriggerName, getTriggerPresentation, isTriggerVisible, PLATFORM_EMAIL_DOMAIN, triggerCatalog, triggerDefinitions, } from "./triggers/index.js";
@@ -65,6 +65,66 @@ export declare const triggerDefinitions: {
65
65
  };
66
66
  readonly type: "whatsapp.message.statusEvent";
67
67
  };
68
+ readonly webflowCollectionItemChanged: {
69
+ readonly account: import("..").IntegrationAccountRequirement<"webflow">;
70
+ readonly type: "webflow.collectionItem.changed";
71
+ };
72
+ readonly webflowCollectionItemCreated: {
73
+ readonly account: import("..").IntegrationAccountRequirement<"webflow">;
74
+ readonly type: "webflow.collectionItem.created";
75
+ };
76
+ readonly webflowCollectionItemDeleted: {
77
+ readonly account: import("..").IntegrationAccountRequirement<"webflow">;
78
+ readonly type: "webflow.collectionItem.deleted";
79
+ };
80
+ readonly webflowCollectionItemPublished: {
81
+ readonly account: import("..").IntegrationAccountRequirement<"webflow">;
82
+ readonly type: "webflow.collectionItem.published";
83
+ };
84
+ readonly webflowCollectionItemUnpublished: {
85
+ readonly account: import("..").IntegrationAccountRequirement<"webflow">;
86
+ readonly type: "webflow.collectionItem.unpublished";
87
+ };
88
+ readonly webflowCommentCreated: {
89
+ readonly account: import("..").IntegrationAccountRequirement<"webflow">;
90
+ readonly type: "webflow.comment.created";
91
+ };
92
+ readonly webflowEvent: {
93
+ readonly account: import("..").IntegrationAccountRequirement<"webflow">;
94
+ readonly type: "webflow.event";
95
+ };
96
+ readonly webflowFormSubmitted: {
97
+ readonly account: import("..").IntegrationAccountRequirement<"webflow">;
98
+ readonly type: "webflow.form.submitted";
99
+ };
100
+ readonly webflowInventoryChanged: {
101
+ readonly account: import("..").IntegrationAccountRequirement<"webflow">;
102
+ readonly type: "webflow.inventory.changed";
103
+ };
104
+ readonly webflowOrderChanged: {
105
+ readonly account: import("..").IntegrationAccountRequirement<"webflow">;
106
+ readonly type: "webflow.order.changed";
107
+ };
108
+ readonly webflowOrderCreated: {
109
+ readonly account: import("..").IntegrationAccountRequirement<"webflow">;
110
+ readonly type: "webflow.order.created";
111
+ };
112
+ readonly webflowPageCreated: {
113
+ readonly account: import("..").IntegrationAccountRequirement<"webflow">;
114
+ readonly type: "webflow.page.created";
115
+ };
116
+ readonly webflowPageDeleted: {
117
+ readonly account: import("..").IntegrationAccountRequirement<"webflow">;
118
+ readonly type: "webflow.page.deleted";
119
+ };
120
+ readonly webflowPageMetadataUpdated: {
121
+ readonly account: import("..").IntegrationAccountRequirement<"webflow">;
122
+ readonly type: "webflow.page.metadataUpdated";
123
+ };
124
+ readonly webflowSitePublished: {
125
+ readonly account: import("..").IntegrationAccountRequirement<"webflow">;
126
+ readonly type: "webflow.site.published";
127
+ };
68
128
  readonly vercelDeployment: {
69
129
  readonly account: {
70
130
  readonly connectionOptions: readonly [{
@@ -3481,6 +3541,66 @@ export declare const triggerCatalog: ({
3481
3541
  readonly serviceId: "vercel";
3482
3542
  };
3483
3543
  type: "vercel.project.renamed";
3544
+ } | {
3545
+ name: string;
3546
+ account: import("..").IntegrationAccountRequirement<"webflow">;
3547
+ type: "webflow.collectionItem.changed";
3548
+ } | {
3549
+ name: string;
3550
+ account: import("..").IntegrationAccountRequirement<"webflow">;
3551
+ type: "webflow.collectionItem.created";
3552
+ } | {
3553
+ name: string;
3554
+ account: import("..").IntegrationAccountRequirement<"webflow">;
3555
+ type: "webflow.collectionItem.deleted";
3556
+ } | {
3557
+ name: string;
3558
+ account: import("..").IntegrationAccountRequirement<"webflow">;
3559
+ type: "webflow.collectionItem.published";
3560
+ } | {
3561
+ name: string;
3562
+ account: import("..").IntegrationAccountRequirement<"webflow">;
3563
+ type: "webflow.collectionItem.unpublished";
3564
+ } | {
3565
+ name: string;
3566
+ account: import("..").IntegrationAccountRequirement<"webflow">;
3567
+ type: "webflow.comment.created";
3568
+ } | {
3569
+ name: string;
3570
+ account: import("..").IntegrationAccountRequirement<"webflow">;
3571
+ type: "webflow.event";
3572
+ } | {
3573
+ name: string;
3574
+ account: import("..").IntegrationAccountRequirement<"webflow">;
3575
+ type: "webflow.form.submitted";
3576
+ } | {
3577
+ name: string;
3578
+ account: import("..").IntegrationAccountRequirement<"webflow">;
3579
+ type: "webflow.inventory.changed";
3580
+ } | {
3581
+ name: string;
3582
+ account: import("..").IntegrationAccountRequirement<"webflow">;
3583
+ type: "webflow.order.changed";
3584
+ } | {
3585
+ name: string;
3586
+ account: import("..").IntegrationAccountRequirement<"webflow">;
3587
+ type: "webflow.order.created";
3588
+ } | {
3589
+ name: string;
3590
+ account: import("..").IntegrationAccountRequirement<"webflow">;
3591
+ type: "webflow.page.created";
3592
+ } | {
3593
+ name: string;
3594
+ account: import("..").IntegrationAccountRequirement<"webflow">;
3595
+ type: "webflow.page.deleted";
3596
+ } | {
3597
+ name: string;
3598
+ account: import("..").IntegrationAccountRequirement<"webflow">;
3599
+ type: "webflow.page.metadataUpdated";
3600
+ } | {
3601
+ name: string;
3602
+ account: import("..").IntegrationAccountRequirement<"webflow">;
3603
+ type: "webflow.site.published";
3484
3604
  } | {
3485
3605
  name: string;
3486
3606
  account: {
@@ -12,6 +12,7 @@ import { slackTriggerDefinitions } from "./slack.js";
12
12
  import { stripeTriggerDefinitions } from "./stripe.js";
13
13
  import { trelloTriggerDefinitions } from "./trello.js";
14
14
  import { vercelTriggerDefinitions } from "./vercel.js";
15
+ import { webflowTriggerDefinitions } from "./webflow.js";
15
16
  import { whatsappTriggerDefinitions } from "./whatsapp.js";
16
17
  import { sentenceCase } from "./name.js";
17
18
  import { getIntegrationService } from "../catalog.js";
@@ -32,6 +33,7 @@ export const triggerDefinitions = {
32
33
  ...stripeTriggerDefinitions,
33
34
  ...trelloTriggerDefinitions,
34
35
  ...vercelTriggerDefinitions,
36
+ ...webflowTriggerDefinitions,
35
37
  ...whatsappTriggerDefinitions,
36
38
  };
37
39
  /** Trigger definitions with inferred display names materialized. */
@@ -0,0 +1,63 @@
1
+ import type { IntegrationAccountRequirement } from "../types.js";
2
+ export declare const webflowTriggerDefinitions: {
3
+ readonly webflowCollectionItemChanged: {
4
+ readonly account: IntegrationAccountRequirement<"webflow">;
5
+ readonly type: "webflow.collectionItem.changed";
6
+ };
7
+ readonly webflowCollectionItemCreated: {
8
+ readonly account: IntegrationAccountRequirement<"webflow">;
9
+ readonly type: "webflow.collectionItem.created";
10
+ };
11
+ readonly webflowCollectionItemDeleted: {
12
+ readonly account: IntegrationAccountRequirement<"webflow">;
13
+ readonly type: "webflow.collectionItem.deleted";
14
+ };
15
+ readonly webflowCollectionItemPublished: {
16
+ readonly account: IntegrationAccountRequirement<"webflow">;
17
+ readonly type: "webflow.collectionItem.published";
18
+ };
19
+ readonly webflowCollectionItemUnpublished: {
20
+ readonly account: IntegrationAccountRequirement<"webflow">;
21
+ readonly type: "webflow.collectionItem.unpublished";
22
+ };
23
+ readonly webflowCommentCreated: {
24
+ readonly account: IntegrationAccountRequirement<"webflow">;
25
+ readonly type: "webflow.comment.created";
26
+ };
27
+ readonly webflowEvent: {
28
+ readonly account: IntegrationAccountRequirement<"webflow">;
29
+ readonly type: "webflow.event";
30
+ };
31
+ readonly webflowFormSubmitted: {
32
+ readonly account: IntegrationAccountRequirement<"webflow">;
33
+ readonly type: "webflow.form.submitted";
34
+ };
35
+ readonly webflowInventoryChanged: {
36
+ readonly account: IntegrationAccountRequirement<"webflow">;
37
+ readonly type: "webflow.inventory.changed";
38
+ };
39
+ readonly webflowOrderChanged: {
40
+ readonly account: IntegrationAccountRequirement<"webflow">;
41
+ readonly type: "webflow.order.changed";
42
+ };
43
+ readonly webflowOrderCreated: {
44
+ readonly account: IntegrationAccountRequirement<"webflow">;
45
+ readonly type: "webflow.order.created";
46
+ };
47
+ readonly webflowPageCreated: {
48
+ readonly account: IntegrationAccountRequirement<"webflow">;
49
+ readonly type: "webflow.page.created";
50
+ };
51
+ readonly webflowPageDeleted: {
52
+ readonly account: IntegrationAccountRequirement<"webflow">;
53
+ readonly type: "webflow.page.deleted";
54
+ };
55
+ readonly webflowPageMetadataUpdated: {
56
+ readonly account: IntegrationAccountRequirement<"webflow">;
57
+ readonly type: "webflow.page.metadataUpdated";
58
+ };
59
+ readonly webflowSitePublished: {
60
+ readonly account: IntegrationAccountRequirement<"webflow">;
61
+ readonly type: "webflow.site.published";
62
+ };
63
+ };
@@ -0,0 +1,86 @@
1
+ const WEBFLOW_SITE_READ_ACCOUNT = webflowAccount(["sites:read"]);
2
+ export const webflowTriggerDefinitions = {
3
+ webflowCollectionItemChanged: {
4
+ account: webflowAccount(["cms:read"]),
5
+ type: "webflow.collectionItem.changed",
6
+ },
7
+ webflowCollectionItemCreated: {
8
+ account: webflowAccount(["cms:read"]),
9
+ type: "webflow.collectionItem.created",
10
+ },
11
+ webflowCollectionItemDeleted: {
12
+ account: webflowAccount(["cms:read"]),
13
+ type: "webflow.collectionItem.deleted",
14
+ },
15
+ webflowCollectionItemPublished: {
16
+ account: webflowAccount(["cms:read"]),
17
+ type: "webflow.collectionItem.published",
18
+ },
19
+ webflowCollectionItemUnpublished: {
20
+ account: webflowAccount(["cms:read"]),
21
+ type: "webflow.collectionItem.unpublished",
22
+ },
23
+ webflowCommentCreated: {
24
+ account: webflowAccount(["comments:read"]),
25
+ type: "webflow.comment.created",
26
+ },
27
+ webflowEvent: {
28
+ account: webflowAccount([
29
+ "cms:read",
30
+ "comments:read",
31
+ "ecommerce:read",
32
+ "forms:read",
33
+ "pages:read",
34
+ "sites:read",
35
+ ]),
36
+ type: "webflow.event",
37
+ },
38
+ webflowFormSubmitted: {
39
+ account: webflowAccount(["forms:read"]),
40
+ type: "webflow.form.submitted",
41
+ },
42
+ webflowInventoryChanged: {
43
+ account: webflowAccount(["ecommerce:read"]),
44
+ type: "webflow.inventory.changed",
45
+ },
46
+ webflowOrderChanged: {
47
+ account: webflowAccount(["ecommerce:read"]),
48
+ type: "webflow.order.changed",
49
+ },
50
+ webflowOrderCreated: {
51
+ account: webflowAccount(["ecommerce:read"]),
52
+ type: "webflow.order.created",
53
+ },
54
+ webflowPageCreated: {
55
+ account: webflowAccount(["pages:read"]),
56
+ type: "webflow.page.created",
57
+ },
58
+ webflowPageDeleted: {
59
+ account: webflowAccount(["pages:read"]),
60
+ type: "webflow.page.deleted",
61
+ },
62
+ webflowPageMetadataUpdated: {
63
+ account: webflowAccount(["pages:read"]),
64
+ type: "webflow.page.metadataUpdated",
65
+ },
66
+ webflowSitePublished: {
67
+ account: WEBFLOW_SITE_READ_ACCOUNT,
68
+ type: "webflow.site.published",
69
+ },
70
+ };
71
+ /**
72
+ * Requires webhook management plus the scopes needed for delivered events.
73
+ *
74
+ * @param eventScopes - Read scopes required by the selected provider events.
75
+ */
76
+ function webflowAccount(eventScopes) {
77
+ return {
78
+ connectionOptions: [
79
+ {
80
+ connectionMethodId: "oauth",
81
+ requiredScopes: ["sites:write", ...eventScopes],
82
+ },
83
+ ],
84
+ serviceId: "webflow",
85
+ };
86
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@automate.ax/catalog",
3
- "version": "0.84.0",
3
+ "version": "0.85.0",
4
4
  "description": "Shared integration service and trigger definitions for Automate.ax.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -39,6 +39,7 @@
39
39
  "./triggers/stripe": "./src/triggers/stripe.ts",
40
40
  "./triggers/trello": "./src/triggers/trello.ts",
41
41
  "./triggers/vercel": "./src/triggers/vercel.ts",
42
+ "./triggers/webflow": "./src/triggers/webflow.ts",
42
43
  "./triggers/whatsapp": "./src/triggers/whatsapp.ts"
43
44
  },
44
45
  "cjs": false,
@@ -47,7 +48,7 @@
47
48
  }
48
49
  },
49
50
  "devDependencies": {
50
- "@internal/config": "0.1.0",
51
+ "@internal/config": "0.2.0",
51
52
  "@types/bun": "latest",
52
53
  "@typescript/native": "npm:typescript@^7.0.2",
53
54
  "@zachsents/oxlint-config": "^0.4.1",
@@ -183,6 +184,11 @@
183
184
  "types": "./dist/triggers/vercel.d.ts",
184
185
  "default": "./dist/triggers/vercel.js"
185
186
  },
187
+ "./triggers/webflow": {
188
+ "bun": "./src/triggers/webflow.ts",
189
+ "types": "./dist/triggers/webflow.d.ts",
190
+ "default": "./dist/triggers/webflow.js"
191
+ },
186
192
  "./triggers/whatsapp": {
187
193
  "bun": "./src/triggers/whatsapp.ts",
188
194
  "types": "./dist/triggers/whatsapp.d.ts",
package/src/catalog.ts CHANGED
@@ -438,6 +438,13 @@ export const whatsappService = defineIntegrationService({
438
438
  name: "WhatsApp",
439
439
  })
440
440
 
441
+ export const webflowService = defineIntegrationService({
442
+ connectionMethods: [{ id: "oauth", name: "OAuth", type: "redirect" }],
443
+ description: "Connect Webflow sites and workspaces.",
444
+ id: "webflow",
445
+ name: "Webflow",
446
+ })
447
+
441
448
  export const xaiService = defineApiKeyService({
442
449
  description: "Connect an xAI API key.",
443
450
  id: "xai",
@@ -483,6 +490,7 @@ export const integrationCatalog = defineIntegrationCatalog([
483
490
  trelloService,
484
491
  vercelAiGatewayService,
485
492
  vercelService,
493
+ webflowService,
486
494
  whatsappService,
487
495
  xaiService,
488
496
  ])
package/src/index.ts CHANGED
@@ -38,6 +38,7 @@ export {
38
38
  trelloService,
39
39
  vercelAiGatewayService,
40
40
  vercelService,
41
+ webflowService,
41
42
  whatsappService,
42
43
  xaiService,
43
44
  type IntegrationServiceId,
@@ -12,6 +12,7 @@ import { slackTriggerDefinitions } from "./slack"
12
12
  import { stripeTriggerDefinitions } from "./stripe"
13
13
  import { trelloTriggerDefinitions } from "./trello"
14
14
  import { vercelTriggerDefinitions } from "./vercel"
15
+ import { webflowTriggerDefinitions } from "./webflow"
15
16
  import { whatsappTriggerDefinitions } from "./whatsapp"
16
17
  import { sentenceCase } from "./name"
17
18
  import { getIntegrationService } from "../catalog"
@@ -56,6 +57,7 @@ export const triggerDefinitions = {
56
57
  ...stripeTriggerDefinitions,
57
58
  ...trelloTriggerDefinitions,
58
59
  ...vercelTriggerDefinitions,
60
+ ...webflowTriggerDefinitions,
59
61
  ...whatsappTriggerDefinitions,
60
62
  } as const satisfies Record<string, TriggerDefinition>
61
63
 
@@ -0,0 +1,92 @@
1
+ import type { IntegrationAccountRequirement, TriggerDefinition } from "../types"
2
+
3
+ const WEBFLOW_SITE_READ_ACCOUNT = webflowAccount(["sites:read"])
4
+
5
+ export const webflowTriggerDefinitions = {
6
+ webflowCollectionItemChanged: {
7
+ account: webflowAccount(["cms:read"]),
8
+ type: "webflow.collectionItem.changed",
9
+ },
10
+ webflowCollectionItemCreated: {
11
+ account: webflowAccount(["cms:read"]),
12
+ type: "webflow.collectionItem.created",
13
+ },
14
+ webflowCollectionItemDeleted: {
15
+ account: webflowAccount(["cms:read"]),
16
+ type: "webflow.collectionItem.deleted",
17
+ },
18
+ webflowCollectionItemPublished: {
19
+ account: webflowAccount(["cms:read"]),
20
+ type: "webflow.collectionItem.published",
21
+ },
22
+ webflowCollectionItemUnpublished: {
23
+ account: webflowAccount(["cms:read"]),
24
+ type: "webflow.collectionItem.unpublished",
25
+ },
26
+ webflowCommentCreated: {
27
+ account: webflowAccount(["comments:read"]),
28
+ type: "webflow.comment.created",
29
+ },
30
+ webflowEvent: {
31
+ account: webflowAccount([
32
+ "cms:read",
33
+ "comments:read",
34
+ "ecommerce:read",
35
+ "forms:read",
36
+ "pages:read",
37
+ "sites:read",
38
+ ]),
39
+ type: "webflow.event",
40
+ },
41
+ webflowFormSubmitted: {
42
+ account: webflowAccount(["forms:read"]),
43
+ type: "webflow.form.submitted",
44
+ },
45
+ webflowInventoryChanged: {
46
+ account: webflowAccount(["ecommerce:read"]),
47
+ type: "webflow.inventory.changed",
48
+ },
49
+ webflowOrderChanged: {
50
+ account: webflowAccount(["ecommerce:read"]),
51
+ type: "webflow.order.changed",
52
+ },
53
+ webflowOrderCreated: {
54
+ account: webflowAccount(["ecommerce:read"]),
55
+ type: "webflow.order.created",
56
+ },
57
+ webflowPageCreated: {
58
+ account: webflowAccount(["pages:read"]),
59
+ type: "webflow.page.created",
60
+ },
61
+ webflowPageDeleted: {
62
+ account: webflowAccount(["pages:read"]),
63
+ type: "webflow.page.deleted",
64
+ },
65
+ webflowPageMetadataUpdated: {
66
+ account: webflowAccount(["pages:read"]),
67
+ type: "webflow.page.metadataUpdated",
68
+ },
69
+ webflowSitePublished: {
70
+ account: WEBFLOW_SITE_READ_ACCOUNT,
71
+ type: "webflow.site.published",
72
+ },
73
+ } as const satisfies Record<string, TriggerDefinition>
74
+
75
+ /**
76
+ * Requires webhook management plus the scopes needed for delivered events.
77
+ *
78
+ * @param eventScopes - Read scopes required by the selected provider events.
79
+ */
80
+ function webflowAccount(
81
+ eventScopes: readonly string[],
82
+ ): IntegrationAccountRequirement<"webflow"> {
83
+ return {
84
+ connectionOptions: [
85
+ {
86
+ connectionMethodId: "oauth",
87
+ requiredScopes: ["sites:write", ...eventScopes],
88
+ },
89
+ ],
90
+ serviceId: "webflow",
91
+ }
92
+ }