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.
- package/dist/commands/auth.d.ts +7 -0
- package/dist/commands/auth.js +96 -0
- package/dist/config/loader.d.ts +11 -0
- package/dist/config/loader.js +46 -0
- package/dist/core/engine.js +7 -1
- package/dist/core/oauth.d.ts +46 -0
- package/dist/core/oauth.js +145 -0
- package/dist/index.d.ts +4 -2
- package/dist/index.js +2 -1
- package/dist/main.js +28 -0
- package/dist/plugin/api.d.ts +7 -1
- package/dist/plugin/api.js +7 -0
- package/dist/plugin/types.d.ts +47 -0
- package/dist/plugins/actionNetwork/src/index.js +118 -25
- package/dist/plugins/activeCampaign/src/index.js +184 -38
- package/dist/plugins/adalo/src/index.js +40 -8
- package/dist/plugins/affinity/src/index.js +100 -20
- package/dist/plugins/agileCrm/src/index.js +115 -27
- package/dist/plugins/airtable/src/index.js +94 -19
- package/dist/plugins/airtop/src/index.js +266 -62
- package/dist/plugins/apiTemplateIo/src/index.js +25 -5
- package/dist/plugins/asana/src/index.js +195 -41
- package/dist/plugins/autopilot/src/index.js +39 -8
- package/dist/plugins/bambooHr/src/index.js +109 -22
- package/dist/plugins/bannerbear/src/index.js +36 -8
- package/dist/plugins/baserow/src/index.js +35 -7
- package/dist/plugins/beeminder/src/index.js +198 -40
- package/dist/plugins/bitly/src/index.js +46 -10
- package/dist/plugins/bitwarden/src/index.js +167 -36
- package/dist/plugins/box/src/index.js +172 -37
- package/dist/plugins/brandfetch/src/index.js +5 -1
- package/dist/plugins/brevo/src/index.js +136 -29
- package/dist/plugins/bubble/src/index.js +76 -17
- package/dist/plugins/chargebee/src/index.js +35 -7
- package/dist/plugins/circleci/src/index.js +50 -10
- package/dist/plugins/ciscoWebex/src/index.js +131 -27
- package/dist/plugins/clearbit/src/index.js +76 -17
- package/dist/plugins/clickup/src/index.js +500 -107
- package/dist/plugins/clockify/src/index.js +229 -47
- package/dist/plugins/cloudflare/src/index.js +28 -6
- package/dist/plugins/cockpit/src/index.js +54 -12
- package/dist/plugins/coda/src/index.js +81 -19
- package/dist/plugins/coingecko/src/index.js +157 -33
- package/dist/plugins/contentful/src/index.js +85 -17
- package/dist/plugins/convertkit/src/index.js +74 -18
- package/dist/plugins/copper/src/index.js +59 -11
- package/dist/plugins/cortex/src/index.js +55 -13
- package/dist/plugins/currents/src/index.js +310 -71
- package/dist/plugins/customerIo/src/index.js +112 -23
- package/dist/plugins/databricks/src/index.js +549 -115
- package/dist/plugins/deepl/src/index.js +26 -6
- package/dist/plugins/demio/src/index.js +56 -11
- package/dist/plugins/dhl/src/index.js +16 -3
- package/dist/plugins/discord/src/index.js +141 -31
- package/dist/plugins/discourse/src/index.js +136 -31
- package/dist/plugins/disqus/src/index.js +96 -20
- package/dist/plugins/docker/src/index.js +20 -4
- package/dist/plugins/drift/src/index.js +19 -5
- package/dist/plugins/dropbox/src/index.js +139 -30
- package/dist/plugins/dropcontact/src/index.js +21 -4
- package/dist/plugins/egoi/src/index.js +61 -15
- package/dist/plugins/elasticsearch/src/index.js +59 -13
- package/dist/plugins/emelia/src/index.js +95 -19
- package/dist/plugins/erpnext/src/index.js +74 -15
- package/dist/plugins/facebookGraph/src/index.js +52 -11
- package/dist/plugins/freshdesk/src/index.js +220 -48
- package/dist/plugins/freshservice/src/index.js +39 -9
- package/dist/plugins/freshworksCrm/src/index.js +58 -12
- package/dist/plugins/getresponse/src/index.js +87 -18
- package/dist/plugins/ghost/src/index.js +114 -26
- package/dist/plugins/github/src/index.js +483 -109
- package/dist/plugins/gitlab/src/index.js +193 -45
- package/dist/plugins/gmail/src/index.js +1075 -0
- package/dist/plugins/gong/src/index.js +68 -14
- package/dist/plugins/gotify/src/index.js +43 -9
- package/dist/plugins/gotowebinar/src/index.js +233 -47
- package/dist/plugins/grafana/src/index.js +92 -21
- package/dist/plugins/graphql/src/index.js +38 -8
- package/dist/plugins/grist/src/index.js +52 -10
- package/dist/plugins/hackernews/src/index.js +32 -6
- package/dist/plugins/halopsa/src/index.js +131 -26
- package/dist/plugins/harvest/src/index.js +182 -42
- package/dist/plugins/helpscout/src/index.js +153 -31
- package/dist/plugins/highlevel/src/index.js +291 -58
- package/dist/plugins/homeAssistant/src/index.js +124 -26
- package/dist/plugins/hubspot/src/index.js +163 -29
- package/dist/plugins/humanticAi/src/index.js +54 -5
- package/dist/plugins/hunter/src/index.js +21 -4
- package/dist/plugins/intercom/src/index.js +95 -20
- package/dist/plugins/iterable/src/index.js +96 -20
- package/dist/plugins/jenkins/src/index.js +75 -17
- package/dist/plugins/jira/src/index.js +193 -43
- package/dist/plugins/keap/src/index.js +222 -56
- package/dist/plugins/kobotoolbox/src/index.js +113 -25
- package/dist/plugins/lemlist/src/index.js +79 -18
- package/dist/plugins/linear/src/index.js +86 -19
- package/dist/plugins/lingvanex/src/index.js +38 -8
- package/dist/plugins/linkedin/src/index.js +37 -8
- package/dist/plugins/lonescale/src/index.js +41 -9
- package/dist/plugins/magento/src/index.js +98 -27
- package/dist/plugins/mailcheck/src/index.js +11 -2
- package/dist/plugins/mailchimp/src/index.js +193 -42
- package/dist/plugins/mailerlite/src/index.js +61 -12
- package/dist/plugins/mailgun/src/index.js +39 -7
- package/dist/plugins/mailjet/src/index.js +141 -30
- package/dist/plugins/mandrill/src/index.js +67 -14
- package/dist/plugins/marketstack/src/index.js +56 -10
- package/dist/plugins/matrix/src/index.js +97 -20
- package/dist/plugins/mattermost/src/index.js +124 -26
- package/dist/plugins/mautic/src/index.js +129 -26
- package/dist/plugins/medium/src/index.js +64 -13
- package/dist/plugins/messagebird/src/index.js +80 -15
- package/dist/plugins/metabase/src/index.js +57 -12
- package/dist/plugins/misp/src/index.js +135 -33
- package/dist/plugins/mocean/src/index.js +33 -7
- package/dist/plugins/monday/src/index.js +97 -23
- package/dist/plugins/monicaCrm/src/index.js +112 -23
- package/dist/plugins/msg91/src/index.js +11 -2
- package/dist/plugins/nasa/src/index.js +108 -21
- package/dist/plugins/netlify/src/index.js +28 -6
- package/dist/plugins/netscalerAdc/src/index.js +144 -29
- package/dist/plugins/nextcloud/src/index.js +103 -20
- package/dist/plugins/nocodb/src/index.js +57 -11
- package/dist/plugins/notion/src/index.js +148 -37
- package/dist/plugins/npm/src/index.js +59 -12
- package/dist/plugins/odoo/src/index.js +102 -20
- package/dist/plugins/okta/src/index.js +50 -10
- package/dist/plugins/oneSimpleApi/src/index.js +84 -17
- package/dist/plugins/onfleet/src/index.js +139 -32
- package/dist/plugins/openThesaurus/src/index.js +46 -9
- package/dist/plugins/openweathermap/src/index.js +31 -6
- package/dist/plugins/oura/src/index.js +36 -7
- package/dist/plugins/paddle/src/index.js +80 -17
- package/dist/plugins/pagerduty/src/index.js +53 -12
- package/dist/plugins/paypal/src/index.js +51 -11
- package/dist/plugins/peekalink/src/index.js +12 -3
- package/dist/plugins/phantombuster/src/index.js +39 -8
- package/dist/plugins/philipsHue/src/index.js +64 -13
- package/dist/plugins/pipedrive/src/index.js +167 -45
- package/dist/plugins/plivo/src/index.js +43 -8
- package/dist/plugins/postbin/src/index.js +9 -2
- package/dist/plugins/posthog/src/index.js +50 -13
- package/dist/plugins/profitwell/src/index.js +24 -5
- package/dist/plugins/pushbullet/src/index.js +45 -9
- package/dist/plugins/pushcut/src/index.js +31 -6
- package/dist/plugins/pushover/src/index.js +51 -10
- package/dist/plugins/quickbase/src/index.js +66 -13
- package/dist/plugins/quickbooks/src/index.js +86 -19
- package/dist/plugins/quickchart/src/index.js +35 -7
- package/dist/plugins/raindrop/src/index.js +54 -13
- package/dist/plugins/reddit/src/index.js +73 -18
- package/dist/plugins/rocketchat/src/index.js +47 -9
- package/dist/plugins/rundeck/src/index.js +26 -5
- package/dist/plugins/salesforce/src/index.js +161 -31
- package/dist/plugins/salesmate/src/index.js +75 -16
- package/dist/plugins/securityScorecard/src/index.js +73 -15
- package/dist/plugins/segment/src/index.js +21 -4
- package/dist/plugins/sendgrid/src/index.js +102 -24
- package/dist/plugins/sendy/src/index.js +54 -11
- package/dist/plugins/sentry/src/index.js +174 -34
- package/dist/plugins/servicenow/src/index.js +120 -27
- package/dist/plugins/shopify/src/index.js +53 -12
- package/dist/plugins/signl4/src/index.js +16 -3
- package/dist/plugins/slack/src/index.js +407 -105
- package/dist/plugins/sms77/src/index.js +26 -5
- package/dist/plugins/splunk/src/index.js +186 -45
- package/dist/plugins/spotify/src/index.js +265 -66
- package/dist/plugins/stackby/src/index.js +18 -6
- package/dist/plugins/storyblok/src/index.js +57 -11
- package/dist/plugins/strapi/src/index.js +63 -12
- package/dist/plugins/strava/src/index.js +58 -13
- package/dist/plugins/stripe/src/index.js +143 -30
- package/dist/plugins/supabase/src/index.js +49 -10
- package/dist/plugins/syncromsp/src/index.js +245 -67
- package/dist/plugins/tapfiliate/src/index.js +57 -14
- package/dist/plugins/telegram/src/index.js +202 -39
- package/dist/plugins/thehive/src/index.js +271 -66
- package/dist/plugins/thehiveProject/src/index.js +457 -89
- package/dist/plugins/todoist/src/index.js +326 -77
- package/dist/plugins/travisci/src/index.js +35 -8
- package/dist/plugins/trello/src/index.js +204 -46
- package/dist/plugins/twake/src/index.js +10 -2
- package/dist/plugins/twilio/src/index.js +56 -11
- package/dist/plugins/twist/src/index.js +241 -48
- package/dist/plugins/twitter/src/index.js +128 -30
- package/dist/plugins/unleashedSoftware/src/index.js +30 -6
- package/dist/plugins/uplead/src/index.js +9 -2
- package/dist/plugins/uproc/src/index.js +31 -6
- package/dist/plugins/uptimerobot/src/index.js +119 -25
- package/dist/plugins/urlscanio/src/index.js +25 -6
- package/dist/plugins/vero/src/index.js +68 -13
- package/dist/plugins/vonage/src/index.js +32 -6
- package/dist/plugins/wekan/src/index.js +297 -52
- package/dist/plugins/woocommerce/src/index.js +57 -12
- package/dist/plugins/wordpress/src/index.js +94 -18
- package/dist/plugins/xero/src/index.js +79 -13
- package/dist/plugins/yourls/src/index.js +33 -6
- package/dist/plugins/zammad/src/index.js +139 -36
- package/dist/plugins/zendesk/src/index.js +201 -48
- package/dist/plugins/zoho/src/index.js +88 -21
- package/dist/plugins/zoom/src/index.js +41 -7
- package/dist/plugins/zulip/src/index.js +101 -20
- package/package.json +3 -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: {
|
|
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: {
|
|
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: {
|
|
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, {
|
|
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: {
|
|
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, {
|
|
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 {
|
|
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: {
|
|
28
|
-
|
|
29
|
-
|
|
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: {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
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", {
|
|
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: {
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
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", {
|
|
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: {
|
|
121
|
-
|
|
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: {
|
|
67
|
-
|
|
68
|
-
|
|
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: {
|
|
75
|
-
|
|
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: {
|
|
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: {
|
|
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: {
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
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: {
|
|
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: {
|
|
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: {
|
|
162
|
-
|
|
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: {
|
|
177
|
-
|
|
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: {
|
|
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: {
|
|
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: {
|
|
49
|
-
|
|
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: {
|
|
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: {
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
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: {
|
|
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: {
|
|
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;
|