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,7 +9,11 @@ async function apiRequest(accessToken, method, endpoint, body, qs) {
|
|
|
9
9
|
}
|
|
10
10
|
const opts = {
|
|
11
11
|
method,
|
|
12
|
-
headers: {
|
|
12
|
+
headers: {
|
|
13
|
+
Authorization: `Bearer ${accessToken}`,
|
|
14
|
+
"Content-Type": "application/json",
|
|
15
|
+
Accept: "application/json",
|
|
16
|
+
},
|
|
13
17
|
};
|
|
14
18
|
if (body !== undefined && method !== "GET" && method !== "DELETE") {
|
|
15
19
|
opts.body = JSON.stringify(body);
|
|
@@ -34,22 +38,52 @@ export default function gotowebinar(rl) {
|
|
|
34
38
|
rl.setName("gotowebinar");
|
|
35
39
|
rl.setVersion("0.1.0");
|
|
36
40
|
rl.setConnectionSchema({
|
|
37
|
-
accessToken: {
|
|
38
|
-
|
|
41
|
+
accessToken: {
|
|
42
|
+
type: "string",
|
|
43
|
+
required: true,
|
|
44
|
+
description: "GoTo OAuth2 access token",
|
|
45
|
+
env: "GOTO_ACCESS_TOKEN",
|
|
46
|
+
},
|
|
47
|
+
organizerKey: {
|
|
48
|
+
type: "string",
|
|
49
|
+
required: true,
|
|
50
|
+
description: "Organizer key",
|
|
51
|
+
env: "GOTO_ORGANIZER_KEY",
|
|
52
|
+
},
|
|
39
53
|
});
|
|
40
54
|
// ── Webinar ─────────────────────────────────────────
|
|
41
55
|
rl.registerAction("webinar.create", {
|
|
42
56
|
description: "Create a webinar",
|
|
43
57
|
inputSchema: {
|
|
44
|
-
subject: {
|
|
45
|
-
|
|
46
|
-
|
|
58
|
+
subject: {
|
|
59
|
+
type: "string",
|
|
60
|
+
required: true,
|
|
61
|
+
description: "Webinar subject",
|
|
62
|
+
},
|
|
63
|
+
times: {
|
|
64
|
+
type: "array",
|
|
65
|
+
required: true,
|
|
66
|
+
description: "Array of {startTime, endTime} (ISO 8601)",
|
|
67
|
+
},
|
|
68
|
+
description: {
|
|
69
|
+
type: "string",
|
|
70
|
+
required: false,
|
|
71
|
+
description: "Description",
|
|
72
|
+
},
|
|
47
73
|
timeZone: { type: "string", required: false, description: "Time zone" },
|
|
48
|
-
type: {
|
|
49
|
-
|
|
74
|
+
type: {
|
|
75
|
+
type: "string",
|
|
76
|
+
required: false,
|
|
77
|
+
description: "single_session, series, sequence",
|
|
78
|
+
},
|
|
79
|
+
isPasswordProtected: {
|
|
80
|
+
type: "boolean",
|
|
81
|
+
required: false,
|
|
82
|
+
description: "Require password",
|
|
83
|
+
},
|
|
50
84
|
},
|
|
51
85
|
async execute(input, ctx) {
|
|
52
|
-
const { subject, times, description: desc, timeZone, type, isPasswordProtected } = input;
|
|
86
|
+
const { subject, times, description: desc, timeZone, type, isPasswordProtected, } = input;
|
|
53
87
|
const { accessToken, organizerKey } = getConn(ctx);
|
|
54
88
|
const body = { subject, times };
|
|
55
89
|
if (desc)
|
|
@@ -65,7 +99,13 @@ export default function gotowebinar(rl) {
|
|
|
65
99
|
});
|
|
66
100
|
rl.registerAction("webinar.get", {
|
|
67
101
|
description: "Get a webinar",
|
|
68
|
-
inputSchema: {
|
|
102
|
+
inputSchema: {
|
|
103
|
+
webinarKey: {
|
|
104
|
+
type: "string",
|
|
105
|
+
required: true,
|
|
106
|
+
description: "Webinar key",
|
|
107
|
+
},
|
|
108
|
+
},
|
|
69
109
|
async execute(input, ctx) {
|
|
70
110
|
const { accessToken, organizerKey } = getConn(ctx);
|
|
71
111
|
return apiRequest(accessToken, "GET", `organizers/${organizerKey}/webinars/${input.webinarKey}`);
|
|
@@ -73,7 +113,9 @@ export default function gotowebinar(rl) {
|
|
|
73
113
|
});
|
|
74
114
|
rl.registerAction("webinar.list", {
|
|
75
115
|
description: "List webinars",
|
|
76
|
-
inputSchema: {
|
|
116
|
+
inputSchema: {
|
|
117
|
+
limit: { type: "number", required: false, description: "Max results" },
|
|
118
|
+
},
|
|
77
119
|
async execute(input, ctx) {
|
|
78
120
|
const { accessToken, organizerKey } = getConn(ctx);
|
|
79
121
|
const data = (await apiRequest(accessToken, "GET", `organizers/${organizerKey}/webinars`));
|
|
@@ -86,14 +128,26 @@ export default function gotowebinar(rl) {
|
|
|
86
128
|
rl.registerAction("webinar.update", {
|
|
87
129
|
description: "Update a webinar",
|
|
88
130
|
inputSchema: {
|
|
89
|
-
webinarKey: {
|
|
131
|
+
webinarKey: {
|
|
132
|
+
type: "string",
|
|
133
|
+
required: true,
|
|
134
|
+
description: "Webinar key",
|
|
135
|
+
},
|
|
90
136
|
subject: { type: "string", required: false, description: "New subject" },
|
|
91
|
-
description: {
|
|
137
|
+
description: {
|
|
138
|
+
type: "string",
|
|
139
|
+
required: false,
|
|
140
|
+
description: "New description",
|
|
141
|
+
},
|
|
92
142
|
times: { type: "array", required: false, description: "New times" },
|
|
93
|
-
timeZone: {
|
|
143
|
+
timeZone: {
|
|
144
|
+
type: "string",
|
|
145
|
+
required: false,
|
|
146
|
+
description: "New time zone",
|
|
147
|
+
},
|
|
94
148
|
},
|
|
95
149
|
async execute(input, ctx) {
|
|
96
|
-
const { webinarKey, subject, description: desc, times, timeZone } = input;
|
|
150
|
+
const { webinarKey, subject, description: desc, times, timeZone, } = input;
|
|
97
151
|
const { accessToken, organizerKey } = getConn(ctx);
|
|
98
152
|
const body = {};
|
|
99
153
|
if (subject)
|
|
@@ -110,8 +164,16 @@ export default function gotowebinar(rl) {
|
|
|
110
164
|
rl.registerAction("webinar.delete", {
|
|
111
165
|
description: "Delete a webinar",
|
|
112
166
|
inputSchema: {
|
|
113
|
-
webinarKey: {
|
|
114
|
-
|
|
167
|
+
webinarKey: {
|
|
168
|
+
type: "string",
|
|
169
|
+
required: true,
|
|
170
|
+
description: "Webinar key",
|
|
171
|
+
},
|
|
172
|
+
sendCancellationEmails: {
|
|
173
|
+
type: "boolean",
|
|
174
|
+
required: false,
|
|
175
|
+
description: "Send cancellation emails",
|
|
176
|
+
},
|
|
115
177
|
},
|
|
116
178
|
async execute(input, ctx) {
|
|
117
179
|
const { webinarKey, sendCancellationEmails } = input;
|
|
@@ -127,7 +189,11 @@ export default function gotowebinar(rl) {
|
|
|
127
189
|
rl.registerAction("registrant.create", {
|
|
128
190
|
description: "Register a person for a webinar",
|
|
129
191
|
inputSchema: {
|
|
130
|
-
webinarKey: {
|
|
192
|
+
webinarKey: {
|
|
193
|
+
type: "string",
|
|
194
|
+
required: true,
|
|
195
|
+
description: "Webinar key",
|
|
196
|
+
},
|
|
131
197
|
firstName: { type: "string", required: true, description: "First name" },
|
|
132
198
|
lastName: { type: "string", required: true, description: "Last name" },
|
|
133
199
|
email: { type: "string", required: true, description: "Email" },
|
|
@@ -141,8 +207,16 @@ export default function gotowebinar(rl) {
|
|
|
141
207
|
rl.registerAction("registrant.get", {
|
|
142
208
|
description: "Get a registrant",
|
|
143
209
|
inputSchema: {
|
|
144
|
-
webinarKey: {
|
|
145
|
-
|
|
210
|
+
webinarKey: {
|
|
211
|
+
type: "string",
|
|
212
|
+
required: true,
|
|
213
|
+
description: "Webinar key",
|
|
214
|
+
},
|
|
215
|
+
registrantKey: {
|
|
216
|
+
type: "string",
|
|
217
|
+
required: true,
|
|
218
|
+
description: "Registrant key",
|
|
219
|
+
},
|
|
146
220
|
},
|
|
147
221
|
async execute(input, ctx) {
|
|
148
222
|
const { webinarKey, registrantKey } = input;
|
|
@@ -152,7 +226,13 @@ export default function gotowebinar(rl) {
|
|
|
152
226
|
});
|
|
153
227
|
rl.registerAction("registrant.list", {
|
|
154
228
|
description: "List registrants for a webinar",
|
|
155
|
-
inputSchema: {
|
|
229
|
+
inputSchema: {
|
|
230
|
+
webinarKey: {
|
|
231
|
+
type: "string",
|
|
232
|
+
required: true,
|
|
233
|
+
description: "Webinar key",
|
|
234
|
+
},
|
|
235
|
+
},
|
|
156
236
|
async execute(input, ctx) {
|
|
157
237
|
const { accessToken, organizerKey } = getConn(ctx);
|
|
158
238
|
return apiRequest(accessToken, "GET", `organizers/${organizerKey}/webinars/${input.webinarKey}/registrants`);
|
|
@@ -161,8 +241,16 @@ export default function gotowebinar(rl) {
|
|
|
161
241
|
rl.registerAction("registrant.delete", {
|
|
162
242
|
description: "Delete a registrant",
|
|
163
243
|
inputSchema: {
|
|
164
|
-
webinarKey: {
|
|
165
|
-
|
|
244
|
+
webinarKey: {
|
|
245
|
+
type: "string",
|
|
246
|
+
required: true,
|
|
247
|
+
description: "Webinar key",
|
|
248
|
+
},
|
|
249
|
+
registrantKey: {
|
|
250
|
+
type: "string",
|
|
251
|
+
required: true,
|
|
252
|
+
description: "Registrant key",
|
|
253
|
+
},
|
|
166
254
|
},
|
|
167
255
|
async execute(input, ctx) {
|
|
168
256
|
const { webinarKey, registrantKey } = input;
|
|
@@ -175,8 +263,16 @@ export default function gotowebinar(rl) {
|
|
|
175
263
|
rl.registerAction("session.get", {
|
|
176
264
|
description: "Get a session",
|
|
177
265
|
inputSchema: {
|
|
178
|
-
webinarKey: {
|
|
179
|
-
|
|
266
|
+
webinarKey: {
|
|
267
|
+
type: "string",
|
|
268
|
+
required: true,
|
|
269
|
+
description: "Webinar key",
|
|
270
|
+
},
|
|
271
|
+
sessionKey: {
|
|
272
|
+
type: "string",
|
|
273
|
+
required: true,
|
|
274
|
+
description: "Session key",
|
|
275
|
+
},
|
|
180
276
|
},
|
|
181
277
|
async execute(input, ctx) {
|
|
182
278
|
const { webinarKey, sessionKey } = input;
|
|
@@ -186,7 +282,13 @@ export default function gotowebinar(rl) {
|
|
|
186
282
|
});
|
|
187
283
|
rl.registerAction("session.list", {
|
|
188
284
|
description: "List sessions for a webinar",
|
|
189
|
-
inputSchema: {
|
|
285
|
+
inputSchema: {
|
|
286
|
+
webinarKey: {
|
|
287
|
+
type: "string",
|
|
288
|
+
required: true,
|
|
289
|
+
description: "Webinar key",
|
|
290
|
+
},
|
|
291
|
+
},
|
|
190
292
|
async execute(input, ctx) {
|
|
191
293
|
const { accessToken, organizerKey } = getConn(ctx);
|
|
192
294
|
return apiRequest(accessToken, "GET", `organizers/${organizerKey}/webinars/${input.webinarKey}/sessions`);
|
|
@@ -195,8 +297,16 @@ export default function gotowebinar(rl) {
|
|
|
195
297
|
rl.registerAction("session.getPerformance", {
|
|
196
298
|
description: "Get session performance details",
|
|
197
299
|
inputSchema: {
|
|
198
|
-
webinarKey: {
|
|
199
|
-
|
|
300
|
+
webinarKey: {
|
|
301
|
+
type: "string",
|
|
302
|
+
required: true,
|
|
303
|
+
description: "Webinar key",
|
|
304
|
+
},
|
|
305
|
+
sessionKey: {
|
|
306
|
+
type: "string",
|
|
307
|
+
required: true,
|
|
308
|
+
description: "Session key",
|
|
309
|
+
},
|
|
200
310
|
},
|
|
201
311
|
async execute(input, ctx) {
|
|
202
312
|
const { webinarKey, sessionKey } = input;
|
|
@@ -208,9 +318,21 @@ export default function gotowebinar(rl) {
|
|
|
208
318
|
rl.registerAction("attendee.get", {
|
|
209
319
|
description: "Get an attendee",
|
|
210
320
|
inputSchema: {
|
|
211
|
-
webinarKey: {
|
|
212
|
-
|
|
213
|
-
|
|
321
|
+
webinarKey: {
|
|
322
|
+
type: "string",
|
|
323
|
+
required: true,
|
|
324
|
+
description: "Webinar key",
|
|
325
|
+
},
|
|
326
|
+
sessionKey: {
|
|
327
|
+
type: "string",
|
|
328
|
+
required: true,
|
|
329
|
+
description: "Session key",
|
|
330
|
+
},
|
|
331
|
+
registrantKey: {
|
|
332
|
+
type: "string",
|
|
333
|
+
required: true,
|
|
334
|
+
description: "Registrant key",
|
|
335
|
+
},
|
|
214
336
|
},
|
|
215
337
|
async execute(input, ctx) {
|
|
216
338
|
const { webinarKey, sessionKey, registrantKey } = input;
|
|
@@ -221,8 +343,16 @@ export default function gotowebinar(rl) {
|
|
|
221
343
|
rl.registerAction("attendee.list", {
|
|
222
344
|
description: "List attendees for a session",
|
|
223
345
|
inputSchema: {
|
|
224
|
-
webinarKey: {
|
|
225
|
-
|
|
346
|
+
webinarKey: {
|
|
347
|
+
type: "string",
|
|
348
|
+
required: true,
|
|
349
|
+
description: "Webinar key",
|
|
350
|
+
},
|
|
351
|
+
sessionKey: {
|
|
352
|
+
type: "string",
|
|
353
|
+
required: true,
|
|
354
|
+
description: "Session key",
|
|
355
|
+
},
|
|
226
356
|
},
|
|
227
357
|
async execute(input, ctx) {
|
|
228
358
|
const { webinarKey, sessionKey } = input;
|
|
@@ -234,14 +364,34 @@ export default function gotowebinar(rl) {
|
|
|
234
364
|
rl.registerAction("coorganizer.create", {
|
|
235
365
|
description: "Add a co-organizer to a webinar",
|
|
236
366
|
inputSchema: {
|
|
237
|
-
webinarKey: {
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
367
|
+
webinarKey: {
|
|
368
|
+
type: "string",
|
|
369
|
+
required: true,
|
|
370
|
+
description: "Webinar key",
|
|
371
|
+
},
|
|
372
|
+
external: {
|
|
373
|
+
type: "boolean",
|
|
374
|
+
required: true,
|
|
375
|
+
description: "true for external, false for internal",
|
|
376
|
+
},
|
|
377
|
+
organizerKey: {
|
|
378
|
+
type: "string",
|
|
379
|
+
required: false,
|
|
380
|
+
description: "Organizer key (internal)",
|
|
381
|
+
},
|
|
382
|
+
givenName: {
|
|
383
|
+
type: "string",
|
|
384
|
+
required: false,
|
|
385
|
+
description: "First name (external)",
|
|
386
|
+
},
|
|
387
|
+
email: {
|
|
388
|
+
type: "string",
|
|
389
|
+
required: false,
|
|
390
|
+
description: "Email (external)",
|
|
391
|
+
},
|
|
242
392
|
},
|
|
243
393
|
async execute(input, ctx) {
|
|
244
|
-
const { webinarKey, external, organizerKey: coorgKey, givenName, email } = input;
|
|
394
|
+
const { webinarKey, external, organizerKey: coorgKey, givenName, email, } = input;
|
|
245
395
|
const { accessToken, organizerKey } = getConn(ctx);
|
|
246
396
|
const body = { external };
|
|
247
397
|
if (coorgKey)
|
|
@@ -255,7 +405,13 @@ export default function gotowebinar(rl) {
|
|
|
255
405
|
});
|
|
256
406
|
rl.registerAction("coorganizer.list", {
|
|
257
407
|
description: "List co-organizers",
|
|
258
|
-
inputSchema: {
|
|
408
|
+
inputSchema: {
|
|
409
|
+
webinarKey: {
|
|
410
|
+
type: "string",
|
|
411
|
+
required: true,
|
|
412
|
+
description: "Webinar key",
|
|
413
|
+
},
|
|
414
|
+
},
|
|
259
415
|
async execute(input, ctx) {
|
|
260
416
|
const { accessToken, organizerKey } = getConn(ctx);
|
|
261
417
|
return apiRequest(accessToken, "GET", `organizers/${organizerKey}/webinars/${input.webinarKey}/coorganizers`);
|
|
@@ -264,9 +420,21 @@ export default function gotowebinar(rl) {
|
|
|
264
420
|
rl.registerAction("coorganizer.delete", {
|
|
265
421
|
description: "Remove a co-organizer",
|
|
266
422
|
inputSchema: {
|
|
267
|
-
webinarKey: {
|
|
268
|
-
|
|
269
|
-
|
|
423
|
+
webinarKey: {
|
|
424
|
+
type: "string",
|
|
425
|
+
required: true,
|
|
426
|
+
description: "Webinar key",
|
|
427
|
+
},
|
|
428
|
+
coorganizerKey: {
|
|
429
|
+
type: "string",
|
|
430
|
+
required: true,
|
|
431
|
+
description: "Co-organizer key",
|
|
432
|
+
},
|
|
433
|
+
external: {
|
|
434
|
+
type: "boolean",
|
|
435
|
+
required: false,
|
|
436
|
+
description: "Whether external",
|
|
437
|
+
},
|
|
270
438
|
},
|
|
271
439
|
async execute(input, ctx) {
|
|
272
440
|
const { webinarKey, coorganizerKey, external } = input;
|
|
@@ -282,7 +450,11 @@ export default function gotowebinar(rl) {
|
|
|
282
450
|
rl.registerAction("panelist.create", {
|
|
283
451
|
description: "Add a panelist to a webinar",
|
|
284
452
|
inputSchema: {
|
|
285
|
-
webinarKey: {
|
|
453
|
+
webinarKey: {
|
|
454
|
+
type: "string",
|
|
455
|
+
required: true,
|
|
456
|
+
description: "Webinar key",
|
|
457
|
+
},
|
|
286
458
|
name: { type: "string", required: true, description: "Panelist name" },
|
|
287
459
|
email: { type: "string", required: true, description: "Panelist email" },
|
|
288
460
|
},
|
|
@@ -294,7 +466,13 @@ export default function gotowebinar(rl) {
|
|
|
294
466
|
});
|
|
295
467
|
rl.registerAction("panelist.list", {
|
|
296
468
|
description: "List panelists",
|
|
297
|
-
inputSchema: {
|
|
469
|
+
inputSchema: {
|
|
470
|
+
webinarKey: {
|
|
471
|
+
type: "string",
|
|
472
|
+
required: true,
|
|
473
|
+
description: "Webinar key",
|
|
474
|
+
},
|
|
475
|
+
},
|
|
298
476
|
async execute(input, ctx) {
|
|
299
477
|
const { accessToken, organizerKey } = getConn(ctx);
|
|
300
478
|
return apiRequest(accessToken, "GET", `organizers/${organizerKey}/webinars/${input.webinarKey}/panelists`);
|
|
@@ -303,8 +481,16 @@ export default function gotowebinar(rl) {
|
|
|
303
481
|
rl.registerAction("panelist.delete", {
|
|
304
482
|
description: "Remove a panelist",
|
|
305
483
|
inputSchema: {
|
|
306
|
-
webinarKey: {
|
|
307
|
-
|
|
484
|
+
webinarKey: {
|
|
485
|
+
type: "string",
|
|
486
|
+
required: true,
|
|
487
|
+
description: "Webinar key",
|
|
488
|
+
},
|
|
489
|
+
panelistKey: {
|
|
490
|
+
type: "string",
|
|
491
|
+
required: true,
|
|
492
|
+
description: "Panelist key",
|
|
493
|
+
},
|
|
308
494
|
},
|
|
309
495
|
async execute(input, ctx) {
|
|
310
496
|
const { webinarKey, panelistKey } = input;
|
|
@@ -8,9 +8,15 @@ async function apiRequest(baseUrl, apiKey, method, endpoint, body, qs) {
|
|
|
8
8
|
}
|
|
9
9
|
const opts = {
|
|
10
10
|
method,
|
|
11
|
-
headers: {
|
|
11
|
+
headers: {
|
|
12
|
+
Authorization: `Bearer ${apiKey}`,
|
|
13
|
+
"Content-Type": "application/json",
|
|
14
|
+
},
|
|
12
15
|
};
|
|
13
|
-
if (body &&
|
|
16
|
+
if (body &&
|
|
17
|
+
Object.keys(body).length > 0 &&
|
|
18
|
+
method !== "GET" &&
|
|
19
|
+
method !== "DELETE") {
|
|
14
20
|
opts.body = JSON.stringify(body);
|
|
15
21
|
}
|
|
16
22
|
const res = await fetch(url.toString(), opts);
|
|
@@ -34,16 +40,34 @@ export default function grafana(rl) {
|
|
|
34
40
|
rl.setName("grafana");
|
|
35
41
|
rl.setVersion("0.1.0");
|
|
36
42
|
rl.setConnectionSchema({
|
|
37
|
-
baseUrl: {
|
|
38
|
-
|
|
43
|
+
baseUrl: {
|
|
44
|
+
type: "string",
|
|
45
|
+
required: true,
|
|
46
|
+
description: "Grafana base URL (e.g. https://grafana.example.com)",
|
|
47
|
+
env: "GRAFANA_URL",
|
|
48
|
+
},
|
|
49
|
+
apiKey: {
|
|
50
|
+
type: "string",
|
|
51
|
+
required: true,
|
|
52
|
+
description: "Grafana API key or service account token",
|
|
53
|
+
env: "GRAFANA_API_KEY",
|
|
54
|
+
},
|
|
39
55
|
});
|
|
40
56
|
// ── Dashboard ───────────────────────────────────────
|
|
41
57
|
rl.registerAction("dashboard.create", {
|
|
42
58
|
description: "Create or save a dashboard",
|
|
43
59
|
inputSchema: {
|
|
44
|
-
dashboard: {
|
|
60
|
+
dashboard: {
|
|
61
|
+
type: "object",
|
|
62
|
+
required: true,
|
|
63
|
+
description: "Dashboard JSON model",
|
|
64
|
+
},
|
|
45
65
|
folderId: { type: "number", required: false, description: "Folder ID" },
|
|
46
|
-
overwrite: {
|
|
66
|
+
overwrite: {
|
|
67
|
+
type: "boolean",
|
|
68
|
+
required: false,
|
|
69
|
+
description: "Overwrite existing",
|
|
70
|
+
},
|
|
47
71
|
message: { type: "string", required: false, description: "Save message" },
|
|
48
72
|
},
|
|
49
73
|
async execute(input, ctx) {
|
|
@@ -60,7 +84,9 @@ export default function grafana(rl) {
|
|
|
60
84
|
});
|
|
61
85
|
rl.registerAction("dashboard.get", {
|
|
62
86
|
description: "Get a dashboard by UID",
|
|
63
|
-
inputSchema: {
|
|
87
|
+
inputSchema: {
|
|
88
|
+
uid: { type: "string", required: true, description: "Dashboard UID" },
|
|
89
|
+
},
|
|
64
90
|
async execute(input, ctx) {
|
|
65
91
|
return gf(ctx, "GET", `/dashboards/uid/${input.uid}`);
|
|
66
92
|
},
|
|
@@ -70,8 +96,16 @@ export default function grafana(rl) {
|
|
|
70
96
|
inputSchema: {
|
|
71
97
|
query: { type: "string", required: false, description: "Search query" },
|
|
72
98
|
tag: { type: "string", required: false, description: "Filter by tag" },
|
|
73
|
-
type: {
|
|
74
|
-
|
|
99
|
+
type: {
|
|
100
|
+
type: "string",
|
|
101
|
+
required: false,
|
|
102
|
+
description: "dash-db or dash-folder",
|
|
103
|
+
},
|
|
104
|
+
folderId: {
|
|
105
|
+
type: "number",
|
|
106
|
+
required: false,
|
|
107
|
+
description: "Filter by folder ID",
|
|
108
|
+
},
|
|
75
109
|
limit: { type: "number", required: false, description: "Max results" },
|
|
76
110
|
},
|
|
77
111
|
async execute(input, ctx) {
|
|
@@ -92,7 +126,9 @@ export default function grafana(rl) {
|
|
|
92
126
|
});
|
|
93
127
|
rl.registerAction("dashboard.delete", {
|
|
94
128
|
description: "Delete a dashboard by UID",
|
|
95
|
-
inputSchema: {
|
|
129
|
+
inputSchema: {
|
|
130
|
+
uid: { type: "string", required: true, description: "Dashboard UID" },
|
|
131
|
+
},
|
|
96
132
|
async execute(input, ctx) {
|
|
97
133
|
return gf(ctx, "DELETE", `/dashboards/uid/${input.uid}`);
|
|
98
134
|
},
|
|
@@ -100,14 +136,25 @@ export default function grafana(rl) {
|
|
|
100
136
|
rl.registerAction("dashboard.update", {
|
|
101
137
|
description: "Update an existing dashboard",
|
|
102
138
|
inputSchema: {
|
|
103
|
-
uid: {
|
|
104
|
-
|
|
139
|
+
uid: {
|
|
140
|
+
type: "string",
|
|
141
|
+
required: true,
|
|
142
|
+
description: "Dashboard UID to update",
|
|
143
|
+
},
|
|
144
|
+
dashboard: {
|
|
145
|
+
type: "object",
|
|
146
|
+
required: true,
|
|
147
|
+
description: "Updated dashboard JSON model",
|
|
148
|
+
},
|
|
105
149
|
folderId: { type: "number", required: false, description: "Folder ID" },
|
|
106
150
|
message: { type: "string", required: false, description: "Save message" },
|
|
107
151
|
},
|
|
108
152
|
async execute(input, ctx) {
|
|
109
153
|
const { uid, dashboard, folderId, message } = input;
|
|
110
|
-
const body = {
|
|
154
|
+
const body = {
|
|
155
|
+
dashboard: { ...dashboard, uid },
|
|
156
|
+
overwrite: true,
|
|
157
|
+
};
|
|
111
158
|
if (folderId !== undefined)
|
|
112
159
|
body.folderId = folderId;
|
|
113
160
|
if (message)
|
|
@@ -132,7 +179,9 @@ export default function grafana(rl) {
|
|
|
132
179
|
});
|
|
133
180
|
rl.registerAction("team.get", {
|
|
134
181
|
description: "Get a team by ID",
|
|
135
|
-
inputSchema: {
|
|
182
|
+
inputSchema: {
|
|
183
|
+
teamId: { type: "number", required: true, description: "Team ID" },
|
|
184
|
+
},
|
|
136
185
|
async execute(input, ctx) {
|
|
137
186
|
return gf(ctx, "GET", `/teams/${input.teamId}`);
|
|
138
187
|
},
|
|
@@ -176,7 +225,9 @@ export default function grafana(rl) {
|
|
|
176
225
|
});
|
|
177
226
|
rl.registerAction("team.delete", {
|
|
178
227
|
description: "Delete a team",
|
|
179
|
-
inputSchema: {
|
|
228
|
+
inputSchema: {
|
|
229
|
+
teamId: { type: "number", required: true, description: "Team ID" },
|
|
230
|
+
},
|
|
180
231
|
async execute(input, ctx) {
|
|
181
232
|
return gf(ctx, "DELETE", `/teams/${input.teamId}`);
|
|
182
233
|
},
|
|
@@ -197,7 +248,11 @@ export default function grafana(rl) {
|
|
|
197
248
|
description: "Remove a user from a team",
|
|
198
249
|
inputSchema: {
|
|
199
250
|
teamId: { type: "number", required: true, description: "Team ID" },
|
|
200
|
-
userId: {
|
|
251
|
+
userId: {
|
|
252
|
+
type: "number",
|
|
253
|
+
required: true,
|
|
254
|
+
description: "User ID to remove",
|
|
255
|
+
},
|
|
201
256
|
},
|
|
202
257
|
async execute(input, ctx) {
|
|
203
258
|
const { teamId, userId } = input;
|
|
@@ -206,7 +261,9 @@ export default function grafana(rl) {
|
|
|
206
261
|
});
|
|
207
262
|
rl.registerAction("teamMember.list", {
|
|
208
263
|
description: "List members of a team",
|
|
209
|
-
inputSchema: {
|
|
264
|
+
inputSchema: {
|
|
265
|
+
teamId: { type: "number", required: true, description: "Team ID" },
|
|
266
|
+
},
|
|
210
267
|
async execute(input, ctx) {
|
|
211
268
|
return gf(ctx, "GET", `/teams/${input.teamId}/members`);
|
|
212
269
|
},
|
|
@@ -215,8 +272,16 @@ export default function grafana(rl) {
|
|
|
215
272
|
rl.registerAction("user.create", {
|
|
216
273
|
description: "Add a user to the current organization",
|
|
217
274
|
inputSchema: {
|
|
218
|
-
loginOrEmail: {
|
|
219
|
-
|
|
275
|
+
loginOrEmail: {
|
|
276
|
+
type: "string",
|
|
277
|
+
required: true,
|
|
278
|
+
description: "Login name or email",
|
|
279
|
+
},
|
|
280
|
+
role: {
|
|
281
|
+
type: "string",
|
|
282
|
+
required: true,
|
|
283
|
+
description: "Viewer, Editor, or Admin",
|
|
284
|
+
},
|
|
220
285
|
},
|
|
221
286
|
async execute(input, ctx) {
|
|
222
287
|
const { loginOrEmail, role } = input;
|
|
@@ -233,7 +298,11 @@ export default function grafana(rl) {
|
|
|
233
298
|
description: "Update a user's role in the organization",
|
|
234
299
|
inputSchema: {
|
|
235
300
|
userId: { type: "number", required: true, description: "User ID" },
|
|
236
|
-
role: {
|
|
301
|
+
role: {
|
|
302
|
+
type: "string",
|
|
303
|
+
required: true,
|
|
304
|
+
description: "Viewer, Editor, or Admin",
|
|
305
|
+
},
|
|
237
306
|
},
|
|
238
307
|
async execute(input, ctx) {
|
|
239
308
|
const { userId, role } = input;
|
|
@@ -242,7 +311,9 @@ export default function grafana(rl) {
|
|
|
242
311
|
});
|
|
243
312
|
rl.registerAction("user.delete", {
|
|
244
313
|
description: "Remove a user from the organization",
|
|
245
|
-
inputSchema: {
|
|
314
|
+
inputSchema: {
|
|
315
|
+
userId: { type: "number", required: true, description: "User ID" },
|
|
316
|
+
},
|
|
246
317
|
async execute(input, ctx) {
|
|
247
318
|
return gf(ctx, "DELETE", `/org/users/${input.userId}`);
|
|
248
319
|
},
|