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.
Files changed (189) hide show
  1. package/dist/plugins/actionNetwork/src/index.js +118 -25
  2. package/dist/plugins/activeCampaign/src/index.js +184 -38
  3. package/dist/plugins/adalo/src/index.js +40 -8
  4. package/dist/plugins/affinity/src/index.js +100 -20
  5. package/dist/plugins/agileCrm/src/index.js +115 -27
  6. package/dist/plugins/airtable/src/index.js +94 -19
  7. package/dist/plugins/airtop/src/index.js +266 -62
  8. package/dist/plugins/apiTemplateIo/src/index.js +25 -5
  9. package/dist/plugins/asana/src/index.js +195 -41
  10. package/dist/plugins/autopilot/src/index.js +39 -8
  11. package/dist/plugins/bambooHr/src/index.js +109 -22
  12. package/dist/plugins/bannerbear/src/index.js +36 -8
  13. package/dist/plugins/baserow/src/index.js +35 -7
  14. package/dist/plugins/beeminder/src/index.js +198 -40
  15. package/dist/plugins/bitly/src/index.js +46 -10
  16. package/dist/plugins/bitwarden/src/index.js +167 -36
  17. package/dist/plugins/box/src/index.js +172 -37
  18. package/dist/plugins/brandfetch/src/index.js +5 -1
  19. package/dist/plugins/brevo/src/index.js +136 -29
  20. package/dist/plugins/bubble/src/index.js +76 -17
  21. package/dist/plugins/chargebee/src/index.js +35 -7
  22. package/dist/plugins/circleci/src/index.js +50 -10
  23. package/dist/plugins/ciscoWebex/src/index.js +131 -27
  24. package/dist/plugins/clearbit/src/index.js +76 -17
  25. package/dist/plugins/clickup/src/index.js +500 -107
  26. package/dist/plugins/clockify/src/index.js +229 -47
  27. package/dist/plugins/cloudflare/src/index.js +28 -6
  28. package/dist/plugins/cockpit/src/index.js +54 -12
  29. package/dist/plugins/coda/src/index.js +81 -19
  30. package/dist/plugins/coingecko/src/index.js +157 -33
  31. package/dist/plugins/contentful/src/index.js +85 -17
  32. package/dist/plugins/convertkit/src/index.js +74 -18
  33. package/dist/plugins/copper/src/index.js +59 -11
  34. package/dist/plugins/cortex/src/index.js +55 -13
  35. package/dist/plugins/currents/src/index.js +310 -71
  36. package/dist/plugins/customerIo/src/index.js +112 -23
  37. package/dist/plugins/databricks/src/index.js +549 -115
  38. package/dist/plugins/deepl/src/index.js +26 -6
  39. package/dist/plugins/demio/src/index.js +56 -11
  40. package/dist/plugins/dhl/src/index.js +16 -3
  41. package/dist/plugins/discord/src/index.js +141 -31
  42. package/dist/plugins/discourse/src/index.js +136 -31
  43. package/dist/plugins/disqus/src/index.js +96 -20
  44. package/dist/plugins/docker/src/index.js +20 -4
  45. package/dist/plugins/drift/src/index.js +19 -5
  46. package/dist/plugins/dropbox/src/index.js +139 -30
  47. package/dist/plugins/dropcontact/src/index.js +21 -4
  48. package/dist/plugins/egoi/src/index.js +61 -15
  49. package/dist/plugins/elasticsearch/src/index.js +59 -13
  50. package/dist/plugins/emelia/src/index.js +95 -19
  51. package/dist/plugins/erpnext/src/index.js +74 -15
  52. package/dist/plugins/facebookGraph/src/index.js +52 -11
  53. package/dist/plugins/freshdesk/src/index.js +220 -48
  54. package/dist/plugins/freshservice/src/index.js +39 -9
  55. package/dist/plugins/freshworksCrm/src/index.js +58 -12
  56. package/dist/plugins/getresponse/src/index.js +87 -18
  57. package/dist/plugins/ghost/src/index.js +114 -26
  58. package/dist/plugins/github/src/index.js +483 -109
  59. package/dist/plugins/gitlab/src/index.js +193 -45
  60. package/dist/plugins/gong/src/index.js +68 -14
  61. package/dist/plugins/gotify/src/index.js +43 -9
  62. package/dist/plugins/gotowebinar/src/index.js +233 -47
  63. package/dist/plugins/grafana/src/index.js +92 -21
  64. package/dist/plugins/graphql/src/index.js +38 -8
  65. package/dist/plugins/grist/src/index.js +52 -10
  66. package/dist/plugins/hackernews/src/index.js +32 -6
  67. package/dist/plugins/halopsa/src/index.js +131 -26
  68. package/dist/plugins/harvest/src/index.js +182 -42
  69. package/dist/plugins/helpscout/src/index.js +153 -31
  70. package/dist/plugins/highlevel/src/index.js +291 -58
  71. package/dist/plugins/homeAssistant/src/index.js +124 -26
  72. package/dist/plugins/hubspot/src/index.js +163 -29
  73. package/dist/plugins/humanticAi/src/index.js +54 -5
  74. package/dist/plugins/hunter/src/index.js +21 -4
  75. package/dist/plugins/intercom/src/index.js +95 -20
  76. package/dist/plugins/iterable/src/index.js +96 -20
  77. package/dist/plugins/jenkins/src/index.js +75 -17
  78. package/dist/plugins/jira/src/index.js +193 -43
  79. package/dist/plugins/keap/src/index.js +222 -56
  80. package/dist/plugins/kobotoolbox/src/index.js +113 -25
  81. package/dist/plugins/lemlist/src/index.js +79 -18
  82. package/dist/plugins/linear/src/index.js +86 -19
  83. package/dist/plugins/lingvanex/src/index.js +38 -8
  84. package/dist/plugins/linkedin/src/index.js +37 -8
  85. package/dist/plugins/lonescale/src/index.js +41 -9
  86. package/dist/plugins/magento/src/index.js +98 -27
  87. package/dist/plugins/mailcheck/src/index.js +11 -2
  88. package/dist/plugins/mailchimp/src/index.js +193 -42
  89. package/dist/plugins/mailerlite/src/index.js +61 -12
  90. package/dist/plugins/mailgun/src/index.js +39 -7
  91. package/dist/plugins/mailjet/src/index.js +141 -30
  92. package/dist/plugins/mandrill/src/index.js +67 -14
  93. package/dist/plugins/marketstack/src/index.js +56 -10
  94. package/dist/plugins/matrix/src/index.js +97 -20
  95. package/dist/plugins/mattermost/src/index.js +124 -26
  96. package/dist/plugins/mautic/src/index.js +129 -26
  97. package/dist/plugins/medium/src/index.js +64 -13
  98. package/dist/plugins/messagebird/src/index.js +80 -15
  99. package/dist/plugins/metabase/src/index.js +57 -12
  100. package/dist/plugins/misp/src/index.js +135 -33
  101. package/dist/plugins/mocean/src/index.js +33 -7
  102. package/dist/plugins/monday/src/index.js +97 -23
  103. package/dist/plugins/monicaCrm/src/index.js +112 -23
  104. package/dist/plugins/msg91/src/index.js +11 -2
  105. package/dist/plugins/nasa/src/index.js +108 -21
  106. package/dist/plugins/netlify/src/index.js +28 -6
  107. package/dist/plugins/netscalerAdc/src/index.js +144 -29
  108. package/dist/plugins/nextcloud/src/index.js +103 -20
  109. package/dist/plugins/nocodb/src/index.js +57 -11
  110. package/dist/plugins/notion/src/index.js +148 -37
  111. package/dist/plugins/npm/src/index.js +59 -12
  112. package/dist/plugins/odoo/src/index.js +102 -20
  113. package/dist/plugins/okta/src/index.js +50 -10
  114. package/dist/plugins/oneSimpleApi/src/index.js +84 -17
  115. package/dist/plugins/onfleet/src/index.js +139 -32
  116. package/dist/plugins/openThesaurus/src/index.js +46 -9
  117. package/dist/plugins/openweathermap/src/index.js +31 -6
  118. package/dist/plugins/oura/src/index.js +36 -7
  119. package/dist/plugins/paddle/src/index.js +80 -17
  120. package/dist/plugins/pagerduty/src/index.js +53 -12
  121. package/dist/plugins/paypal/src/index.js +51 -11
  122. package/dist/plugins/peekalink/src/index.js +12 -3
  123. package/dist/plugins/phantombuster/src/index.js +39 -8
  124. package/dist/plugins/philipsHue/src/index.js +64 -13
  125. package/dist/plugins/pipedrive/src/index.js +167 -45
  126. package/dist/plugins/plivo/src/index.js +43 -8
  127. package/dist/plugins/postbin/src/index.js +9 -2
  128. package/dist/plugins/posthog/src/index.js +50 -13
  129. package/dist/plugins/profitwell/src/index.js +24 -5
  130. package/dist/plugins/pushbullet/src/index.js +45 -9
  131. package/dist/plugins/pushcut/src/index.js +31 -6
  132. package/dist/plugins/pushover/src/index.js +51 -10
  133. package/dist/plugins/quickbase/src/index.js +66 -13
  134. package/dist/plugins/quickbooks/src/index.js +86 -19
  135. package/dist/plugins/quickchart/src/index.js +35 -7
  136. package/dist/plugins/raindrop/src/index.js +54 -13
  137. package/dist/plugins/reddit/src/index.js +73 -18
  138. package/dist/plugins/rocketchat/src/index.js +47 -9
  139. package/dist/plugins/rundeck/src/index.js +26 -5
  140. package/dist/plugins/salesforce/src/index.js +161 -31
  141. package/dist/plugins/salesmate/src/index.js +75 -16
  142. package/dist/plugins/securityScorecard/src/index.js +73 -15
  143. package/dist/plugins/segment/src/index.js +21 -4
  144. package/dist/plugins/sendgrid/src/index.js +102 -24
  145. package/dist/plugins/sendy/src/index.js +54 -11
  146. package/dist/plugins/sentry/src/index.js +174 -34
  147. package/dist/plugins/servicenow/src/index.js +120 -27
  148. package/dist/plugins/shopify/src/index.js +53 -12
  149. package/dist/plugins/signl4/src/index.js +16 -3
  150. package/dist/plugins/slack/src/index.js +407 -105
  151. package/dist/plugins/sms77/src/index.js +26 -5
  152. package/dist/plugins/splunk/src/index.js +186 -45
  153. package/dist/plugins/spotify/src/index.js +265 -66
  154. package/dist/plugins/stackby/src/index.js +18 -6
  155. package/dist/plugins/storyblok/src/index.js +57 -11
  156. package/dist/plugins/strapi/src/index.js +63 -12
  157. package/dist/plugins/strava/src/index.js +58 -13
  158. package/dist/plugins/stripe/src/index.js +143 -30
  159. package/dist/plugins/supabase/src/index.js +49 -10
  160. package/dist/plugins/syncromsp/src/index.js +245 -67
  161. package/dist/plugins/tapfiliate/src/index.js +57 -14
  162. package/dist/plugins/telegram/src/index.js +202 -39
  163. package/dist/plugins/thehive/src/index.js +271 -66
  164. package/dist/plugins/thehiveProject/src/index.js +457 -89
  165. package/dist/plugins/todoist/src/index.js +326 -77
  166. package/dist/plugins/travisci/src/index.js +35 -8
  167. package/dist/plugins/trello/src/index.js +204 -46
  168. package/dist/plugins/twake/src/index.js +10 -2
  169. package/dist/plugins/twilio/src/index.js +56 -11
  170. package/dist/plugins/twist/src/index.js +241 -48
  171. package/dist/plugins/twitter/src/index.js +128 -30
  172. package/dist/plugins/unleashedSoftware/src/index.js +30 -6
  173. package/dist/plugins/uplead/src/index.js +9 -2
  174. package/dist/plugins/uproc/src/index.js +31 -6
  175. package/dist/plugins/uptimerobot/src/index.js +119 -25
  176. package/dist/plugins/urlscanio/src/index.js +25 -6
  177. package/dist/plugins/vero/src/index.js +68 -13
  178. package/dist/plugins/vonage/src/index.js +32 -6
  179. package/dist/plugins/wekan/src/index.js +297 -52
  180. package/dist/plugins/woocommerce/src/index.js +57 -12
  181. package/dist/plugins/wordpress/src/index.js +94 -18
  182. package/dist/plugins/xero/src/index.js +79 -13
  183. package/dist/plugins/yourls/src/index.js +33 -6
  184. package/dist/plugins/zammad/src/index.js +139 -36
  185. package/dist/plugins/zendesk/src/index.js +201 -48
  186. package/dist/plugins/zoho/src/index.js +88 -21
  187. package/dist/plugins/zoom/src/index.js +41 -7
  188. package/dist/plugins/zulip/src/index.js +101 -20
  189. 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: { Authorization: `Bearer ${accessToken}`, "Content-Type": "application/json", Accept: "application/json" },
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: { type: "string", required: true, description: "GoTo OAuth2 access token", env: "GOTO_ACCESS_TOKEN" },
38
- organizerKey: { type: "string", required: true, description: "Organizer key", env: "GOTO_ORGANIZER_KEY" },
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: { type: "string", required: true, description: "Webinar subject" },
45
- times: { type: "array", required: true, description: "Array of {startTime, endTime} (ISO 8601)" },
46
- description: { type: "string", required: false, description: "Description" },
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: { type: "string", required: false, description: "single_session, series, sequence" },
49
- isPasswordProtected: { type: "boolean", required: false, description: "Require password" },
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: { webinarKey: { type: "string", required: true, description: "Webinar key" } },
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: { limit: { type: "number", required: false, description: "Max results" } },
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: { type: "string", required: true, description: "Webinar key" },
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: { type: "string", required: false, description: "New 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: { type: "string", required: false, description: "New time zone" },
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: { type: "string", required: true, description: "Webinar key" },
114
- sendCancellationEmails: { type: "boolean", required: false, description: "Send cancellation emails" },
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: { type: "string", required: true, description: "Webinar key" },
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: { type: "string", required: true, description: "Webinar key" },
145
- registrantKey: { type: "string", required: true, description: "Registrant key" },
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: { webinarKey: { type: "string", required: true, description: "Webinar key" } },
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: { type: "string", required: true, description: "Webinar key" },
165
- registrantKey: { type: "string", required: true, description: "Registrant key" },
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: { type: "string", required: true, description: "Webinar key" },
179
- sessionKey: { type: "string", required: true, description: "Session key" },
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: { webinarKey: { type: "string", required: true, description: "Webinar key" } },
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: { type: "string", required: true, description: "Webinar key" },
199
- sessionKey: { type: "string", required: true, description: "Session key" },
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: { type: "string", required: true, description: "Webinar key" },
212
- sessionKey: { type: "string", required: true, description: "Session key" },
213
- registrantKey: { type: "string", required: true, description: "Registrant key" },
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: { type: "string", required: true, description: "Webinar key" },
225
- sessionKey: { type: "string", required: true, description: "Session key" },
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: { type: "string", required: true, description: "Webinar key" },
238
- external: { type: "boolean", required: true, description: "true for external, false for internal" },
239
- organizerKey: { type: "string", required: false, description: "Organizer key (internal)" },
240
- givenName: { type: "string", required: false, description: "First name (external)" },
241
- email: { type: "string", required: false, description: "Email (external)" },
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: { webinarKey: { type: "string", required: true, description: "Webinar key" } },
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: { type: "string", required: true, description: "Webinar key" },
268
- coorganizerKey: { type: "string", required: true, description: "Co-organizer key" },
269
- external: { type: "boolean", required: false, description: "Whether external" },
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: { type: "string", required: true, description: "Webinar key" },
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: { webinarKey: { type: "string", required: true, description: "Webinar key" } },
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: { type: "string", required: true, description: "Webinar key" },
307
- panelistKey: { type: "string", required: true, description: "Panelist key" },
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: { Authorization: `Bearer ${apiKey}`, "Content-Type": "application/json" },
11
+ headers: {
12
+ Authorization: `Bearer ${apiKey}`,
13
+ "Content-Type": "application/json",
14
+ },
12
15
  };
13
- if (body && Object.keys(body).length > 0 && method !== "GET" && method !== "DELETE") {
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: { type: "string", required: true, description: "Grafana base URL (e.g. https://grafana.example.com)", env: "GRAFANA_URL" },
38
- apiKey: { type: "string", required: true, description: "Grafana API key or service account token", env: "GRAFANA_API_KEY" },
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: { type: "object", required: true, description: "Dashboard JSON model" },
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: { type: "boolean", required: false, description: "Overwrite existing" },
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: { uid: { type: "string", required: true, description: "Dashboard UID" } },
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: { type: "string", required: false, description: "dash-db or dash-folder" },
74
- folderId: { type: "number", required: false, description: "Filter by folder ID" },
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: { uid: { type: "string", required: true, description: "Dashboard UID" } },
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: { type: "string", required: true, description: "Dashboard UID to update" },
104
- dashboard: { type: "object", required: true, description: "Updated dashboard JSON model" },
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 = { dashboard: { ...dashboard, uid }, overwrite: true };
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: { teamId: { type: "number", required: true, description: "Team ID" } },
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: { teamId: { type: "number", required: true, description: "Team ID" } },
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: { type: "number", required: true, description: "User ID to remove" },
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: { teamId: { type: "number", required: true, description: "Team ID" } },
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: { type: "string", required: true, description: "Login name or email" },
219
- role: { type: "string", required: true, description: "Viewer, Editor, or Admin" },
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: { type: "string", required: true, description: "Viewer, Editor, or Admin" },
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: { userId: { type: "number", required: true, description: "User ID" } },
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
  },