runline 0.2.0 → 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 (190) hide show
  1. package/README.md +1 -1
  2. package/dist/plugins/actionNetwork/src/index.js +118 -25
  3. package/dist/plugins/activeCampaign/src/index.js +184 -38
  4. package/dist/plugins/adalo/src/index.js +40 -8
  5. package/dist/plugins/affinity/src/index.js +100 -20
  6. package/dist/plugins/agileCrm/src/index.js +115 -27
  7. package/dist/plugins/airtable/src/index.js +94 -19
  8. package/dist/plugins/airtop/src/index.js +266 -62
  9. package/dist/plugins/apiTemplateIo/src/index.js +25 -5
  10. package/dist/plugins/asana/src/index.js +195 -41
  11. package/dist/plugins/autopilot/src/index.js +39 -8
  12. package/dist/plugins/bambooHr/src/index.js +109 -22
  13. package/dist/plugins/bannerbear/src/index.js +36 -8
  14. package/dist/plugins/baserow/src/index.js +35 -7
  15. package/dist/plugins/beeminder/src/index.js +198 -40
  16. package/dist/plugins/bitly/src/index.js +46 -10
  17. package/dist/plugins/bitwarden/src/index.js +167 -36
  18. package/dist/plugins/box/src/index.js +172 -37
  19. package/dist/plugins/brandfetch/src/index.js +5 -1
  20. package/dist/plugins/brevo/src/index.js +136 -29
  21. package/dist/plugins/bubble/src/index.js +76 -17
  22. package/dist/plugins/chargebee/src/index.js +35 -7
  23. package/dist/plugins/circleci/src/index.js +50 -10
  24. package/dist/plugins/ciscoWebex/src/index.js +131 -27
  25. package/dist/plugins/clearbit/src/index.js +76 -17
  26. package/dist/plugins/clickup/src/index.js +500 -107
  27. package/dist/plugins/clockify/src/index.js +229 -47
  28. package/dist/plugins/cloudflare/src/index.js +28 -6
  29. package/dist/plugins/cockpit/src/index.js +54 -12
  30. package/dist/plugins/coda/src/index.js +81 -19
  31. package/dist/plugins/coingecko/src/index.js +157 -33
  32. package/dist/plugins/contentful/src/index.js +85 -17
  33. package/dist/plugins/convertkit/src/index.js +74 -18
  34. package/dist/plugins/copper/src/index.js +59 -11
  35. package/dist/plugins/cortex/src/index.js +55 -13
  36. package/dist/plugins/currents/src/index.js +310 -71
  37. package/dist/plugins/customerIo/src/index.js +112 -23
  38. package/dist/plugins/databricks/src/index.js +549 -115
  39. package/dist/plugins/deepl/src/index.js +26 -6
  40. package/dist/plugins/demio/src/index.js +56 -11
  41. package/dist/plugins/dhl/src/index.js +16 -3
  42. package/dist/plugins/discord/src/index.js +141 -31
  43. package/dist/plugins/discourse/src/index.js +136 -31
  44. package/dist/plugins/disqus/src/index.js +96 -20
  45. package/dist/plugins/docker/src/index.js +20 -4
  46. package/dist/plugins/drift/src/index.js +19 -5
  47. package/dist/plugins/dropbox/src/index.js +139 -30
  48. package/dist/plugins/dropcontact/src/index.js +21 -4
  49. package/dist/plugins/egoi/src/index.js +61 -15
  50. package/dist/plugins/elasticsearch/src/index.js +59 -13
  51. package/dist/plugins/emelia/src/index.js +95 -19
  52. package/dist/plugins/erpnext/src/index.js +74 -15
  53. package/dist/plugins/facebookGraph/src/index.js +52 -11
  54. package/dist/plugins/freshdesk/src/index.js +220 -48
  55. package/dist/plugins/freshservice/src/index.js +39 -9
  56. package/dist/plugins/freshworksCrm/src/index.js +58 -12
  57. package/dist/plugins/getresponse/src/index.js +87 -18
  58. package/dist/plugins/ghost/src/index.js +114 -26
  59. package/dist/plugins/github/src/index.js +483 -109
  60. package/dist/plugins/gitlab/src/index.js +193 -45
  61. package/dist/plugins/gong/src/index.js +68 -14
  62. package/dist/plugins/gotify/src/index.js +43 -9
  63. package/dist/plugins/gotowebinar/src/index.js +233 -47
  64. package/dist/plugins/grafana/src/index.js +92 -21
  65. package/dist/plugins/graphql/src/index.js +38 -8
  66. package/dist/plugins/grist/src/index.js +52 -10
  67. package/dist/plugins/hackernews/src/index.js +32 -6
  68. package/dist/plugins/halopsa/src/index.js +131 -26
  69. package/dist/plugins/harvest/src/index.js +182 -42
  70. package/dist/plugins/helpscout/src/index.js +153 -31
  71. package/dist/plugins/highlevel/src/index.js +291 -58
  72. package/dist/plugins/homeAssistant/src/index.js +124 -26
  73. package/dist/plugins/hubspot/src/index.js +163 -29
  74. package/dist/plugins/humanticAi/src/index.js +54 -5
  75. package/dist/plugins/hunter/src/index.js +21 -4
  76. package/dist/plugins/intercom/src/index.js +95 -20
  77. package/dist/plugins/iterable/src/index.js +96 -20
  78. package/dist/plugins/jenkins/src/index.js +75 -17
  79. package/dist/plugins/jira/src/index.js +193 -43
  80. package/dist/plugins/keap/src/index.js +222 -56
  81. package/dist/plugins/kobotoolbox/src/index.js +113 -25
  82. package/dist/plugins/lemlist/src/index.js +79 -18
  83. package/dist/plugins/linear/src/index.js +86 -19
  84. package/dist/plugins/lingvanex/src/index.js +38 -8
  85. package/dist/plugins/linkedin/src/index.js +37 -8
  86. package/dist/plugins/lonescale/src/index.js +41 -9
  87. package/dist/plugins/magento/src/index.js +98 -27
  88. package/dist/plugins/mailcheck/src/index.js +11 -2
  89. package/dist/plugins/mailchimp/src/index.js +193 -42
  90. package/dist/plugins/mailerlite/src/index.js +61 -12
  91. package/dist/plugins/mailgun/src/index.js +39 -7
  92. package/dist/plugins/mailjet/src/index.js +141 -30
  93. package/dist/plugins/mandrill/src/index.js +67 -14
  94. package/dist/plugins/marketstack/src/index.js +56 -10
  95. package/dist/plugins/matrix/src/index.js +97 -20
  96. package/dist/plugins/mattermost/src/index.js +124 -26
  97. package/dist/plugins/mautic/src/index.js +129 -26
  98. package/dist/plugins/medium/src/index.js +64 -13
  99. package/dist/plugins/messagebird/src/index.js +80 -15
  100. package/dist/plugins/metabase/src/index.js +57 -12
  101. package/dist/plugins/misp/src/index.js +135 -33
  102. package/dist/plugins/mocean/src/index.js +33 -7
  103. package/dist/plugins/monday/src/index.js +97 -23
  104. package/dist/plugins/monicaCrm/src/index.js +112 -23
  105. package/dist/plugins/msg91/src/index.js +11 -2
  106. package/dist/plugins/nasa/src/index.js +108 -21
  107. package/dist/plugins/netlify/src/index.js +28 -6
  108. package/dist/plugins/netscalerAdc/src/index.js +144 -29
  109. package/dist/plugins/nextcloud/src/index.js +103 -20
  110. package/dist/plugins/nocodb/src/index.js +57 -11
  111. package/dist/plugins/notion/src/index.js +148 -37
  112. package/dist/plugins/npm/src/index.js +59 -12
  113. package/dist/plugins/odoo/src/index.js +102 -20
  114. package/dist/plugins/okta/src/index.js +50 -10
  115. package/dist/plugins/oneSimpleApi/src/index.js +84 -17
  116. package/dist/plugins/onfleet/src/index.js +139 -32
  117. package/dist/plugins/openThesaurus/src/index.js +46 -9
  118. package/dist/plugins/openweathermap/src/index.js +31 -6
  119. package/dist/plugins/oura/src/index.js +36 -7
  120. package/dist/plugins/paddle/src/index.js +80 -17
  121. package/dist/plugins/pagerduty/src/index.js +53 -12
  122. package/dist/plugins/paypal/src/index.js +51 -11
  123. package/dist/plugins/peekalink/src/index.js +12 -3
  124. package/dist/plugins/phantombuster/src/index.js +39 -8
  125. package/dist/plugins/philipsHue/src/index.js +64 -13
  126. package/dist/plugins/pipedrive/src/index.js +167 -45
  127. package/dist/plugins/plivo/src/index.js +43 -8
  128. package/dist/plugins/postbin/src/index.js +9 -2
  129. package/dist/plugins/posthog/src/index.js +50 -13
  130. package/dist/plugins/profitwell/src/index.js +24 -5
  131. package/dist/plugins/pushbullet/src/index.js +45 -9
  132. package/dist/plugins/pushcut/src/index.js +31 -6
  133. package/dist/plugins/pushover/src/index.js +51 -10
  134. package/dist/plugins/quickbase/src/index.js +66 -13
  135. package/dist/plugins/quickbooks/src/index.js +86 -19
  136. package/dist/plugins/quickchart/src/index.js +35 -7
  137. package/dist/plugins/raindrop/src/index.js +54 -13
  138. package/dist/plugins/reddit/src/index.js +73 -18
  139. package/dist/plugins/rocketchat/src/index.js +47 -9
  140. package/dist/plugins/rundeck/src/index.js +26 -5
  141. package/dist/plugins/salesforce/src/index.js +161 -31
  142. package/dist/plugins/salesmate/src/index.js +75 -16
  143. package/dist/plugins/securityScorecard/src/index.js +73 -15
  144. package/dist/plugins/segment/src/index.js +21 -4
  145. package/dist/plugins/sendgrid/src/index.js +102 -24
  146. package/dist/plugins/sendy/src/index.js +54 -11
  147. package/dist/plugins/sentry/src/index.js +174 -34
  148. package/dist/plugins/servicenow/src/index.js +120 -27
  149. package/dist/plugins/shopify/src/index.js +53 -12
  150. package/dist/plugins/signl4/src/index.js +16 -3
  151. package/dist/plugins/slack/src/index.js +407 -105
  152. package/dist/plugins/sms77/src/index.js +26 -5
  153. package/dist/plugins/splunk/src/index.js +186 -45
  154. package/dist/plugins/spotify/src/index.js +265 -66
  155. package/dist/plugins/stackby/src/index.js +18 -6
  156. package/dist/plugins/storyblok/src/index.js +57 -11
  157. package/dist/plugins/strapi/src/index.js +63 -12
  158. package/dist/plugins/strava/src/index.js +58 -13
  159. package/dist/plugins/stripe/src/index.js +143 -30
  160. package/dist/plugins/supabase/src/index.js +49 -10
  161. package/dist/plugins/syncromsp/src/index.js +245 -67
  162. package/dist/plugins/tapfiliate/src/index.js +57 -14
  163. package/dist/plugins/telegram/src/index.js +202 -39
  164. package/dist/plugins/thehive/src/index.js +271 -66
  165. package/dist/plugins/thehiveProject/src/index.js +457 -89
  166. package/dist/plugins/todoist/src/index.js +326 -77
  167. package/dist/plugins/travisci/src/index.js +35 -8
  168. package/dist/plugins/trello/src/index.js +204 -46
  169. package/dist/plugins/twake/src/index.js +10 -2
  170. package/dist/plugins/twilio/src/index.js +56 -11
  171. package/dist/plugins/twist/src/index.js +241 -48
  172. package/dist/plugins/twitter/src/index.js +128 -30
  173. package/dist/plugins/unleashedSoftware/src/index.js +30 -6
  174. package/dist/plugins/uplead/src/index.js +9 -2
  175. package/dist/plugins/uproc/src/index.js +31 -6
  176. package/dist/plugins/uptimerobot/src/index.js +119 -25
  177. package/dist/plugins/urlscanio/src/index.js +25 -6
  178. package/dist/plugins/vero/src/index.js +68 -13
  179. package/dist/plugins/vonage/src/index.js +32 -6
  180. package/dist/plugins/wekan/src/index.js +297 -52
  181. package/dist/plugins/woocommerce/src/index.js +57 -12
  182. package/dist/plugins/wordpress/src/index.js +94 -18
  183. package/dist/plugins/xero/src/index.js +79 -13
  184. package/dist/plugins/yourls/src/index.js +33 -6
  185. package/dist/plugins/zammad/src/index.js +139 -36
  186. package/dist/plugins/zendesk/src/index.js +201 -48
  187. package/dist/plugins/zoho/src/index.js +88 -21
  188. package/dist/plugins/zoom/src/index.js +41 -7
  189. package/dist/plugins/zulip/src/index.js +101 -20
  190. package/package.json +1 -1
@@ -18,18 +18,39 @@ export default function sms77(rl) {
18
18
  rl.setName("sms77");
19
19
  rl.setVersion("0.1.0");
20
20
  rl.setConnectionSchema({
21
- apiKey: { type: "string", required: true, description: "seven (sms77) API key", env: "SMS77_API_KEY" },
21
+ apiKey: {
22
+ type: "string",
23
+ required: true,
24
+ description: "seven (sms77) API key",
25
+ env: "SMS77_API_KEY",
26
+ },
22
27
  });
23
28
  const key = (ctx) => ctx.connection.config.apiKey;
24
29
  rl.registerAction("sms.send", {
25
30
  description: "Send an SMS via seven",
26
31
  inputSchema: {
27
- to: { type: "string", required: true, description: "Recipient number(s), comma-separated" },
28
- message: { type: "string", required: true, description: "Message text (max 1520 chars)" },
32
+ to: {
33
+ type: "string",
34
+ required: true,
35
+ description: "Recipient number(s), comma-separated",
36
+ },
37
+ message: {
38
+ type: "string",
39
+ required: true,
40
+ description: "Message text (max 1520 chars)",
41
+ },
29
42
  from: { type: "string", required: false, description: "Sender ID" },
30
43
  flash: { type: "boolean", required: false },
31
- delay: { type: "string", required: false, description: "Scheduled send time" },
32
- ttl: { type: "number", required: false, description: "Time to live in minutes" },
44
+ delay: {
45
+ type: "string",
46
+ required: false,
47
+ description: "Scheduled send time",
48
+ },
49
+ ttl: {
50
+ type: "number",
51
+ required: false,
52
+ description: "Time to live in minutes",
53
+ },
33
54
  },
34
55
  async execute(input, ctx) {
35
56
  const p = input;
@@ -56,12 +56,34 @@ export default function splunk(rl) {
56
56
  rl.setName("splunk");
57
57
  rl.setVersion("0.1.0");
58
58
  rl.setConnectionSchema({
59
- baseUrl: { type: "string", required: true, description: "Splunk instance URL, e.g. https://localhost:8089", env: "SPLUNK_BASE_URL" },
60
- authToken: { type: "string", required: true, description: "Splunk auth token", env: "SPLUNK_AUTH_TOKEN" },
59
+ baseUrl: {
60
+ type: "string",
61
+ required: true,
62
+ description: "Splunk instance URL, e.g. https://localhost:8089",
63
+ env: "SPLUNK_BASE_URL",
64
+ },
65
+ authToken: {
66
+ type: "string",
67
+ required: true,
68
+ description: "Splunk auth token",
69
+ env: "SPLUNK_AUTH_TOKEN",
70
+ },
61
71
  });
62
72
  // ── Search Jobs ─────────────────────────────────────
63
- rl.registerAction("search.create", { description: "Create a search job",
64
- inputSchema: { search: { type: "string", required: true, description: "SPL query" }, execMode: { type: "string", required: false, description: "blocking, normal, or oneshot" }, earliestTime: { type: "string", required: false }, latestTime: { type: "string", required: false }, maxTime: { type: "number", required: false }, namespace: { type: "string", required: false } },
73
+ rl.registerAction("search.create", {
74
+ description: "Create a search job",
75
+ inputSchema: {
76
+ search: { type: "string", required: true, description: "SPL query" },
77
+ execMode: {
78
+ type: "string",
79
+ required: false,
80
+ description: "blocking, normal, or oneshot",
81
+ },
82
+ earliestTime: { type: "string", required: false },
83
+ latestTime: { type: "string", required: false },
84
+ maxTime: { type: "number", required: false },
85
+ namespace: { type: "string", required: false },
86
+ },
65
87
  async execute(input, ctx) {
66
88
  const { baseUrl, authToken } = getConn(ctx);
67
89
  const p = input;
@@ -77,17 +99,28 @@ export default function splunk(rl) {
77
99
  if (p.namespace)
78
100
  body.namespace = p.namespace;
79
101
  // Create returns XML with sid, then we fetch JSON
80
- const createRes = await api(baseUrl, authToken, "POST", "/services/search/jobs", body);
102
+ const createRes = (await api(baseUrl, authToken, "POST", "/services/search/jobs", body));
81
103
  const sid = createRes.sid;
82
104
  if (sid)
83
105
  return api(baseUrl, authToken, "GET", `/services/search/jobs/${sid}`);
84
106
  return createRes;
85
- } });
86
- rl.registerAction("search.get", { description: "Get a search job by ID",
107
+ },
108
+ });
109
+ rl.registerAction("search.get", {
110
+ description: "Get a search job by ID",
87
111
  inputSchema: { searchJobId: { type: "string", required: true } },
88
- async execute(input, ctx) { const { baseUrl, authToken } = getConn(ctx); return api(baseUrl, authToken, "GET", `/services/search/jobs/${input.searchJobId}`); } });
89
- rl.registerAction("search.list", { description: "List search jobs",
90
- inputSchema: { limit: { type: "number", required: false }, sortKey: { type: "string", required: false }, sortDir: { type: "string", required: false, description: "asc or desc" } },
112
+ async execute(input, ctx) {
113
+ const { baseUrl, authToken } = getConn(ctx);
114
+ return api(baseUrl, authToken, "GET", `/services/search/jobs/${input.searchJobId}`);
115
+ },
116
+ });
117
+ rl.registerAction("search.list", {
118
+ description: "List search jobs",
119
+ inputSchema: {
120
+ limit: { type: "number", required: false },
121
+ sortKey: { type: "string", required: false },
122
+ sortDir: { type: "string", required: false, description: "asc or desc" },
123
+ },
91
124
  async execute(input, ctx) {
92
125
  const { baseUrl, authToken } = getConn(ctx);
93
126
  const p = (input ?? {});
@@ -101,12 +134,33 @@ export default function splunk(rl) {
101
134
  if (p.sortDir)
102
135
  qs.sort_dir = p.sortDir;
103
136
  return api(baseUrl, authToken, "GET", "/services/search/jobs", undefined, qs);
104
- } });
105
- rl.registerAction("search.delete", { description: "Delete a search job",
137
+ },
138
+ });
139
+ rl.registerAction("search.delete", {
140
+ description: "Delete a search job",
106
141
  inputSchema: { searchJobId: { type: "string", required: true } },
107
- async execute(input, ctx) { const { baseUrl, authToken } = getConn(ctx); await api(baseUrl, authToken, "DELETE", `/services/search/jobs/${input.searchJobId}`); return { success: true }; } });
108
- rl.registerAction("search.getResults", { description: "Get results of a search job",
109
- inputSchema: { searchJobId: { type: "string", required: true }, limit: { type: "number", required: false }, filterKey: { type: "string", required: false, description: "Filter field name" }, filterValue: { type: "string", required: false, description: "Filter field value" } },
142
+ async execute(input, ctx) {
143
+ const { baseUrl, authToken } = getConn(ctx);
144
+ await api(baseUrl, authToken, "DELETE", `/services/search/jobs/${input.searchJobId}`);
145
+ return { success: true };
146
+ },
147
+ });
148
+ rl.registerAction("search.getResults", {
149
+ description: "Get results of a search job",
150
+ inputSchema: {
151
+ searchJobId: { type: "string", required: true },
152
+ limit: { type: "number", required: false },
153
+ filterKey: {
154
+ type: "string",
155
+ required: false,
156
+ description: "Filter field name",
157
+ },
158
+ filterValue: {
159
+ type: "string",
160
+ required: false,
161
+ description: "Filter field value",
162
+ },
163
+ },
110
164
  async execute(input, ctx) {
111
165
  const { baseUrl, authToken } = getConn(ctx);
112
166
  const p = input;
@@ -118,19 +172,47 @@ export default function splunk(rl) {
118
172
  if (p.filterKey && p.filterValue)
119
173
  qs.search = `search ${p.filterKey}=${p.filterValue}`;
120
174
  return api(baseUrl, authToken, "GET", `/services/search/jobs/${p.searchJobId}/results`, undefined, qs);
121
- } });
175
+ },
176
+ });
122
177
  // ── Alerts ──────────────────────────────────────────
123
- rl.registerAction("alert.getMetrics", { description: "Get metric alerts", inputSchema: {},
124
- async execute(_input, ctx) { const { baseUrl, authToken } = getConn(ctx); return api(baseUrl, authToken, "GET", "/services/alerts/metric_alerts"); } });
125
- rl.registerAction("alert.getFired", { description: "Get fired alerts report", inputSchema: {},
126
- async execute(_input, ctx) { const { baseUrl, authToken } = getConn(ctx); return api(baseUrl, authToken, "GET", "/services/alerts/fired_alerts"); } });
178
+ rl.registerAction("alert.getMetrics", {
179
+ description: "Get metric alerts",
180
+ inputSchema: {},
181
+ async execute(_input, ctx) {
182
+ const { baseUrl, authToken } = getConn(ctx);
183
+ return api(baseUrl, authToken, "GET", "/services/alerts/metric_alerts");
184
+ },
185
+ });
186
+ rl.registerAction("alert.getFired", {
187
+ description: "Get fired alerts report",
188
+ inputSchema: {},
189
+ async execute(_input, ctx) {
190
+ const { baseUrl, authToken } = getConn(ctx);
191
+ return api(baseUrl, authToken, "GET", "/services/alerts/fired_alerts");
192
+ },
193
+ });
127
194
  // ── Reports (Saved Searches) ────────────────────────
128
- rl.registerAction("report.create", { description: "Create a saved search / report from a search job",
129
- inputSchema: { name: { type: "string", required: true }, search: { type: "string", required: true, description: "SPL query for the report" }, cronSchedule: { type: "string", required: false }, earliestTime: { type: "string", required: false }, latestTime: { type: "string", required: false } },
195
+ rl.registerAction("report.create", {
196
+ description: "Create a saved search / report from a search job",
197
+ inputSchema: {
198
+ name: { type: "string", required: true },
199
+ search: {
200
+ type: "string",
201
+ required: true,
202
+ description: "SPL query for the report",
203
+ },
204
+ cronSchedule: { type: "string", required: false },
205
+ earliestTime: { type: "string", required: false },
206
+ latestTime: { type: "string", required: false },
207
+ },
130
208
  async execute(input, ctx) {
131
209
  const { baseUrl, authToken } = getConn(ctx);
132
210
  const p = input;
133
- const body = { name: p.name, search: p.search, alert_type: "always" };
211
+ const body = {
212
+ name: p.name,
213
+ search: p.search,
214
+ alert_type: "always",
215
+ };
134
216
  if (p.cronSchedule)
135
217
  body.cron_schedule = p.cronSchedule;
136
218
  if (p.earliestTime)
@@ -138,11 +220,18 @@ export default function splunk(rl) {
138
220
  if (p.latestTime)
139
221
  body["dispatch.latest_time"] = p.latestTime;
140
222
  return api(baseUrl, authToken, "POST", "/services/saved/searches", body);
141
- } });
142
- rl.registerAction("report.get", { description: "Get a saved search / report",
223
+ },
224
+ });
225
+ rl.registerAction("report.get", {
226
+ description: "Get a saved search / report",
143
227
  inputSchema: { reportId: { type: "string", required: true } },
144
- async execute(input, ctx) { const { baseUrl, authToken } = getConn(ctx); return api(baseUrl, authToken, "GET", `/services/saved/searches/${input.reportId}`); } });
145
- rl.registerAction("report.list", { description: "List saved searches / reports",
228
+ async execute(input, ctx) {
229
+ const { baseUrl, authToken } = getConn(ctx);
230
+ return api(baseUrl, authToken, "GET", `/services/saved/searches/${input.reportId}`);
231
+ },
232
+ });
233
+ rl.registerAction("report.list", {
234
+ description: "List saved searches / reports",
146
235
  inputSchema: { limit: { type: "number", required: false } },
147
236
  async execute(input, ctx) {
148
237
  const { baseUrl, authToken } = getConn(ctx);
@@ -153,27 +242,58 @@ export default function splunk(rl) {
153
242
  else
154
243
  qs.count = 0;
155
244
  return api(baseUrl, authToken, "GET", "/services/saved/searches", undefined, qs);
156
- } });
157
- rl.registerAction("report.delete", { description: "Delete a saved search / report",
245
+ },
246
+ });
247
+ rl.registerAction("report.delete", {
248
+ description: "Delete a saved search / report",
158
249
  inputSchema: { reportId: { type: "string", required: true } },
159
- async execute(input, ctx) { const { baseUrl, authToken } = getConn(ctx); await api(baseUrl, authToken, "DELETE", `/services/saved/searches/${input.reportId}`); return { success: true }; } });
250
+ async execute(input, ctx) {
251
+ const { baseUrl, authToken } = getConn(ctx);
252
+ await api(baseUrl, authToken, "DELETE", `/services/saved/searches/${input.reportId}`);
253
+ return { success: true };
254
+ },
255
+ });
160
256
  // ── Users ───────────────────────────────────────────
161
- rl.registerAction("user.create", { description: "Create a Splunk user",
162
- inputSchema: { name: { type: "string", required: true, description: "Login name" }, password: { type: "string", required: true }, roles: { type: "object", required: true, description: "Array of role names" }, email: { type: "string", required: false }, realname: { type: "string", required: false, description: "Full name" } },
257
+ rl.registerAction("user.create", {
258
+ description: "Create a Splunk user",
259
+ inputSchema: {
260
+ name: { type: "string", required: true, description: "Login name" },
261
+ password: { type: "string", required: true },
262
+ roles: {
263
+ type: "object",
264
+ required: true,
265
+ description: "Array of role names",
266
+ },
267
+ email: { type: "string", required: false },
268
+ realname: { type: "string", required: false, description: "Full name" },
269
+ },
163
270
  async execute(input, ctx) {
164
271
  const { baseUrl, authToken } = getConn(ctx);
165
272
  const p = input;
166
- const body = { name: p.name, password: p.password, roles: p.roles };
273
+ const body = {
274
+ name: p.name,
275
+ password: p.password,
276
+ roles: p.roles,
277
+ };
167
278
  if (p.email)
168
279
  body.email = p.email;
169
280
  if (p.realname)
170
281
  body.realname = p.realname;
171
282
  return api(baseUrl, authToken, "POST", "/services/authentication/users", body);
172
- } });
173
- rl.registerAction("user.get", { description: "Get a user",
174
- inputSchema: { userId: { type: "string", required: true, description: "Username" } },
175
- async execute(input, ctx) { const { baseUrl, authToken } = getConn(ctx); return api(baseUrl, authToken, "GET", `/services/authentication/users/${input.userId}`); } });
176
- rl.registerAction("user.list", { description: "List users",
283
+ },
284
+ });
285
+ rl.registerAction("user.get", {
286
+ description: "Get a user",
287
+ inputSchema: {
288
+ userId: { type: "string", required: true, description: "Username" },
289
+ },
290
+ async execute(input, ctx) {
291
+ const { baseUrl, authToken } = getConn(ctx);
292
+ return api(baseUrl, authToken, "GET", `/services/authentication/users/${input.userId}`);
293
+ },
294
+ });
295
+ rl.registerAction("user.list", {
296
+ description: "List users",
177
297
  inputSchema: { limit: { type: "number", required: false } },
178
298
  async execute(input, ctx) {
179
299
  const { baseUrl, authToken } = getConn(ctx);
@@ -184,9 +304,21 @@ export default function splunk(rl) {
184
304
  else
185
305
  qs.count = 0;
186
306
  return api(baseUrl, authToken, "GET", "/services/authentication/users", undefined, qs);
187
- } });
188
- rl.registerAction("user.update", { description: "Update a user",
189
- inputSchema: { userId: { type: "string", required: true, description: "Username" }, email: { type: "string", required: false }, realname: { type: "string", required: false }, password: { type: "string", required: false }, roles: { type: "object", required: false, description: "Array of role names" } },
307
+ },
308
+ });
309
+ rl.registerAction("user.update", {
310
+ description: "Update a user",
311
+ inputSchema: {
312
+ userId: { type: "string", required: true, description: "Username" },
313
+ email: { type: "string", required: false },
314
+ realname: { type: "string", required: false },
315
+ password: { type: "string", required: false },
316
+ roles: {
317
+ type: "object",
318
+ required: false,
319
+ description: "Array of role names",
320
+ },
321
+ },
190
322
  async execute(input, ctx) {
191
323
  const { baseUrl, authToken } = getConn(ctx);
192
324
  const { userId, ...fields } = input;
@@ -200,8 +332,17 @@ export default function splunk(rl) {
200
332
  if (fields.roles)
201
333
  body.roles = fields.roles;
202
334
  return api(baseUrl, authToken, "POST", `/services/authentication/users/${userId}`, body);
203
- } });
204
- rl.registerAction("user.delete", { description: "Delete a user",
205
- inputSchema: { userId: { type: "string", required: true, description: "Username" } },
206
- async execute(input, ctx) { const { baseUrl, authToken } = getConn(ctx); await api(baseUrl, authToken, "DELETE", `/services/authentication/users/${input.userId}`); return { success: true }; } });
335
+ },
336
+ });
337
+ rl.registerAction("user.delete", {
338
+ description: "Delete a user",
339
+ inputSchema: {
340
+ userId: { type: "string", required: true, description: "Username" },
341
+ },
342
+ async execute(input, ctx) {
343
+ const { baseUrl, authToken } = getConn(ctx);
344
+ await api(baseUrl, authToken, "DELETE", `/services/authentication/users/${input.userId}`);
345
+ return { success: true };
346
+ },
347
+ });
207
348
  }