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
@@ -56,7 +56,12 @@ export default function netlify(rl) {
56
56
  rl.setName("netlify");
57
57
  rl.setVersion("0.1.0");
58
58
  rl.setConnectionSchema({
59
- accessToken: { type: "string", required: true, description: "Netlify personal access token", env: "NETLIFY_ACCESS_TOKEN" },
59
+ accessToken: {
60
+ type: "string",
61
+ required: true,
62
+ description: "Netlify personal access token",
63
+ env: "NETLIFY_ACCESS_TOKEN",
64
+ },
60
65
  });
61
66
  // ── Deploy ──────────────────────────────────────────
62
67
  rl.registerAction("deploy.cancel", {
@@ -73,7 +78,11 @@ export default function netlify(rl) {
73
78
  description: "Create a new deployment for a site",
74
79
  inputSchema: {
75
80
  siteId: { type: "string", required: true, description: "Site ID" },
76
- branch: { type: "string", required: false, description: "Branch to deploy" },
81
+ branch: {
82
+ type: "string",
83
+ required: false,
84
+ description: "Branch to deploy",
85
+ },
77
86
  title: { type: "string", required: false, description: "Deploy title" },
78
87
  },
79
88
  async execute(input, ctx) {
@@ -102,13 +111,19 @@ export default function netlify(rl) {
102
111
  description: "List deployments for a site",
103
112
  inputSchema: {
104
113
  siteId: { type: "string", required: true, description: "Site ID" },
105
- limit: { type: "number", required: false, description: "Max results (default all)" },
114
+ limit: {
115
+ type: "number",
116
+ required: false,
117
+ description: "Max results (default all)",
118
+ },
106
119
  },
107
120
  async execute(input, ctx) {
108
121
  const { siteId, limit } = input;
109
122
  const token = getToken(ctx);
110
123
  if (limit) {
111
- return apiRequest(token, "GET", `/sites/${siteId}/deploys`, undefined, { per_page: limit });
124
+ return apiRequest(token, "GET", `/sites/${siteId}/deploys`, undefined, {
125
+ per_page: limit,
126
+ });
112
127
  }
113
128
  return paginate(token, `/sites/${siteId}/deploys`);
114
129
  },
@@ -137,13 +152,20 @@ export default function netlify(rl) {
137
152
  rl.registerAction("site.list", {
138
153
  description: "List all sites",
139
154
  inputSchema: {
140
- limit: { type: "number", required: false, description: "Max results (default all)" },
155
+ limit: {
156
+ type: "number",
157
+ required: false,
158
+ description: "Max results (default all)",
159
+ },
141
160
  },
142
161
  async execute(input, ctx) {
143
162
  const token = getToken(ctx);
144
163
  const limit = input?.limit;
145
164
  if (limit) {
146
- return apiRequest(token, "GET", "/sites", undefined, { filter: "all", per_page: limit });
165
+ return apiRequest(token, "GET", "/sites", undefined, {
166
+ filter: "all",
167
+ per_page: limit,
168
+ });
147
169
  }
148
170
  return paginate(token, "/sites", { filter: "all" });
149
171
  },
@@ -1,7 +1,11 @@
1
1
  function getConn(ctx) {
2
2
  const c = ctx.connection.config;
3
3
  const url = c.url.replace(/\/$/, "");
4
- return { url, username: c.username, password: c.password };
4
+ return {
5
+ url,
6
+ username: c.username,
7
+ password: c.password,
8
+ };
5
9
  }
6
10
  async function apiRequest(conn, method, resource, body) {
7
11
  const init = {
@@ -24,26 +28,93 @@ export default function netscalerAdc(rl) {
24
28
  rl.setName("netscalerAdc");
25
29
  rl.setVersion("0.1.0");
26
30
  rl.setConnectionSchema({
27
- url: { type: "string", required: true, description: "Netscaler ADC base URL (e.g. https://adc.example.com)", env: "NETSCALER_URL" },
28
- username: { type: "string", required: true, description: "Nitro API username", env: "NETSCALER_USERNAME" },
29
- password: { type: "string", required: true, description: "Nitro API password", env: "NETSCALER_PASSWORD" },
31
+ url: {
32
+ type: "string",
33
+ required: true,
34
+ description: "Netscaler ADC base URL (e.g. https://adc.example.com)",
35
+ env: "NETSCALER_URL",
36
+ },
37
+ username: {
38
+ type: "string",
39
+ required: true,
40
+ description: "Nitro API username",
41
+ env: "NETSCALER_USERNAME",
42
+ },
43
+ password: {
44
+ type: "string",
45
+ required: true,
46
+ description: "Nitro API password",
47
+ env: "NETSCALER_PASSWORD",
48
+ },
30
49
  });
31
50
  rl.registerAction("certificate.create", {
32
51
  description: "Create an SSL certificate on the appliance",
33
52
  inputSchema: {
34
- certificateFileName: { type: "string", required: true, description: "Name (and optional path) for the generated certificate file. Default path: /nsconfig/ssl/" },
35
- certificateFormat: { type: "string", required: true, description: "PEM or DER" },
36
- certificateType: { type: "string", required: true, description: "ROOT_CERT, INTM_CERT, SRVR_CERT, or CLNT_CERT" },
37
- certificateRequestFileName: { type: "string", required: true, description: "Name/path for the CSR file" },
38
- privateKeyFileName: { type: "string", required: false, description: "Private key file name (required for ROOT_CERT)" },
39
- caCertificateFileName: { type: "string", required: false, description: "CA certificate file (required for non-ROOT_CERT)" },
40
- caCertificateFileFormat: { type: "string", required: false, description: "PEM or DER (for CA cert)" },
41
- caPrivateKeyFileName: { type: "string", required: false, description: "CA private key file" },
42
- caPrivateKeyFileFormat: { type: "string", required: false, description: "PEM or DER (for CA key)" },
43
- caSerialFileNumber: { type: "string", required: false, description: "CA serial number file" },
44
- pempassphrase: { type: "string", required: false, description: "PEM passphrase for encrypted key" },
45
- subjectaltname: { type: "string", required: false, description: "Subject Alternative Name (SAN)" },
46
- days: { type: "string", required: false, description: "Validity period in days" },
53
+ certificateFileName: {
54
+ type: "string",
55
+ required: true,
56
+ description: "Name (and optional path) for the generated certificate file. Default path: /nsconfig/ssl/",
57
+ },
58
+ certificateFormat: {
59
+ type: "string",
60
+ required: true,
61
+ description: "PEM or DER",
62
+ },
63
+ certificateType: {
64
+ type: "string",
65
+ required: true,
66
+ description: "ROOT_CERT, INTM_CERT, SRVR_CERT, or CLNT_CERT",
67
+ },
68
+ certificateRequestFileName: {
69
+ type: "string",
70
+ required: true,
71
+ description: "Name/path for the CSR file",
72
+ },
73
+ privateKeyFileName: {
74
+ type: "string",
75
+ required: false,
76
+ description: "Private key file name (required for ROOT_CERT)",
77
+ },
78
+ caCertificateFileName: {
79
+ type: "string",
80
+ required: false,
81
+ description: "CA certificate file (required for non-ROOT_CERT)",
82
+ },
83
+ caCertificateFileFormat: {
84
+ type: "string",
85
+ required: false,
86
+ description: "PEM or DER (for CA cert)",
87
+ },
88
+ caPrivateKeyFileName: {
89
+ type: "string",
90
+ required: false,
91
+ description: "CA private key file",
92
+ },
93
+ caPrivateKeyFileFormat: {
94
+ type: "string",
95
+ required: false,
96
+ description: "PEM or DER (for CA key)",
97
+ },
98
+ caSerialFileNumber: {
99
+ type: "string",
100
+ required: false,
101
+ description: "CA serial number file",
102
+ },
103
+ pempassphrase: {
104
+ type: "string",
105
+ required: false,
106
+ description: "PEM passphrase for encrypted key",
107
+ },
108
+ subjectaltname: {
109
+ type: "string",
110
+ required: false,
111
+ description: "Subject Alternative Name (SAN)",
112
+ },
113
+ days: {
114
+ type: "string",
115
+ required: false,
116
+ description: "Validity period in days",
117
+ },
47
118
  },
48
119
  async execute(input, ctx) {
49
120
  const p = input;
@@ -76,21 +147,55 @@ export default function netscalerAdc(rl) {
76
147
  body.subjectaltname = p.subjectaltname;
77
148
  if (p.days)
78
149
  body.days = p.days;
79
- await apiRequest(conn, "POST", "/config/sslcert?action=create", { sslcert: body });
150
+ await apiRequest(conn, "POST", "/config/sslcert?action=create", {
151
+ sslcert: body,
152
+ });
80
153
  return { success: true };
81
154
  },
82
155
  });
83
156
  rl.registerAction("certificate.install", {
84
157
  description: "Install an SSL certificate-key pair on the appliance",
85
158
  inputSchema: {
86
- certificateKeyPairName: { type: "string", required: true, description: "Name for the certificate-key pair" },
87
- certificateFileName: { type: "string", required: true, description: "X509 certificate file name/path" },
88
- privateKeyFileName: { type: "string", required: true, description: "Private key file name/path" },
89
- certificateFormat: { type: "string", required: true, description: "PEM or DER" },
90
- password: { type: "string", required: false, description: "PEM passphrase (required for PEM format)" },
91
- certificateBundle: { type: "boolean", required: false, description: "Parse certificate chain as single file (PEM only)" },
92
- notifyExpiration: { type: "boolean", required: false, description: "Alert when certificate is about to expire" },
93
- notificationPeriod: { type: "number", required: false, description: "Days before expiry to alert (10-100, default 10)" },
159
+ certificateKeyPairName: {
160
+ type: "string",
161
+ required: true,
162
+ description: "Name for the certificate-key pair",
163
+ },
164
+ certificateFileName: {
165
+ type: "string",
166
+ required: true,
167
+ description: "X509 certificate file name/path",
168
+ },
169
+ privateKeyFileName: {
170
+ type: "string",
171
+ required: true,
172
+ description: "Private key file name/path",
173
+ },
174
+ certificateFormat: {
175
+ type: "string",
176
+ required: true,
177
+ description: "PEM or DER",
178
+ },
179
+ password: {
180
+ type: "string",
181
+ required: false,
182
+ description: "PEM passphrase (required for PEM format)",
183
+ },
184
+ certificateBundle: {
185
+ type: "boolean",
186
+ required: false,
187
+ description: "Parse certificate chain as single file (PEM only)",
188
+ },
189
+ notifyExpiration: {
190
+ type: "boolean",
191
+ required: false,
192
+ description: "Alert when certificate is about to expire",
193
+ },
194
+ notificationPeriod: {
195
+ type: "number",
196
+ required: false,
197
+ description: "Days before expiry to alert (10-100, default 10)",
198
+ },
94
199
  },
95
200
  async execute(input, ctx) {
96
201
  const p = input;
@@ -110,15 +215,25 @@ export default function netscalerAdc(rl) {
110
215
  body.expirymonitor = "ENABLED";
111
216
  body.notificationperiod = p.notificationPeriod ?? 10;
112
217
  }
113
- await apiRequest(conn, "POST", "/config/sslcertkey", { sslcertkey: body });
218
+ await apiRequest(conn, "POST", "/config/sslcertkey", {
219
+ sslcertkey: body,
220
+ });
114
221
  return { success: true };
115
222
  },
116
223
  });
117
224
  rl.registerAction("file.delete", {
118
225
  description: "Delete a file from the Netscaler ADC appliance",
119
226
  inputSchema: {
120
- fileName: { type: "string", required: true, description: "File name (without path)" },
121
- fileLocation: { type: "string", required: false, description: "File location (default /nsconfig/ssl/)" },
227
+ fileName: {
228
+ type: "string",
229
+ required: true,
230
+ description: "File name (without path)",
231
+ },
232
+ fileLocation: {
233
+ type: "string",
234
+ required: false,
235
+ description: "File location (default /nsconfig/ssl/)",
236
+ },
122
237
  },
123
238
  async execute(input, ctx) {
124
239
  const { fileName, fileLocation } = input;
@@ -63,16 +63,39 @@ export default function nextcloud(rl) {
63
63
  rl.setName("nextcloud");
64
64
  rl.setVersion("0.1.0");
65
65
  rl.setConnectionSchema({
66
- webDavUrl: { type: "string", required: true, description: "Nextcloud WebDAV URL (e.g. https://cloud.example.com/remote.php/webdav)", env: "NEXTCLOUD_WEBDAV_URL" },
67
- username: { type: "string", required: true, description: "Nextcloud username", env: "NEXTCLOUD_USERNAME" },
68
- password: { type: "string", required: true, description: "Nextcloud password or app token", env: "NEXTCLOUD_PASSWORD" },
66
+ webDavUrl: {
67
+ type: "string",
68
+ required: true,
69
+ description: "Nextcloud WebDAV URL (e.g. https://cloud.example.com/remote.php/webdav)",
70
+ env: "NEXTCLOUD_WEBDAV_URL",
71
+ },
72
+ username: {
73
+ type: "string",
74
+ required: true,
75
+ description: "Nextcloud username",
76
+ env: "NEXTCLOUD_USERNAME",
77
+ },
78
+ password: {
79
+ type: "string",
80
+ required: true,
81
+ description: "Nextcloud password or app token",
82
+ env: "NEXTCLOUD_PASSWORD",
83
+ },
69
84
  });
70
85
  // ── File/Folder operations (non-binary) ─────────────
71
86
  rl.registerAction("file.copy", {
72
87
  description: "Copy a file on Nextcloud",
73
88
  inputSchema: {
74
- path: { type: "string", required: true, description: "Source file path (e.g. /invoices/original.txt)" },
75
- toPath: { type: "string", required: true, description: "Destination file path" },
89
+ path: {
90
+ type: "string",
91
+ required: true,
92
+ description: "Source file path (e.g. /invoices/original.txt)",
93
+ },
94
+ toPath: {
95
+ type: "string",
96
+ required: true,
97
+ description: "Destination file path",
98
+ },
76
99
  },
77
100
  async execute(input, ctx) {
78
101
  const { path, toPath } = input;
@@ -86,7 +109,11 @@ export default function nextcloud(rl) {
86
109
  rl.registerAction("file.delete", {
87
110
  description: "Delete a file on Nextcloud",
88
111
  inputSchema: {
89
- path: { type: "string", required: true, description: "File path to delete" },
112
+ path: {
113
+ type: "string",
114
+ required: true,
115
+ description: "File path to delete",
116
+ },
90
117
  },
91
118
  async execute(input, ctx) {
92
119
  const { path } = input;
@@ -98,7 +125,11 @@ export default function nextcloud(rl) {
98
125
  description: "Move/rename a file on Nextcloud",
99
126
  inputSchema: {
100
127
  path: { type: "string", required: true, description: "Source file path" },
101
- toPath: { type: "string", required: true, description: "Destination file path" },
128
+ toPath: {
129
+ type: "string",
130
+ required: true,
131
+ description: "Destination file path",
132
+ },
102
133
  },
103
134
  async execute(input, ctx) {
104
135
  const { path, toPath } = input;
@@ -112,11 +143,31 @@ export default function nextcloud(rl) {
112
143
  rl.registerAction("file.share", {
113
144
  description: "Share a file or folder via Nextcloud sharing API",
114
145
  inputSchema: {
115
- path: { type: "string", required: true, description: "File/folder path to share" },
116
- shareType: { type: "number", required: true, description: "0=user, 1=group, 3=public link, 4=email, 7=circle" },
117
- shareWith: { type: "string", required: false, description: "User, group, email, or circle ID to share with (not needed for public link)" },
118
- permissions: { type: "number", required: false, description: "1=read, 2=update, 4=create, 8=delete, 31=all (default 1)" },
119
- password: { type: "string", required: false, description: "Password for public link shares" },
146
+ path: {
147
+ type: "string",
148
+ required: true,
149
+ description: "File/folder path to share",
150
+ },
151
+ shareType: {
152
+ type: "number",
153
+ required: true,
154
+ description: "0=user, 1=group, 3=public link, 4=email, 7=circle",
155
+ },
156
+ shareWith: {
157
+ type: "string",
158
+ required: false,
159
+ description: "User, group, email, or circle ID to share with (not needed for public link)",
160
+ },
161
+ permissions: {
162
+ type: "number",
163
+ required: false,
164
+ description: "1=read, 2=update, 4=create, 8=delete, 31=all (default 1)",
165
+ },
166
+ password: {
167
+ type: "string",
168
+ required: false,
169
+ description: "Password for public link shares",
170
+ },
120
171
  },
121
172
  async execute(input, ctx) {
122
173
  const p = input;
@@ -136,7 +187,11 @@ export default function nextcloud(rl) {
136
187
  rl.registerAction("folder.create", {
137
188
  description: "Create a folder on Nextcloud",
138
189
  inputSchema: {
139
- path: { type: "string", required: true, description: "Folder path to create (e.g. /invoices/2019)" },
190
+ path: {
191
+ type: "string",
192
+ required: true,
193
+ description: "Folder path to create (e.g. /invoices/2019)",
194
+ },
140
195
  },
141
196
  async execute(input, ctx) {
142
197
  const { path } = input;
@@ -147,7 +202,11 @@ export default function nextcloud(rl) {
147
202
  rl.registerAction("folder.delete", {
148
203
  description: "Delete a folder on Nextcloud",
149
204
  inputSchema: {
150
- path: { type: "string", required: true, description: "Folder path to delete" },
205
+ path: {
206
+ type: "string",
207
+ required: true,
208
+ description: "Folder path to delete",
209
+ },
151
210
  },
152
211
  async execute(input, ctx) {
153
212
  const { path } = input;
@@ -158,8 +217,16 @@ export default function nextcloud(rl) {
158
217
  rl.registerAction("folder.copy", {
159
218
  description: "Copy a folder on Nextcloud",
160
219
  inputSchema: {
161
- path: { type: "string", required: true, description: "Source folder path" },
162
- toPath: { type: "string", required: true, description: "Destination folder path" },
220
+ path: {
221
+ type: "string",
222
+ required: true,
223
+ description: "Source folder path",
224
+ },
225
+ toPath: {
226
+ type: "string",
227
+ required: true,
228
+ description: "Destination folder path",
229
+ },
163
230
  },
164
231
  async execute(input, ctx) {
165
232
  const { path, toPath } = input;
@@ -173,8 +240,16 @@ export default function nextcloud(rl) {
173
240
  rl.registerAction("folder.move", {
174
241
  description: "Move/rename a folder on Nextcloud",
175
242
  inputSchema: {
176
- path: { type: "string", required: true, description: "Source folder path" },
177
- toPath: { type: "string", required: true, description: "Destination folder path" },
243
+ path: {
244
+ type: "string",
245
+ required: true,
246
+ description: "Source folder path",
247
+ },
248
+ toPath: {
249
+ type: "string",
250
+ required: true,
251
+ description: "Destination folder path",
252
+ },
178
253
  },
179
254
  async execute(input, ctx) {
180
255
  const { path, toPath } = input;
@@ -191,7 +266,11 @@ export default function nextcloud(rl) {
191
266
  inputSchema: {
192
267
  userId: { type: "string", required: true, description: "Username" },
193
268
  email: { type: "string", required: true, description: "Email address" },
194
- displayName: { type: "string", required: false, description: "Display name" },
269
+ displayName: {
270
+ type: "string",
271
+ required: false,
272
+ description: "Display name",
273
+ },
195
274
  },
196
275
  async execute(input, ctx) {
197
276
  const { userId, email, displayName } = input;
@@ -250,7 +329,11 @@ export default function nextcloud(rl) {
250
329
  description: "Update a user attribute (email, displayname, password, address, twitter, website)",
251
330
  inputSchema: {
252
331
  userId: { type: "string", required: true, description: "Username" },
253
- key: { type: "string", required: true, description: "Attribute key: email, displayname, password, address, twitter, website" },
332
+ key: {
333
+ type: "string",
334
+ required: true,
335
+ description: "Attribute key: email, displayname, password, address, twitter, website",
336
+ },
254
337
  value: { type: "string", required: true, description: "New value" },
255
338
  },
256
339
  async execute(input, ctx) {
@@ -45,14 +45,28 @@ export default function nocodb(rl) {
45
45
  rl.setName("nocodb");
46
46
  rl.setVersion("0.1.0");
47
47
  rl.setConnectionSchema({
48
- host: { type: "string", required: true, description: "NocoDB host URL (e.g. https://nocodb.example.com)", env: "NOCODB_HOST" },
49
- apiToken: { type: "string", required: true, description: "NocoDB API token (xc-token)", env: "NOCODB_API_TOKEN" },
48
+ host: {
49
+ type: "string",
50
+ required: true,
51
+ description: "NocoDB host URL (e.g. https://nocodb.example.com)",
52
+ env: "NOCODB_HOST",
53
+ },
54
+ apiToken: {
55
+ type: "string",
56
+ required: true,
57
+ description: "NocoDB API token (xc-token)",
58
+ env: "NOCODB_API_TOKEN",
59
+ },
50
60
  });
51
61
  rl.registerAction("row.create", {
52
62
  description: "Create one or more rows in a NocoDB table (v2 API)",
53
63
  inputSchema: {
54
64
  tableId: { type: "string", required: true, description: "Table ID" },
55
- rows: { type: "object", required: true, description: "Array of row objects to create" },
65
+ rows: {
66
+ type: "object",
67
+ required: true,
68
+ description: "Array of row objects to create",
69
+ },
56
70
  },
57
71
  async execute(input, ctx) {
58
72
  const { tableId, rows } = input;
@@ -75,12 +89,36 @@ export default function nocodb(rl) {
75
89
  description: "List rows from a NocoDB table",
76
90
  inputSchema: {
77
91
  tableId: { type: "string", required: true, description: "Table ID" },
78
- limit: { type: "number", required: false, description: "Max rows to return (default: all)" },
79
- where: { type: "string", required: false, description: "Filter formula, e.g. (name,like,example%)" },
80
- sort: { type: "string", required: false, description: "Sort string, e.g. -fieldName for desc" },
81
- fields: { type: "string", required: false, description: "Comma-separated field names to return" },
82
- viewId: { type: "string", required: false, description: "View ID to filter by" },
83
- offset: { type: "number", required: false, description: "Offset for pagination" },
92
+ limit: {
93
+ type: "number",
94
+ required: false,
95
+ description: "Max rows to return (default: all)",
96
+ },
97
+ where: {
98
+ type: "string",
99
+ required: false,
100
+ description: "Filter formula, e.g. (name,like,example%)",
101
+ },
102
+ sort: {
103
+ type: "string",
104
+ required: false,
105
+ description: "Sort string, e.g. -fieldName for desc",
106
+ },
107
+ fields: {
108
+ type: "string",
109
+ required: false,
110
+ description: "Comma-separated field names to return",
111
+ },
112
+ viewId: {
113
+ type: "string",
114
+ required: false,
115
+ description: "View ID to filter by",
116
+ },
117
+ offset: {
118
+ type: "number",
119
+ required: false,
120
+ description: "Offset for pagination",
121
+ },
84
122
  },
85
123
  async execute(input, ctx) {
86
124
  const p = (input ?? {});
@@ -109,7 +147,11 @@ export default function nocodb(rl) {
109
147
  description: "Update one or more rows (include primary key in each row object)",
110
148
  inputSchema: {
111
149
  tableId: { type: "string", required: true, description: "Table ID" },
112
- rows: { type: "object", required: true, description: "Array of row objects with primary key included" },
150
+ rows: {
151
+ type: "object",
152
+ required: true,
153
+ description: "Array of row objects with primary key included",
154
+ },
113
155
  },
114
156
  async execute(input, ctx) {
115
157
  const { tableId, rows } = input;
@@ -120,7 +162,11 @@ export default function nocodb(rl) {
120
162
  description: "Delete one or more rows by ID",
121
163
  inputSchema: {
122
164
  tableId: { type: "string", required: true, description: "Table ID" },
123
- ids: { type: "object", required: true, description: "Array of objects with primary key, e.g. [{Id: 1}, {Id: 2}]" },
165
+ ids: {
166
+ type: "object",
167
+ required: true,
168
+ description: "Array of objects with primary key, e.g. [{Id: 1}, {Id: 2}]",
169
+ },
124
170
  },
125
171
  async execute(input, ctx) {
126
172
  const { tableId, ids } = input;