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
|
@@ -2,20 +2,45 @@ export default function uproc(rl) {
|
|
|
2
2
|
rl.setName("uproc");
|
|
3
3
|
rl.setVersion("0.1.0");
|
|
4
4
|
rl.setConnectionSchema({
|
|
5
|
-
email: {
|
|
6
|
-
|
|
5
|
+
email: {
|
|
6
|
+
type: "string",
|
|
7
|
+
required: true,
|
|
8
|
+
description: "uProc account email",
|
|
9
|
+
env: "UPROC_EMAIL",
|
|
10
|
+
},
|
|
11
|
+
apiKey: {
|
|
12
|
+
type: "string",
|
|
13
|
+
required: true,
|
|
14
|
+
description: "uProc API key",
|
|
15
|
+
env: "UPROC_API_KEY",
|
|
16
|
+
},
|
|
7
17
|
});
|
|
8
18
|
rl.registerAction("process.run", {
|
|
9
19
|
description: "Run a uProc data processor tool",
|
|
10
20
|
inputSchema: {
|
|
11
|
-
processor: {
|
|
12
|
-
|
|
13
|
-
|
|
21
|
+
processor: {
|
|
22
|
+
type: "string",
|
|
23
|
+
required: true,
|
|
24
|
+
description: "Processor key (e.g. get-email-from-name-and-domain)",
|
|
25
|
+
},
|
|
26
|
+
params: {
|
|
27
|
+
type: "object",
|
|
28
|
+
required: true,
|
|
29
|
+
description: "Processor parameters as key-value pairs",
|
|
30
|
+
},
|
|
31
|
+
dataWebhook: {
|
|
32
|
+
type: "string",
|
|
33
|
+
required: false,
|
|
34
|
+
description: "URL for async callback",
|
|
35
|
+
},
|
|
14
36
|
},
|
|
15
37
|
async execute(input, ctx) {
|
|
16
38
|
const c = ctx.connection.config;
|
|
17
39
|
const p = input;
|
|
18
|
-
const body = {
|
|
40
|
+
const body = {
|
|
41
|
+
processor: p.processor,
|
|
42
|
+
params: p.params,
|
|
43
|
+
};
|
|
19
44
|
if (p.dataWebhook)
|
|
20
45
|
body.callback = { data: p.dataWebhook };
|
|
21
46
|
const res = await fetch("https://api.uproc.io/api/v2/process", {
|
|
@@ -21,7 +21,14 @@ async function apiRequest(apiKey, endpoint, body = {}) {
|
|
|
21
21
|
export default function uptimerobot(rl) {
|
|
22
22
|
rl.setName("uptimerobot");
|
|
23
23
|
rl.setVersion("0.1.0");
|
|
24
|
-
rl.setConnectionSchema({
|
|
24
|
+
rl.setConnectionSchema({
|
|
25
|
+
apiKey: {
|
|
26
|
+
type: "string",
|
|
27
|
+
required: true,
|
|
28
|
+
description: "UptimeRobot API key",
|
|
29
|
+
env: "UPTIMEROBOT_API_KEY",
|
|
30
|
+
},
|
|
31
|
+
});
|
|
25
32
|
const key = (ctx) => ctx.connection.config.apiKey;
|
|
26
33
|
// ── Account ─────────────────────────────────────────
|
|
27
34
|
rl.registerAction("account.get", {
|
|
@@ -38,11 +45,19 @@ export default function uptimerobot(rl) {
|
|
|
38
45
|
inputSchema: {
|
|
39
46
|
friendlyName: { type: "string", required: true },
|
|
40
47
|
url: { type: "string", required: true },
|
|
41
|
-
type: {
|
|
48
|
+
type: {
|
|
49
|
+
type: "number",
|
|
50
|
+
required: true,
|
|
51
|
+
description: "1=HTTP(s), 2=Keyword, 3=Ping, 4=Port, 5=Heartbeat",
|
|
52
|
+
},
|
|
42
53
|
},
|
|
43
54
|
async execute(input, ctx) {
|
|
44
55
|
const p = input;
|
|
45
|
-
const data = (await apiRequest(key(ctx), "/newMonitor", {
|
|
56
|
+
const data = (await apiRequest(key(ctx), "/newMonitor", {
|
|
57
|
+
friendly_name: p.friendlyName,
|
|
58
|
+
url: p.url,
|
|
59
|
+
type: p.type,
|
|
60
|
+
}));
|
|
46
61
|
return data.monitor;
|
|
47
62
|
},
|
|
48
63
|
});
|
|
@@ -50,7 +65,9 @@ export default function uptimerobot(rl) {
|
|
|
50
65
|
description: "Get a monitor by ID",
|
|
51
66
|
inputSchema: { id: { type: "string", required: true } },
|
|
52
67
|
async execute(input, ctx) {
|
|
53
|
-
const data = (await apiRequest(key(ctx), "/getMonitors", {
|
|
68
|
+
const data = (await apiRequest(key(ctx), "/getMonitors", {
|
|
69
|
+
monitors: input.id,
|
|
70
|
+
}));
|
|
54
71
|
return data.monitors;
|
|
55
72
|
},
|
|
56
73
|
});
|
|
@@ -68,7 +85,12 @@ export default function uptimerobot(rl) {
|
|
|
68
85
|
});
|
|
69
86
|
rl.registerAction("monitor.update", {
|
|
70
87
|
description: "Update a monitor",
|
|
71
|
-
inputSchema: {
|
|
88
|
+
inputSchema: {
|
|
89
|
+
id: { type: "string", required: true },
|
|
90
|
+
friendlyName: { type: "string", required: false },
|
|
91
|
+
url: { type: "string", required: false },
|
|
92
|
+
type: { type: "number", required: false },
|
|
93
|
+
},
|
|
72
94
|
async execute(input, ctx) {
|
|
73
95
|
const { id, ...fields } = input;
|
|
74
96
|
const body = { id };
|
|
@@ -86,7 +108,9 @@ export default function uptimerobot(rl) {
|
|
|
86
108
|
description: "Delete a monitor",
|
|
87
109
|
inputSchema: { id: { type: "string", required: true } },
|
|
88
110
|
async execute(input, ctx) {
|
|
89
|
-
const data = (await apiRequest(key(ctx), "/deleteMonitor", {
|
|
111
|
+
const data = (await apiRequest(key(ctx), "/deleteMonitor", {
|
|
112
|
+
id: input.id,
|
|
113
|
+
}));
|
|
90
114
|
return data.monitor;
|
|
91
115
|
},
|
|
92
116
|
});
|
|
@@ -94,17 +118,31 @@ export default function uptimerobot(rl) {
|
|
|
94
118
|
description: "Reset a monitor's stats",
|
|
95
119
|
inputSchema: { id: { type: "string", required: true } },
|
|
96
120
|
async execute(input, ctx) {
|
|
97
|
-
const data = (await apiRequest(key(ctx), "/resetMonitor", {
|
|
121
|
+
const data = (await apiRequest(key(ctx), "/resetMonitor", {
|
|
122
|
+
id: input.id,
|
|
123
|
+
}));
|
|
98
124
|
return data.monitor;
|
|
99
125
|
},
|
|
100
126
|
});
|
|
101
127
|
// ── Alert Contact ───────────────────────────────────
|
|
102
128
|
rl.registerAction("alertContact.create", {
|
|
103
129
|
description: "Create an alert contact",
|
|
104
|
-
inputSchema: {
|
|
130
|
+
inputSchema: {
|
|
131
|
+
friendlyName: { type: "string", required: true },
|
|
132
|
+
value: { type: "string", required: true, description: "Email or phone" },
|
|
133
|
+
type: {
|
|
134
|
+
type: "number",
|
|
135
|
+
required: true,
|
|
136
|
+
description: "1=SMS, 2=Email, 3=Twitter, 5=Pushbullet, 11=Slack",
|
|
137
|
+
},
|
|
138
|
+
},
|
|
105
139
|
async execute(input, ctx) {
|
|
106
140
|
const p = input;
|
|
107
|
-
const data = (await apiRequest(key(ctx), "/newAlertContact", {
|
|
141
|
+
const data = (await apiRequest(key(ctx), "/newAlertContact", {
|
|
142
|
+
friendly_name: p.friendlyName,
|
|
143
|
+
value: p.value,
|
|
144
|
+
type: p.type,
|
|
145
|
+
}));
|
|
108
146
|
return data.alertcontact;
|
|
109
147
|
},
|
|
110
148
|
});
|
|
@@ -112,7 +150,9 @@ export default function uptimerobot(rl) {
|
|
|
112
150
|
description: "Get an alert contact by ID",
|
|
113
151
|
inputSchema: { id: { type: "string", required: true } },
|
|
114
152
|
async execute(input, ctx) {
|
|
115
|
-
const data = (await apiRequest(key(ctx), "/getAlertContacts", {
|
|
153
|
+
const data = (await apiRequest(key(ctx), "/getAlertContacts", {
|
|
154
|
+
alert_contacts: input.id,
|
|
155
|
+
}));
|
|
116
156
|
return data.alert_contacts;
|
|
117
157
|
},
|
|
118
158
|
});
|
|
@@ -129,7 +169,11 @@ export default function uptimerobot(rl) {
|
|
|
129
169
|
});
|
|
130
170
|
rl.registerAction("alertContact.update", {
|
|
131
171
|
description: "Update an alert contact",
|
|
132
|
-
inputSchema: {
|
|
172
|
+
inputSchema: {
|
|
173
|
+
id: { type: "string", required: true },
|
|
174
|
+
friendlyName: { type: "string", required: false },
|
|
175
|
+
value: { type: "string", required: false },
|
|
176
|
+
},
|
|
133
177
|
async execute(input, ctx) {
|
|
134
178
|
const { id, ...fields } = input;
|
|
135
179
|
const body = { id };
|
|
@@ -145,7 +189,9 @@ export default function uptimerobot(rl) {
|
|
|
145
189
|
description: "Delete an alert contact",
|
|
146
190
|
inputSchema: { id: { type: "string", required: true } },
|
|
147
191
|
async execute(input, ctx) {
|
|
148
|
-
const data = (await apiRequest(key(ctx), "/deleteAlertContact", {
|
|
192
|
+
const data = (await apiRequest(key(ctx), "/deleteAlertContact", {
|
|
193
|
+
id: input.id,
|
|
194
|
+
}));
|
|
149
195
|
return data.alert_contact;
|
|
150
196
|
},
|
|
151
197
|
});
|
|
@@ -154,14 +200,35 @@ export default function uptimerobot(rl) {
|
|
|
154
200
|
description: "Create a maintenance window",
|
|
155
201
|
inputSchema: {
|
|
156
202
|
friendlyName: { type: "string", required: true },
|
|
157
|
-
type: {
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
203
|
+
type: {
|
|
204
|
+
type: "number",
|
|
205
|
+
required: true,
|
|
206
|
+
description: "1=Once, 2=Daily, 3=Weekly, 4=Monthly",
|
|
207
|
+
},
|
|
208
|
+
startTime: {
|
|
209
|
+
type: "string",
|
|
210
|
+
required: true,
|
|
211
|
+
description: "ISO datetime for once, HH:mm for recurring",
|
|
212
|
+
},
|
|
213
|
+
duration: {
|
|
214
|
+
type: "number",
|
|
215
|
+
required: true,
|
|
216
|
+
description: "Duration in minutes",
|
|
217
|
+
},
|
|
218
|
+
value: {
|
|
219
|
+
type: "number",
|
|
220
|
+
required: false,
|
|
221
|
+
description: "Day of week (1-7) or month (1-28) for weekly/monthly",
|
|
222
|
+
},
|
|
161
223
|
},
|
|
162
224
|
async execute(input, ctx) {
|
|
163
225
|
const p = input;
|
|
164
|
-
const body = {
|
|
226
|
+
const body = {
|
|
227
|
+
friendly_name: p.friendlyName,
|
|
228
|
+
type: p.type,
|
|
229
|
+
start_time: p.startTime,
|
|
230
|
+
duration: p.duration,
|
|
231
|
+
};
|
|
165
232
|
if (p.value)
|
|
166
233
|
body.value = p.value;
|
|
167
234
|
const data = (await apiRequest(key(ctx), "/newMWindow", body));
|
|
@@ -172,7 +239,9 @@ export default function uptimerobot(rl) {
|
|
|
172
239
|
description: "Get a maintenance window",
|
|
173
240
|
inputSchema: { id: { type: "string", required: true } },
|
|
174
241
|
async execute(input, ctx) {
|
|
175
|
-
const data = (await apiRequest(key(ctx), "/getMWindows", {
|
|
242
|
+
const data = (await apiRequest(key(ctx), "/getMWindows", {
|
|
243
|
+
mwindows: input.id,
|
|
244
|
+
}));
|
|
176
245
|
return data.mwindows;
|
|
177
246
|
},
|
|
178
247
|
});
|
|
@@ -189,7 +258,12 @@ export default function uptimerobot(rl) {
|
|
|
189
258
|
});
|
|
190
259
|
rl.registerAction("maintenanceWindow.update", {
|
|
191
260
|
description: "Update a maintenance window",
|
|
192
|
-
inputSchema: {
|
|
261
|
+
inputSchema: {
|
|
262
|
+
id: { type: "string", required: true },
|
|
263
|
+
friendlyName: { type: "string", required: false },
|
|
264
|
+
duration: { type: "number", required: false },
|
|
265
|
+
startTime: { type: "string", required: false },
|
|
266
|
+
},
|
|
193
267
|
async execute(input, ctx) {
|
|
194
268
|
const { id, ...fields } = input;
|
|
195
269
|
const body = { id };
|
|
@@ -207,16 +281,28 @@ export default function uptimerobot(rl) {
|
|
|
207
281
|
description: "Delete a maintenance window",
|
|
208
282
|
inputSchema: { id: { type: "string", required: true } },
|
|
209
283
|
async execute(input, ctx) {
|
|
210
|
-
return apiRequest(key(ctx), "/deleteMWindow", {
|
|
284
|
+
return apiRequest(key(ctx), "/deleteMWindow", {
|
|
285
|
+
id: input.id,
|
|
286
|
+
});
|
|
211
287
|
},
|
|
212
288
|
});
|
|
213
289
|
// ── Public Status Page ──────────────────────────────
|
|
214
290
|
rl.registerAction("publicStatusPage.create", {
|
|
215
291
|
description: "Create a public status page",
|
|
216
|
-
inputSchema: {
|
|
292
|
+
inputSchema: {
|
|
293
|
+
friendlyName: { type: "string", required: true },
|
|
294
|
+
monitors: {
|
|
295
|
+
type: "string",
|
|
296
|
+
required: true,
|
|
297
|
+
description: "Monitor IDs (comma-separated or 0 for all)",
|
|
298
|
+
},
|
|
299
|
+
},
|
|
217
300
|
async execute(input, ctx) {
|
|
218
301
|
const p = input;
|
|
219
|
-
const data = (await apiRequest(key(ctx), "/newPSP", {
|
|
302
|
+
const data = (await apiRequest(key(ctx), "/newPSP", {
|
|
303
|
+
friendly_name: p.friendlyName,
|
|
304
|
+
monitors: p.monitors,
|
|
305
|
+
}));
|
|
220
306
|
return data.psp;
|
|
221
307
|
},
|
|
222
308
|
});
|
|
@@ -224,7 +310,9 @@ export default function uptimerobot(rl) {
|
|
|
224
310
|
description: "Get a public status page",
|
|
225
311
|
inputSchema: { id: { type: "string", required: true } },
|
|
226
312
|
async execute(input, ctx) {
|
|
227
|
-
const data = (await apiRequest(key(ctx), "/getPSPs", {
|
|
313
|
+
const data = (await apiRequest(key(ctx), "/getPSPs", {
|
|
314
|
+
psps: input.id,
|
|
315
|
+
}));
|
|
228
316
|
return data.psps;
|
|
229
317
|
},
|
|
230
318
|
});
|
|
@@ -241,7 +329,11 @@ export default function uptimerobot(rl) {
|
|
|
241
329
|
});
|
|
242
330
|
rl.registerAction("publicStatusPage.update", {
|
|
243
331
|
description: "Update a public status page",
|
|
244
|
-
inputSchema: {
|
|
332
|
+
inputSchema: {
|
|
333
|
+
id: { type: "string", required: true },
|
|
334
|
+
friendlyName: { type: "string", required: false },
|
|
335
|
+
monitors: { type: "string", required: false },
|
|
336
|
+
},
|
|
245
337
|
async execute(input, ctx) {
|
|
246
338
|
const { id, ...fields } = input;
|
|
247
339
|
const body = { id };
|
|
@@ -257,7 +349,9 @@ export default function uptimerobot(rl) {
|
|
|
257
349
|
description: "Delete a public status page",
|
|
258
350
|
inputSchema: { id: { type: "string", required: true } },
|
|
259
351
|
async execute(input, ctx) {
|
|
260
|
-
const data = (await apiRequest(key(ctx), "/deletePSP", {
|
|
352
|
+
const data = (await apiRequest(key(ctx), "/deletePSP", {
|
|
353
|
+
id: input.id,
|
|
354
|
+
}));
|
|
261
355
|
return data.psp;
|
|
262
356
|
},
|
|
263
357
|
});
|
|
@@ -7,7 +7,10 @@ async function apiRequest(apiKey, method, endpoint, body, qs) {
|
|
|
7
7
|
url.searchParams.set(k, String(v));
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
|
-
const init = {
|
|
10
|
+
const init = {
|
|
11
|
+
method,
|
|
12
|
+
headers: { "API-Key": apiKey, "Content-Type": "application/json" },
|
|
13
|
+
};
|
|
11
14
|
if (body && Object.keys(body).length > 0)
|
|
12
15
|
init.body = JSON.stringify(body);
|
|
13
16
|
const res = await fetch(url.toString(), init);
|
|
@@ -19,15 +22,28 @@ export default function urlscanio(rl) {
|
|
|
19
22
|
rl.setName("urlscanio");
|
|
20
23
|
rl.setVersion("0.1.0");
|
|
21
24
|
rl.setConnectionSchema({
|
|
22
|
-
apiKey: {
|
|
25
|
+
apiKey: {
|
|
26
|
+
type: "string",
|
|
27
|
+
required: true,
|
|
28
|
+
description: "urlscan.io API key",
|
|
29
|
+
env: "URLSCANIO_API_KEY",
|
|
30
|
+
},
|
|
23
31
|
});
|
|
24
32
|
const key = (ctx) => ctx.connection.config.apiKey;
|
|
25
33
|
rl.registerAction("scan.perform", {
|
|
26
34
|
description: "Submit a URL for scanning",
|
|
27
35
|
inputSchema: {
|
|
28
36
|
url: { type: "string", required: true },
|
|
29
|
-
visibility: {
|
|
30
|
-
|
|
37
|
+
visibility: {
|
|
38
|
+
type: "string",
|
|
39
|
+
required: false,
|
|
40
|
+
description: "public, private, or unlisted",
|
|
41
|
+
},
|
|
42
|
+
tags: {
|
|
43
|
+
type: "string",
|
|
44
|
+
required: false,
|
|
45
|
+
description: "Comma-separated tags (max 10)",
|
|
46
|
+
},
|
|
31
47
|
customAgent: { type: "string", required: false },
|
|
32
48
|
},
|
|
33
49
|
async execute(input, ctx) {
|
|
@@ -36,7 +52,7 @@ export default function urlscanio(rl) {
|
|
|
36
52
|
if (p.visibility)
|
|
37
53
|
body.visibility = p.visibility;
|
|
38
54
|
if (p.tags)
|
|
39
|
-
body.tags = p.tags.split(",").map(t => t.trim());
|
|
55
|
+
body.tags = p.tags.split(",").map((t) => t.trim());
|
|
40
56
|
if (p.customAgent)
|
|
41
57
|
body.customAgent = p.customAgent;
|
|
42
58
|
return apiRequest(key(ctx), "POST", "/scan", body);
|
|
@@ -51,7 +67,10 @@ export default function urlscanio(rl) {
|
|
|
51
67
|
});
|
|
52
68
|
rl.registerAction("scan.search", {
|
|
53
69
|
description: "Search scan results",
|
|
54
|
-
inputSchema: {
|
|
70
|
+
inputSchema: {
|
|
71
|
+
query: { type: "string", required: false, description: "Search query" },
|
|
72
|
+
limit: { type: "number", required: false },
|
|
73
|
+
},
|
|
55
74
|
async execute(input, ctx) {
|
|
56
75
|
const p = (input ?? {});
|
|
57
76
|
const qs = { size: p.limit ?? 100 };
|
|
@@ -6,7 +6,11 @@ async function apiRequest(token, method, endpoint, body) {
|
|
|
6
6
|
if (v !== undefined && v !== null)
|
|
7
7
|
form.set(k, typeof v === "object" ? JSON.stringify(v) : String(v));
|
|
8
8
|
}
|
|
9
|
-
const res = await fetch(`${BASE}${endpoint}`, {
|
|
9
|
+
const res = await fetch(`${BASE}${endpoint}`, {
|
|
10
|
+
method,
|
|
11
|
+
headers: { "Content-Type": "application/x-www-form-urlencoded" },
|
|
12
|
+
body: form,
|
|
13
|
+
});
|
|
10
14
|
if (!res.ok)
|
|
11
15
|
throw new Error(`Vero error ${res.status}: ${await res.text()}`);
|
|
12
16
|
return res.json();
|
|
@@ -14,11 +18,26 @@ async function apiRequest(token, method, endpoint, body) {
|
|
|
14
18
|
export default function vero(rl) {
|
|
15
19
|
rl.setName("vero");
|
|
16
20
|
rl.setVersion("0.1.0");
|
|
17
|
-
rl.setConnectionSchema({
|
|
21
|
+
rl.setConnectionSchema({
|
|
22
|
+
authToken: {
|
|
23
|
+
type: "string",
|
|
24
|
+
required: true,
|
|
25
|
+
description: "Vero auth token",
|
|
26
|
+
env: "VERO_AUTH_TOKEN",
|
|
27
|
+
},
|
|
28
|
+
});
|
|
18
29
|
const key = (ctx) => ctx.connection.config.authToken;
|
|
19
30
|
rl.registerAction("user.create", {
|
|
20
31
|
description: "Create/identify a user",
|
|
21
|
-
inputSchema: {
|
|
32
|
+
inputSchema: {
|
|
33
|
+
id: { type: "string", required: true },
|
|
34
|
+
email: { type: "string", required: false },
|
|
35
|
+
data: {
|
|
36
|
+
type: "object",
|
|
37
|
+
required: false,
|
|
38
|
+
description: "Custom attributes",
|
|
39
|
+
},
|
|
40
|
+
},
|
|
22
41
|
async execute(input, ctx) {
|
|
23
42
|
const p = input;
|
|
24
43
|
const body = { id: p.id };
|
|
@@ -31,45 +50,81 @@ export default function vero(rl) {
|
|
|
31
50
|
});
|
|
32
51
|
rl.registerAction("user.alias", {
|
|
33
52
|
description: "Alias (re-identify) a user",
|
|
34
|
-
inputSchema: {
|
|
53
|
+
inputSchema: {
|
|
54
|
+
id: { type: "string", required: true },
|
|
55
|
+
newId: { type: "string", required: true },
|
|
56
|
+
},
|
|
35
57
|
async execute(input, ctx) {
|
|
36
58
|
const p = input;
|
|
37
|
-
return apiRequest(key(ctx), "PUT", "/users/reidentify", {
|
|
59
|
+
return apiRequest(key(ctx), "PUT", "/users/reidentify", {
|
|
60
|
+
id: p.id,
|
|
61
|
+
new_id: p.newId,
|
|
62
|
+
});
|
|
38
63
|
},
|
|
39
64
|
});
|
|
40
65
|
for (const op of ["unsubscribe", "resubscribe", "delete"]) {
|
|
41
66
|
rl.registerAction(`user.${op}`, {
|
|
42
67
|
description: `${op.charAt(0).toUpperCase() + op.slice(1)} a user`,
|
|
43
68
|
inputSchema: { id: { type: "string", required: true } },
|
|
44
|
-
async execute(input, ctx) {
|
|
69
|
+
async execute(input, ctx) {
|
|
70
|
+
return apiRequest(key(ctx), "POST", `/users/${op}`, {
|
|
71
|
+
id: input.id,
|
|
72
|
+
});
|
|
73
|
+
},
|
|
45
74
|
});
|
|
46
75
|
}
|
|
47
76
|
rl.registerAction("user.addTags", {
|
|
48
77
|
description: "Add tags to a user",
|
|
49
|
-
inputSchema: {
|
|
78
|
+
inputSchema: {
|
|
79
|
+
id: { type: "string", required: true },
|
|
80
|
+
tags: {
|
|
81
|
+
type: "string",
|
|
82
|
+
required: true,
|
|
83
|
+
description: "Comma-separated tags",
|
|
84
|
+
},
|
|
85
|
+
},
|
|
50
86
|
async execute(input, ctx) {
|
|
51
87
|
const p = input;
|
|
52
|
-
return apiRequest(key(ctx), "PUT", "/users/tags/edit", {
|
|
88
|
+
return apiRequest(key(ctx), "PUT", "/users/tags/edit", {
|
|
89
|
+
id: p.id,
|
|
90
|
+
add: JSON.stringify(p.tags.split(",").map((t) => t.trim())),
|
|
91
|
+
});
|
|
53
92
|
},
|
|
54
93
|
});
|
|
55
94
|
rl.registerAction("user.removeTags", {
|
|
56
95
|
description: "Remove tags from a user",
|
|
57
|
-
inputSchema: {
|
|
96
|
+
inputSchema: {
|
|
97
|
+
id: { type: "string", required: true },
|
|
98
|
+
tags: {
|
|
99
|
+
type: "string",
|
|
100
|
+
required: true,
|
|
101
|
+
description: "Comma-separated tags",
|
|
102
|
+
},
|
|
103
|
+
},
|
|
58
104
|
async execute(input, ctx) {
|
|
59
105
|
const p = input;
|
|
60
|
-
return apiRequest(key(ctx), "PUT", "/users/tags/edit", {
|
|
106
|
+
return apiRequest(key(ctx), "PUT", "/users/tags/edit", {
|
|
107
|
+
id: p.id,
|
|
108
|
+
remove: JSON.stringify(p.tags.split(",").map((t) => t.trim())),
|
|
109
|
+
});
|
|
61
110
|
},
|
|
62
111
|
});
|
|
63
112
|
rl.registerAction("event.track", {
|
|
64
113
|
description: "Track an event",
|
|
65
114
|
inputSchema: {
|
|
66
|
-
id: { type: "string", required: true },
|
|
67
|
-
|
|
115
|
+
id: { type: "string", required: true },
|
|
116
|
+
email: { type: "string", required: true },
|
|
117
|
+
eventName: { type: "string", required: true },
|
|
118
|
+
data: { type: "object", required: false },
|
|
68
119
|
extras: { type: "object", required: false },
|
|
69
120
|
},
|
|
70
121
|
async execute(input, ctx) {
|
|
71
122
|
const p = input;
|
|
72
|
-
const body = {
|
|
123
|
+
const body = {
|
|
124
|
+
identity: { id: p.id, email: p.email },
|
|
125
|
+
event_name: p.eventName,
|
|
126
|
+
email: p.email,
|
|
127
|
+
};
|
|
73
128
|
if (p.data)
|
|
74
129
|
body.data = JSON.stringify(p.data);
|
|
75
130
|
if (p.extras)
|
|
@@ -2,17 +2,43 @@ export default function vonage(rl) {
|
|
|
2
2
|
rl.setName("vonage");
|
|
3
3
|
rl.setVersion("0.1.0");
|
|
4
4
|
rl.setConnectionSchema({
|
|
5
|
-
apiKey: {
|
|
6
|
-
|
|
5
|
+
apiKey: {
|
|
6
|
+
type: "string",
|
|
7
|
+
required: true,
|
|
8
|
+
description: "Vonage API key",
|
|
9
|
+
env: "VONAGE_API_KEY",
|
|
10
|
+
},
|
|
11
|
+
apiSecret: {
|
|
12
|
+
type: "string",
|
|
13
|
+
required: true,
|
|
14
|
+
description: "Vonage API secret",
|
|
15
|
+
env: "VONAGE_API_SECRET",
|
|
16
|
+
},
|
|
7
17
|
});
|
|
8
18
|
rl.registerAction("sms.send", {
|
|
9
19
|
description: "Send an SMS",
|
|
10
20
|
inputSchema: {
|
|
11
|
-
from: {
|
|
12
|
-
|
|
21
|
+
from: {
|
|
22
|
+
type: "string",
|
|
23
|
+
required: true,
|
|
24
|
+
description: "Sender name or number",
|
|
25
|
+
},
|
|
26
|
+
to: {
|
|
27
|
+
type: "string",
|
|
28
|
+
required: true,
|
|
29
|
+
description: "Recipient number in E.164 format",
|
|
30
|
+
},
|
|
13
31
|
text: { type: "string", required: true, description: "Message text" },
|
|
14
|
-
ttl: {
|
|
15
|
-
|
|
32
|
+
ttl: {
|
|
33
|
+
type: "number",
|
|
34
|
+
required: false,
|
|
35
|
+
description: "Time-to-live in minutes (default 4320 = 72h)",
|
|
36
|
+
},
|
|
37
|
+
callback: {
|
|
38
|
+
type: "string",
|
|
39
|
+
required: false,
|
|
40
|
+
description: "Webhook URL for delivery receipt",
|
|
41
|
+
},
|
|
16
42
|
},
|
|
17
43
|
async execute(input, ctx) {
|
|
18
44
|
const c = ctx.connection.config;
|