runline 0.2.1 → 0.2.2
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/plugins/actionNetwork/src/index.js +118 -25
- package/dist/plugins/activeCampaign/src/index.js +184 -38
- package/dist/plugins/adalo/src/index.js +40 -8
- package/dist/plugins/affinity/src/index.js +100 -20
- package/dist/plugins/agileCrm/src/index.js +115 -27
- package/dist/plugins/airtable/src/index.js +94 -19
- package/dist/plugins/airtop/src/index.js +266 -62
- package/dist/plugins/apiTemplateIo/src/index.js +25 -5
- package/dist/plugins/asana/src/index.js +195 -41
- package/dist/plugins/autopilot/src/index.js +39 -8
- package/dist/plugins/bambooHr/src/index.js +109 -22
- package/dist/plugins/bannerbear/src/index.js +36 -8
- package/dist/plugins/baserow/src/index.js +35 -7
- package/dist/plugins/beeminder/src/index.js +198 -40
- package/dist/plugins/bitly/src/index.js +46 -10
- package/dist/plugins/bitwarden/src/index.js +167 -36
- package/dist/plugins/box/src/index.js +172 -37
- package/dist/plugins/brandfetch/src/index.js +5 -1
- package/dist/plugins/brevo/src/index.js +136 -29
- package/dist/plugins/bubble/src/index.js +76 -17
- package/dist/plugins/chargebee/src/index.js +35 -7
- package/dist/plugins/circleci/src/index.js +50 -10
- package/dist/plugins/ciscoWebex/src/index.js +131 -27
- package/dist/plugins/clearbit/src/index.js +76 -17
- package/dist/plugins/clickup/src/index.js +500 -107
- package/dist/plugins/clockify/src/index.js +229 -47
- package/dist/plugins/cloudflare/src/index.js +28 -6
- package/dist/plugins/cockpit/src/index.js +54 -12
- package/dist/plugins/coda/src/index.js +81 -19
- package/dist/plugins/coingecko/src/index.js +157 -33
- package/dist/plugins/contentful/src/index.js +85 -17
- package/dist/plugins/convertkit/src/index.js +74 -18
- package/dist/plugins/copper/src/index.js +59 -11
- package/dist/plugins/cortex/src/index.js +55 -13
- package/dist/plugins/currents/src/index.js +310 -71
- package/dist/plugins/customerIo/src/index.js +112 -23
- package/dist/plugins/databricks/src/index.js +549 -115
- package/dist/plugins/deepl/src/index.js +26 -6
- package/dist/plugins/demio/src/index.js +56 -11
- package/dist/plugins/dhl/src/index.js +16 -3
- package/dist/plugins/discord/src/index.js +141 -31
- package/dist/plugins/discourse/src/index.js +136 -31
- package/dist/plugins/disqus/src/index.js +96 -20
- package/dist/plugins/docker/src/index.js +20 -4
- package/dist/plugins/drift/src/index.js +19 -5
- package/dist/plugins/dropbox/src/index.js +139 -30
- package/dist/plugins/dropcontact/src/index.js +21 -4
- package/dist/plugins/egoi/src/index.js +61 -15
- package/dist/plugins/elasticsearch/src/index.js +59 -13
- package/dist/plugins/emelia/src/index.js +95 -19
- package/dist/plugins/erpnext/src/index.js +74 -15
- package/dist/plugins/facebookGraph/src/index.js +52 -11
- package/dist/plugins/freshdesk/src/index.js +220 -48
- package/dist/plugins/freshservice/src/index.js +39 -9
- package/dist/plugins/freshworksCrm/src/index.js +58 -12
- package/dist/plugins/getresponse/src/index.js +87 -18
- package/dist/plugins/ghost/src/index.js +114 -26
- package/dist/plugins/github/src/index.js +483 -109
- package/dist/plugins/gitlab/src/index.js +193 -45
- package/dist/plugins/gong/src/index.js +68 -14
- package/dist/plugins/gotify/src/index.js +43 -9
- package/dist/plugins/gotowebinar/src/index.js +233 -47
- package/dist/plugins/grafana/src/index.js +92 -21
- package/dist/plugins/graphql/src/index.js +38 -8
- package/dist/plugins/grist/src/index.js +52 -10
- package/dist/plugins/hackernews/src/index.js +32 -6
- package/dist/plugins/halopsa/src/index.js +131 -26
- package/dist/plugins/harvest/src/index.js +182 -42
- package/dist/plugins/helpscout/src/index.js +153 -31
- package/dist/plugins/highlevel/src/index.js +291 -58
- package/dist/plugins/homeAssistant/src/index.js +124 -26
- package/dist/plugins/hubspot/src/index.js +163 -29
- package/dist/plugins/humanticAi/src/index.js +54 -5
- package/dist/plugins/hunter/src/index.js +21 -4
- package/dist/plugins/intercom/src/index.js +95 -20
- package/dist/plugins/iterable/src/index.js +96 -20
- package/dist/plugins/jenkins/src/index.js +75 -17
- package/dist/plugins/jira/src/index.js +193 -43
- package/dist/plugins/keap/src/index.js +222 -56
- package/dist/plugins/kobotoolbox/src/index.js +113 -25
- package/dist/plugins/lemlist/src/index.js +79 -18
- package/dist/plugins/linear/src/index.js +86 -19
- package/dist/plugins/lingvanex/src/index.js +38 -8
- package/dist/plugins/linkedin/src/index.js +37 -8
- package/dist/plugins/lonescale/src/index.js +41 -9
- package/dist/plugins/magento/src/index.js +98 -27
- package/dist/plugins/mailcheck/src/index.js +11 -2
- package/dist/plugins/mailchimp/src/index.js +193 -42
- package/dist/plugins/mailerlite/src/index.js +61 -12
- package/dist/plugins/mailgun/src/index.js +39 -7
- package/dist/plugins/mailjet/src/index.js +141 -30
- package/dist/plugins/mandrill/src/index.js +67 -14
- package/dist/plugins/marketstack/src/index.js +56 -10
- package/dist/plugins/matrix/src/index.js +97 -20
- package/dist/plugins/mattermost/src/index.js +124 -26
- package/dist/plugins/mautic/src/index.js +129 -26
- package/dist/plugins/medium/src/index.js +64 -13
- package/dist/plugins/messagebird/src/index.js +80 -15
- package/dist/plugins/metabase/src/index.js +57 -12
- package/dist/plugins/misp/src/index.js +135 -33
- package/dist/plugins/mocean/src/index.js +33 -7
- package/dist/plugins/monday/src/index.js +97 -23
- package/dist/plugins/monicaCrm/src/index.js +112 -23
- package/dist/plugins/msg91/src/index.js +11 -2
- package/dist/plugins/nasa/src/index.js +108 -21
- package/dist/plugins/netlify/src/index.js +28 -6
- package/dist/plugins/netscalerAdc/src/index.js +144 -29
- package/dist/plugins/nextcloud/src/index.js +103 -20
- package/dist/plugins/nocodb/src/index.js +57 -11
- package/dist/plugins/notion/src/index.js +148 -37
- package/dist/plugins/npm/src/index.js +59 -12
- package/dist/plugins/odoo/src/index.js +102 -20
- package/dist/plugins/okta/src/index.js +50 -10
- package/dist/plugins/oneSimpleApi/src/index.js +84 -17
- package/dist/plugins/onfleet/src/index.js +139 -32
- package/dist/plugins/openThesaurus/src/index.js +46 -9
- package/dist/plugins/openweathermap/src/index.js +31 -6
- package/dist/plugins/oura/src/index.js +36 -7
- package/dist/plugins/paddle/src/index.js +80 -17
- package/dist/plugins/pagerduty/src/index.js +53 -12
- package/dist/plugins/paypal/src/index.js +51 -11
- package/dist/plugins/peekalink/src/index.js +12 -3
- package/dist/plugins/phantombuster/src/index.js +39 -8
- package/dist/plugins/philipsHue/src/index.js +64 -13
- package/dist/plugins/pipedrive/src/index.js +167 -45
- package/dist/plugins/plivo/src/index.js +43 -8
- package/dist/plugins/postbin/src/index.js +9 -2
- package/dist/plugins/posthog/src/index.js +50 -13
- package/dist/plugins/profitwell/src/index.js +24 -5
- package/dist/plugins/pushbullet/src/index.js +45 -9
- package/dist/plugins/pushcut/src/index.js +31 -6
- package/dist/plugins/pushover/src/index.js +51 -10
- package/dist/plugins/quickbase/src/index.js +66 -13
- package/dist/plugins/quickbooks/src/index.js +86 -19
- package/dist/plugins/quickchart/src/index.js +35 -7
- package/dist/plugins/raindrop/src/index.js +54 -13
- package/dist/plugins/reddit/src/index.js +73 -18
- package/dist/plugins/rocketchat/src/index.js +47 -9
- package/dist/plugins/rundeck/src/index.js +26 -5
- package/dist/plugins/salesforce/src/index.js +161 -31
- package/dist/plugins/salesmate/src/index.js +75 -16
- package/dist/plugins/securityScorecard/src/index.js +73 -15
- package/dist/plugins/segment/src/index.js +21 -4
- package/dist/plugins/sendgrid/src/index.js +102 -24
- package/dist/plugins/sendy/src/index.js +54 -11
- package/dist/plugins/sentry/src/index.js +174 -34
- package/dist/plugins/servicenow/src/index.js +120 -27
- package/dist/plugins/shopify/src/index.js +53 -12
- package/dist/plugins/signl4/src/index.js +16 -3
- package/dist/plugins/slack/src/index.js +407 -105
- package/dist/plugins/sms77/src/index.js +26 -5
- package/dist/plugins/splunk/src/index.js +186 -45
- package/dist/plugins/spotify/src/index.js +265 -66
- package/dist/plugins/stackby/src/index.js +18 -6
- package/dist/plugins/storyblok/src/index.js +57 -11
- package/dist/plugins/strapi/src/index.js +63 -12
- package/dist/plugins/strava/src/index.js +58 -13
- package/dist/plugins/stripe/src/index.js +143 -30
- package/dist/plugins/supabase/src/index.js +49 -10
- package/dist/plugins/syncromsp/src/index.js +245 -67
- package/dist/plugins/tapfiliate/src/index.js +57 -14
- package/dist/plugins/telegram/src/index.js +202 -39
- package/dist/plugins/thehive/src/index.js +271 -66
- package/dist/plugins/thehiveProject/src/index.js +457 -89
- package/dist/plugins/todoist/src/index.js +326 -77
- package/dist/plugins/travisci/src/index.js +35 -8
- package/dist/plugins/trello/src/index.js +204 -46
- package/dist/plugins/twake/src/index.js +10 -2
- package/dist/plugins/twilio/src/index.js +56 -11
- package/dist/plugins/twist/src/index.js +241 -48
- package/dist/plugins/twitter/src/index.js +128 -30
- package/dist/plugins/unleashedSoftware/src/index.js +30 -6
- package/dist/plugins/uplead/src/index.js +9 -2
- package/dist/plugins/uproc/src/index.js +31 -6
- package/dist/plugins/uptimerobot/src/index.js +119 -25
- package/dist/plugins/urlscanio/src/index.js +25 -6
- package/dist/plugins/vero/src/index.js +68 -13
- package/dist/plugins/vonage/src/index.js +32 -6
- package/dist/plugins/wekan/src/index.js +297 -52
- package/dist/plugins/woocommerce/src/index.js +57 -12
- package/dist/plugins/wordpress/src/index.js +94 -18
- package/dist/plugins/xero/src/index.js +79 -13
- package/dist/plugins/yourls/src/index.js +33 -6
- package/dist/plugins/zammad/src/index.js +139 -36
- package/dist/plugins/zendesk/src/index.js +201 -48
- package/dist/plugins/zoho/src/index.js +88 -21
- package/dist/plugins/zoom/src/index.js +41 -7
- package/dist/plugins/zulip/src/index.js +101 -20
- package/package.json +1 -1
|
@@ -9,10 +9,17 @@ async function apiRequest(apiKey, method, endpoint, body, qs) {
|
|
|
9
9
|
}
|
|
10
10
|
const opts = {
|
|
11
11
|
method,
|
|
12
|
-
headers: {
|
|
12
|
+
headers: {
|
|
13
|
+
Authorization: `Basic ${btoa(`anystring:${apiKey}`)}`,
|
|
14
|
+
Accept: "application/json",
|
|
15
|
+
},
|
|
13
16
|
};
|
|
14
|
-
if (body &&
|
|
15
|
-
|
|
17
|
+
if (body &&
|
|
18
|
+
Object.keys(body).length > 0 &&
|
|
19
|
+
method !== "GET" &&
|
|
20
|
+
method !== "DELETE") {
|
|
21
|
+
opts.headers["Content-Type"] =
|
|
22
|
+
"application/json";
|
|
16
23
|
opts.body = JSON.stringify(body);
|
|
17
24
|
}
|
|
18
25
|
const res = await fetch(url.toString(), opts);
|
|
@@ -26,27 +33,68 @@ export default function mailchimp(rl) {
|
|
|
26
33
|
rl.setName("mailchimp");
|
|
27
34
|
rl.setVersion("0.1.0");
|
|
28
35
|
rl.setConnectionSchema({
|
|
29
|
-
apiKey: {
|
|
36
|
+
apiKey: {
|
|
37
|
+
type: "string",
|
|
38
|
+
required: true,
|
|
39
|
+
description: "Mailchimp API key (includes datacenter suffix, e.g. xxx-us21)",
|
|
40
|
+
env: "MAILCHIMP_API_KEY",
|
|
41
|
+
},
|
|
30
42
|
});
|
|
31
43
|
const key = (ctx) => ctx.connection.config.apiKey;
|
|
32
44
|
// ── Member ──────────────────────────────────────────
|
|
33
45
|
rl.registerAction("member.create", {
|
|
34
46
|
description: "Add a member to a list/audience",
|
|
35
47
|
inputSchema: {
|
|
36
|
-
listId: {
|
|
48
|
+
listId: {
|
|
49
|
+
type: "string",
|
|
50
|
+
required: true,
|
|
51
|
+
description: "List/audience ID",
|
|
52
|
+
},
|
|
37
53
|
email: { type: "string", required: true },
|
|
38
|
-
status: {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
54
|
+
status: {
|
|
55
|
+
type: "string",
|
|
56
|
+
required: true,
|
|
57
|
+
description: "subscribed, unsubscribed, cleaned, pending, transactional",
|
|
58
|
+
},
|
|
59
|
+
mergeFields: {
|
|
60
|
+
type: "object",
|
|
61
|
+
required: false,
|
|
62
|
+
description: "Merge fields as {TAG: value}",
|
|
63
|
+
},
|
|
64
|
+
tags: {
|
|
65
|
+
type: "array",
|
|
66
|
+
required: false,
|
|
67
|
+
description: "Array of tag name strings",
|
|
68
|
+
},
|
|
69
|
+
emailType: {
|
|
70
|
+
type: "string",
|
|
71
|
+
required: false,
|
|
72
|
+
description: "html or text",
|
|
73
|
+
},
|
|
42
74
|
language: { type: "string", required: false },
|
|
43
75
|
vip: { type: "boolean", required: false },
|
|
44
|
-
location: {
|
|
45
|
-
|
|
76
|
+
location: {
|
|
77
|
+
type: "object",
|
|
78
|
+
required: false,
|
|
79
|
+
description: "{latitude: number, longitude: number}",
|
|
80
|
+
},
|
|
81
|
+
interests: {
|
|
82
|
+
type: "object",
|
|
83
|
+
required: false,
|
|
84
|
+
description: "Interest group IDs as {id: boolean}",
|
|
85
|
+
},
|
|
46
86
|
ipSignup: { type: "string", required: false },
|
|
47
87
|
ipOpt: { type: "string", required: false },
|
|
48
|
-
timestampSignup: {
|
|
49
|
-
|
|
88
|
+
timestampSignup: {
|
|
89
|
+
type: "string",
|
|
90
|
+
required: false,
|
|
91
|
+
description: "ISO datetime",
|
|
92
|
+
},
|
|
93
|
+
timestampOpt: {
|
|
94
|
+
type: "string",
|
|
95
|
+
required: false,
|
|
96
|
+
description: "ISO datetime",
|
|
97
|
+
},
|
|
50
98
|
},
|
|
51
99
|
async execute(input, ctx) {
|
|
52
100
|
const p = input;
|
|
@@ -83,9 +131,21 @@ export default function mailchimp(rl) {
|
|
|
83
131
|
description: "Get a list member by email (used directly as subscriber hash)",
|
|
84
132
|
inputSchema: {
|
|
85
133
|
listId: { type: "string", required: true },
|
|
86
|
-
email: {
|
|
87
|
-
|
|
88
|
-
|
|
134
|
+
email: {
|
|
135
|
+
type: "string",
|
|
136
|
+
required: true,
|
|
137
|
+
description: "Email address (Mailchimp accepts email or MD5 hash)",
|
|
138
|
+
},
|
|
139
|
+
fields: {
|
|
140
|
+
type: "string",
|
|
141
|
+
required: false,
|
|
142
|
+
description: "Comma-separated fields to return",
|
|
143
|
+
},
|
|
144
|
+
excludeFields: {
|
|
145
|
+
type: "string",
|
|
146
|
+
required: false,
|
|
147
|
+
description: "Comma-separated fields to exclude",
|
|
148
|
+
},
|
|
89
149
|
},
|
|
90
150
|
async execute(input, ctx) {
|
|
91
151
|
const { listId, email, fields, excludeFields } = input;
|
|
@@ -101,13 +161,37 @@ export default function mailchimp(rl) {
|
|
|
101
161
|
description: "List members in a list/audience",
|
|
102
162
|
inputSchema: {
|
|
103
163
|
listId: { type: "string", required: true },
|
|
104
|
-
count: {
|
|
164
|
+
count: {
|
|
165
|
+
type: "number",
|
|
166
|
+
required: false,
|
|
167
|
+
description: "Max results (default 500)",
|
|
168
|
+
},
|
|
105
169
|
offset: { type: "number", required: false },
|
|
106
|
-
status: {
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
170
|
+
status: {
|
|
171
|
+
type: "string",
|
|
172
|
+
required: false,
|
|
173
|
+
description: "subscribed, unsubscribed, cleaned, pending, transactional",
|
|
174
|
+
},
|
|
175
|
+
emailType: {
|
|
176
|
+
type: "string",
|
|
177
|
+
required: false,
|
|
178
|
+
description: "html or text",
|
|
179
|
+
},
|
|
180
|
+
sinceLastChanged: {
|
|
181
|
+
type: "string",
|
|
182
|
+
required: false,
|
|
183
|
+
description: "ISO datetime",
|
|
184
|
+
},
|
|
185
|
+
beforeLastChanged: {
|
|
186
|
+
type: "string",
|
|
187
|
+
required: false,
|
|
188
|
+
description: "ISO datetime",
|
|
189
|
+
},
|
|
190
|
+
beforeTimestampOpt: {
|
|
191
|
+
type: "string",
|
|
192
|
+
required: false,
|
|
193
|
+
description: "ISO datetime",
|
|
194
|
+
},
|
|
111
195
|
},
|
|
112
196
|
async execute(input, ctx) {
|
|
113
197
|
const p = input;
|
|
@@ -134,7 +218,11 @@ export default function mailchimp(rl) {
|
|
|
134
218
|
description: "Update a list member (PUT — full replace)",
|
|
135
219
|
inputSchema: {
|
|
136
220
|
listId: { type: "string", required: true },
|
|
137
|
-
email: {
|
|
221
|
+
email: {
|
|
222
|
+
type: "string",
|
|
223
|
+
required: true,
|
|
224
|
+
description: "Email address (used as subscriber hash)",
|
|
225
|
+
},
|
|
138
226
|
status: { type: "string", required: false },
|
|
139
227
|
mergeFields: { type: "object", required: false },
|
|
140
228
|
interests: { type: "object", required: false },
|
|
@@ -197,12 +285,22 @@ export default function mailchimp(rl) {
|
|
|
197
285
|
inputSchema: {
|
|
198
286
|
listId: { type: "string", required: true },
|
|
199
287
|
email: { type: "string", required: true },
|
|
200
|
-
tags: {
|
|
201
|
-
|
|
288
|
+
tags: {
|
|
289
|
+
type: "array",
|
|
290
|
+
required: true,
|
|
291
|
+
description: "Array of tag names",
|
|
292
|
+
},
|
|
293
|
+
isSyncing: {
|
|
294
|
+
type: "boolean",
|
|
295
|
+
required: false,
|
|
296
|
+
description: "If true, automations based on tags won't fire",
|
|
297
|
+
},
|
|
202
298
|
},
|
|
203
299
|
async execute(input, ctx) {
|
|
204
300
|
const { listId, email, tags, isSyncing } = input;
|
|
205
|
-
const body = {
|
|
301
|
+
const body = {
|
|
302
|
+
tags: tags.map((t) => ({ name: t, status: "active" })),
|
|
303
|
+
};
|
|
206
304
|
if (isSyncing)
|
|
207
305
|
body.is_syncing = isSyncing;
|
|
208
306
|
await apiRequest(key(ctx), "POST", `/lists/${listId}/members/${email}/tags`, body);
|
|
@@ -214,12 +312,18 @@ export default function mailchimp(rl) {
|
|
|
214
312
|
inputSchema: {
|
|
215
313
|
listId: { type: "string", required: true },
|
|
216
314
|
email: { type: "string", required: true },
|
|
217
|
-
tags: {
|
|
315
|
+
tags: {
|
|
316
|
+
type: "array",
|
|
317
|
+
required: true,
|
|
318
|
+
description: "Array of tag names",
|
|
319
|
+
},
|
|
218
320
|
isSyncing: { type: "boolean", required: false },
|
|
219
321
|
},
|
|
220
322
|
async execute(input, ctx) {
|
|
221
323
|
const { listId, email, tags, isSyncing } = input;
|
|
222
|
-
const body = {
|
|
324
|
+
const body = {
|
|
325
|
+
tags: tags.map((t) => ({ name: t, status: "inactive" })),
|
|
326
|
+
};
|
|
223
327
|
if (isSyncing)
|
|
224
328
|
body.is_syncing = isSyncing;
|
|
225
329
|
await apiRequest(key(ctx), "POST", `/lists/${listId}/members/${email}/tags`, body);
|
|
@@ -231,7 +335,11 @@ export default function mailchimp(rl) {
|
|
|
231
335
|
description: "List interests in a specific interest category for a list",
|
|
232
336
|
inputSchema: {
|
|
233
337
|
listId: { type: "string", required: true },
|
|
234
|
-
categoryId: {
|
|
338
|
+
categoryId: {
|
|
339
|
+
type: "string",
|
|
340
|
+
required: true,
|
|
341
|
+
description: "Interest category ID",
|
|
342
|
+
},
|
|
235
343
|
count: { type: "number", required: false, description: "Max results" },
|
|
236
344
|
},
|
|
237
345
|
async execute(input, ctx) {
|
|
@@ -247,21 +355,59 @@ export default function mailchimp(rl) {
|
|
|
247
355
|
rl.registerAction("campaign.get", {
|
|
248
356
|
description: "Get a campaign",
|
|
249
357
|
inputSchema: { campaignId: { type: "string", required: true } },
|
|
250
|
-
async execute(input, ctx) {
|
|
358
|
+
async execute(input, ctx) {
|
|
359
|
+
return apiRequest(key(ctx), "GET", `/campaigns/${input.campaignId}`);
|
|
360
|
+
},
|
|
251
361
|
});
|
|
252
362
|
rl.registerAction("campaign.list", {
|
|
253
363
|
description: "List campaigns",
|
|
254
364
|
inputSchema: {
|
|
255
365
|
count: { type: "number", required: false, description: "Max results" },
|
|
256
|
-
status: {
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
366
|
+
status: {
|
|
367
|
+
type: "string",
|
|
368
|
+
required: false,
|
|
369
|
+
description: "save, sending, sent, schedule",
|
|
370
|
+
},
|
|
371
|
+
listId: {
|
|
372
|
+
type: "string",
|
|
373
|
+
required: false,
|
|
374
|
+
description: "Filter by list ID",
|
|
375
|
+
},
|
|
376
|
+
fields: {
|
|
377
|
+
type: "array",
|
|
378
|
+
required: false,
|
|
379
|
+
description: "Array of field names to return",
|
|
380
|
+
},
|
|
381
|
+
sinceCreateTime: {
|
|
382
|
+
type: "string",
|
|
383
|
+
required: false,
|
|
384
|
+
description: "ISO datetime",
|
|
385
|
+
},
|
|
386
|
+
beforeCreateTime: {
|
|
387
|
+
type: "string",
|
|
388
|
+
required: false,
|
|
389
|
+
description: "ISO datetime",
|
|
390
|
+
},
|
|
391
|
+
sinceSendTime: {
|
|
392
|
+
type: "string",
|
|
393
|
+
required: false,
|
|
394
|
+
description: "ISO datetime",
|
|
395
|
+
},
|
|
396
|
+
beforeSendTime: {
|
|
397
|
+
type: "string",
|
|
398
|
+
required: false,
|
|
399
|
+
description: "ISO datetime",
|
|
400
|
+
},
|
|
401
|
+
sortField: {
|
|
402
|
+
type: "string",
|
|
403
|
+
required: false,
|
|
404
|
+
description: "create_time or send_time",
|
|
405
|
+
},
|
|
406
|
+
sortDirection: {
|
|
407
|
+
type: "string",
|
|
408
|
+
required: false,
|
|
409
|
+
description: "ASC or DESC",
|
|
410
|
+
},
|
|
265
411
|
},
|
|
266
412
|
async execute(input, ctx) {
|
|
267
413
|
const p = (input ?? {});
|
|
@@ -275,7 +421,8 @@ export default function mailchimp(rl) {
|
|
|
275
421
|
if (p.fields && Array.isArray(p.fields))
|
|
276
422
|
qs.fields = p.fields.join(",");
|
|
277
423
|
else
|
|
278
|
-
qs.fields =
|
|
424
|
+
qs.fields =
|
|
425
|
+
"campaigns.id,campaigns.status,campaigns.tracking,campaigns.settings.from_name,campaigns.settings.title,campaigns.settings.reply_to";
|
|
279
426
|
if (p.sinceCreateTime)
|
|
280
427
|
qs.since_create_time = p.sinceCreateTime;
|
|
281
428
|
if (p.beforeCreateTime)
|
|
@@ -303,12 +450,16 @@ export default function mailchimp(rl) {
|
|
|
303
450
|
rl.registerAction("campaign.replicate", {
|
|
304
451
|
description: "Replicate a campaign",
|
|
305
452
|
inputSchema: { campaignId: { type: "string", required: true } },
|
|
306
|
-
async execute(input, ctx) {
|
|
453
|
+
async execute(input, ctx) {
|
|
454
|
+
return apiRequest(key(ctx), "POST", `/campaigns/${input.campaignId}/actions/replicate`);
|
|
455
|
+
},
|
|
307
456
|
});
|
|
308
457
|
rl.registerAction("campaign.resend", {
|
|
309
458
|
description: "Create a resend to non-openers",
|
|
310
459
|
inputSchema: { campaignId: { type: "string", required: true } },
|
|
311
|
-
async execute(input, ctx) {
|
|
460
|
+
async execute(input, ctx) {
|
|
461
|
+
return apiRequest(key(ctx), "POST", `/campaigns/${input.campaignId}/actions/create-resend`);
|
|
462
|
+
},
|
|
312
463
|
});
|
|
313
464
|
rl.registerAction("campaign.delete", {
|
|
314
465
|
description: "Delete a campaign",
|
|
@@ -9,9 +9,15 @@ async function apiRequest(token, method, endpoint, body, qs) {
|
|
|
9
9
|
}
|
|
10
10
|
const opts = {
|
|
11
11
|
method,
|
|
12
|
-
headers: {
|
|
12
|
+
headers: {
|
|
13
|
+
Authorization: `Bearer ${token}`,
|
|
14
|
+
"Content-Type": "application/json",
|
|
15
|
+
},
|
|
13
16
|
};
|
|
14
|
-
if (body &&
|
|
17
|
+
if (body &&
|
|
18
|
+
Object.keys(body).length > 0 &&
|
|
19
|
+
method !== "GET" &&
|
|
20
|
+
method !== "DELETE")
|
|
15
21
|
opts.body = JSON.stringify(body);
|
|
16
22
|
const res = await fetch(url.toString(), opts);
|
|
17
23
|
if (!res.ok)
|
|
@@ -41,17 +47,38 @@ export default function mailerlite(rl) {
|
|
|
41
47
|
rl.setName("mailerlite");
|
|
42
48
|
rl.setVersion("0.1.0");
|
|
43
49
|
rl.setConnectionSchema({
|
|
44
|
-
apiKey: {
|
|
50
|
+
apiKey: {
|
|
51
|
+
type: "string",
|
|
52
|
+
required: true,
|
|
53
|
+
description: "MailerLite API token",
|
|
54
|
+
env: "MAILERLITE_API_KEY",
|
|
55
|
+
},
|
|
45
56
|
});
|
|
46
57
|
const tok = (ctx) => ctx.connection.config.apiKey;
|
|
47
58
|
rl.registerAction("subscriber.create", {
|
|
48
59
|
description: "Create a subscriber",
|
|
49
60
|
inputSchema: {
|
|
50
61
|
email: { type: "string", required: true },
|
|
51
|
-
fields: {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
62
|
+
fields: {
|
|
63
|
+
type: "object",
|
|
64
|
+
required: false,
|
|
65
|
+
description: "Custom fields as {field_key: value}",
|
|
66
|
+
},
|
|
67
|
+
groups: {
|
|
68
|
+
type: "array",
|
|
69
|
+
required: false,
|
|
70
|
+
description: "Array of group IDs",
|
|
71
|
+
},
|
|
72
|
+
status: {
|
|
73
|
+
type: "string",
|
|
74
|
+
required: false,
|
|
75
|
+
description: "active, unsubscribed, unconfirmed, bounced, junk",
|
|
76
|
+
},
|
|
77
|
+
subscribed_at: {
|
|
78
|
+
type: "string",
|
|
79
|
+
required: false,
|
|
80
|
+
description: "ISO datetime",
|
|
81
|
+
},
|
|
55
82
|
ip_address: { type: "string", required: false },
|
|
56
83
|
opted_in_at: { type: "string", required: false },
|
|
57
84
|
optin_ip: { type: "string", required: false },
|
|
@@ -71,7 +98,13 @@ export default function mailerlite(rl) {
|
|
|
71
98
|
});
|
|
72
99
|
rl.registerAction("subscriber.get", {
|
|
73
100
|
description: "Get a subscriber by ID or email",
|
|
74
|
-
inputSchema: {
|
|
101
|
+
inputSchema: {
|
|
102
|
+
subscriberId: {
|
|
103
|
+
type: "string",
|
|
104
|
+
required: true,
|
|
105
|
+
description: "Subscriber ID or email",
|
|
106
|
+
},
|
|
107
|
+
},
|
|
75
108
|
async execute(input, ctx) {
|
|
76
109
|
const resp = (await apiRequest(tok(ctx), "GET", `/subscribers/${encodeURIComponent(input.subscriberId)}`));
|
|
77
110
|
return resp.data;
|
|
@@ -81,7 +114,11 @@ export default function mailerlite(rl) {
|
|
|
81
114
|
description: "List subscribers",
|
|
82
115
|
inputSchema: {
|
|
83
116
|
limit: { type: "number", required: false },
|
|
84
|
-
status: {
|
|
117
|
+
status: {
|
|
118
|
+
type: "string",
|
|
119
|
+
required: false,
|
|
120
|
+
description: "Filter by status: active, unsubscribed, unconfirmed, bounced, junk",
|
|
121
|
+
},
|
|
85
122
|
},
|
|
86
123
|
async execute(input, ctx) {
|
|
87
124
|
const { limit, status } = (input ?? {});
|
|
@@ -99,9 +136,21 @@ export default function mailerlite(rl) {
|
|
|
99
136
|
rl.registerAction("subscriber.update", {
|
|
100
137
|
description: "Update a subscriber",
|
|
101
138
|
inputSchema: {
|
|
102
|
-
subscriberId: {
|
|
103
|
-
|
|
104
|
-
|
|
139
|
+
subscriberId: {
|
|
140
|
+
type: "string",
|
|
141
|
+
required: true,
|
|
142
|
+
description: "Subscriber ID or email",
|
|
143
|
+
},
|
|
144
|
+
fields: {
|
|
145
|
+
type: "object",
|
|
146
|
+
required: false,
|
|
147
|
+
description: "Custom fields as {field_key: value}",
|
|
148
|
+
},
|
|
149
|
+
groups: {
|
|
150
|
+
type: "array",
|
|
151
|
+
required: false,
|
|
152
|
+
description: "Array of group IDs",
|
|
153
|
+
},
|
|
105
154
|
status: { type: "string", required: false },
|
|
106
155
|
subscribed_at: { type: "string", required: false },
|
|
107
156
|
ip_address: { type: "string", required: false },
|
|
@@ -2,20 +2,52 @@ export default function mailgun(rl) {
|
|
|
2
2
|
rl.setName("mailgun");
|
|
3
3
|
rl.setVersion("0.1.0");
|
|
4
4
|
rl.setConnectionSchema({
|
|
5
|
-
apiKey: {
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
apiKey: {
|
|
6
|
+
type: "string",
|
|
7
|
+
required: true,
|
|
8
|
+
description: "Mailgun API key",
|
|
9
|
+
env: "MAILGUN_API_KEY",
|
|
10
|
+
},
|
|
11
|
+
apiDomain: {
|
|
12
|
+
type: "string",
|
|
13
|
+
required: false,
|
|
14
|
+
description: "API domain: 'api.mailgun.net' (US, default) or 'api.eu.mailgun.net' (EU)",
|
|
15
|
+
default: "api.mailgun.net",
|
|
16
|
+
env: "MAILGUN_API_DOMAIN",
|
|
17
|
+
},
|
|
18
|
+
emailDomain: {
|
|
19
|
+
type: "string",
|
|
20
|
+
required: true,
|
|
21
|
+
description: "Sending domain (e.g. mg.example.com)",
|
|
22
|
+
env: "MAILGUN_EMAIL_DOMAIN",
|
|
23
|
+
},
|
|
8
24
|
});
|
|
9
25
|
rl.registerAction("email.send", {
|
|
10
26
|
description: "Send an email via Mailgun",
|
|
11
27
|
inputSchema: {
|
|
12
|
-
to: {
|
|
13
|
-
|
|
28
|
+
to: {
|
|
29
|
+
type: "string",
|
|
30
|
+
required: true,
|
|
31
|
+
description: "Recipient email(s), comma-separated",
|
|
32
|
+
},
|
|
33
|
+
from: {
|
|
34
|
+
type: "string",
|
|
35
|
+
required: true,
|
|
36
|
+
description: "Sender (e.g. 'Name <user@domain.com>')",
|
|
37
|
+
},
|
|
14
38
|
subject: { type: "string", required: true },
|
|
15
39
|
text: { type: "string", required: false, description: "Plain text body" },
|
|
16
40
|
html: { type: "string", required: false, description: "HTML body" },
|
|
17
|
-
cc: {
|
|
18
|
-
|
|
41
|
+
cc: {
|
|
42
|
+
type: "string",
|
|
43
|
+
required: false,
|
|
44
|
+
description: "CC recipients, comma-separated",
|
|
45
|
+
},
|
|
46
|
+
bcc: {
|
|
47
|
+
type: "string",
|
|
48
|
+
required: false,
|
|
49
|
+
description: "BCC recipients, comma-separated",
|
|
50
|
+
},
|
|
19
51
|
},
|
|
20
52
|
async execute(input, ctx) {
|
|
21
53
|
const { to, from, subject, text, html, cc, bcc } = input;
|