@automate.ax/catalog 0.88.9 → 0.89.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
@@ -462,6 +462,29 @@ export declare const mistralService: {
462
462
  readonly credentialUrl?: string | undefined;
463
463
  }];
464
464
  };
465
+ export declare const notionService: {
466
+ readonly connectionMethods: readonly [{
467
+ readonly id: "oauth";
468
+ readonly name: "OAuth";
469
+ readonly type: "redirect";
470
+ }, {
471
+ readonly credentialUrl: "https://www.notion.so/developers/tokens";
472
+ readonly fields: readonly [{
473
+ readonly input: "password";
474
+ readonly label: "Personal access token";
475
+ readonly name: "apiKey";
476
+ readonly placeholder: "ntn_...";
477
+ readonly required: true;
478
+ }];
479
+ readonly id: "personal-access-token";
480
+ readonly name: "Personal access token";
481
+ readonly type: "form";
482
+ }];
483
+ readonly description: "Connect a Notion workspace with OAuth or a personal access token.";
484
+ readonly id: "notion";
485
+ readonly name: "Notion";
486
+ readonly preferredConnectionMethodId: "oauth";
487
+ };
465
488
  export declare const openaiService: {
466
489
  readonly id: "openai";
467
490
  readonly name: string;
@@ -1212,6 +1235,28 @@ export declare const integrationCatalog: readonly [{
1212
1235
  readonly type: "form";
1213
1236
  readonly credentialUrl?: string | undefined;
1214
1237
  }];
1238
+ }, {
1239
+ readonly connectionMethods: readonly [{
1240
+ readonly id: "oauth";
1241
+ readonly name: "OAuth";
1242
+ readonly type: "redirect";
1243
+ }, {
1244
+ readonly credentialUrl: "https://www.notion.so/developers/tokens";
1245
+ readonly fields: readonly [{
1246
+ readonly input: "password";
1247
+ readonly label: "Personal access token";
1248
+ readonly name: "apiKey";
1249
+ readonly placeholder: "ntn_...";
1250
+ readonly required: true;
1251
+ }];
1252
+ readonly id: "personal-access-token";
1253
+ readonly name: "Personal access token";
1254
+ readonly type: "form";
1255
+ }];
1256
+ readonly description: "Connect a Notion workspace with OAuth or a personal access token.";
1257
+ readonly id: "notion";
1258
+ readonly name: "Notion";
1259
+ readonly preferredConnectionMethodId: "oauth";
1215
1260
  }, {
1216
1261
  readonly id: "openai";
1217
1262
  readonly name: string;
package/dist/catalog.js CHANGED
@@ -271,6 +271,30 @@ export const mistralService = defineApiKeyService({
271
271
  id: "mistral",
272
272
  name: "Mistral AI",
273
273
  });
274
+ export const notionService = defineIntegrationService({
275
+ connectionMethods: [
276
+ { id: "oauth", name: "OAuth", type: "redirect" },
277
+ {
278
+ credentialUrl: "https://www.notion.so/developers/tokens",
279
+ fields: [
280
+ {
281
+ input: "password",
282
+ label: "Personal access token",
283
+ name: "apiKey",
284
+ placeholder: "ntn_...",
285
+ required: true,
286
+ },
287
+ ],
288
+ id: "personal-access-token",
289
+ name: "Personal access token",
290
+ type: "form",
291
+ },
292
+ ],
293
+ description: "Connect a Notion workspace with OAuth or a personal access token.",
294
+ id: "notion",
295
+ name: "Notion",
296
+ preferredConnectionMethodId: "oauth",
297
+ });
274
298
  export const openaiService = defineApiKeyService({
275
299
  credentialUrl: "https://platform.openai.com/api-keys",
276
300
  description: "Connect an OpenAI API key.",
@@ -493,6 +517,7 @@ export const integrationCatalog = defineIntegrationCatalog([
493
517
  microsoftService,
494
518
  millionverifierService,
495
519
  mistralService,
520
+ notionService,
496
521
  openaiService,
497
522
  onePasswordService,
498
523
  openrouterService,
package/dist/index.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- export { airtableService, anthropicService, apolloService, asanaService, brevoService, cerebrasService, chatgptService, cloudflareService, closeService, codexService, cohereService, convexService, deepinfraService, deepseekService, firecrawlService, fireworksService, getIntegrationService, githubService, googleGenaiService, googleService, groqService, huggingfaceService, integrationCatalog, linearService, microsoftService, millionverifierService, mistralService, openaiService, onePasswordService, openrouterService, perplexityService, postgresService, resendService, scrapflyService, slackService, stripeService, tidycalService, togetheraiService, trelloService, vercelAiGatewayService, vercelService, webflowService, whatsappService, xaiService, type IntegrationServiceId, } from "./catalog.js";
1
+ export { airtableService, anthropicService, apolloService, asanaService, brevoService, cerebrasService, chatgptService, cloudflareService, closeService, codexService, cohereService, convexService, deepinfraService, deepseekService, firecrawlService, fireworksService, getIntegrationService, githubService, googleGenaiService, googleService, groqService, huggingfaceService, integrationCatalog, linearService, microsoftService, millionverifierService, mistralService, notionService, openaiService, onePasswordService, 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, closeService, codexService, cohereService, convexService, deepinfraService, deepseekService, firecrawlService, fireworksService, getIntegrationService, githubService, googleGenaiService, googleService, groqService, huggingfaceService, integrationCatalog, linearService, microsoftService, millionverifierService, mistralService, openaiService, onePasswordService, openrouterService, perplexityService, postgresService, resendService, scrapflyService, slackService, stripeService, tidycalService, togetheraiService, trelloService, vercelAiGatewayService, vercelService, webflowService, whatsappService, xaiService, } from "./catalog.js";
1
+ export { airtableService, anthropicService, apolloService, asanaService, brevoService, cerebrasService, chatgptService, cloudflareService, closeService, codexService, cohereService, convexService, deepinfraService, deepseekService, firecrawlService, fireworksService, getIntegrationService, githubService, googleGenaiService, googleService, groqService, huggingfaceService, integrationCatalog, linearService, microsoftService, millionverifierService, mistralService, notionService, openaiService, onePasswordService, 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";
@@ -863,6 +863,126 @@ export declare const triggerDefinitions: {
863
863
  };
864
864
  readonly type: "resend.email.suppressed";
865
865
  };
866
+ readonly notionCommentCreated: {
867
+ account: import("..").IntegrationAccountRequirement<"notion">;
868
+ type: "notion.comment.created";
869
+ };
870
+ readonly notionCommentDeleted: {
871
+ account: import("..").IntegrationAccountRequirement<"notion">;
872
+ type: "notion.comment.deleted";
873
+ };
874
+ readonly notionCommentUpdated: {
875
+ account: import("..").IntegrationAccountRequirement<"notion">;
876
+ type: "notion.comment.updated";
877
+ };
878
+ readonly notionDatabaseCreated: {
879
+ account: import("..").IntegrationAccountRequirement<"notion">;
880
+ type: "notion.database.created";
881
+ };
882
+ readonly notionDatabaseDeleted: {
883
+ account: import("..").IntegrationAccountRequirement<"notion">;
884
+ type: "notion.database.deleted";
885
+ };
886
+ readonly notionDatabaseMoved: {
887
+ account: import("..").IntegrationAccountRequirement<"notion">;
888
+ type: "notion.database.moved";
889
+ };
890
+ readonly notionDatabaseUndeleted: {
891
+ account: import("..").IntegrationAccountRequirement<"notion">;
892
+ type: "notion.database.undeleted";
893
+ };
894
+ readonly notionDataSourceContentUpdated: {
895
+ account: import("..").IntegrationAccountRequirement<"notion">;
896
+ type: "notion.dataSource.contentUpdated";
897
+ };
898
+ readonly notionDataSourceCreated: {
899
+ account: import("..").IntegrationAccountRequirement<"notion">;
900
+ type: "notion.dataSource.created";
901
+ };
902
+ readonly notionDataSourceDeleted: {
903
+ account: import("..").IntegrationAccountRequirement<"notion">;
904
+ type: "notion.dataSource.deleted";
905
+ };
906
+ readonly notionDataSourceMoved: {
907
+ account: import("..").IntegrationAccountRequirement<"notion">;
908
+ type: "notion.dataSource.moved";
909
+ };
910
+ readonly notionDataSourceSchemaUpdated: {
911
+ account: import("..").IntegrationAccountRequirement<"notion">;
912
+ type: "notion.dataSource.schemaUpdated";
913
+ };
914
+ readonly notionDataSourceUndeleted: {
915
+ account: import("..").IntegrationAccountRequirement<"notion">;
916
+ type: "notion.dataSource.undeleted";
917
+ };
918
+ readonly notionEvent: {
919
+ account: import("..").IntegrationAccountRequirement<"notion">;
920
+ type: "notion.event";
921
+ };
922
+ readonly notionFileUploadCompleted: {
923
+ account: import("..").IntegrationAccountRequirement<"notion">;
924
+ type: "notion.fileUpload.completed";
925
+ };
926
+ readonly notionFileUploadCreated: {
927
+ account: import("..").IntegrationAccountRequirement<"notion">;
928
+ type: "notion.fileUpload.created";
929
+ };
930
+ readonly notionFileUploadExpired: {
931
+ account: import("..").IntegrationAccountRequirement<"notion">;
932
+ type: "notion.fileUpload.expired";
933
+ };
934
+ readonly notionFileUploadFailed: {
935
+ account: import("..").IntegrationAccountRequirement<"notion">;
936
+ type: "notion.fileUpload.failed";
937
+ };
938
+ readonly notionPageContentUpdated: {
939
+ account: import("..").IntegrationAccountRequirement<"notion">;
940
+ type: "notion.page.contentUpdated";
941
+ };
942
+ readonly notionPageCreated: {
943
+ account: import("..").IntegrationAccountRequirement<"notion">;
944
+ type: "notion.page.created";
945
+ };
946
+ readonly notionPageDeleted: {
947
+ account: import("..").IntegrationAccountRequirement<"notion">;
948
+ type: "notion.page.deleted";
949
+ };
950
+ readonly notionPageLocked: {
951
+ account: import("..").IntegrationAccountRequirement<"notion">;
952
+ type: "notion.page.locked";
953
+ };
954
+ readonly notionPageMoved: {
955
+ account: import("..").IntegrationAccountRequirement<"notion">;
956
+ type: "notion.page.moved";
957
+ };
958
+ readonly notionPagePropertiesUpdated: {
959
+ account: import("..").IntegrationAccountRequirement<"notion">;
960
+ type: "notion.page.propertiesUpdated";
961
+ };
962
+ readonly notionPageTranscriptDeleted: {
963
+ account: import("..").IntegrationAccountRequirement<"notion">;
964
+ type: "notion.page.transcriptDeleted";
965
+ };
966
+ readonly notionPageUndeleted: {
967
+ account: import("..").IntegrationAccountRequirement<"notion">;
968
+ type: "notion.page.undeleted";
969
+ };
970
+ readonly notionPageUnlocked: {
971
+ account: import("..").IntegrationAccountRequirement<"notion">;
972
+ type: "notion.page.unlocked";
973
+ };
974
+ readonly notionViewCreated: {
975
+ account: import("..").IntegrationAccountRequirement<"notion">;
976
+ type: "notion.view.created";
977
+ };
978
+ readonly notionViewDeleted: {
979
+ account: import("..").IntegrationAccountRequirement<"notion">;
980
+ type: "notion.view.deleted";
981
+ };
982
+ readonly notionViewUpdated: {
983
+ account: import("..").IntegrationAccountRequirement<"notion">;
984
+ type: "notion.view.updated";
985
+ };
866
986
  readonly outlookEmailReceived: {
867
987
  readonly account: {
868
988
  readonly connectionOptions: readonly [{
@@ -6266,6 +6386,126 @@ export declare const triggerCatalog: ({
6266
6386
  readonly serviceId: "microsoft";
6267
6387
  };
6268
6388
  type: "teams.chat.message.posted";
6389
+ } | {
6390
+ name: string;
6391
+ account: import("..").IntegrationAccountRequirement<"notion">;
6392
+ type: "notion.comment.created";
6393
+ } | {
6394
+ name: string;
6395
+ account: import("..").IntegrationAccountRequirement<"notion">;
6396
+ type: "notion.comment.deleted";
6397
+ } | {
6398
+ name: string;
6399
+ account: import("..").IntegrationAccountRequirement<"notion">;
6400
+ type: "notion.comment.updated";
6401
+ } | {
6402
+ name: string;
6403
+ account: import("..").IntegrationAccountRequirement<"notion">;
6404
+ type: "notion.database.created";
6405
+ } | {
6406
+ name: string;
6407
+ account: import("..").IntegrationAccountRequirement<"notion">;
6408
+ type: "notion.database.deleted";
6409
+ } | {
6410
+ name: string;
6411
+ account: import("..").IntegrationAccountRequirement<"notion">;
6412
+ type: "notion.database.moved";
6413
+ } | {
6414
+ name: string;
6415
+ account: import("..").IntegrationAccountRequirement<"notion">;
6416
+ type: "notion.database.undeleted";
6417
+ } | {
6418
+ name: string;
6419
+ account: import("..").IntegrationAccountRequirement<"notion">;
6420
+ type: "notion.dataSource.contentUpdated";
6421
+ } | {
6422
+ name: string;
6423
+ account: import("..").IntegrationAccountRequirement<"notion">;
6424
+ type: "notion.dataSource.created";
6425
+ } | {
6426
+ name: string;
6427
+ account: import("..").IntegrationAccountRequirement<"notion">;
6428
+ type: "notion.dataSource.deleted";
6429
+ } | {
6430
+ name: string;
6431
+ account: import("..").IntegrationAccountRequirement<"notion">;
6432
+ type: "notion.dataSource.moved";
6433
+ } | {
6434
+ name: string;
6435
+ account: import("..").IntegrationAccountRequirement<"notion">;
6436
+ type: "notion.dataSource.schemaUpdated";
6437
+ } | {
6438
+ name: string;
6439
+ account: import("..").IntegrationAccountRequirement<"notion">;
6440
+ type: "notion.dataSource.undeleted";
6441
+ } | {
6442
+ name: string;
6443
+ account: import("..").IntegrationAccountRequirement<"notion">;
6444
+ type: "notion.event";
6445
+ } | {
6446
+ name: string;
6447
+ account: import("..").IntegrationAccountRequirement<"notion">;
6448
+ type: "notion.fileUpload.completed";
6449
+ } | {
6450
+ name: string;
6451
+ account: import("..").IntegrationAccountRequirement<"notion">;
6452
+ type: "notion.fileUpload.created";
6453
+ } | {
6454
+ name: string;
6455
+ account: import("..").IntegrationAccountRequirement<"notion">;
6456
+ type: "notion.fileUpload.expired";
6457
+ } | {
6458
+ name: string;
6459
+ account: import("..").IntegrationAccountRequirement<"notion">;
6460
+ type: "notion.fileUpload.failed";
6461
+ } | {
6462
+ name: string;
6463
+ account: import("..").IntegrationAccountRequirement<"notion">;
6464
+ type: "notion.page.contentUpdated";
6465
+ } | {
6466
+ name: string;
6467
+ account: import("..").IntegrationAccountRequirement<"notion">;
6468
+ type: "notion.page.created";
6469
+ } | {
6470
+ name: string;
6471
+ account: import("..").IntegrationAccountRequirement<"notion">;
6472
+ type: "notion.page.deleted";
6473
+ } | {
6474
+ name: string;
6475
+ account: import("..").IntegrationAccountRequirement<"notion">;
6476
+ type: "notion.page.locked";
6477
+ } | {
6478
+ name: string;
6479
+ account: import("..").IntegrationAccountRequirement<"notion">;
6480
+ type: "notion.page.moved";
6481
+ } | {
6482
+ name: string;
6483
+ account: import("..").IntegrationAccountRequirement<"notion">;
6484
+ type: "notion.page.propertiesUpdated";
6485
+ } | {
6486
+ name: string;
6487
+ account: import("..").IntegrationAccountRequirement<"notion">;
6488
+ type: "notion.page.transcriptDeleted";
6489
+ } | {
6490
+ name: string;
6491
+ account: import("..").IntegrationAccountRequirement<"notion">;
6492
+ type: "notion.page.undeleted";
6493
+ } | {
6494
+ name: string;
6495
+ account: import("..").IntegrationAccountRequirement<"notion">;
6496
+ type: "notion.page.unlocked";
6497
+ } | {
6498
+ name: string;
6499
+ account: import("..").IntegrationAccountRequirement<"notion">;
6500
+ type: "notion.view.created";
6501
+ } | {
6502
+ name: string;
6503
+ account: import("..").IntegrationAccountRequirement<"notion">;
6504
+ type: "notion.view.deleted";
6505
+ } | {
6506
+ name: string;
6507
+ account: import("..").IntegrationAccountRequirement<"notion">;
6508
+ type: "notion.view.updated";
6269
6509
  } | {
6270
6510
  name: string;
6271
6511
  account: {
@@ -8,6 +8,7 @@ import { githubTriggerDefinitions } from "./github.js";
8
8
  import { googleTriggerDefinitions } from "./google.js";
9
9
  import { linearTriggerDefinitions } from "./linear.js";
10
10
  import { microsoftTriggerDefinitions } from "./microsoft.js";
11
+ import { notionTriggerDefinitions } from "./notion.js";
11
12
  import { resendTriggerDefinitions } from "./resend.js";
12
13
  import { slackTriggerDefinitions } from "./slack.js";
13
14
  import { stripeTriggerDefinitions } from "./stripe.js";
@@ -30,6 +31,7 @@ export const triggerDefinitions = {
30
31
  ...googleTriggerDefinitions,
31
32
  ...linearTriggerDefinitions,
32
33
  ...microsoftTriggerDefinitions,
34
+ ...notionTriggerDefinitions,
33
35
  ...resendTriggerDefinitions,
34
36
  ...slackTriggerDefinitions,
35
37
  ...stripeTriggerDefinitions,
@@ -0,0 +1,123 @@
1
+ import type { IntegrationAccountRequirement } from "../types.js";
2
+ export declare const notionTriggerDefinitions: {
3
+ readonly notionCommentCreated: {
4
+ account: IntegrationAccountRequirement<"notion">;
5
+ type: "notion.comment.created";
6
+ };
7
+ readonly notionCommentDeleted: {
8
+ account: IntegrationAccountRequirement<"notion">;
9
+ type: "notion.comment.deleted";
10
+ };
11
+ readonly notionCommentUpdated: {
12
+ account: IntegrationAccountRequirement<"notion">;
13
+ type: "notion.comment.updated";
14
+ };
15
+ readonly notionDatabaseCreated: {
16
+ account: IntegrationAccountRequirement<"notion">;
17
+ type: "notion.database.created";
18
+ };
19
+ readonly notionDatabaseDeleted: {
20
+ account: IntegrationAccountRequirement<"notion">;
21
+ type: "notion.database.deleted";
22
+ };
23
+ readonly notionDatabaseMoved: {
24
+ account: IntegrationAccountRequirement<"notion">;
25
+ type: "notion.database.moved";
26
+ };
27
+ readonly notionDatabaseUndeleted: {
28
+ account: IntegrationAccountRequirement<"notion">;
29
+ type: "notion.database.undeleted";
30
+ };
31
+ readonly notionDataSourceContentUpdated: {
32
+ account: IntegrationAccountRequirement<"notion">;
33
+ type: "notion.dataSource.contentUpdated";
34
+ };
35
+ readonly notionDataSourceCreated: {
36
+ account: IntegrationAccountRequirement<"notion">;
37
+ type: "notion.dataSource.created";
38
+ };
39
+ readonly notionDataSourceDeleted: {
40
+ account: IntegrationAccountRequirement<"notion">;
41
+ type: "notion.dataSource.deleted";
42
+ };
43
+ readonly notionDataSourceMoved: {
44
+ account: IntegrationAccountRequirement<"notion">;
45
+ type: "notion.dataSource.moved";
46
+ };
47
+ readonly notionDataSourceSchemaUpdated: {
48
+ account: IntegrationAccountRequirement<"notion">;
49
+ type: "notion.dataSource.schemaUpdated";
50
+ };
51
+ readonly notionDataSourceUndeleted: {
52
+ account: IntegrationAccountRequirement<"notion">;
53
+ type: "notion.dataSource.undeleted";
54
+ };
55
+ readonly notionEvent: {
56
+ account: IntegrationAccountRequirement<"notion">;
57
+ type: "notion.event";
58
+ };
59
+ readonly notionFileUploadCompleted: {
60
+ account: IntegrationAccountRequirement<"notion">;
61
+ type: "notion.fileUpload.completed";
62
+ };
63
+ readonly notionFileUploadCreated: {
64
+ account: IntegrationAccountRequirement<"notion">;
65
+ type: "notion.fileUpload.created";
66
+ };
67
+ readonly notionFileUploadExpired: {
68
+ account: IntegrationAccountRequirement<"notion">;
69
+ type: "notion.fileUpload.expired";
70
+ };
71
+ readonly notionFileUploadFailed: {
72
+ account: IntegrationAccountRequirement<"notion">;
73
+ type: "notion.fileUpload.failed";
74
+ };
75
+ readonly notionPageContentUpdated: {
76
+ account: IntegrationAccountRequirement<"notion">;
77
+ type: "notion.page.contentUpdated";
78
+ };
79
+ readonly notionPageCreated: {
80
+ account: IntegrationAccountRequirement<"notion">;
81
+ type: "notion.page.created";
82
+ };
83
+ readonly notionPageDeleted: {
84
+ account: IntegrationAccountRequirement<"notion">;
85
+ type: "notion.page.deleted";
86
+ };
87
+ readonly notionPageLocked: {
88
+ account: IntegrationAccountRequirement<"notion">;
89
+ type: "notion.page.locked";
90
+ };
91
+ readonly notionPageMoved: {
92
+ account: IntegrationAccountRequirement<"notion">;
93
+ type: "notion.page.moved";
94
+ };
95
+ readonly notionPagePropertiesUpdated: {
96
+ account: IntegrationAccountRequirement<"notion">;
97
+ type: "notion.page.propertiesUpdated";
98
+ };
99
+ readonly notionPageTranscriptDeleted: {
100
+ account: IntegrationAccountRequirement<"notion">;
101
+ type: "notion.page.transcriptDeleted";
102
+ };
103
+ readonly notionPageUndeleted: {
104
+ account: IntegrationAccountRequirement<"notion">;
105
+ type: "notion.page.undeleted";
106
+ };
107
+ readonly notionPageUnlocked: {
108
+ account: IntegrationAccountRequirement<"notion">;
109
+ type: "notion.page.unlocked";
110
+ };
111
+ readonly notionViewCreated: {
112
+ account: IntegrationAccountRequirement<"notion">;
113
+ type: "notion.view.created";
114
+ };
115
+ readonly notionViewDeleted: {
116
+ account: IntegrationAccountRequirement<"notion">;
117
+ type: "notion.view.deleted";
118
+ };
119
+ readonly notionViewUpdated: {
120
+ account: IntegrationAccountRequirement<"notion">;
121
+ type: "notion.view.updated";
122
+ };
123
+ };
@@ -0,0 +1,55 @@
1
+ const NOTION_READ_CONTENT_ACCOUNT = notionOAuthAccount(["read_content"]);
2
+ const NOTION_READ_COMMENTS_ACCOUNT = notionOAuthAccount(["read_comments"]);
3
+ const NOTION_INSERT_CONTENT_ACCOUNT = notionOAuthAccount(["insert_content"]);
4
+ export const notionTriggerDefinitions = {
5
+ notionCommentCreated: notionTrigger(NOTION_READ_COMMENTS_ACCOUNT, "notion.comment.created"),
6
+ notionCommentDeleted: notionTrigger(NOTION_READ_COMMENTS_ACCOUNT, "notion.comment.deleted"),
7
+ notionCommentUpdated: notionTrigger(NOTION_READ_COMMENTS_ACCOUNT, "notion.comment.updated"),
8
+ notionDatabaseCreated: notionTrigger(NOTION_READ_CONTENT_ACCOUNT, "notion.database.created"),
9
+ notionDatabaseDeleted: notionTrigger(NOTION_READ_CONTENT_ACCOUNT, "notion.database.deleted"),
10
+ notionDatabaseMoved: notionTrigger(NOTION_READ_CONTENT_ACCOUNT, "notion.database.moved"),
11
+ notionDatabaseUndeleted: notionTrigger(NOTION_READ_CONTENT_ACCOUNT, "notion.database.undeleted"),
12
+ notionDataSourceContentUpdated: notionTrigger(NOTION_READ_CONTENT_ACCOUNT, "notion.dataSource.contentUpdated"),
13
+ notionDataSourceCreated: notionTrigger(NOTION_READ_CONTENT_ACCOUNT, "notion.dataSource.created"),
14
+ notionDataSourceDeleted: notionTrigger(NOTION_READ_CONTENT_ACCOUNT, "notion.dataSource.deleted"),
15
+ notionDataSourceMoved: notionTrigger(NOTION_READ_CONTENT_ACCOUNT, "notion.dataSource.moved"),
16
+ notionDataSourceSchemaUpdated: notionTrigger(NOTION_READ_CONTENT_ACCOUNT, "notion.dataSource.schemaUpdated"),
17
+ notionDataSourceUndeleted: notionTrigger(NOTION_READ_CONTENT_ACCOUNT, "notion.dataSource.undeleted"),
18
+ notionEvent: notionTrigger(notionOAuthAccount(["insert_content", "read_comments", "read_content"]), "notion.event"),
19
+ notionFileUploadCompleted: notionTrigger(NOTION_INSERT_CONTENT_ACCOUNT, "notion.fileUpload.completed"),
20
+ notionFileUploadCreated: notionTrigger(NOTION_INSERT_CONTENT_ACCOUNT, "notion.fileUpload.created"),
21
+ notionFileUploadExpired: notionTrigger(NOTION_INSERT_CONTENT_ACCOUNT, "notion.fileUpload.expired"),
22
+ notionFileUploadFailed: notionTrigger(NOTION_INSERT_CONTENT_ACCOUNT, "notion.fileUpload.failed"),
23
+ notionPageContentUpdated: notionTrigger(NOTION_READ_CONTENT_ACCOUNT, "notion.page.contentUpdated"),
24
+ notionPageCreated: notionTrigger(NOTION_READ_CONTENT_ACCOUNT, "notion.page.created"),
25
+ notionPageDeleted: notionTrigger(NOTION_READ_CONTENT_ACCOUNT, "notion.page.deleted"),
26
+ notionPageLocked: notionTrigger(NOTION_READ_CONTENT_ACCOUNT, "notion.page.locked"),
27
+ notionPageMoved: notionTrigger(NOTION_READ_CONTENT_ACCOUNT, "notion.page.moved"),
28
+ notionPagePropertiesUpdated: notionTrigger(NOTION_READ_CONTENT_ACCOUNT, "notion.page.propertiesUpdated"),
29
+ notionPageTranscriptDeleted: notionTrigger(NOTION_READ_CONTENT_ACCOUNT, "notion.page.transcriptDeleted"),
30
+ notionPageUndeleted: notionTrigger(NOTION_READ_CONTENT_ACCOUNT, "notion.page.undeleted"),
31
+ notionPageUnlocked: notionTrigger(NOTION_READ_CONTENT_ACCOUNT, "notion.page.unlocked"),
32
+ notionViewCreated: notionTrigger(NOTION_READ_CONTENT_ACCOUNT, "notion.view.created"),
33
+ notionViewDeleted: notionTrigger(NOTION_READ_CONTENT_ACCOUNT, "notion.view.deleted"),
34
+ notionViewUpdated: notionTrigger(NOTION_READ_CONTENT_ACCOUNT, "notion.view.updated"),
35
+ };
36
+ /**
37
+ * Defines one Notion trigger with its exact stable event type.
38
+ *
39
+ * @param account - OAuth capability requirements for the event family.
40
+ * @param type - Stable internal event type.
41
+ */
42
+ function notionTrigger(account, type) {
43
+ return { account, type };
44
+ }
45
+ /**
46
+ * Creates the OAuth-only account requirement for a Notion webhook family.
47
+ *
48
+ * @param requiredScopes - Fixed Notion integration capabilities.
49
+ */
50
+ function notionOAuthAccount(requiredScopes) {
51
+ return {
52
+ connectionOptions: [{ connectionMethodId: "oauth", requiredScopes }],
53
+ serviceId: "notion",
54
+ };
55
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@automate.ax/catalog",
3
- "version": "0.88.9",
3
+ "version": "0.89.0",
4
4
  "description": "Shared integration service and trigger definitions for Automate.ax.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -34,6 +34,7 @@
34
34
  "./triggers/google": "./src/triggers/google.ts",
35
35
  "./triggers/linear": "./src/triggers/linear.ts",
36
36
  "./triggers/microsoft": "./src/triggers/microsoft.ts",
37
+ "./triggers/notion": "./src/triggers/notion.ts",
37
38
  "./triggers/name": "./src/triggers/name.ts",
38
39
  "./triggers/resend": "./src/triggers/resend.ts",
39
40
  "./triggers/slack": "./src/triggers/slack.ts",
@@ -160,6 +161,11 @@
160
161
  "types": "./dist/triggers/microsoft.d.ts",
161
162
  "default": "./dist/triggers/microsoft.js"
162
163
  },
164
+ "./triggers/notion": {
165
+ "bun": "./src/triggers/notion.ts",
166
+ "types": "./dist/triggers/notion.d.ts",
167
+ "default": "./dist/triggers/notion.js"
168
+ },
163
169
  "./triggers/name": {
164
170
  "bun": "./src/triggers/name.ts",
165
171
  "types": "./dist/triggers/name.d.ts",
package/src/catalog.ts CHANGED
@@ -302,6 +302,32 @@ export const mistralService = defineApiKeyService({
302
302
  name: "Mistral AI",
303
303
  })
304
304
 
305
+ export const notionService = defineIntegrationService({
306
+ connectionMethods: [
307
+ { id: "oauth", name: "OAuth", type: "redirect" },
308
+ {
309
+ credentialUrl: "https://www.notion.so/developers/tokens",
310
+ fields: [
311
+ {
312
+ input: "password",
313
+ label: "Personal access token",
314
+ name: "apiKey",
315
+ placeholder: "ntn_...",
316
+ required: true,
317
+ },
318
+ ],
319
+ id: "personal-access-token",
320
+ name: "Personal access token",
321
+ type: "form",
322
+ },
323
+ ],
324
+ description:
325
+ "Connect a Notion workspace with OAuth or a personal access token.",
326
+ id: "notion",
327
+ name: "Notion",
328
+ preferredConnectionMethodId: "oauth",
329
+ })
330
+
305
331
  export const openaiService = defineApiKeyService({
306
332
  credentialUrl: "https://platform.openai.com/api-keys",
307
333
  description: "Connect an OpenAI API key.",
@@ -547,6 +573,7 @@ export const integrationCatalog = defineIntegrationCatalog([
547
573
  microsoftService,
548
574
  millionverifierService,
549
575
  mistralService,
576
+ notionService,
550
577
  openaiService,
551
578
  onePasswordService,
552
579
  openrouterService,
package/src/index.ts CHANGED
@@ -26,6 +26,7 @@ export {
26
26
  microsoftService,
27
27
  millionverifierService,
28
28
  mistralService,
29
+ notionService,
29
30
  openaiService,
30
31
  onePasswordService,
31
32
  openrouterService,
@@ -8,6 +8,7 @@ import { githubTriggerDefinitions } from "./github"
8
8
  import { googleTriggerDefinitions } from "./google"
9
9
  import { linearTriggerDefinitions } from "./linear"
10
10
  import { microsoftTriggerDefinitions } from "./microsoft"
11
+ import { notionTriggerDefinitions } from "./notion"
11
12
  import { resendTriggerDefinitions } from "./resend"
12
13
  import { slackTriggerDefinitions } from "./slack"
13
14
  import { stripeTriggerDefinitions } from "./stripe"
@@ -54,6 +55,7 @@ export const triggerDefinitions = {
54
55
  ...googleTriggerDefinitions,
55
56
  ...linearTriggerDefinitions,
56
57
  ...microsoftTriggerDefinitions,
58
+ ...notionTriggerDefinitions,
57
59
  ...resendTriggerDefinitions,
58
60
  ...slackTriggerDefinitions,
59
61
  ...stripeTriggerDefinitions,
@@ -0,0 +1,155 @@
1
+ import type { IntegrationAccountRequirement, TriggerDefinition } from "../types"
2
+
3
+ const NOTION_READ_CONTENT_ACCOUNT = notionOAuthAccount(["read_content"])
4
+ const NOTION_READ_COMMENTS_ACCOUNT = notionOAuthAccount(["read_comments"])
5
+ const NOTION_INSERT_CONTENT_ACCOUNT = notionOAuthAccount(["insert_content"])
6
+
7
+ export const notionTriggerDefinitions = {
8
+ notionCommentCreated: notionTrigger(
9
+ NOTION_READ_COMMENTS_ACCOUNT,
10
+ "notion.comment.created",
11
+ ),
12
+ notionCommentDeleted: notionTrigger(
13
+ NOTION_READ_COMMENTS_ACCOUNT,
14
+ "notion.comment.deleted",
15
+ ),
16
+ notionCommentUpdated: notionTrigger(
17
+ NOTION_READ_COMMENTS_ACCOUNT,
18
+ "notion.comment.updated",
19
+ ),
20
+ notionDatabaseCreated: notionTrigger(
21
+ NOTION_READ_CONTENT_ACCOUNT,
22
+ "notion.database.created",
23
+ ),
24
+ notionDatabaseDeleted: notionTrigger(
25
+ NOTION_READ_CONTENT_ACCOUNT,
26
+ "notion.database.deleted",
27
+ ),
28
+ notionDatabaseMoved: notionTrigger(
29
+ NOTION_READ_CONTENT_ACCOUNT,
30
+ "notion.database.moved",
31
+ ),
32
+ notionDatabaseUndeleted: notionTrigger(
33
+ NOTION_READ_CONTENT_ACCOUNT,
34
+ "notion.database.undeleted",
35
+ ),
36
+ notionDataSourceContentUpdated: notionTrigger(
37
+ NOTION_READ_CONTENT_ACCOUNT,
38
+ "notion.dataSource.contentUpdated",
39
+ ),
40
+ notionDataSourceCreated: notionTrigger(
41
+ NOTION_READ_CONTENT_ACCOUNT,
42
+ "notion.dataSource.created",
43
+ ),
44
+ notionDataSourceDeleted: notionTrigger(
45
+ NOTION_READ_CONTENT_ACCOUNT,
46
+ "notion.dataSource.deleted",
47
+ ),
48
+ notionDataSourceMoved: notionTrigger(
49
+ NOTION_READ_CONTENT_ACCOUNT,
50
+ "notion.dataSource.moved",
51
+ ),
52
+ notionDataSourceSchemaUpdated: notionTrigger(
53
+ NOTION_READ_CONTENT_ACCOUNT,
54
+ "notion.dataSource.schemaUpdated",
55
+ ),
56
+ notionDataSourceUndeleted: notionTrigger(
57
+ NOTION_READ_CONTENT_ACCOUNT,
58
+ "notion.dataSource.undeleted",
59
+ ),
60
+ notionEvent: notionTrigger(
61
+ notionOAuthAccount(["insert_content", "read_comments", "read_content"]),
62
+ "notion.event",
63
+ ),
64
+ notionFileUploadCompleted: notionTrigger(
65
+ NOTION_INSERT_CONTENT_ACCOUNT,
66
+ "notion.fileUpload.completed",
67
+ ),
68
+ notionFileUploadCreated: notionTrigger(
69
+ NOTION_INSERT_CONTENT_ACCOUNT,
70
+ "notion.fileUpload.created",
71
+ ),
72
+ notionFileUploadExpired: notionTrigger(
73
+ NOTION_INSERT_CONTENT_ACCOUNT,
74
+ "notion.fileUpload.expired",
75
+ ),
76
+ notionFileUploadFailed: notionTrigger(
77
+ NOTION_INSERT_CONTENT_ACCOUNT,
78
+ "notion.fileUpload.failed",
79
+ ),
80
+ notionPageContentUpdated: notionTrigger(
81
+ NOTION_READ_CONTENT_ACCOUNT,
82
+ "notion.page.contentUpdated",
83
+ ),
84
+ notionPageCreated: notionTrigger(
85
+ NOTION_READ_CONTENT_ACCOUNT,
86
+ "notion.page.created",
87
+ ),
88
+ notionPageDeleted: notionTrigger(
89
+ NOTION_READ_CONTENT_ACCOUNT,
90
+ "notion.page.deleted",
91
+ ),
92
+ notionPageLocked: notionTrigger(
93
+ NOTION_READ_CONTENT_ACCOUNT,
94
+ "notion.page.locked",
95
+ ),
96
+ notionPageMoved: notionTrigger(
97
+ NOTION_READ_CONTENT_ACCOUNT,
98
+ "notion.page.moved",
99
+ ),
100
+ notionPagePropertiesUpdated: notionTrigger(
101
+ NOTION_READ_CONTENT_ACCOUNT,
102
+ "notion.page.propertiesUpdated",
103
+ ),
104
+ notionPageTranscriptDeleted: notionTrigger(
105
+ NOTION_READ_CONTENT_ACCOUNT,
106
+ "notion.page.transcriptDeleted",
107
+ ),
108
+ notionPageUndeleted: notionTrigger(
109
+ NOTION_READ_CONTENT_ACCOUNT,
110
+ "notion.page.undeleted",
111
+ ),
112
+ notionPageUnlocked: notionTrigger(
113
+ NOTION_READ_CONTENT_ACCOUNT,
114
+ "notion.page.unlocked",
115
+ ),
116
+ notionViewCreated: notionTrigger(
117
+ NOTION_READ_CONTENT_ACCOUNT,
118
+ "notion.view.created",
119
+ ),
120
+ notionViewDeleted: notionTrigger(
121
+ NOTION_READ_CONTENT_ACCOUNT,
122
+ "notion.view.deleted",
123
+ ),
124
+ notionViewUpdated: notionTrigger(
125
+ NOTION_READ_CONTENT_ACCOUNT,
126
+ "notion.view.updated",
127
+ ),
128
+ } as const satisfies Record<string, TriggerDefinition>
129
+
130
+ /**
131
+ * Defines one Notion trigger with its exact stable event type.
132
+ *
133
+ * @param account - OAuth capability requirements for the event family.
134
+ * @param type - Stable internal event type.
135
+ */
136
+ function notionTrigger<const TType extends `notion.${string}`>(
137
+ account: IntegrationAccountRequirement<"notion">,
138
+ type: TType,
139
+ ) {
140
+ return { account, type }
141
+ }
142
+
143
+ /**
144
+ * Creates the OAuth-only account requirement for a Notion webhook family.
145
+ *
146
+ * @param requiredScopes - Fixed Notion integration capabilities.
147
+ */
148
+ function notionOAuthAccount(
149
+ requiredScopes: readonly string[],
150
+ ): IntegrationAccountRequirement<"notion"> {
151
+ return {
152
+ connectionOptions: [{ connectionMethodId: "oauth", requiredScopes }],
153
+ serviceId: "notion",
154
+ }
155
+ }