@automate.ax/catalog 0.125.0 → 0.127.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
@@ -110,6 +110,24 @@ export declare const automateService: {
110
110
  readonly id: "automate";
111
111
  readonly name: "Automate.ax";
112
112
  };
113
+ export declare const axiomService: {
114
+ readonly connectionMethods: readonly [{
115
+ readonly credentialUrl: "https://app.axiom.co/settings/api-tokens";
116
+ readonly fields: readonly [{
117
+ readonly input: "password";
118
+ readonly label: "API token";
119
+ readonly name: "apiKey";
120
+ readonly placeholder: "xaat-...";
121
+ readonly required: true;
122
+ }];
123
+ readonly id: "api-token";
124
+ readonly name: "API token";
125
+ readonly type: "form";
126
+ }];
127
+ readonly description: "Connect an Axiom API token for data, monitors, notifiers, and dashboards.";
128
+ readonly id: "axiom";
129
+ readonly name: "Axiom";
130
+ };
113
131
  export declare const brevoService: {
114
132
  readonly id: "brevo";
115
133
  readonly name: string;
@@ -750,6 +768,24 @@ export declare const resendService: {
750
768
  readonly name: "Resend";
751
769
  readonly preferredConnectionMethodId: "oauth";
752
770
  };
771
+ export declare const redditService: {
772
+ readonly connectionMethods: readonly [{
773
+ readonly id: "oauth";
774
+ readonly name: "OAuth";
775
+ readonly type: "redirect";
776
+ }];
777
+ readonly connectionNotice: {
778
+ readonly action: {
779
+ readonly href: "https://support.reddithelp.com/hc/en-us/articles/14945211791892-Reddit-Data-API-Wiki";
780
+ readonly label: "Review Reddit API access";
781
+ };
782
+ readonly description: "Reddit requires approval for commercial Data API access. Connect only an approved Reddit application.";
783
+ readonly title: "Reddit approval required";
784
+ };
785
+ readonly description: "Connect a Reddit account with OAuth.";
786
+ readonly id: "reddit";
787
+ readonly name: "Reddit";
788
+ };
753
789
  export declare const scrapflyService: {
754
790
  readonly id: "scrapfly";
755
791
  readonly name: string;
@@ -1056,6 +1092,23 @@ export declare const integrationCatalog: readonly [{
1056
1092
  readonly description: "Connect an Automate.ax organization for management actions and lifecycle triggers.";
1057
1093
  readonly id: "automate";
1058
1094
  readonly name: "Automate.ax";
1095
+ }, {
1096
+ readonly connectionMethods: readonly [{
1097
+ readonly credentialUrl: "https://app.axiom.co/settings/api-tokens";
1098
+ readonly fields: readonly [{
1099
+ readonly input: "password";
1100
+ readonly label: "API token";
1101
+ readonly name: "apiKey";
1102
+ readonly placeholder: "xaat-...";
1103
+ readonly required: true;
1104
+ }];
1105
+ readonly id: "api-token";
1106
+ readonly name: "API token";
1107
+ readonly type: "form";
1108
+ }];
1109
+ readonly description: "Connect an Axiom API token for data, monitors, notifiers, and dashboards.";
1110
+ readonly id: "axiom";
1111
+ readonly name: "Axiom";
1059
1112
  }, {
1060
1113
  readonly id: "brevo";
1061
1114
  readonly name: string;
@@ -1644,6 +1697,23 @@ export declare const integrationCatalog: readonly [{
1644
1697
  readonly description: "Connect a PostgreSQL database with a least-privilege role.";
1645
1698
  readonly id: "postgres";
1646
1699
  readonly name: "PostgreSQL";
1700
+ }, {
1701
+ readonly connectionMethods: readonly [{
1702
+ readonly id: "oauth";
1703
+ readonly name: "OAuth";
1704
+ readonly type: "redirect";
1705
+ }];
1706
+ readonly connectionNotice: {
1707
+ readonly action: {
1708
+ readonly href: "https://support.reddithelp.com/hc/en-us/articles/14945211791892-Reddit-Data-API-Wiki";
1709
+ readonly label: "Review Reddit API access";
1710
+ };
1711
+ readonly description: "Reddit requires approval for commercial Data API access. Connect only an approved Reddit application.";
1712
+ readonly title: "Reddit approval required";
1713
+ };
1714
+ readonly description: "Connect a Reddit account with OAuth.";
1715
+ readonly id: "reddit";
1716
+ readonly name: "Reddit";
1647
1717
  }, {
1648
1718
  readonly connectionMethods: readonly [{
1649
1719
  readonly id: "oauth";
package/dist/catalog.js CHANGED
@@ -100,6 +100,28 @@ export const automateService = defineIntegrationService({
100
100
  id: "automate",
101
101
  name: "Automate.ax",
102
102
  });
103
+ export const axiomService = defineIntegrationService({
104
+ connectionMethods: [
105
+ {
106
+ credentialUrl: "https://app.axiom.co/settings/api-tokens",
107
+ fields: [
108
+ {
109
+ input: "password",
110
+ label: "API token",
111
+ name: "apiKey",
112
+ placeholder: "xaat-...",
113
+ required: true,
114
+ },
115
+ ],
116
+ id: "api-token",
117
+ name: "API token",
118
+ type: "form",
119
+ },
120
+ ],
121
+ description: "Connect an Axiom API token for data, monitors, notifiers, and dashboards.",
122
+ id: "axiom",
123
+ name: "Axiom",
124
+ });
103
125
  export const brevoService = defineApiKeyService({
104
126
  credentialUrl: "https://app.brevo.com/settings/keys/api",
105
127
  description: "Connect a Brevo API key for messaging, contacts, campaigns, and managed events.",
@@ -510,6 +532,20 @@ export const resendService = defineIntegrationService({
510
532
  name: "Resend",
511
533
  preferredConnectionMethodId: "oauth",
512
534
  });
535
+ export const redditService = defineIntegrationService({
536
+ connectionMethods: [{ id: "oauth", name: "OAuth", type: "redirect" }],
537
+ connectionNotice: {
538
+ action: {
539
+ href: "https://support.reddithelp.com/hc/en-us/articles/14945211791892-Reddit-Data-API-Wiki",
540
+ label: "Review Reddit API access",
541
+ },
542
+ description: "Reddit requires approval for commercial Data API access. Connect only an approved Reddit application.",
543
+ title: "Reddit approval required",
544
+ },
545
+ description: "Connect a Reddit account with OAuth.",
546
+ id: "reddit",
547
+ name: "Reddit",
548
+ });
513
549
  export const scrapflyService = defineApiKeyService({
514
550
  credentialUrl: "https://scrapfly.io/dashboard/project",
515
551
  description: "Connect a Scrapfly API key.",
@@ -645,6 +681,7 @@ export const integrationCatalog = defineIntegrationCatalog([
645
681
  apifyService,
646
682
  asanaService,
647
683
  automateService,
684
+ axiomService,
648
685
  brevoService,
649
686
  browserbaseService,
650
687
  cerebrasService,
@@ -675,6 +712,7 @@ export const integrationCatalog = defineIntegrationCatalog([
675
712
  openrouterService,
676
713
  perplexityService,
677
714
  postgresService,
715
+ redditService,
678
716
  resendService,
679
717
  scrapflyService,
680
718
  slackService,
package/dist/index.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- export { airtableService, anthropicService, apolloService, apifyService, asanaService, automateService, brevoService, browserbaseService, cerebrasService, chatgptService, cloudflareService, closeService, codexService, cohereService, convexService, deepinfraService, deepseekService, firecrawlService, fireworksService, getIntegrationService, githubService, googleGenaiService, googleService, groqService, huggingfaceService, hubspotService, integrationCatalog, jobNimbusService, 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";
1
+ export { airtableService, anthropicService, apolloService, apifyService, asanaService, automateService, axiomService, brevoService, browserbaseService, cerebrasService, chatgptService, cloudflareService, closeService, codexService, cohereService, convexService, deepinfraService, deepseekService, firecrawlService, fireworksService, getIntegrationService, githubService, googleGenaiService, googleService, groqService, huggingfaceService, hubspotService, integrationCatalog, jobNimbusService, linearService, microsoftService, millionverifierService, mistralService, notionService, openaiService, onePasswordService, openrouterService, perplexityService, postgresService, redditService, 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 TriggerAccountRequirement, 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, apifyService, asanaService, automateService, brevoService, browserbaseService, cerebrasService, chatgptService, cloudflareService, closeService, codexService, cohereService, convexService, deepinfraService, deepseekService, firecrawlService, fireworksService, getIntegrationService, githubService, googleGenaiService, googleService, groqService, huggingfaceService, hubspotService, integrationCatalog, jobNimbusService, 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";
1
+ export { airtableService, anthropicService, apolloService, apifyService, asanaService, automateService, axiomService, brevoService, browserbaseService, cerebrasService, chatgptService, cloudflareService, closeService, codexService, cohereService, convexService, deepinfraService, deepseekService, firecrawlService, fireworksService, getIntegrationService, githubService, googleGenaiService, googleService, groqService, huggingfaceService, hubspotService, integrationCatalog, jobNimbusService, linearService, microsoftService, millionverifierService, mistralService, notionService, openaiService, onePasswordService, openrouterService, perplexityService, postgresService, redditService, 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";
@@ -0,0 +1,32 @@
1
+ export declare const axiomTriggerDefinitions: {
2
+ readonly axiomMonitorNotification: {
3
+ readonly account: {
4
+ readonly connectionOptions: readonly [{
5
+ readonly connectionMethodId: "api-token";
6
+ readonly requiredScopes: readonly [];
7
+ }];
8
+ readonly serviceId: "axiom";
9
+ };
10
+ readonly type: "axiom.monitorNotification";
11
+ };
12
+ readonly axiomMonitorOpened: {
13
+ readonly account: {
14
+ readonly connectionOptions: readonly [{
15
+ readonly connectionMethodId: "api-token";
16
+ readonly requiredScopes: readonly [];
17
+ }];
18
+ readonly serviceId: "axiom";
19
+ };
20
+ readonly type: "axiom.monitorOpened";
21
+ };
22
+ readonly axiomMonitorClosed: {
23
+ readonly account: {
24
+ readonly connectionOptions: readonly [{
25
+ readonly connectionMethodId: "api-token";
26
+ readonly requiredScopes: readonly [];
27
+ }];
28
+ readonly serviceId: "axiom";
29
+ };
30
+ readonly type: "axiom.monitorClosed";
31
+ };
32
+ };
@@ -0,0 +1,18 @@
1
+ const AXIOM_ACCOUNT = {
2
+ connectionOptions: [{ connectionMethodId: "api-token", requiredScopes: [] }],
3
+ serviceId: "axiom",
4
+ };
5
+ export const axiomTriggerDefinitions = {
6
+ axiomMonitorNotification: {
7
+ account: AXIOM_ACCOUNT,
8
+ type: "axiom.monitorNotification",
9
+ },
10
+ axiomMonitorOpened: {
11
+ account: AXIOM_ACCOUNT,
12
+ type: "axiom.monitorOpened",
13
+ },
14
+ axiomMonitorClosed: {
15
+ account: AXIOM_ACCOUNT,
16
+ type: "axiom.monitorClosed",
17
+ },
18
+ };
@@ -1836,6 +1836,43 @@ export declare const triggerDefinitions: {
1836
1836
  };
1837
1837
  readonly type: "resend.suppression.removed";
1838
1838
  };
1839
+ readonly redditSubredditEvent: {
1840
+ account: import("..").IntegrationAccountRequirement<"reddit">;
1841
+ getPrimary: (context: TriggerPresentationContext) => {
1842
+ value: string;
1843
+ };
1844
+ name: string;
1845
+ type: "reddit.subreddit.event";
1846
+ };
1847
+ readonly redditNewPost: {
1848
+ account: import("..").IntegrationAccountRequirement<"reddit">;
1849
+ getPrimary: (context: TriggerPresentationContext) => {
1850
+ value: string;
1851
+ };
1852
+ name: string;
1853
+ type: "reddit.subreddit.post.created";
1854
+ };
1855
+ readonly redditNewComment: {
1856
+ account: import("..").IntegrationAccountRequirement<"reddit">;
1857
+ getPrimary: (context: TriggerPresentationContext) => {
1858
+ value: string;
1859
+ };
1860
+ name: string;
1861
+ type: "reddit.subreddit.comment.created";
1862
+ };
1863
+ readonly redditNewInboxItem: {
1864
+ readonly account: import("..").IntegrationAccountRequirement<"reddit">;
1865
+ readonly name: "New Reddit inbox item";
1866
+ readonly type: "reddit.inbox.item.received";
1867
+ };
1868
+ readonly redditNewModQueueItem: {
1869
+ readonly account: import("..").IntegrationAccountRequirement<"reddit">;
1870
+ readonly getPrimary: (context: TriggerPresentationContext) => {
1871
+ value: string;
1872
+ };
1873
+ readonly name: "New Reddit mod queue item";
1874
+ readonly type: "reddit.modQueue.item.received";
1875
+ };
1839
1876
  readonly notionCommentCreated: {
1840
1877
  account: import("..").IntegrationAccountRequirement<"notion">;
1841
1878
  type: "notion.comment.created";
@@ -7105,6 +7142,36 @@ export declare const triggerDefinitions: {
7105
7142
  }[];
7106
7143
  readonly type: "automate.execution.settled";
7107
7144
  };
7145
+ readonly axiomMonitorNotification: {
7146
+ readonly account: {
7147
+ readonly connectionOptions: readonly [{
7148
+ readonly connectionMethodId: "api-token";
7149
+ readonly requiredScopes: readonly [];
7150
+ }];
7151
+ readonly serviceId: "axiom";
7152
+ };
7153
+ readonly type: "axiom.monitorNotification";
7154
+ };
7155
+ readonly axiomMonitorOpened: {
7156
+ readonly account: {
7157
+ readonly connectionOptions: readonly [{
7158
+ readonly connectionMethodId: "api-token";
7159
+ readonly requiredScopes: readonly [];
7160
+ }];
7161
+ readonly serviceId: "axiom";
7162
+ };
7163
+ readonly type: "axiom.monitorOpened";
7164
+ };
7165
+ readonly axiomMonitorClosed: {
7166
+ readonly account: {
7167
+ readonly connectionOptions: readonly [{
7168
+ readonly connectionMethodId: "api-token";
7169
+ readonly requiredScopes: readonly [];
7170
+ }];
7171
+ readonly serviceId: "axiom";
7172
+ };
7173
+ readonly type: "axiom.monitorClosed";
7174
+ };
7108
7175
  readonly airtableBaseEvent: {
7109
7176
  readonly account: import("..").IntegrationAccountRequirement<"airtable">;
7110
7177
  readonly type: "airtable.base.event";
@@ -7463,6 +7530,36 @@ export declare const triggerCatalog: ({
7463
7530
  readonly serviceId: "apify";
7464
7531
  };
7465
7532
  type: "apify.actorRun.timedOut";
7533
+ } | {
7534
+ name: string;
7535
+ account: {
7536
+ readonly connectionOptions: readonly [{
7537
+ readonly connectionMethodId: "api-token";
7538
+ readonly requiredScopes: readonly [];
7539
+ }];
7540
+ readonly serviceId: "axiom";
7541
+ };
7542
+ type: "axiom.monitorNotification";
7543
+ } | {
7544
+ name: string;
7545
+ account: {
7546
+ readonly connectionOptions: readonly [{
7547
+ readonly connectionMethodId: "api-token";
7548
+ readonly requiredScopes: readonly [];
7549
+ }];
7550
+ readonly serviceId: "axiom";
7551
+ };
7552
+ type: "axiom.monitorOpened";
7553
+ } | {
7554
+ name: string;
7555
+ account: {
7556
+ readonly connectionOptions: readonly [{
7557
+ readonly connectionMethodId: "api-token";
7558
+ readonly requiredScopes: readonly [];
7559
+ }];
7560
+ readonly serviceId: "axiom";
7561
+ };
7562
+ type: "axiom.monitorClosed";
7466
7563
  } | {
7467
7564
  name: string;
7468
7565
  account: {
@@ -12626,6 +12723,38 @@ export declare const triggerCatalog: ({
12626
12723
  name: string;
12627
12724
  account: import("..").IntegrationAccountRequirement<"notion">;
12628
12725
  type: "notion.view.updated";
12726
+ } | {
12727
+ name: string;
12728
+ account: import("..").IntegrationAccountRequirement<"reddit">;
12729
+ getPrimary: (context: TriggerPresentationContext) => {
12730
+ value: string;
12731
+ };
12732
+ type: "reddit.subreddit.event";
12733
+ } | {
12734
+ name: string;
12735
+ account: import("..").IntegrationAccountRequirement<"reddit">;
12736
+ getPrimary: (context: TriggerPresentationContext) => {
12737
+ value: string;
12738
+ };
12739
+ type: "reddit.subreddit.post.created";
12740
+ } | {
12741
+ name: string;
12742
+ account: import("..").IntegrationAccountRequirement<"reddit">;
12743
+ getPrimary: (context: TriggerPresentationContext) => {
12744
+ value: string;
12745
+ };
12746
+ type: "reddit.subreddit.comment.created";
12747
+ } | {
12748
+ name: string;
12749
+ account: import("..").IntegrationAccountRequirement<"reddit">;
12750
+ type: "reddit.inbox.item.received";
12751
+ } | {
12752
+ name: string;
12753
+ account: import("..").IntegrationAccountRequirement<"reddit">;
12754
+ getPrimary: (context: TriggerPresentationContext) => {
12755
+ value: string;
12756
+ };
12757
+ type: "reddit.modQueue.item.received";
12629
12758
  } | {
12630
12759
  name: string;
12631
12760
  account: {
@@ -1,5 +1,6 @@
1
1
  import { airtableTriggerDefinitions } from "./airtable.js";
2
2
  import { apifyTriggerDefinitions } from "./apify.js";
3
+ import { axiomTriggerDefinitions } from "./axiom.js";
3
4
  import { automateTriggerDefinitions } from "./automate.js";
4
5
  import { asanaTriggerDefinitions } from "./asana.js";
5
6
  import { brevoTriggerDefinitions } from "./brevo.js";
@@ -14,6 +15,7 @@ import { linearTriggerDefinitions } from "./linear.js";
14
15
  import { millionVerifierTriggerDefinitions } from "./millionverifier.js";
15
16
  import { microsoftTriggerDefinitions } from "./microsoft.js";
16
17
  import { notionTriggerDefinitions } from "./notion.js";
18
+ import { redditTriggerDefinitions } from "./reddit.js";
17
19
  import { resendTriggerDefinitions } from "./resend.js";
18
20
  import { slackTriggerDefinitions } from "./slack.js";
19
21
  import { stripeTriggerDefinitions } from "./stripe.js";
@@ -28,6 +30,7 @@ export { getDashboardRunEndpoint, getDashboardRunEndpointKey, getHttpTriggerEndp
28
30
  export const triggerDefinitions = {
29
31
  ...apifyTriggerDefinitions,
30
32
  ...airtableTriggerDefinitions,
33
+ ...axiomTriggerDefinitions,
31
34
  ...automateTriggerDefinitions,
32
35
  ...asanaTriggerDefinitions,
33
36
  ...brevoTriggerDefinitions,
@@ -42,6 +45,7 @@ export const triggerDefinitions = {
42
45
  ...millionVerifierTriggerDefinitions,
43
46
  ...microsoftTriggerDefinitions,
44
47
  ...notionTriggerDefinitions,
48
+ ...redditTriggerDefinitions,
45
49
  ...resendTriggerDefinitions,
46
50
  ...slackTriggerDefinitions,
47
51
  ...stripeTriggerDefinitions,
@@ -0,0 +1,42 @@
1
+ import type { IntegrationAccountRequirement, TriggerPresentationContext } from "../types.js";
2
+ export declare const redditTriggerDefinitions: {
3
+ readonly redditSubredditEvent: {
4
+ account: IntegrationAccountRequirement<"reddit">;
5
+ getPrimary: typeof subredditPrimary;
6
+ name: string;
7
+ type: "reddit.subreddit.event";
8
+ };
9
+ readonly redditNewPost: {
10
+ account: IntegrationAccountRequirement<"reddit">;
11
+ getPrimary: typeof subredditPrimary;
12
+ name: string;
13
+ type: "reddit.subreddit.post.created";
14
+ };
15
+ readonly redditNewComment: {
16
+ account: IntegrationAccountRequirement<"reddit">;
17
+ getPrimary: typeof subredditPrimary;
18
+ name: string;
19
+ type: "reddit.subreddit.comment.created";
20
+ };
21
+ readonly redditNewInboxItem: {
22
+ readonly account: IntegrationAccountRequirement<"reddit">;
23
+ readonly name: "New Reddit inbox item";
24
+ readonly type: "reddit.inbox.item.received";
25
+ };
26
+ readonly redditNewModQueueItem: {
27
+ readonly account: IntegrationAccountRequirement<"reddit">;
28
+ readonly getPrimary: typeof subredditPrimary;
29
+ readonly name: "New Reddit mod queue item";
30
+ readonly type: "reddit.modQueue.item.received";
31
+ };
32
+ };
33
+ /**
34
+ * Reads a trigger's configured subreddit for presentation.
35
+ *
36
+ * @param context - Resolved trigger presentation context.
37
+ * @throws When canonical trigger configuration is missing its subreddit.
38
+ */
39
+ declare function subredditPrimary(context: TriggerPresentationContext): {
40
+ value: string;
41
+ };
42
+ export {};
@@ -0,0 +1,41 @@
1
+ const redditAccount = (scope) => ({
2
+ connectionOptions: [{ connectionMethodId: "oauth", requiredScopes: [scope] }],
3
+ serviceId: "reddit",
4
+ });
5
+ const SUBREDDIT_ACCOUNT = redditAccount("read");
6
+ const subredditTrigger = (type, name) => ({
7
+ account: SUBREDDIT_ACCOUNT,
8
+ getPrimary: subredditPrimary,
9
+ name,
10
+ type,
11
+ });
12
+ export const redditTriggerDefinitions = {
13
+ redditSubredditEvent: subredditTrigger("reddit.subreddit.event", "Reddit subreddit event"),
14
+ redditNewPost: subredditTrigger("reddit.subreddit.post.created", "New Reddit post"),
15
+ redditNewComment: subredditTrigger("reddit.subreddit.comment.created", "New Reddit comment"),
16
+ redditNewInboxItem: {
17
+ account: redditAccount("privatemessages"),
18
+ name: "New Reddit inbox item",
19
+ type: "reddit.inbox.item.received",
20
+ },
21
+ redditNewModQueueItem: {
22
+ account: redditAccount("read"),
23
+ getPrimary: subredditPrimary,
24
+ name: "New Reddit mod queue item",
25
+ type: "reddit.modQueue.item.received",
26
+ },
27
+ };
28
+ /**
29
+ * Reads a trigger's configured subreddit for presentation.
30
+ *
31
+ * @param context - Resolved trigger presentation context.
32
+ * @throws When canonical trigger configuration is missing its subreddit.
33
+ */
34
+ function subredditPrimary(context) {
35
+ if (typeof context.config !== "object" ||
36
+ context.config === null ||
37
+ !("subreddit" in context.config) ||
38
+ typeof context.config.subreddit !== "string")
39
+ throw new TypeError("Reddit trigger configuration requires a subreddit.");
40
+ return { value: `r/${context.config.subreddit}` };
41
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@automate.ax/catalog",
3
- "version": "0.125.0",
3
+ "version": "0.127.0",
4
4
  "description": "Shared integration service and trigger definitions for Automate.ax.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -22,6 +22,7 @@
22
22
  "./authoring": "./src/authoring.ts",
23
23
  "./triggers/apify": "./src/triggers/apify.ts",
24
24
  "./triggers/airtable": "./src/triggers/airtable.ts",
25
+ "./triggers/axiom": "./src/triggers/axiom.ts",
25
26
  "./triggers/automate": "./src/triggers/automate.ts",
26
27
  "./triggers/asana": "./src/triggers/asana.ts",
27
28
  "./triggers/brevo": "./src/triggers/brevo.ts",
@@ -40,6 +41,7 @@
40
41
  "./triggers/millionverifier": "./src/triggers/millionverifier.ts",
41
42
  "./triggers/microsoft": "./src/triggers/microsoft.ts",
42
43
  "./triggers/notion": "./src/triggers/notion.ts",
44
+ "./triggers/reddit": "./src/triggers/reddit.ts",
43
45
  "./triggers/name": "./src/triggers/name.ts",
44
46
  "./triggers/resend": "./src/triggers/resend.ts",
45
47
  "./triggers/slack": "./src/triggers/slack.ts",
@@ -106,6 +108,11 @@
106
108
  "types": "./dist/triggers/airtable.d.ts",
107
109
  "default": "./dist/triggers/airtable.js"
108
110
  },
111
+ "./triggers/axiom": {
112
+ "bun": "./src/triggers/axiom.ts",
113
+ "types": "./dist/triggers/axiom.d.ts",
114
+ "default": "./dist/triggers/axiom.js"
115
+ },
109
116
  "./triggers/automate": {
110
117
  "bun": "./src/triggers/automate.ts",
111
118
  "types": "./dist/triggers/automate.d.ts",
@@ -196,6 +203,11 @@
196
203
  "types": "./dist/triggers/notion.d.ts",
197
204
  "default": "./dist/triggers/notion.js"
198
205
  },
206
+ "./triggers/reddit": {
207
+ "bun": "./src/triggers/reddit.ts",
208
+ "types": "./dist/triggers/reddit.d.ts",
209
+ "default": "./dist/triggers/reddit.js"
210
+ },
199
211
  "./triggers/name": {
200
212
  "bun": "./src/triggers/name.ts",
201
213
  "types": "./dist/triggers/name.d.ts",
package/src/catalog.ts CHANGED
@@ -111,6 +111,30 @@ export const automateService = defineIntegrationService({
111
111
  name: "Automate.ax",
112
112
  })
113
113
 
114
+ export const axiomService = defineIntegrationService({
115
+ connectionMethods: [
116
+ {
117
+ credentialUrl: "https://app.axiom.co/settings/api-tokens",
118
+ fields: [
119
+ {
120
+ input: "password",
121
+ label: "API token",
122
+ name: "apiKey",
123
+ placeholder: "xaat-...",
124
+ required: true,
125
+ },
126
+ ],
127
+ id: "api-token",
128
+ name: "API token",
129
+ type: "form",
130
+ },
131
+ ],
132
+ description:
133
+ "Connect an Axiom API token for data, monitors, notifiers, and dashboards.",
134
+ id: "axiom",
135
+ name: "Axiom",
136
+ })
137
+
114
138
  export const brevoService = defineApiKeyService({
115
139
  credentialUrl: "https://app.brevo.com/settings/keys/api",
116
140
  description:
@@ -563,6 +587,22 @@ export const resendService = defineIntegrationService({
563
587
  preferredConnectionMethodId: "oauth",
564
588
  })
565
589
 
590
+ export const redditService = defineIntegrationService({
591
+ connectionMethods: [{ id: "oauth", name: "OAuth", type: "redirect" }],
592
+ connectionNotice: {
593
+ action: {
594
+ href: "https://support.reddithelp.com/hc/en-us/articles/14945211791892-Reddit-Data-API-Wiki",
595
+ label: "Review Reddit API access",
596
+ },
597
+ description:
598
+ "Reddit requires approval for commercial Data API access. Connect only an approved Reddit application.",
599
+ title: "Reddit approval required",
600
+ },
601
+ description: "Connect a Reddit account with OAuth.",
602
+ id: "reddit",
603
+ name: "Reddit",
604
+ })
605
+
566
606
  export const scrapflyService = defineApiKeyService({
567
607
  credentialUrl: "https://scrapfly.io/dashboard/project",
568
608
  description: "Connect a Scrapfly API key.",
@@ -712,6 +752,7 @@ export const integrationCatalog = defineIntegrationCatalog([
712
752
  apifyService,
713
753
  asanaService,
714
754
  automateService,
755
+ axiomService,
715
756
  brevoService,
716
757
  browserbaseService,
717
758
  cerebrasService,
@@ -742,6 +783,7 @@ export const integrationCatalog = defineIntegrationCatalog([
742
783
  openrouterService,
743
784
  perplexityService,
744
785
  postgresService,
786
+ redditService,
745
787
  resendService,
746
788
  scrapflyService,
747
789
  slackService,
package/src/index.ts CHANGED
@@ -5,6 +5,7 @@ export {
5
5
  apifyService,
6
6
  asanaService,
7
7
  automateService,
8
+ axiomService,
8
9
  brevoService,
9
10
  browserbaseService,
10
11
  cerebrasService,
@@ -37,6 +38,7 @@ export {
37
38
  openrouterService,
38
39
  perplexityService,
39
40
  postgresService,
41
+ redditService,
40
42
  resendService,
41
43
  scrapflyService,
42
44
  slackService,
@@ -0,0 +1,21 @@
1
+ import type { IntegrationAccountRequirement, TriggerDefinition } from "../types"
2
+
3
+ const AXIOM_ACCOUNT = {
4
+ connectionOptions: [{ connectionMethodId: "api-token", requiredScopes: [] }],
5
+ serviceId: "axiom",
6
+ } as const satisfies IntegrationAccountRequirement
7
+
8
+ export const axiomTriggerDefinitions = {
9
+ axiomMonitorNotification: {
10
+ account: AXIOM_ACCOUNT,
11
+ type: "axiom.monitorNotification",
12
+ },
13
+ axiomMonitorOpened: {
14
+ account: AXIOM_ACCOUNT,
15
+ type: "axiom.monitorOpened",
16
+ },
17
+ axiomMonitorClosed: {
18
+ account: AXIOM_ACCOUNT,
19
+ type: "axiom.monitorClosed",
20
+ },
21
+ } as const satisfies Record<string, TriggerDefinition>
@@ -1,5 +1,6 @@
1
1
  import { airtableTriggerDefinitions } from "./airtable"
2
2
  import { apifyTriggerDefinitions } from "./apify"
3
+ import { axiomTriggerDefinitions } from "./axiom"
3
4
  import { automateTriggerDefinitions } from "./automate"
4
5
  import { asanaTriggerDefinitions } from "./asana"
5
6
  import { brevoTriggerDefinitions } from "./brevo"
@@ -14,6 +15,7 @@ import { linearTriggerDefinitions } from "./linear"
14
15
  import { millionVerifierTriggerDefinitions } from "./millionverifier"
15
16
  import { microsoftTriggerDefinitions } from "./microsoft"
16
17
  import { notionTriggerDefinitions } from "./notion"
18
+ import { redditTriggerDefinitions } from "./reddit"
17
19
  import { resendTriggerDefinitions } from "./resend"
18
20
  import { slackTriggerDefinitions } from "./slack"
19
21
  import { stripeTriggerDefinitions } from "./stripe"
@@ -52,6 +54,7 @@ export {
52
54
  export const triggerDefinitions = {
53
55
  ...apifyTriggerDefinitions,
54
56
  ...airtableTriggerDefinitions,
57
+ ...axiomTriggerDefinitions,
55
58
  ...automateTriggerDefinitions,
56
59
  ...asanaTriggerDefinitions,
57
60
  ...brevoTriggerDefinitions,
@@ -66,6 +69,7 @@ export const triggerDefinitions = {
66
69
  ...millionVerifierTriggerDefinitions,
67
70
  ...microsoftTriggerDefinitions,
68
71
  ...notionTriggerDefinitions,
72
+ ...redditTriggerDefinitions,
69
73
  ...resendTriggerDefinitions,
70
74
  ...slackTriggerDefinitions,
71
75
  ...stripeTriggerDefinitions,
@@ -0,0 +1,67 @@
1
+ import type {
2
+ IntegrationAccountRequirement,
3
+ TriggerDefinition,
4
+ TriggerPresentationContext,
5
+ } from "../types"
6
+
7
+ const redditAccount = (
8
+ scope: "privatemessages" | "read",
9
+ ): IntegrationAccountRequirement<"reddit"> => ({
10
+ connectionOptions: [{ connectionMethodId: "oauth", requiredScopes: [scope] }],
11
+ serviceId: "reddit",
12
+ })
13
+
14
+ const SUBREDDIT_ACCOUNT = redditAccount("read")
15
+
16
+ const subredditTrigger = <const TType extends string>(
17
+ type: TType,
18
+ name: string,
19
+ ) => ({
20
+ account: SUBREDDIT_ACCOUNT,
21
+ getPrimary: subredditPrimary,
22
+ name,
23
+ type,
24
+ })
25
+
26
+ export const redditTriggerDefinitions = {
27
+ redditSubredditEvent: subredditTrigger(
28
+ "reddit.subreddit.event",
29
+ "Reddit subreddit event",
30
+ ),
31
+ redditNewPost: subredditTrigger(
32
+ "reddit.subreddit.post.created",
33
+ "New Reddit post",
34
+ ),
35
+ redditNewComment: subredditTrigger(
36
+ "reddit.subreddit.comment.created",
37
+ "New Reddit comment",
38
+ ),
39
+ redditNewInboxItem: {
40
+ account: redditAccount("privatemessages"),
41
+ name: "New Reddit inbox item",
42
+ type: "reddit.inbox.item.received",
43
+ },
44
+ redditNewModQueueItem: {
45
+ account: redditAccount("read"),
46
+ getPrimary: subredditPrimary,
47
+ name: "New Reddit mod queue item",
48
+ type: "reddit.modQueue.item.received",
49
+ },
50
+ } as const satisfies Record<string, TriggerDefinition>
51
+
52
+ /**
53
+ * Reads a trigger's configured subreddit for presentation.
54
+ *
55
+ * @param context - Resolved trigger presentation context.
56
+ * @throws When canonical trigger configuration is missing its subreddit.
57
+ */
58
+ function subredditPrimary(context: TriggerPresentationContext) {
59
+ if (
60
+ typeof context.config !== "object" ||
61
+ context.config === null ||
62
+ !("subreddit" in context.config) ||
63
+ typeof context.config.subreddit !== "string"
64
+ )
65
+ throw new TypeError("Reddit trigger configuration requires a subreddit.")
66
+ return { value: `r/${context.config.subreddit}` }
67
+ }