@automate.ax/catalog 0.115.6 → 0.118.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
@@ -752,10 +752,31 @@ export declare const tidycalService: {
752
752
  readonly id: "oauth";
753
753
  readonly name: "OAuth";
754
754
  readonly type: "redirect";
755
+ }, {
756
+ readonly credentialUrl: "https://tidycal.com/integrations/advanced";
757
+ readonly fields: readonly [{
758
+ readonly input: "password";
759
+ readonly label: "Personal access token";
760
+ readonly name: "apiKey";
761
+ readonly placeholder: "Paste your TidyCal personal access token";
762
+ readonly required: true;
763
+ }];
764
+ readonly id: "personal-access-token";
765
+ readonly name: "Personal access token";
766
+ readonly type: "form";
755
767
  }];
756
- readonly description: "Connect a TidyCal account.";
768
+ readonly connectionNotice: {
769
+ readonly action: {
770
+ readonly href: "https://help.tidycal.com/article/739-faq";
771
+ readonly label: "Review API requirements";
772
+ };
773
+ readonly description: "TidyCal API access requires an Individual, Agency, or Pro plan.";
774
+ readonly title: "Paid TidyCal plan required";
775
+ };
776
+ readonly description: "Connect TidyCal with OAuth or a personal access token.";
757
777
  readonly id: "tidycal";
758
778
  readonly name: "TidyCal";
779
+ readonly preferredConnectionMethodId: "oauth";
759
780
  };
760
781
  export declare const togetheraiService: {
761
782
  readonly id: "togetherai";
@@ -1585,10 +1606,31 @@ export declare const integrationCatalog: readonly [{
1585
1606
  readonly id: "oauth";
1586
1607
  readonly name: "OAuth";
1587
1608
  readonly type: "redirect";
1609
+ }, {
1610
+ readonly credentialUrl: "https://tidycal.com/integrations/advanced";
1611
+ readonly fields: readonly [{
1612
+ readonly input: "password";
1613
+ readonly label: "Personal access token";
1614
+ readonly name: "apiKey";
1615
+ readonly placeholder: "Paste your TidyCal personal access token";
1616
+ readonly required: true;
1617
+ }];
1618
+ readonly id: "personal-access-token";
1619
+ readonly name: "Personal access token";
1620
+ readonly type: "form";
1588
1621
  }];
1589
- readonly description: "Connect a TidyCal account.";
1622
+ readonly connectionNotice: {
1623
+ readonly action: {
1624
+ readonly href: "https://help.tidycal.com/article/739-faq";
1625
+ readonly label: "Review API requirements";
1626
+ };
1627
+ readonly description: "TidyCal API access requires an Individual, Agency, or Pro plan.";
1628
+ readonly title: "Paid TidyCal plan required";
1629
+ };
1630
+ readonly description: "Connect TidyCal with OAuth or a personal access token.";
1590
1631
  readonly id: "tidycal";
1591
1632
  readonly name: "TidyCal";
1633
+ readonly preferredConnectionMethodId: "oauth";
1592
1634
  }, {
1593
1635
  readonly id: "togetherai";
1594
1636
  readonly name: string;
package/dist/catalog.js CHANGED
@@ -319,10 +319,11 @@ export const microsoftService = defineIntegrationService({
319
319
  name: "Microsoft",
320
320
  });
321
321
  export const millionverifierService = defineApiKeyService({
322
- description: "Connect a Million Verifier API key.",
322
+ credentialUrl: "https://app.millionverifier.com/api",
323
+ description: "Connect a MillionVerifier API key.",
323
324
  id: "millionverifier",
324
- name: "Million Verifier",
325
- placeholder: "Million Verifier API key",
325
+ name: "MillionVerifier",
326
+ placeholder: "MillionVerifier API key",
326
327
  });
327
328
  export const mistralService = defineApiKeyService({
328
329
  description: "Connect a Mistral AI API key.",
@@ -493,10 +494,36 @@ export const stripeService = defineApiKeyService({
493
494
  placeholder: "sk_test_... or rk_test_...",
494
495
  });
495
496
  export const tidycalService = defineIntegrationService({
496
- connectionMethods: [{ id: "oauth", name: "OAuth", type: "redirect" }],
497
- description: "Connect a TidyCal account.",
497
+ connectionMethods: [
498
+ { id: "oauth", name: "OAuth", type: "redirect" },
499
+ {
500
+ credentialUrl: "https://tidycal.com/integrations/advanced",
501
+ fields: [
502
+ {
503
+ input: "password",
504
+ label: "Personal access token",
505
+ name: "apiKey",
506
+ placeholder: "Paste your TidyCal personal access token",
507
+ required: true,
508
+ },
509
+ ],
510
+ id: "personal-access-token",
511
+ name: "Personal access token",
512
+ type: "form",
513
+ },
514
+ ],
515
+ connectionNotice: {
516
+ action: {
517
+ href: "https://help.tidycal.com/article/739-faq",
518
+ label: "Review API requirements",
519
+ },
520
+ description: "TidyCal API access requires an Individual, Agency, or Pro plan.",
521
+ title: "Paid TidyCal plan required",
522
+ },
523
+ description: "Connect TidyCal with OAuth or a personal access token.",
498
524
  id: "tidycal",
499
525
  name: "TidyCal",
526
+ preferredConnectionMethodId: "oauth",
500
527
  });
501
528
  export const togetheraiService = defineApiKeyService({
502
529
  description: "Connect a Together AI API key.",
@@ -25,6 +25,48 @@ export declare const googleTriggerDefinitions: {
25
25
  readonly icon: "gmail";
26
26
  readonly type: "gmail.label.removed";
27
27
  };
28
+ readonly gmailMailboxChanged: {
29
+ readonly account: {
30
+ readonly connectionOptions: readonly [{
31
+ readonly requiredScopes: readonly [{
32
+ readonly requirements: readonly ["https://mail.google.com/", "https://www.googleapis.com/auth/gmail.modify", "https://www.googleapis.com/auth/gmail.readonly"];
33
+ readonly type: "or";
34
+ }];
35
+ }];
36
+ readonly serviceId: "google";
37
+ };
38
+ readonly icon: "gmail";
39
+ readonly name: "Gmail mailbox changed";
40
+ readonly type: "gmail.mailbox.changed";
41
+ };
42
+ readonly gmailMessageAdded: {
43
+ readonly account: {
44
+ readonly connectionOptions: readonly [{
45
+ readonly requiredScopes: readonly [{
46
+ readonly requirements: readonly ["https://mail.google.com/", "https://www.googleapis.com/auth/gmail.modify", "https://www.googleapis.com/auth/gmail.readonly"];
47
+ readonly type: "or";
48
+ }];
49
+ }];
50
+ readonly serviceId: "google";
51
+ };
52
+ readonly icon: "gmail";
53
+ readonly name: "Gmail message added";
54
+ readonly type: "gmail.message.added";
55
+ };
56
+ readonly gmailMessageDeleted: {
57
+ readonly account: {
58
+ readonly connectionOptions: readonly [{
59
+ readonly requiredScopes: readonly [{
60
+ readonly requirements: readonly ["https://mail.google.com/", "https://www.googleapis.com/auth/gmail.modify", "https://www.googleapis.com/auth/gmail.readonly", "https://www.googleapis.com/auth/gmail.metadata"];
61
+ readonly type: "or";
62
+ }];
63
+ }];
64
+ readonly serviceId: "google";
65
+ };
66
+ readonly icon: "gmail";
67
+ readonly name: "Gmail message deleted";
68
+ readonly type: "gmail.message.deleted";
69
+ };
28
70
  readonly gmailMessageReceived: {
29
71
  readonly account: {
30
72
  readonly connectionOptions: readonly [{
@@ -57,7 +99,7 @@ export declare const googleTriggerDefinitions: {
57
99
  readonly account: {
58
100
  readonly connectionOptions: readonly [{
59
101
  readonly requiredScopes: readonly [{
60
- readonly requirements: readonly ["https://www.googleapis.com/auth/calendar", "https://www.googleapis.com/auth/calendar.readonly", "https://www.googleapis.com/auth/calendar.events", "https://www.googleapis.com/auth/calendar.events.owned", "https://www.googleapis.com/auth/calendar.events.readonly"];
102
+ readonly requirements: readonly ["https://www.googleapis.com/auth/calendar", "https://www.googleapis.com/auth/calendar.app.created", "https://www.googleapis.com/auth/calendar.readonly", "https://www.googleapis.com/auth/calendar.events", "https://www.googleapis.com/auth/calendar.events.freebusy", "https://www.googleapis.com/auth/calendar.events.owned", "https://www.googleapis.com/auth/calendar.events.owned.readonly", "https://www.googleapis.com/auth/calendar.events.public.readonly", "https://www.googleapis.com/auth/calendar.events.readonly"];
61
103
  readonly type: "or";
62
104
  }];
63
105
  }];
@@ -67,11 +109,25 @@ export declare const googleTriggerDefinitions: {
67
109
  readonly name: "Google Calendar event created";
68
110
  readonly type: "googleCalendar.event.created";
69
111
  };
112
+ readonly googleCalendarEventChanged: {
113
+ readonly account: {
114
+ readonly connectionOptions: readonly [{
115
+ readonly requiredScopes: readonly [{
116
+ readonly requirements: readonly ["https://www.googleapis.com/auth/calendar", "https://www.googleapis.com/auth/calendar.app.created", "https://www.googleapis.com/auth/calendar.readonly", "https://www.googleapis.com/auth/calendar.events", "https://www.googleapis.com/auth/calendar.events.freebusy", "https://www.googleapis.com/auth/calendar.events.owned", "https://www.googleapis.com/auth/calendar.events.owned.readonly", "https://www.googleapis.com/auth/calendar.events.public.readonly", "https://www.googleapis.com/auth/calendar.events.readonly"];
117
+ readonly type: "or";
118
+ }];
119
+ }];
120
+ readonly serviceId: "google";
121
+ };
122
+ readonly icon: "google-calendar";
123
+ readonly name: "Google Calendar event changed";
124
+ readonly type: "googleCalendar.event.changed";
125
+ };
70
126
  readonly googleCalendarEventDeleted: {
71
127
  readonly account: {
72
128
  readonly connectionOptions: readonly [{
73
129
  readonly requiredScopes: readonly [{
74
- readonly requirements: readonly ["https://www.googleapis.com/auth/calendar", "https://www.googleapis.com/auth/calendar.readonly", "https://www.googleapis.com/auth/calendar.events", "https://www.googleapis.com/auth/calendar.events.owned", "https://www.googleapis.com/auth/calendar.events.readonly"];
130
+ readonly requirements: readonly ["https://www.googleapis.com/auth/calendar", "https://www.googleapis.com/auth/calendar.app.created", "https://www.googleapis.com/auth/calendar.readonly", "https://www.googleapis.com/auth/calendar.events", "https://www.googleapis.com/auth/calendar.events.freebusy", "https://www.googleapis.com/auth/calendar.events.owned", "https://www.googleapis.com/auth/calendar.events.owned.readonly", "https://www.googleapis.com/auth/calendar.events.public.readonly", "https://www.googleapis.com/auth/calendar.events.readonly"];
75
131
  readonly type: "or";
76
132
  }];
77
133
  }];
@@ -85,7 +141,7 @@ export declare const googleTriggerDefinitions: {
85
141
  readonly account: {
86
142
  readonly connectionOptions: readonly [{
87
143
  readonly requiredScopes: readonly [{
88
- readonly requirements: readonly ["https://www.googleapis.com/auth/calendar", "https://www.googleapis.com/auth/calendar.readonly", "https://www.googleapis.com/auth/calendar.events", "https://www.googleapis.com/auth/calendar.events.owned", "https://www.googleapis.com/auth/calendar.events.readonly"];
144
+ readonly requirements: readonly ["https://www.googleapis.com/auth/calendar", "https://www.googleapis.com/auth/calendar.app.created", "https://www.googleapis.com/auth/calendar.readonly", "https://www.googleapis.com/auth/calendar.events", "https://www.googleapis.com/auth/calendar.events.freebusy", "https://www.googleapis.com/auth/calendar.events.owned", "https://www.googleapis.com/auth/calendar.events.owned.readonly", "https://www.googleapis.com/auth/calendar.events.public.readonly", "https://www.googleapis.com/auth/calendar.events.readonly"];
89
145
  readonly type: "or";
90
146
  }];
91
147
  }];
@@ -113,9 +169,6 @@ export declare const googleTriggerDefinitions: {
113
169
  readonly account: {
114
170
  readonly connectionOptions: readonly [{
115
171
  readonly requiredScopes: readonly [{
116
- readonly requirements: readonly ["https://www.googleapis.com/auth/drive", "https://www.googleapis.com/auth/drive.file", "https://www.googleapis.com/auth/drive.readonly", "https://www.googleapis.com/auth/forms.body", "https://www.googleapis.com/auth/forms.body.readonly"];
117
- readonly type: "or";
118
- }, {
119
172
  readonly requirements: readonly [{
120
173
  readonly requirements: readonly ["https://www.googleapis.com/auth/drive", "https://www.googleapis.com/auth/drive.file", "https://www.googleapis.com/auth/forms.responses.readonly"];
121
174
  readonly type: "or";
@@ -15,6 +15,24 @@ const GMAIL_ACCOUNT = {
15
15
  ],
16
16
  serviceId: "google",
17
17
  };
18
+ const GMAIL_DELETION_ACCOUNT = {
19
+ connectionOptions: [
20
+ {
21
+ requiredScopes: [
22
+ {
23
+ requirements: [
24
+ "https://mail.google.com/",
25
+ "https://www.googleapis.com/auth/gmail.modify",
26
+ "https://www.googleapis.com/auth/gmail.readonly",
27
+ "https://www.googleapis.com/auth/gmail.metadata",
28
+ ],
29
+ type: "or",
30
+ },
31
+ ],
32
+ },
33
+ ],
34
+ serviceId: "google",
35
+ };
18
36
  const GOOGLE_CALENDAR_ACCOUNT = {
19
37
  connectionOptions: [
20
38
  {
@@ -22,9 +40,13 @@ const GOOGLE_CALENDAR_ACCOUNT = {
22
40
  {
23
41
  requirements: [
24
42
  "https://www.googleapis.com/auth/calendar",
43
+ "https://www.googleapis.com/auth/calendar.app.created",
25
44
  "https://www.googleapis.com/auth/calendar.readonly",
26
45
  "https://www.googleapis.com/auth/calendar.events",
46
+ "https://www.googleapis.com/auth/calendar.events.freebusy",
27
47
  "https://www.googleapis.com/auth/calendar.events.owned",
48
+ "https://www.googleapis.com/auth/calendar.events.owned.readonly",
49
+ "https://www.googleapis.com/auth/calendar.events.public.readonly",
28
50
  "https://www.googleapis.com/auth/calendar.events.readonly",
29
51
  ],
30
52
  type: "or",
@@ -57,16 +79,6 @@ const GOOGLE_FORM_RESPONSES_ACCOUNT = {
57
79
  connectionOptions: [
58
80
  {
59
81
  requiredScopes: [
60
- {
61
- requirements: [
62
- "https://www.googleapis.com/auth/drive",
63
- "https://www.googleapis.com/auth/drive.file",
64
- "https://www.googleapis.com/auth/drive.readonly",
65
- "https://www.googleapis.com/auth/forms.body",
66
- "https://www.googleapis.com/auth/forms.body.readonly",
67
- ],
68
- type: "or",
69
- },
70
82
  {
71
83
  requirements: [
72
84
  {
@@ -133,6 +145,24 @@ export const googleTriggerDefinitions = {
133
145
  icon: "gmail",
134
146
  type: "gmail.label.removed",
135
147
  },
148
+ gmailMailboxChanged: {
149
+ account: GMAIL_ACCOUNT,
150
+ icon: "gmail",
151
+ name: "Gmail mailbox changed",
152
+ type: "gmail.mailbox.changed",
153
+ },
154
+ gmailMessageAdded: {
155
+ account: GMAIL_ACCOUNT,
156
+ icon: "gmail",
157
+ name: "Gmail message added",
158
+ type: "gmail.message.added",
159
+ },
160
+ gmailMessageDeleted: {
161
+ account: GMAIL_DELETION_ACCOUNT,
162
+ icon: "gmail",
163
+ name: "Gmail message deleted",
164
+ type: "gmail.message.deleted",
165
+ },
136
166
  gmailMessageReceived: {
137
167
  account: GMAIL_ACCOUNT,
138
168
  icon: "gmail",
@@ -151,6 +181,12 @@ export const googleTriggerDefinitions = {
151
181
  name: "Google Calendar event created",
152
182
  type: "googleCalendar.event.created",
153
183
  },
184
+ googleCalendarEventChanged: {
185
+ account: GOOGLE_CALENDAR_ACCOUNT,
186
+ icon: "google-calendar",
187
+ name: "Google Calendar event changed",
188
+ type: "googleCalendar.event.changed",
189
+ },
154
190
  googleCalendarEventDeleted: {
155
191
  account: GOOGLE_CALENDAR_ACCOUNT,
156
192
  icon: "google-calendar",
@@ -1994,6 +1994,81 @@ export declare const triggerDefinitions: {
1994
1994
  readonly name: "Microsoft Teams chat message posted";
1995
1995
  readonly type: "teams.chat.message.posted";
1996
1996
  };
1997
+ readonly millionVerifierEvent: {
1998
+ account: {
1999
+ readonly connectionOptions: readonly [{
2000
+ readonly requiredScopes: readonly [];
2001
+ }];
2002
+ readonly serviceId: "millionverifier";
2003
+ };
2004
+ getDetails: (context: TriggerPresentationContext) => {
2005
+ copyable: boolean;
2006
+ label: string;
2007
+ value: string;
2008
+ }[];
2009
+ name: string;
2010
+ type: "millionverifier.event";
2011
+ };
2012
+ readonly millionVerifierNoCredit: {
2013
+ account: {
2014
+ readonly connectionOptions: readonly [{
2015
+ readonly requiredScopes: readonly [];
2016
+ }];
2017
+ readonly serviceId: "millionverifier";
2018
+ };
2019
+ getDetails: (context: TriggerPresentationContext) => {
2020
+ copyable: boolean;
2021
+ label: string;
2022
+ value: string;
2023
+ }[];
2024
+ name: string;
2025
+ type: "millionverifier.noCredit";
2026
+ };
2027
+ readonly millionVerifierLowCredit: {
2028
+ account: {
2029
+ readonly connectionOptions: readonly [{
2030
+ readonly requiredScopes: readonly [];
2031
+ }];
2032
+ readonly serviceId: "millionverifier";
2033
+ };
2034
+ getDetails: (context: TriggerPresentationContext) => {
2035
+ copyable: boolean;
2036
+ label: string;
2037
+ value: string;
2038
+ }[];
2039
+ name: string;
2040
+ type: "millionverifier.lowCredit";
2041
+ };
2042
+ readonly millionVerifierFileReady: {
2043
+ account: {
2044
+ readonly connectionOptions: readonly [{
2045
+ readonly requiredScopes: readonly [];
2046
+ }];
2047
+ readonly serviceId: "millionverifier";
2048
+ };
2049
+ getDetails: (context: TriggerPresentationContext) => {
2050
+ copyable: boolean;
2051
+ label: string;
2052
+ value: string;
2053
+ }[];
2054
+ name: string;
2055
+ type: "millionverifier.fileReady";
2056
+ };
2057
+ readonly millionVerifierFileDeletionScheduled: {
2058
+ account: {
2059
+ readonly connectionOptions: readonly [{
2060
+ readonly requiredScopes: readonly [];
2061
+ }];
2062
+ readonly serviceId: "millionverifier";
2063
+ };
2064
+ getDetails: (context: TriggerPresentationContext) => {
2065
+ copyable: boolean;
2066
+ label: string;
2067
+ value: string;
2068
+ }[];
2069
+ name: string;
2070
+ type: "millionverifier.fileDeletionScheduled";
2071
+ };
1997
2072
  readonly linearAttachmentCreated: {
1998
2073
  readonly account: {
1999
2074
  readonly connectionOptions: readonly [{
@@ -2730,6 +2805,48 @@ export declare const triggerDefinitions: {
2730
2805
  readonly icon: "gmail";
2731
2806
  readonly type: "gmail.label.removed";
2732
2807
  };
2808
+ readonly gmailMailboxChanged: {
2809
+ readonly account: {
2810
+ readonly connectionOptions: readonly [{
2811
+ readonly requiredScopes: readonly [{
2812
+ readonly requirements: readonly ["https://mail.google.com/", "https://www.googleapis.com/auth/gmail.modify", "https://www.googleapis.com/auth/gmail.readonly"];
2813
+ readonly type: "or";
2814
+ }];
2815
+ }];
2816
+ readonly serviceId: "google";
2817
+ };
2818
+ readonly icon: "gmail";
2819
+ readonly name: "Gmail mailbox changed";
2820
+ readonly type: "gmail.mailbox.changed";
2821
+ };
2822
+ readonly gmailMessageAdded: {
2823
+ readonly account: {
2824
+ readonly connectionOptions: readonly [{
2825
+ readonly requiredScopes: readonly [{
2826
+ readonly requirements: readonly ["https://mail.google.com/", "https://www.googleapis.com/auth/gmail.modify", "https://www.googleapis.com/auth/gmail.readonly"];
2827
+ readonly type: "or";
2828
+ }];
2829
+ }];
2830
+ readonly serviceId: "google";
2831
+ };
2832
+ readonly icon: "gmail";
2833
+ readonly name: "Gmail message added";
2834
+ readonly type: "gmail.message.added";
2835
+ };
2836
+ readonly gmailMessageDeleted: {
2837
+ readonly account: {
2838
+ readonly connectionOptions: readonly [{
2839
+ readonly requiredScopes: readonly [{
2840
+ readonly requirements: readonly ["https://mail.google.com/", "https://www.googleapis.com/auth/gmail.modify", "https://www.googleapis.com/auth/gmail.readonly", "https://www.googleapis.com/auth/gmail.metadata"];
2841
+ readonly type: "or";
2842
+ }];
2843
+ }];
2844
+ readonly serviceId: "google";
2845
+ };
2846
+ readonly icon: "gmail";
2847
+ readonly name: "Gmail message deleted";
2848
+ readonly type: "gmail.message.deleted";
2849
+ };
2733
2850
  readonly gmailMessageReceived: {
2734
2851
  readonly account: {
2735
2852
  readonly connectionOptions: readonly [{
@@ -2762,7 +2879,7 @@ export declare const triggerDefinitions: {
2762
2879
  readonly account: {
2763
2880
  readonly connectionOptions: readonly [{
2764
2881
  readonly requiredScopes: readonly [{
2765
- readonly requirements: readonly ["https://www.googleapis.com/auth/calendar", "https://www.googleapis.com/auth/calendar.readonly", "https://www.googleapis.com/auth/calendar.events", "https://www.googleapis.com/auth/calendar.events.owned", "https://www.googleapis.com/auth/calendar.events.readonly"];
2882
+ readonly requirements: readonly ["https://www.googleapis.com/auth/calendar", "https://www.googleapis.com/auth/calendar.app.created", "https://www.googleapis.com/auth/calendar.readonly", "https://www.googleapis.com/auth/calendar.events", "https://www.googleapis.com/auth/calendar.events.freebusy", "https://www.googleapis.com/auth/calendar.events.owned", "https://www.googleapis.com/auth/calendar.events.owned.readonly", "https://www.googleapis.com/auth/calendar.events.public.readonly", "https://www.googleapis.com/auth/calendar.events.readonly"];
2766
2883
  readonly type: "or";
2767
2884
  }];
2768
2885
  }];
@@ -2772,11 +2889,25 @@ export declare const triggerDefinitions: {
2772
2889
  readonly name: "Google Calendar event created";
2773
2890
  readonly type: "googleCalendar.event.created";
2774
2891
  };
2892
+ readonly googleCalendarEventChanged: {
2893
+ readonly account: {
2894
+ readonly connectionOptions: readonly [{
2895
+ readonly requiredScopes: readonly [{
2896
+ readonly requirements: readonly ["https://www.googleapis.com/auth/calendar", "https://www.googleapis.com/auth/calendar.app.created", "https://www.googleapis.com/auth/calendar.readonly", "https://www.googleapis.com/auth/calendar.events", "https://www.googleapis.com/auth/calendar.events.freebusy", "https://www.googleapis.com/auth/calendar.events.owned", "https://www.googleapis.com/auth/calendar.events.owned.readonly", "https://www.googleapis.com/auth/calendar.events.public.readonly", "https://www.googleapis.com/auth/calendar.events.readonly"];
2897
+ readonly type: "or";
2898
+ }];
2899
+ }];
2900
+ readonly serviceId: "google";
2901
+ };
2902
+ readonly icon: "google-calendar";
2903
+ readonly name: "Google Calendar event changed";
2904
+ readonly type: "googleCalendar.event.changed";
2905
+ };
2775
2906
  readonly googleCalendarEventDeleted: {
2776
2907
  readonly account: {
2777
2908
  readonly connectionOptions: readonly [{
2778
2909
  readonly requiredScopes: readonly [{
2779
- readonly requirements: readonly ["https://www.googleapis.com/auth/calendar", "https://www.googleapis.com/auth/calendar.readonly", "https://www.googleapis.com/auth/calendar.events", "https://www.googleapis.com/auth/calendar.events.owned", "https://www.googleapis.com/auth/calendar.events.readonly"];
2910
+ readonly requirements: readonly ["https://www.googleapis.com/auth/calendar", "https://www.googleapis.com/auth/calendar.app.created", "https://www.googleapis.com/auth/calendar.readonly", "https://www.googleapis.com/auth/calendar.events", "https://www.googleapis.com/auth/calendar.events.freebusy", "https://www.googleapis.com/auth/calendar.events.owned", "https://www.googleapis.com/auth/calendar.events.owned.readonly", "https://www.googleapis.com/auth/calendar.events.public.readonly", "https://www.googleapis.com/auth/calendar.events.readonly"];
2780
2911
  readonly type: "or";
2781
2912
  }];
2782
2913
  }];
@@ -2790,7 +2921,7 @@ export declare const triggerDefinitions: {
2790
2921
  readonly account: {
2791
2922
  readonly connectionOptions: readonly [{
2792
2923
  readonly requiredScopes: readonly [{
2793
- readonly requirements: readonly ["https://www.googleapis.com/auth/calendar", "https://www.googleapis.com/auth/calendar.readonly", "https://www.googleapis.com/auth/calendar.events", "https://www.googleapis.com/auth/calendar.events.owned", "https://www.googleapis.com/auth/calendar.events.readonly"];
2924
+ readonly requirements: readonly ["https://www.googleapis.com/auth/calendar", "https://www.googleapis.com/auth/calendar.app.created", "https://www.googleapis.com/auth/calendar.readonly", "https://www.googleapis.com/auth/calendar.events", "https://www.googleapis.com/auth/calendar.events.freebusy", "https://www.googleapis.com/auth/calendar.events.owned", "https://www.googleapis.com/auth/calendar.events.owned.readonly", "https://www.googleapis.com/auth/calendar.events.public.readonly", "https://www.googleapis.com/auth/calendar.events.readonly"];
2794
2925
  readonly type: "or";
2795
2926
  }];
2796
2927
  }];
@@ -2818,9 +2949,6 @@ export declare const triggerDefinitions: {
2818
2949
  readonly account: {
2819
2950
  readonly connectionOptions: readonly [{
2820
2951
  readonly requiredScopes: readonly [{
2821
- readonly requirements: readonly ["https://www.googleapis.com/auth/drive", "https://www.googleapis.com/auth/drive.file", "https://www.googleapis.com/auth/drive.readonly", "https://www.googleapis.com/auth/forms.body", "https://www.googleapis.com/auth/forms.body.readonly"];
2822
- readonly type: "or";
2823
- }, {
2824
2952
  readonly requirements: readonly [{
2825
2953
  readonly requirements: readonly ["https://www.googleapis.com/auth/drive", "https://www.googleapis.com/auth/drive.file", "https://www.googleapis.com/auth/forms.responses.readonly"];
2826
2954
  readonly type: "or";
@@ -9329,6 +9457,45 @@ export declare const triggerCatalog: ({
9329
9457
  };
9330
9458
  icon: "gmail";
9331
9459
  type: "gmail.label.removed";
9460
+ } | {
9461
+ name: string;
9462
+ account: {
9463
+ readonly connectionOptions: readonly [{
9464
+ readonly requiredScopes: readonly [{
9465
+ readonly requirements: readonly ["https://mail.google.com/", "https://www.googleapis.com/auth/gmail.modify", "https://www.googleapis.com/auth/gmail.readonly"];
9466
+ readonly type: "or";
9467
+ }];
9468
+ }];
9469
+ readonly serviceId: "google";
9470
+ };
9471
+ icon: "gmail";
9472
+ type: "gmail.mailbox.changed";
9473
+ } | {
9474
+ name: string;
9475
+ account: {
9476
+ readonly connectionOptions: readonly [{
9477
+ readonly requiredScopes: readonly [{
9478
+ readonly requirements: readonly ["https://mail.google.com/", "https://www.googleapis.com/auth/gmail.modify", "https://www.googleapis.com/auth/gmail.readonly"];
9479
+ readonly type: "or";
9480
+ }];
9481
+ }];
9482
+ readonly serviceId: "google";
9483
+ };
9484
+ icon: "gmail";
9485
+ type: "gmail.message.added";
9486
+ } | {
9487
+ name: string;
9488
+ account: {
9489
+ readonly connectionOptions: readonly [{
9490
+ readonly requiredScopes: readonly [{
9491
+ readonly requirements: readonly ["https://mail.google.com/", "https://www.googleapis.com/auth/gmail.modify", "https://www.googleapis.com/auth/gmail.readonly", "https://www.googleapis.com/auth/gmail.metadata"];
9492
+ readonly type: "or";
9493
+ }];
9494
+ }];
9495
+ readonly serviceId: "google";
9496
+ };
9497
+ icon: "gmail";
9498
+ type: "gmail.message.deleted";
9332
9499
  } | {
9333
9500
  name: string;
9334
9501
  account: {
@@ -9360,7 +9527,7 @@ export declare const triggerCatalog: ({
9360
9527
  account: {
9361
9528
  readonly connectionOptions: readonly [{
9362
9529
  readonly requiredScopes: readonly [{
9363
- readonly requirements: readonly ["https://www.googleapis.com/auth/calendar", "https://www.googleapis.com/auth/calendar.readonly", "https://www.googleapis.com/auth/calendar.events", "https://www.googleapis.com/auth/calendar.events.owned", "https://www.googleapis.com/auth/calendar.events.readonly"];
9530
+ readonly requirements: readonly ["https://www.googleapis.com/auth/calendar", "https://www.googleapis.com/auth/calendar.app.created", "https://www.googleapis.com/auth/calendar.readonly", "https://www.googleapis.com/auth/calendar.events", "https://www.googleapis.com/auth/calendar.events.freebusy", "https://www.googleapis.com/auth/calendar.events.owned", "https://www.googleapis.com/auth/calendar.events.owned.readonly", "https://www.googleapis.com/auth/calendar.events.public.readonly", "https://www.googleapis.com/auth/calendar.events.readonly"];
9364
9531
  readonly type: "or";
9365
9532
  }];
9366
9533
  }];
@@ -9373,7 +9540,20 @@ export declare const triggerCatalog: ({
9373
9540
  account: {
9374
9541
  readonly connectionOptions: readonly [{
9375
9542
  readonly requiredScopes: readonly [{
9376
- readonly requirements: readonly ["https://www.googleapis.com/auth/calendar", "https://www.googleapis.com/auth/calendar.readonly", "https://www.googleapis.com/auth/calendar.events", "https://www.googleapis.com/auth/calendar.events.owned", "https://www.googleapis.com/auth/calendar.events.readonly"];
9543
+ readonly requirements: readonly ["https://www.googleapis.com/auth/calendar", "https://www.googleapis.com/auth/calendar.app.created", "https://www.googleapis.com/auth/calendar.readonly", "https://www.googleapis.com/auth/calendar.events", "https://www.googleapis.com/auth/calendar.events.freebusy", "https://www.googleapis.com/auth/calendar.events.owned", "https://www.googleapis.com/auth/calendar.events.owned.readonly", "https://www.googleapis.com/auth/calendar.events.public.readonly", "https://www.googleapis.com/auth/calendar.events.readonly"];
9544
+ readonly type: "or";
9545
+ }];
9546
+ }];
9547
+ readonly serviceId: "google";
9548
+ };
9549
+ icon: "google-calendar";
9550
+ type: "googleCalendar.event.changed";
9551
+ } | {
9552
+ name: string;
9553
+ account: {
9554
+ readonly connectionOptions: readonly [{
9555
+ readonly requiredScopes: readonly [{
9556
+ readonly requirements: readonly ["https://www.googleapis.com/auth/calendar", "https://www.googleapis.com/auth/calendar.app.created", "https://www.googleapis.com/auth/calendar.readonly", "https://www.googleapis.com/auth/calendar.events", "https://www.googleapis.com/auth/calendar.events.freebusy", "https://www.googleapis.com/auth/calendar.events.owned", "https://www.googleapis.com/auth/calendar.events.owned.readonly", "https://www.googleapis.com/auth/calendar.events.public.readonly", "https://www.googleapis.com/auth/calendar.events.readonly"];
9377
9557
  readonly type: "or";
9378
9558
  }];
9379
9559
  }];
@@ -9386,7 +9566,7 @@ export declare const triggerCatalog: ({
9386
9566
  account: {
9387
9567
  readonly connectionOptions: readonly [{
9388
9568
  readonly requiredScopes: readonly [{
9389
- readonly requirements: readonly ["https://www.googleapis.com/auth/calendar", "https://www.googleapis.com/auth/calendar.readonly", "https://www.googleapis.com/auth/calendar.events", "https://www.googleapis.com/auth/calendar.events.owned", "https://www.googleapis.com/auth/calendar.events.readonly"];
9569
+ readonly requirements: readonly ["https://www.googleapis.com/auth/calendar", "https://www.googleapis.com/auth/calendar.app.created", "https://www.googleapis.com/auth/calendar.readonly", "https://www.googleapis.com/auth/calendar.events", "https://www.googleapis.com/auth/calendar.events.freebusy", "https://www.googleapis.com/auth/calendar.events.owned", "https://www.googleapis.com/auth/calendar.events.owned.readonly", "https://www.googleapis.com/auth/calendar.events.public.readonly", "https://www.googleapis.com/auth/calendar.events.readonly"];
9390
9570
  readonly type: "or";
9391
9571
  }];
9392
9572
  }];
@@ -9412,9 +9592,6 @@ export declare const triggerCatalog: ({
9412
9592
  account: {
9413
9593
  readonly connectionOptions: readonly [{
9414
9594
  readonly requiredScopes: readonly [{
9415
- readonly requirements: readonly ["https://www.googleapis.com/auth/drive", "https://www.googleapis.com/auth/drive.file", "https://www.googleapis.com/auth/drive.readonly", "https://www.googleapis.com/auth/forms.body", "https://www.googleapis.com/auth/forms.body.readonly"];
9416
- readonly type: "or";
9417
- }, {
9418
9595
  readonly requirements: readonly [{
9419
9596
  readonly requirements: readonly ["https://www.googleapis.com/auth/drive", "https://www.googleapis.com/auth/drive.file", "https://www.googleapis.com/auth/forms.responses.readonly"];
9420
9597
  readonly type: "or";
@@ -10282,6 +10459,76 @@ export declare const triggerCatalog: ({
10282
10459
  readonly serviceId: "linear";
10283
10460
  };
10284
10461
  type: "linear.user.updated";
10462
+ } | {
10463
+ name: string;
10464
+ account: {
10465
+ readonly connectionOptions: readonly [{
10466
+ readonly requiredScopes: readonly [];
10467
+ }];
10468
+ readonly serviceId: "millionverifier";
10469
+ };
10470
+ getDetails: (context: TriggerPresentationContext) => {
10471
+ copyable: boolean;
10472
+ label: string;
10473
+ value: string;
10474
+ }[];
10475
+ type: "millionverifier.event";
10476
+ } | {
10477
+ name: string;
10478
+ account: {
10479
+ readonly connectionOptions: readonly [{
10480
+ readonly requiredScopes: readonly [];
10481
+ }];
10482
+ readonly serviceId: "millionverifier";
10483
+ };
10484
+ getDetails: (context: TriggerPresentationContext) => {
10485
+ copyable: boolean;
10486
+ label: string;
10487
+ value: string;
10488
+ }[];
10489
+ type: "millionverifier.noCredit";
10490
+ } | {
10491
+ name: string;
10492
+ account: {
10493
+ readonly connectionOptions: readonly [{
10494
+ readonly requiredScopes: readonly [];
10495
+ }];
10496
+ readonly serviceId: "millionverifier";
10497
+ };
10498
+ getDetails: (context: TriggerPresentationContext) => {
10499
+ copyable: boolean;
10500
+ label: string;
10501
+ value: string;
10502
+ }[];
10503
+ type: "millionverifier.lowCredit";
10504
+ } | {
10505
+ name: string;
10506
+ account: {
10507
+ readonly connectionOptions: readonly [{
10508
+ readonly requiredScopes: readonly [];
10509
+ }];
10510
+ readonly serviceId: "millionverifier";
10511
+ };
10512
+ getDetails: (context: TriggerPresentationContext) => {
10513
+ copyable: boolean;
10514
+ label: string;
10515
+ value: string;
10516
+ }[];
10517
+ type: "millionverifier.fileReady";
10518
+ } | {
10519
+ name: string;
10520
+ account: {
10521
+ readonly connectionOptions: readonly [{
10522
+ readonly requiredScopes: readonly [];
10523
+ }];
10524
+ readonly serviceId: "millionverifier";
10525
+ };
10526
+ getDetails: (context: TriggerPresentationContext) => {
10527
+ copyable: boolean;
10528
+ label: string;
10529
+ value: string;
10530
+ }[];
10531
+ type: "millionverifier.fileDeletionScheduled";
10285
10532
  } | {
10286
10533
  name: string;
10287
10534
  account: {
@@ -9,6 +9,7 @@ import { coreTriggerDefinitions } from "./core.js";
9
9
  import { githubTriggerDefinitions } from "./github.js";
10
10
  import { googleTriggerDefinitions } from "./google.js";
11
11
  import { linearTriggerDefinitions } from "./linear.js";
12
+ import { millionVerifierTriggerDefinitions } from "./millionverifier.js";
12
13
  import { microsoftTriggerDefinitions } from "./microsoft.js";
13
14
  import { notionTriggerDefinitions } from "./notion.js";
14
15
  import { resendTriggerDefinitions } from "./resend.js";
@@ -34,6 +35,7 @@ export const triggerDefinitions = {
34
35
  ...githubTriggerDefinitions,
35
36
  ...googleTriggerDefinitions,
36
37
  ...linearTriggerDefinitions,
38
+ ...millionVerifierTriggerDefinitions,
37
39
  ...microsoftTriggerDefinitions,
38
40
  ...notionTriggerDefinitions,
39
41
  ...resendTriggerDefinitions,
@@ -0,0 +1,69 @@
1
+ import type { TriggerPresentationContext } from "../types.js";
2
+ export declare const millionVerifierTriggerDefinitions: {
3
+ readonly millionVerifierEvent: {
4
+ account: {
5
+ readonly connectionOptions: readonly [{
6
+ readonly requiredScopes: readonly [];
7
+ }];
8
+ readonly serviceId: "millionverifier";
9
+ };
10
+ getDetails: typeof millionVerifierTriggerDetails;
11
+ name: string;
12
+ type: "millionverifier.event";
13
+ };
14
+ readonly millionVerifierNoCredit: {
15
+ account: {
16
+ readonly connectionOptions: readonly [{
17
+ readonly requiredScopes: readonly [];
18
+ }];
19
+ readonly serviceId: "millionverifier";
20
+ };
21
+ getDetails: typeof millionVerifierTriggerDetails;
22
+ name: string;
23
+ type: "millionverifier.noCredit";
24
+ };
25
+ readonly millionVerifierLowCredit: {
26
+ account: {
27
+ readonly connectionOptions: readonly [{
28
+ readonly requiredScopes: readonly [];
29
+ }];
30
+ readonly serviceId: "millionverifier";
31
+ };
32
+ getDetails: typeof millionVerifierTriggerDetails;
33
+ name: string;
34
+ type: "millionverifier.lowCredit";
35
+ };
36
+ readonly millionVerifierFileReady: {
37
+ account: {
38
+ readonly connectionOptions: readonly [{
39
+ readonly requiredScopes: readonly [];
40
+ }];
41
+ readonly serviceId: "millionverifier";
42
+ };
43
+ getDetails: typeof millionVerifierTriggerDetails;
44
+ name: string;
45
+ type: "millionverifier.fileReady";
46
+ };
47
+ readonly millionVerifierFileDeletionScheduled: {
48
+ account: {
49
+ readonly connectionOptions: readonly [{
50
+ readonly requiredScopes: readonly [];
51
+ }];
52
+ readonly serviceId: "millionverifier";
53
+ };
54
+ getDetails: typeof millionVerifierTriggerDetails;
55
+ name: string;
56
+ type: "millionverifier.fileDeletionScheduled";
57
+ };
58
+ };
59
+ /**
60
+ * Returns the manual account-scoped provider callback for a deployed trigger.
61
+ *
62
+ * @param context - Resolved trigger presentation context.
63
+ */
64
+ declare function millionVerifierTriggerDetails(context: TriggerPresentationContext): {
65
+ copyable: boolean;
66
+ label: string;
67
+ value: string;
68
+ }[];
69
+ export {};
@@ -0,0 +1,45 @@
1
+ const MILLIONVERIFIER_ACCOUNT = {
2
+ connectionOptions: [{ requiredScopes: [] }],
3
+ serviceId: "millionverifier",
4
+ };
5
+ const trigger = (type, name) => ({
6
+ account: MILLIONVERIFIER_ACCOUNT,
7
+ getDetails: millionVerifierTriggerDetails,
8
+ name,
9
+ type,
10
+ });
11
+ export const millionVerifierTriggerDefinitions = {
12
+ millionVerifierEvent: trigger("millionverifier.event", "MillionVerifier event"),
13
+ millionVerifierNoCredit: trigger("millionverifier.noCredit", "MillionVerifier out of credits"),
14
+ millionVerifierLowCredit: trigger("millionverifier.lowCredit", "MillionVerifier credits low"),
15
+ millionVerifierFileReady: trigger("millionverifier.fileReady", "MillionVerifier file ready"),
16
+ millionVerifierFileDeletionScheduled: trigger("millionverifier.fileDeletionScheduled", "MillionVerifier file deletion scheduled"),
17
+ };
18
+ /**
19
+ * Returns the manual account-scoped provider callback for a deployed trigger.
20
+ *
21
+ * @param context - Resolved trigger presentation context.
22
+ */
23
+ function millionVerifierTriggerDetails(context) {
24
+ const account = triggerAccount(context.config);
25
+ if (!account)
26
+ return [];
27
+ return [
28
+ {
29
+ copyable: true,
30
+ label: "Webhook URL",
31
+ value: new URL(`/api/v1/events/millionverifier/${encodeURIComponent(account)}`, context.appOrigin).toString(),
32
+ },
33
+ ];
34
+ }
35
+ /**
36
+ * Reads the resolved account binding from canonical trigger configuration.
37
+ *
38
+ * @param config - Resolved trigger configuration.
39
+ */
40
+ function triggerAccount(config) {
41
+ if (typeof config !== "object" || config === null || !("account" in config)) {
42
+ return;
43
+ }
44
+ return typeof config.account === "string" ? config.account : undefined;
45
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@automate.ax/catalog",
3
- "version": "0.115.6",
3
+ "version": "0.118.0",
4
4
  "description": "Shared integration service and trigger definitions for Automate.ax.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -35,6 +35,7 @@
35
35
  "./triggers/github": "./src/triggers/github.ts",
36
36
  "./triggers/google": "./src/triggers/google.ts",
37
37
  "./triggers/linear": "./src/triggers/linear.ts",
38
+ "./triggers/millionverifier": "./src/triggers/millionverifier.ts",
38
39
  "./triggers/microsoft": "./src/triggers/microsoft.ts",
39
40
  "./triggers/notion": "./src/triggers/notion.ts",
40
41
  "./triggers/name": "./src/triggers/name.ts",
@@ -168,6 +169,11 @@
168
169
  "types": "./dist/triggers/linear.d.ts",
169
170
  "default": "./dist/triggers/linear.js"
170
171
  },
172
+ "./triggers/millionverifier": {
173
+ "bun": "./src/triggers/millionverifier.ts",
174
+ "types": "./dist/triggers/millionverifier.d.ts",
175
+ "default": "./dist/triggers/millionverifier.js"
176
+ },
171
177
  "./triggers/microsoft": {
172
178
  "bun": "./src/triggers/microsoft.ts",
173
179
  "types": "./dist/triggers/microsoft.d.ts",
package/src/catalog.ts CHANGED
@@ -353,10 +353,11 @@ export const microsoftService = defineIntegrationService({
353
353
  })
354
354
 
355
355
  export const millionverifierService = defineApiKeyService({
356
- description: "Connect a Million Verifier API key.",
356
+ credentialUrl: "https://app.millionverifier.com/api",
357
+ description: "Connect a MillionVerifier API key.",
357
358
  id: "millionverifier",
358
- name: "Million Verifier",
359
- placeholder: "Million Verifier API key",
359
+ name: "MillionVerifier",
360
+ placeholder: "MillionVerifier API key",
360
361
  })
361
362
 
362
363
  export const mistralService = defineApiKeyService({
@@ -547,10 +548,37 @@ export const stripeService = defineApiKeyService({
547
548
  })
548
549
 
549
550
  export const tidycalService = defineIntegrationService({
550
- connectionMethods: [{ id: "oauth", name: "OAuth", type: "redirect" }],
551
- description: "Connect a TidyCal account.",
551
+ connectionMethods: [
552
+ { id: "oauth", name: "OAuth", type: "redirect" },
553
+ {
554
+ credentialUrl: "https://tidycal.com/integrations/advanced",
555
+ fields: [
556
+ {
557
+ input: "password",
558
+ label: "Personal access token",
559
+ name: "apiKey",
560
+ placeholder: "Paste your TidyCal personal access token",
561
+ required: true,
562
+ },
563
+ ],
564
+ id: "personal-access-token",
565
+ name: "Personal access token",
566
+ type: "form",
567
+ },
568
+ ],
569
+ connectionNotice: {
570
+ action: {
571
+ href: "https://help.tidycal.com/article/739-faq",
572
+ label: "Review API requirements",
573
+ },
574
+ description:
575
+ "TidyCal API access requires an Individual, Agency, or Pro plan.",
576
+ title: "Paid TidyCal plan required",
577
+ },
578
+ description: "Connect TidyCal with OAuth or a personal access token.",
552
579
  id: "tidycal",
553
580
  name: "TidyCal",
581
+ preferredConnectionMethodId: "oauth",
554
582
  })
555
583
 
556
584
  export const togetheraiService = defineApiKeyService({
@@ -18,6 +18,25 @@ const GMAIL_ACCOUNT = {
18
18
  serviceId: "google",
19
19
  } as const satisfies IntegrationAccountRequirement
20
20
 
21
+ const GMAIL_DELETION_ACCOUNT = {
22
+ connectionOptions: [
23
+ {
24
+ requiredScopes: [
25
+ {
26
+ requirements: [
27
+ "https://mail.google.com/",
28
+ "https://www.googleapis.com/auth/gmail.modify",
29
+ "https://www.googleapis.com/auth/gmail.readonly",
30
+ "https://www.googleapis.com/auth/gmail.metadata",
31
+ ],
32
+ type: "or",
33
+ },
34
+ ],
35
+ },
36
+ ],
37
+ serviceId: "google",
38
+ } as const satisfies IntegrationAccountRequirement
39
+
21
40
  const GOOGLE_CALENDAR_ACCOUNT = {
22
41
  connectionOptions: [
23
42
  {
@@ -25,9 +44,13 @@ const GOOGLE_CALENDAR_ACCOUNT = {
25
44
  {
26
45
  requirements: [
27
46
  "https://www.googleapis.com/auth/calendar",
47
+ "https://www.googleapis.com/auth/calendar.app.created",
28
48
  "https://www.googleapis.com/auth/calendar.readonly",
29
49
  "https://www.googleapis.com/auth/calendar.events",
50
+ "https://www.googleapis.com/auth/calendar.events.freebusy",
30
51
  "https://www.googleapis.com/auth/calendar.events.owned",
52
+ "https://www.googleapis.com/auth/calendar.events.owned.readonly",
53
+ "https://www.googleapis.com/auth/calendar.events.public.readonly",
31
54
  "https://www.googleapis.com/auth/calendar.events.readonly",
32
55
  ],
33
56
  type: "or",
@@ -62,16 +85,6 @@ const GOOGLE_FORM_RESPONSES_ACCOUNT = {
62
85
  connectionOptions: [
63
86
  {
64
87
  requiredScopes: [
65
- {
66
- requirements: [
67
- "https://www.googleapis.com/auth/drive",
68
- "https://www.googleapis.com/auth/drive.file",
69
- "https://www.googleapis.com/auth/drive.readonly",
70
- "https://www.googleapis.com/auth/forms.body",
71
- "https://www.googleapis.com/auth/forms.body.readonly",
72
- ],
73
- type: "or",
74
- },
75
88
  {
76
89
  requirements: [
77
90
  {
@@ -141,6 +154,24 @@ export const googleTriggerDefinitions = {
141
154
  icon: "gmail",
142
155
  type: "gmail.label.removed",
143
156
  },
157
+ gmailMailboxChanged: {
158
+ account: GMAIL_ACCOUNT,
159
+ icon: "gmail",
160
+ name: "Gmail mailbox changed",
161
+ type: "gmail.mailbox.changed",
162
+ },
163
+ gmailMessageAdded: {
164
+ account: GMAIL_ACCOUNT,
165
+ icon: "gmail",
166
+ name: "Gmail message added",
167
+ type: "gmail.message.added",
168
+ },
169
+ gmailMessageDeleted: {
170
+ account: GMAIL_DELETION_ACCOUNT,
171
+ icon: "gmail",
172
+ name: "Gmail message deleted",
173
+ type: "gmail.message.deleted",
174
+ },
144
175
  gmailMessageReceived: {
145
176
  account: GMAIL_ACCOUNT,
146
177
  icon: "gmail",
@@ -159,6 +190,12 @@ export const googleTriggerDefinitions = {
159
190
  name: "Google Calendar event created",
160
191
  type: "googleCalendar.event.created",
161
192
  },
193
+ googleCalendarEventChanged: {
194
+ account: GOOGLE_CALENDAR_ACCOUNT,
195
+ icon: "google-calendar",
196
+ name: "Google Calendar event changed",
197
+ type: "googleCalendar.event.changed",
198
+ },
162
199
  googleCalendarEventDeleted: {
163
200
  account: GOOGLE_CALENDAR_ACCOUNT,
164
201
  icon: "google-calendar",
@@ -9,6 +9,7 @@ import { coreTriggerDefinitions } from "./core"
9
9
  import { githubTriggerDefinitions } from "./github"
10
10
  import { googleTriggerDefinitions } from "./google"
11
11
  import { linearTriggerDefinitions } from "./linear"
12
+ import { millionVerifierTriggerDefinitions } from "./millionverifier"
12
13
  import { microsoftTriggerDefinitions } from "./microsoft"
13
14
  import { notionTriggerDefinitions } from "./notion"
14
15
  import { resendTriggerDefinitions } from "./resend"
@@ -58,6 +59,7 @@ export const triggerDefinitions = {
58
59
  ...githubTriggerDefinitions,
59
60
  ...googleTriggerDefinitions,
60
61
  ...linearTriggerDefinitions,
62
+ ...millionVerifierTriggerDefinitions,
61
63
  ...microsoftTriggerDefinitions,
62
64
  ...notionTriggerDefinitions,
63
65
  ...resendTriggerDefinitions,
@@ -0,0 +1,72 @@
1
+ import type {
2
+ IntegrationAccountRequirement,
3
+ TriggerDefinition,
4
+ TriggerPresentationContext,
5
+ } from "../types"
6
+
7
+ const MILLIONVERIFIER_ACCOUNT = {
8
+ connectionOptions: [{ requiredScopes: [] }],
9
+ serviceId: "millionverifier",
10
+ } as const satisfies IntegrationAccountRequirement
11
+
12
+ const trigger = <const TType extends string>(type: TType, name: string) => ({
13
+ account: MILLIONVERIFIER_ACCOUNT,
14
+ getDetails: millionVerifierTriggerDetails,
15
+ name,
16
+ type,
17
+ })
18
+
19
+ export const millionVerifierTriggerDefinitions = {
20
+ millionVerifierEvent: trigger(
21
+ "millionverifier.event",
22
+ "MillionVerifier event",
23
+ ),
24
+ millionVerifierNoCredit: trigger(
25
+ "millionverifier.noCredit",
26
+ "MillionVerifier out of credits",
27
+ ),
28
+ millionVerifierLowCredit: trigger(
29
+ "millionverifier.lowCredit",
30
+ "MillionVerifier credits low",
31
+ ),
32
+ millionVerifierFileReady: trigger(
33
+ "millionverifier.fileReady",
34
+ "MillionVerifier file ready",
35
+ ),
36
+ millionVerifierFileDeletionScheduled: trigger(
37
+ "millionverifier.fileDeletionScheduled",
38
+ "MillionVerifier file deletion scheduled",
39
+ ),
40
+ } as const satisfies Record<string, TriggerDefinition>
41
+
42
+ /**
43
+ * Returns the manual account-scoped provider callback for a deployed trigger.
44
+ *
45
+ * @param context - Resolved trigger presentation context.
46
+ */
47
+ function millionVerifierTriggerDetails(context: TriggerPresentationContext) {
48
+ const account = triggerAccount(context.config)
49
+ if (!account) return []
50
+ return [
51
+ {
52
+ copyable: true,
53
+ label: "Webhook URL",
54
+ value: new URL(
55
+ `/api/v1/events/millionverifier/${encodeURIComponent(account)}`,
56
+ context.appOrigin,
57
+ ).toString(),
58
+ },
59
+ ]
60
+ }
61
+
62
+ /**
63
+ * Reads the resolved account binding from canonical trigger configuration.
64
+ *
65
+ * @param config - Resolved trigger configuration.
66
+ */
67
+ function triggerAccount(config: unknown) {
68
+ if (typeof config !== "object" || config === null || !("account" in config)) {
69
+ return
70
+ }
71
+ return typeof config.account === "string" ? config.account : undefined
72
+ }