runline 0.2.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (203) hide show
  1. package/dist/commands/auth.d.ts +7 -0
  2. package/dist/commands/auth.js +96 -0
  3. package/dist/config/loader.d.ts +11 -0
  4. package/dist/config/loader.js +46 -0
  5. package/dist/core/engine.js +7 -1
  6. package/dist/core/oauth.d.ts +46 -0
  7. package/dist/core/oauth.js +145 -0
  8. package/dist/index.d.ts +4 -2
  9. package/dist/index.js +2 -1
  10. package/dist/main.js +28 -0
  11. package/dist/plugin/api.d.ts +7 -1
  12. package/dist/plugin/api.js +7 -0
  13. package/dist/plugin/types.d.ts +47 -0
  14. package/dist/plugins/actionNetwork/src/index.js +118 -25
  15. package/dist/plugins/activeCampaign/src/index.js +184 -38
  16. package/dist/plugins/adalo/src/index.js +40 -8
  17. package/dist/plugins/affinity/src/index.js +100 -20
  18. package/dist/plugins/agileCrm/src/index.js +115 -27
  19. package/dist/plugins/airtable/src/index.js +94 -19
  20. package/dist/plugins/airtop/src/index.js +266 -62
  21. package/dist/plugins/apiTemplateIo/src/index.js +25 -5
  22. package/dist/plugins/asana/src/index.js +195 -41
  23. package/dist/plugins/autopilot/src/index.js +39 -8
  24. package/dist/plugins/bambooHr/src/index.js +109 -22
  25. package/dist/plugins/bannerbear/src/index.js +36 -8
  26. package/dist/plugins/baserow/src/index.js +35 -7
  27. package/dist/plugins/beeminder/src/index.js +198 -40
  28. package/dist/plugins/bitly/src/index.js +46 -10
  29. package/dist/plugins/bitwarden/src/index.js +167 -36
  30. package/dist/plugins/box/src/index.js +172 -37
  31. package/dist/plugins/brandfetch/src/index.js +5 -1
  32. package/dist/plugins/brevo/src/index.js +136 -29
  33. package/dist/plugins/bubble/src/index.js +76 -17
  34. package/dist/plugins/chargebee/src/index.js +35 -7
  35. package/dist/plugins/circleci/src/index.js +50 -10
  36. package/dist/plugins/ciscoWebex/src/index.js +131 -27
  37. package/dist/plugins/clearbit/src/index.js +76 -17
  38. package/dist/plugins/clickup/src/index.js +500 -107
  39. package/dist/plugins/clockify/src/index.js +229 -47
  40. package/dist/plugins/cloudflare/src/index.js +28 -6
  41. package/dist/plugins/cockpit/src/index.js +54 -12
  42. package/dist/plugins/coda/src/index.js +81 -19
  43. package/dist/plugins/coingecko/src/index.js +157 -33
  44. package/dist/plugins/contentful/src/index.js +85 -17
  45. package/dist/plugins/convertkit/src/index.js +74 -18
  46. package/dist/plugins/copper/src/index.js +59 -11
  47. package/dist/plugins/cortex/src/index.js +55 -13
  48. package/dist/plugins/currents/src/index.js +310 -71
  49. package/dist/plugins/customerIo/src/index.js +112 -23
  50. package/dist/plugins/databricks/src/index.js +549 -115
  51. package/dist/plugins/deepl/src/index.js +26 -6
  52. package/dist/plugins/demio/src/index.js +56 -11
  53. package/dist/plugins/dhl/src/index.js +16 -3
  54. package/dist/plugins/discord/src/index.js +141 -31
  55. package/dist/plugins/discourse/src/index.js +136 -31
  56. package/dist/plugins/disqus/src/index.js +96 -20
  57. package/dist/plugins/docker/src/index.js +20 -4
  58. package/dist/plugins/drift/src/index.js +19 -5
  59. package/dist/plugins/dropbox/src/index.js +139 -30
  60. package/dist/plugins/dropcontact/src/index.js +21 -4
  61. package/dist/plugins/egoi/src/index.js +61 -15
  62. package/dist/plugins/elasticsearch/src/index.js +59 -13
  63. package/dist/plugins/emelia/src/index.js +95 -19
  64. package/dist/plugins/erpnext/src/index.js +74 -15
  65. package/dist/plugins/facebookGraph/src/index.js +52 -11
  66. package/dist/plugins/freshdesk/src/index.js +220 -48
  67. package/dist/plugins/freshservice/src/index.js +39 -9
  68. package/dist/plugins/freshworksCrm/src/index.js +58 -12
  69. package/dist/plugins/getresponse/src/index.js +87 -18
  70. package/dist/plugins/ghost/src/index.js +114 -26
  71. package/dist/plugins/github/src/index.js +483 -109
  72. package/dist/plugins/gitlab/src/index.js +193 -45
  73. package/dist/plugins/gmail/src/index.js +1075 -0
  74. package/dist/plugins/gong/src/index.js +68 -14
  75. package/dist/plugins/gotify/src/index.js +43 -9
  76. package/dist/plugins/gotowebinar/src/index.js +233 -47
  77. package/dist/plugins/grafana/src/index.js +92 -21
  78. package/dist/plugins/graphql/src/index.js +38 -8
  79. package/dist/plugins/grist/src/index.js +52 -10
  80. package/dist/plugins/hackernews/src/index.js +32 -6
  81. package/dist/plugins/halopsa/src/index.js +131 -26
  82. package/dist/plugins/harvest/src/index.js +182 -42
  83. package/dist/plugins/helpscout/src/index.js +153 -31
  84. package/dist/plugins/highlevel/src/index.js +291 -58
  85. package/dist/plugins/homeAssistant/src/index.js +124 -26
  86. package/dist/plugins/hubspot/src/index.js +163 -29
  87. package/dist/plugins/humanticAi/src/index.js +54 -5
  88. package/dist/plugins/hunter/src/index.js +21 -4
  89. package/dist/plugins/intercom/src/index.js +95 -20
  90. package/dist/plugins/iterable/src/index.js +96 -20
  91. package/dist/plugins/jenkins/src/index.js +75 -17
  92. package/dist/plugins/jira/src/index.js +193 -43
  93. package/dist/plugins/keap/src/index.js +222 -56
  94. package/dist/plugins/kobotoolbox/src/index.js +113 -25
  95. package/dist/plugins/lemlist/src/index.js +79 -18
  96. package/dist/plugins/linear/src/index.js +86 -19
  97. package/dist/plugins/lingvanex/src/index.js +38 -8
  98. package/dist/plugins/linkedin/src/index.js +37 -8
  99. package/dist/plugins/lonescale/src/index.js +41 -9
  100. package/dist/plugins/magento/src/index.js +98 -27
  101. package/dist/plugins/mailcheck/src/index.js +11 -2
  102. package/dist/plugins/mailchimp/src/index.js +193 -42
  103. package/dist/plugins/mailerlite/src/index.js +61 -12
  104. package/dist/plugins/mailgun/src/index.js +39 -7
  105. package/dist/plugins/mailjet/src/index.js +141 -30
  106. package/dist/plugins/mandrill/src/index.js +67 -14
  107. package/dist/plugins/marketstack/src/index.js +56 -10
  108. package/dist/plugins/matrix/src/index.js +97 -20
  109. package/dist/plugins/mattermost/src/index.js +124 -26
  110. package/dist/plugins/mautic/src/index.js +129 -26
  111. package/dist/plugins/medium/src/index.js +64 -13
  112. package/dist/plugins/messagebird/src/index.js +80 -15
  113. package/dist/plugins/metabase/src/index.js +57 -12
  114. package/dist/plugins/misp/src/index.js +135 -33
  115. package/dist/plugins/mocean/src/index.js +33 -7
  116. package/dist/plugins/monday/src/index.js +97 -23
  117. package/dist/plugins/monicaCrm/src/index.js +112 -23
  118. package/dist/plugins/msg91/src/index.js +11 -2
  119. package/dist/plugins/nasa/src/index.js +108 -21
  120. package/dist/plugins/netlify/src/index.js +28 -6
  121. package/dist/plugins/netscalerAdc/src/index.js +144 -29
  122. package/dist/plugins/nextcloud/src/index.js +103 -20
  123. package/dist/plugins/nocodb/src/index.js +57 -11
  124. package/dist/plugins/notion/src/index.js +148 -37
  125. package/dist/plugins/npm/src/index.js +59 -12
  126. package/dist/plugins/odoo/src/index.js +102 -20
  127. package/dist/plugins/okta/src/index.js +50 -10
  128. package/dist/plugins/oneSimpleApi/src/index.js +84 -17
  129. package/dist/plugins/onfleet/src/index.js +139 -32
  130. package/dist/plugins/openThesaurus/src/index.js +46 -9
  131. package/dist/plugins/openweathermap/src/index.js +31 -6
  132. package/dist/plugins/oura/src/index.js +36 -7
  133. package/dist/plugins/paddle/src/index.js +80 -17
  134. package/dist/plugins/pagerduty/src/index.js +53 -12
  135. package/dist/plugins/paypal/src/index.js +51 -11
  136. package/dist/plugins/peekalink/src/index.js +12 -3
  137. package/dist/plugins/phantombuster/src/index.js +39 -8
  138. package/dist/plugins/philipsHue/src/index.js +64 -13
  139. package/dist/plugins/pipedrive/src/index.js +167 -45
  140. package/dist/plugins/plivo/src/index.js +43 -8
  141. package/dist/plugins/postbin/src/index.js +9 -2
  142. package/dist/plugins/posthog/src/index.js +50 -13
  143. package/dist/plugins/profitwell/src/index.js +24 -5
  144. package/dist/plugins/pushbullet/src/index.js +45 -9
  145. package/dist/plugins/pushcut/src/index.js +31 -6
  146. package/dist/plugins/pushover/src/index.js +51 -10
  147. package/dist/plugins/quickbase/src/index.js +66 -13
  148. package/dist/plugins/quickbooks/src/index.js +86 -19
  149. package/dist/plugins/quickchart/src/index.js +35 -7
  150. package/dist/plugins/raindrop/src/index.js +54 -13
  151. package/dist/plugins/reddit/src/index.js +73 -18
  152. package/dist/plugins/rocketchat/src/index.js +47 -9
  153. package/dist/plugins/rundeck/src/index.js +26 -5
  154. package/dist/plugins/salesforce/src/index.js +161 -31
  155. package/dist/plugins/salesmate/src/index.js +75 -16
  156. package/dist/plugins/securityScorecard/src/index.js +73 -15
  157. package/dist/plugins/segment/src/index.js +21 -4
  158. package/dist/plugins/sendgrid/src/index.js +102 -24
  159. package/dist/plugins/sendy/src/index.js +54 -11
  160. package/dist/plugins/sentry/src/index.js +174 -34
  161. package/dist/plugins/servicenow/src/index.js +120 -27
  162. package/dist/plugins/shopify/src/index.js +53 -12
  163. package/dist/plugins/signl4/src/index.js +16 -3
  164. package/dist/plugins/slack/src/index.js +407 -105
  165. package/dist/plugins/sms77/src/index.js +26 -5
  166. package/dist/plugins/splunk/src/index.js +186 -45
  167. package/dist/plugins/spotify/src/index.js +265 -66
  168. package/dist/plugins/stackby/src/index.js +18 -6
  169. package/dist/plugins/storyblok/src/index.js +57 -11
  170. package/dist/plugins/strapi/src/index.js +63 -12
  171. package/dist/plugins/strava/src/index.js +58 -13
  172. package/dist/plugins/stripe/src/index.js +143 -30
  173. package/dist/plugins/supabase/src/index.js +49 -10
  174. package/dist/plugins/syncromsp/src/index.js +245 -67
  175. package/dist/plugins/tapfiliate/src/index.js +57 -14
  176. package/dist/plugins/telegram/src/index.js +202 -39
  177. package/dist/plugins/thehive/src/index.js +271 -66
  178. package/dist/plugins/thehiveProject/src/index.js +457 -89
  179. package/dist/plugins/todoist/src/index.js +326 -77
  180. package/dist/plugins/travisci/src/index.js +35 -8
  181. package/dist/plugins/trello/src/index.js +204 -46
  182. package/dist/plugins/twake/src/index.js +10 -2
  183. package/dist/plugins/twilio/src/index.js +56 -11
  184. package/dist/plugins/twist/src/index.js +241 -48
  185. package/dist/plugins/twitter/src/index.js +128 -30
  186. package/dist/plugins/unleashedSoftware/src/index.js +30 -6
  187. package/dist/plugins/uplead/src/index.js +9 -2
  188. package/dist/plugins/uproc/src/index.js +31 -6
  189. package/dist/plugins/uptimerobot/src/index.js +119 -25
  190. package/dist/plugins/urlscanio/src/index.js +25 -6
  191. package/dist/plugins/vero/src/index.js +68 -13
  192. package/dist/plugins/vonage/src/index.js +32 -6
  193. package/dist/plugins/wekan/src/index.js +297 -52
  194. package/dist/plugins/woocommerce/src/index.js +57 -12
  195. package/dist/plugins/wordpress/src/index.js +94 -18
  196. package/dist/plugins/xero/src/index.js +79 -13
  197. package/dist/plugins/yourls/src/index.js +33 -6
  198. package/dist/plugins/zammad/src/index.js +139 -36
  199. package/dist/plugins/zendesk/src/index.js +201 -48
  200. package/dist/plugins/zoho/src/index.js +88 -21
  201. package/dist/plugins/zoom/src/index.js +41 -7
  202. package/dist/plugins/zulip/src/index.js +101 -20
  203. package/package.json +3 -1
@@ -41,15 +41,35 @@ export default function gong(rl) {
41
41
  rl.setName("gong");
42
42
  rl.setVersion("0.1.0");
43
43
  rl.setConnectionSchema({
44
- baseUrl: { type: "string", required: false, description: "Gong API base URL (default: https://api.gong.io)", env: "GONG_BASE_URL", default: "https://api.gong.io" },
45
- accessKey: { type: "string", required: true, description: "Gong API access key", env: "GONG_ACCESS_KEY" },
46
- accessKeySecret: { type: "string", required: true, description: "Gong API access key secret", env: "GONG_ACCESS_KEY_SECRET" },
44
+ baseUrl: {
45
+ type: "string",
46
+ required: false,
47
+ description: "Gong API base URL (default: https://api.gong.io)",
48
+ env: "GONG_BASE_URL",
49
+ default: "https://api.gong.io",
50
+ },
51
+ accessKey: {
52
+ type: "string",
53
+ required: true,
54
+ description: "Gong API access key",
55
+ env: "GONG_ACCESS_KEY",
56
+ },
57
+ accessKeySecret: {
58
+ type: "string",
59
+ required: true,
60
+ description: "Gong API access key secret",
61
+ env: "GONG_ACCESS_KEY_SECRET",
62
+ },
47
63
  });
48
64
  rl.registerAction("call.get", {
49
65
  description: "Get detailed call data",
50
66
  inputSchema: {
51
67
  callId: { type: "string", required: true, description: "Call ID" },
52
- contentSelector: { type: "object", required: false, description: "Content selector for what data to include (exposedFields object)" },
68
+ contentSelector: {
69
+ type: "object",
70
+ required: false,
71
+ description: "Content selector for what data to include (exposedFields object)",
72
+ },
53
73
  },
54
74
  async execute(input, ctx) {
55
75
  const { callId, contentSelector } = input;
@@ -66,14 +86,34 @@ export default function gong(rl) {
66
86
  description: "List calls",
67
87
  inputSchema: {
68
88
  limit: { type: "number", required: false, description: "Max results" },
69
- fromDateTime: { type: "string", required: false, description: "Calls started after (ISO 8601)" },
70
- toDateTime: { type: "string", required: false, description: "Calls started before (ISO 8601)" },
71
- workspaceId: { type: "string", required: false, description: "Filter by workspace" },
72
- callIds: { type: "array", required: false, description: "Specific call IDs" },
73
- primaryUserIds: { type: "array", required: false, description: "Filter by organizer user IDs" },
89
+ fromDateTime: {
90
+ type: "string",
91
+ required: false,
92
+ description: "Calls started after (ISO 8601)",
93
+ },
94
+ toDateTime: {
95
+ type: "string",
96
+ required: false,
97
+ description: "Calls started before (ISO 8601)",
98
+ },
99
+ workspaceId: {
100
+ type: "string",
101
+ required: false,
102
+ description: "Filter by workspace",
103
+ },
104
+ callIds: {
105
+ type: "array",
106
+ required: false,
107
+ description: "Specific call IDs",
108
+ },
109
+ primaryUserIds: {
110
+ type: "array",
111
+ required: false,
112
+ description: "Filter by organizer user IDs",
113
+ },
74
114
  },
75
115
  async execute(input, ctx) {
76
- const { limit, fromDateTime, toDateTime, workspaceId, callIds, primaryUserIds } = (input ?? {});
116
+ const { limit, fromDateTime, toDateTime, workspaceId, callIds, primaryUserIds, } = (input ?? {});
77
117
  const { baseUrl, accessKey, accessKeySecret } = getConn(ctx);
78
118
  const filter = {};
79
119
  if (fromDateTime)
@@ -91,7 +131,9 @@ export default function gong(rl) {
91
131
  });
92
132
  rl.registerAction("user.get", {
93
133
  description: "Get a user",
94
- inputSchema: { userId: { type: "string", required: true, description: "User ID" } },
134
+ inputSchema: {
135
+ userId: { type: "string", required: true, description: "User ID" },
136
+ },
95
137
  async execute(input, ctx) {
96
138
  const { userId } = input;
97
139
  const { baseUrl, accessKey, accessKeySecret } = getConn(ctx);
@@ -106,9 +148,21 @@ export default function gong(rl) {
106
148
  description: "List users",
107
149
  inputSchema: {
108
150
  limit: { type: "number", required: false, description: "Max results" },
109
- createdFromDateTime: { type: "string", required: false, description: "Users created after (ISO 8601)" },
110
- createdToDateTime: { type: "string", required: false, description: "Users created before (ISO 8601)" },
111
- userIds: { type: "array", required: false, description: "Specific user IDs" },
151
+ createdFromDateTime: {
152
+ type: "string",
153
+ required: false,
154
+ description: "Users created after (ISO 8601)",
155
+ },
156
+ createdToDateTime: {
157
+ type: "string",
158
+ required: false,
159
+ description: "Users created before (ISO 8601)",
160
+ },
161
+ userIds: {
162
+ type: "array",
163
+ required: false,
164
+ description: "Specific user IDs",
165
+ },
112
166
  },
113
167
  async execute(input, ctx) {
114
168
  const { limit, createdFromDateTime, createdToDateTime, userIds } = (input ?? {});
@@ -8,9 +8,16 @@ async function apiRequest(url, token, method, endpoint, body, qs) {
8
8
  }
9
9
  const opts = {
10
10
  method,
11
- headers: { "X-Gotify-Key": token, Accept: "application/json", "Content-Type": "application/json" },
11
+ headers: {
12
+ "X-Gotify-Key": token,
13
+ Accept: "application/json",
14
+ "Content-Type": "application/json",
15
+ },
12
16
  };
13
- if (body && Object.keys(body).length > 0 && method !== "GET" && method !== "DELETE") {
17
+ if (body &&
18
+ Object.keys(body).length > 0 &&
19
+ method !== "GET" &&
20
+ method !== "DELETE") {
14
21
  opts.body = JSON.stringify(body);
15
22
  }
16
23
  const res = await fetch(fullUrl.toString(), opts);
@@ -24,17 +31,40 @@ export default function gotify(rl) {
24
31
  rl.setName("gotify");
25
32
  rl.setVersion("0.1.0");
26
33
  rl.setConnectionSchema({
27
- url: { type: "string", required: true, description: "Gotify server URL (e.g. https://gotify.example.com)", env: "GOTIFY_URL" },
28
- appApiToken: { type: "string", required: true, description: "Application token (for sending messages)", env: "GOTIFY_APP_TOKEN" },
29
- clientApiToken: { type: "string", required: true, description: "Client token (for reading/deleting)", env: "GOTIFY_CLIENT_TOKEN" },
34
+ url: {
35
+ type: "string",
36
+ required: true,
37
+ description: "Gotify server URL (e.g. https://gotify.example.com)",
38
+ env: "GOTIFY_URL",
39
+ },
40
+ appApiToken: {
41
+ type: "string",
42
+ required: true,
43
+ description: "Application token (for sending messages)",
44
+ env: "GOTIFY_APP_TOKEN",
45
+ },
46
+ clientApiToken: {
47
+ type: "string",
48
+ required: true,
49
+ description: "Client token (for reading/deleting)",
50
+ env: "GOTIFY_CLIENT_TOKEN",
51
+ },
30
52
  });
31
53
  rl.registerAction("message.create", {
32
54
  description: "Send a push message",
33
55
  inputSchema: {
34
56
  message: { type: "string", required: true, description: "Message text" },
35
57
  title: { type: "string", required: false, description: "Message title" },
36
- priority: { type: "number", required: false, description: "Priority (default: 1)" },
37
- contentType: { type: "string", required: false, description: "text/plain (default) or text/markdown" },
58
+ priority: {
59
+ type: "number",
60
+ required: false,
61
+ description: "Priority (default: 1)",
62
+ },
63
+ contentType: {
64
+ type: "string",
65
+ required: false,
66
+ description: "text/plain (default) or text/markdown",
67
+ },
38
68
  },
39
69
  async execute(input, ctx) {
40
70
  const { message, title, priority, contentType } = input;
@@ -52,7 +82,9 @@ export default function gotify(rl) {
52
82
  });
53
83
  rl.registerAction("message.delete", {
54
84
  description: "Delete a message",
55
- inputSchema: { messageId: { type: "string", required: true, description: "Message ID" } },
85
+ inputSchema: {
86
+ messageId: { type: "string", required: true, description: "Message ID" },
87
+ },
56
88
  async execute(input, ctx) {
57
89
  const url = ctx.connection.config.url.replace(/\/$/, "");
58
90
  const token = ctx.connection.config.clientApiToken;
@@ -62,7 +94,9 @@ export default function gotify(rl) {
62
94
  });
63
95
  rl.registerAction("message.list", {
64
96
  description: "List messages",
65
- inputSchema: { limit: { type: "number", required: false, description: "Max results" } },
97
+ inputSchema: {
98
+ limit: { type: "number", required: false, description: "Max results" },
99
+ },
66
100
  async execute(input, ctx) {
67
101
  const { limit } = (input ?? {});
68
102
  const url = ctx.connection.config.url.replace(/\/$/, "");
@@ -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;