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.
- package/README.md +1 -1
- 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/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 +1 -1
|
@@ -15,7 +15,10 @@ async function apiRequest(apiKey, method, endpoint, body, qs) {
|
|
|
15
15
|
"api-key": apiKey,
|
|
16
16
|
},
|
|
17
17
|
};
|
|
18
|
-
if (body &&
|
|
18
|
+
if (body &&
|
|
19
|
+
Object.keys(body).length > 0 &&
|
|
20
|
+
method !== "GET" &&
|
|
21
|
+
method !== "DELETE") {
|
|
19
22
|
opts.body = JSON.stringify(body);
|
|
20
23
|
}
|
|
21
24
|
const res = await fetch(url.toString(), opts);
|
|
@@ -49,8 +52,16 @@ export default function brevo(rl) {
|
|
|
49
52
|
description: "Create a contact",
|
|
50
53
|
inputSchema: {
|
|
51
54
|
email: { type: "string", required: true, description: "Contact email" },
|
|
52
|
-
attributes: {
|
|
53
|
-
|
|
55
|
+
attributes: {
|
|
56
|
+
type: "object",
|
|
57
|
+
required: false,
|
|
58
|
+
description: "Contact attributes as key-value pairs",
|
|
59
|
+
},
|
|
60
|
+
listIds: {
|
|
61
|
+
type: "array",
|
|
62
|
+
required: false,
|
|
63
|
+
description: "Array of list IDs to add contact to",
|
|
64
|
+
},
|
|
54
65
|
},
|
|
55
66
|
async execute(input, ctx) {
|
|
56
67
|
const { email, attributes, listIds } = (input ?? {});
|
|
@@ -66,7 +77,11 @@ export default function brevo(rl) {
|
|
|
66
77
|
description: "Create or update a contact",
|
|
67
78
|
inputSchema: {
|
|
68
79
|
email: { type: "string", required: true, description: "Contact email" },
|
|
69
|
-
attributes: {
|
|
80
|
+
attributes: {
|
|
81
|
+
type: "object",
|
|
82
|
+
required: false,
|
|
83
|
+
description: "Contact attributes",
|
|
84
|
+
},
|
|
70
85
|
listIds: { type: "array", required: false, description: "List IDs" },
|
|
71
86
|
},
|
|
72
87
|
async execute(input, ctx) {
|
|
@@ -82,7 +97,11 @@ export default function brevo(rl) {
|
|
|
82
97
|
rl.registerAction("contact.get", {
|
|
83
98
|
description: "Get a contact by email or ID",
|
|
84
99
|
inputSchema: {
|
|
85
|
-
identifier: {
|
|
100
|
+
identifier: {
|
|
101
|
+
type: "string",
|
|
102
|
+
required: true,
|
|
103
|
+
description: "Email or contact ID",
|
|
104
|
+
},
|
|
86
105
|
},
|
|
87
106
|
async execute(input, ctx) {
|
|
88
107
|
const { identifier } = input;
|
|
@@ -92,10 +111,26 @@ export default function brevo(rl) {
|
|
|
92
111
|
rl.registerAction("contact.list", {
|
|
93
112
|
description: "List contacts",
|
|
94
113
|
inputSchema: {
|
|
95
|
-
limit: {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
114
|
+
limit: {
|
|
115
|
+
type: "number",
|
|
116
|
+
required: false,
|
|
117
|
+
description: "Max results (default: 50, max: 1000)",
|
|
118
|
+
},
|
|
119
|
+
offset: {
|
|
120
|
+
type: "number",
|
|
121
|
+
required: false,
|
|
122
|
+
description: "Offset for pagination",
|
|
123
|
+
},
|
|
124
|
+
sort: {
|
|
125
|
+
type: "string",
|
|
126
|
+
required: false,
|
|
127
|
+
description: "Sort order: asc or desc",
|
|
128
|
+
},
|
|
129
|
+
modifiedSince: {
|
|
130
|
+
type: "string",
|
|
131
|
+
required: false,
|
|
132
|
+
description: "Filter by modification date (ISO 8601)",
|
|
133
|
+
},
|
|
99
134
|
},
|
|
100
135
|
async execute(input, ctx) {
|
|
101
136
|
const { limit, offset, sort, modifiedSince } = (input ?? {});
|
|
@@ -115,10 +150,26 @@ export default function brevo(rl) {
|
|
|
115
150
|
rl.registerAction("contact.update", {
|
|
116
151
|
description: "Update a contact",
|
|
117
152
|
inputSchema: {
|
|
118
|
-
identifier: {
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
153
|
+
identifier: {
|
|
154
|
+
type: "string",
|
|
155
|
+
required: true,
|
|
156
|
+
description: "Email or contact ID",
|
|
157
|
+
},
|
|
158
|
+
attributes: {
|
|
159
|
+
type: "object",
|
|
160
|
+
required: false,
|
|
161
|
+
description: "Attributes to update",
|
|
162
|
+
},
|
|
163
|
+
listIds: {
|
|
164
|
+
type: "array",
|
|
165
|
+
required: false,
|
|
166
|
+
description: "List IDs to add",
|
|
167
|
+
},
|
|
168
|
+
unlinkListIds: {
|
|
169
|
+
type: "array",
|
|
170
|
+
required: false,
|
|
171
|
+
description: "List IDs to remove",
|
|
172
|
+
},
|
|
122
173
|
},
|
|
123
174
|
async execute(input, ctx) {
|
|
124
175
|
const { identifier, attributes, listIds, unlinkListIds } = input;
|
|
@@ -136,7 +187,11 @@ export default function brevo(rl) {
|
|
|
136
187
|
rl.registerAction("contact.delete", {
|
|
137
188
|
description: "Delete a contact",
|
|
138
189
|
inputSchema: {
|
|
139
|
-
identifier: {
|
|
190
|
+
identifier: {
|
|
191
|
+
type: "string",
|
|
192
|
+
required: true,
|
|
193
|
+
description: "Email or contact ID",
|
|
194
|
+
},
|
|
140
195
|
},
|
|
141
196
|
async execute(input, ctx) {
|
|
142
197
|
const { identifier } = input;
|
|
@@ -148,11 +203,27 @@ export default function brevo(rl) {
|
|
|
148
203
|
rl.registerAction("attribute.create", {
|
|
149
204
|
description: "Create a contact attribute",
|
|
150
205
|
inputSchema: {
|
|
151
|
-
category: {
|
|
206
|
+
category: {
|
|
207
|
+
type: "string",
|
|
208
|
+
required: true,
|
|
209
|
+
description: "Category: normal, transactional, category, calculated, global",
|
|
210
|
+
},
|
|
152
211
|
name: { type: "string", required: true, description: "Attribute name" },
|
|
153
|
-
type: {
|
|
154
|
-
|
|
155
|
-
|
|
212
|
+
type: {
|
|
213
|
+
type: "string",
|
|
214
|
+
required: false,
|
|
215
|
+
description: "Type (for normal): text, date, float, boolean",
|
|
216
|
+
},
|
|
217
|
+
value: {
|
|
218
|
+
type: "string",
|
|
219
|
+
required: false,
|
|
220
|
+
description: "Value (for calculated/global)",
|
|
221
|
+
},
|
|
222
|
+
enumeration: {
|
|
223
|
+
type: "array",
|
|
224
|
+
required: false,
|
|
225
|
+
description: "Array of {value, label} for category type",
|
|
226
|
+
},
|
|
156
227
|
},
|
|
157
228
|
async execute(input, ctx) {
|
|
158
229
|
const { category, name, type, value, enumeration } = input;
|
|
@@ -170,10 +241,18 @@ export default function brevo(rl) {
|
|
|
170
241
|
rl.registerAction("attribute.update", {
|
|
171
242
|
description: "Update a contact attribute",
|
|
172
243
|
inputSchema: {
|
|
173
|
-
category: {
|
|
244
|
+
category: {
|
|
245
|
+
type: "string",
|
|
246
|
+
required: true,
|
|
247
|
+
description: "Category: calculated, category, global",
|
|
248
|
+
},
|
|
174
249
|
name: { type: "string", required: true, description: "Attribute name" },
|
|
175
250
|
value: { type: "string", required: false, description: "New value" },
|
|
176
|
-
enumeration: {
|
|
251
|
+
enumeration: {
|
|
252
|
+
type: "array",
|
|
253
|
+
required: false,
|
|
254
|
+
description: "Array of {value, label}",
|
|
255
|
+
},
|
|
177
256
|
},
|
|
178
257
|
async execute(input, ctx) {
|
|
179
258
|
const { category, name, value, enumeration } = input;
|
|
@@ -215,11 +294,27 @@ export default function brevo(rl) {
|
|
|
215
294
|
rl.registerAction("email.send", {
|
|
216
295
|
description: "Send a transactional email",
|
|
217
296
|
inputSchema: {
|
|
218
|
-
sender: {
|
|
219
|
-
|
|
297
|
+
sender: {
|
|
298
|
+
type: "string",
|
|
299
|
+
required: true,
|
|
300
|
+
description: "Sender email address",
|
|
301
|
+
},
|
|
302
|
+
to: {
|
|
303
|
+
type: "array",
|
|
304
|
+
required: true,
|
|
305
|
+
description: "Array of recipient emails (or {email, name} objects)",
|
|
306
|
+
},
|
|
220
307
|
subject: { type: "string", required: true, description: "Email subject" },
|
|
221
|
-
htmlContent: {
|
|
222
|
-
|
|
308
|
+
htmlContent: {
|
|
309
|
+
type: "string",
|
|
310
|
+
required: false,
|
|
311
|
+
description: "HTML body",
|
|
312
|
+
},
|
|
313
|
+
textContent: {
|
|
314
|
+
type: "string",
|
|
315
|
+
required: false,
|
|
316
|
+
description: "Plain text body",
|
|
317
|
+
},
|
|
223
318
|
cc: { type: "array", required: false, description: "CC recipients" },
|
|
224
319
|
bcc: { type: "array", required: false, description: "BCC recipients" },
|
|
225
320
|
tags: { type: "array", required: false, description: "Email tags" },
|
|
@@ -238,9 +333,9 @@ export default function brevo(rl) {
|
|
|
238
333
|
if (textContent)
|
|
239
334
|
body.textContent = textContent;
|
|
240
335
|
if (cc)
|
|
241
|
-
body.cc = cc.map((r) =>
|
|
336
|
+
body.cc = cc.map((r) => typeof r === "string" ? { email: r } : r);
|
|
242
337
|
if (bcc)
|
|
243
|
-
body.bcc = bcc.map((r) =>
|
|
338
|
+
body.bcc = bcc.map((r) => typeof r === "string" ? { email: r } : r);
|
|
244
339
|
if (tags)
|
|
245
340
|
body.tags = tags;
|
|
246
341
|
return apiRequest(getKey(ctx), "POST", "/v3/smtp/email", body);
|
|
@@ -249,9 +344,21 @@ export default function brevo(rl) {
|
|
|
249
344
|
rl.registerAction("email.sendTemplate", {
|
|
250
345
|
description: "Send an email using a template",
|
|
251
346
|
inputSchema: {
|
|
252
|
-
templateId: {
|
|
253
|
-
|
|
254
|
-
|
|
347
|
+
templateId: {
|
|
348
|
+
type: "number",
|
|
349
|
+
required: true,
|
|
350
|
+
description: "Template ID",
|
|
351
|
+
},
|
|
352
|
+
to: {
|
|
353
|
+
type: "array",
|
|
354
|
+
required: true,
|
|
355
|
+
description: "Array of recipient emails (or {email, name} objects)",
|
|
356
|
+
},
|
|
357
|
+
params: {
|
|
358
|
+
type: "object",
|
|
359
|
+
required: false,
|
|
360
|
+
description: "Template parameters as key-value pairs",
|
|
361
|
+
},
|
|
255
362
|
tags: { type: "array", required: false, description: "Email tags" },
|
|
256
363
|
},
|
|
257
364
|
async execute(input, ctx) {
|
|
@@ -3,7 +3,9 @@ function buildBaseUrl(cfg) {
|
|
|
3
3
|
const appName = cfg.appName;
|
|
4
4
|
const domain = cfg.domain?.replace(/\/$/, "");
|
|
5
5
|
const environment = cfg.environment;
|
|
6
|
-
const rootUrl = hosting === "selfHosted" && domain
|
|
6
|
+
const rootUrl = hosting === "selfHosted" && domain
|
|
7
|
+
? domain
|
|
8
|
+
: `https://${appName}.bubbleapps.io`;
|
|
7
9
|
const urlSegment = environment === "development" ? "/version-test/api/1.1" : "/api/1.1";
|
|
8
10
|
return `${rootUrl}${urlSegment}`;
|
|
9
11
|
}
|
|
@@ -22,7 +24,10 @@ async function apiRequest(baseUrl, token, method, endpoint, body, qs) {
|
|
|
22
24
|
Authorization: `Bearer ${token}`,
|
|
23
25
|
},
|
|
24
26
|
};
|
|
25
|
-
if (body &&
|
|
27
|
+
if (body &&
|
|
28
|
+
Object.keys(body).length > 0 &&
|
|
29
|
+
method !== "GET" &&
|
|
30
|
+
method !== "DELETE") {
|
|
26
31
|
opts.body = JSON.stringify(body);
|
|
27
32
|
}
|
|
28
33
|
const res = await fetch(url.toString(), opts);
|
|
@@ -87,8 +92,16 @@ export default function bubble(rl) {
|
|
|
87
92
|
rl.registerAction("object.create", {
|
|
88
93
|
description: "Create an object",
|
|
89
94
|
inputSchema: {
|
|
90
|
-
typeName: {
|
|
91
|
-
|
|
95
|
+
typeName: {
|
|
96
|
+
type: "string",
|
|
97
|
+
required: true,
|
|
98
|
+
description: "Data type name",
|
|
99
|
+
},
|
|
100
|
+
properties: {
|
|
101
|
+
type: "object",
|
|
102
|
+
required: true,
|
|
103
|
+
description: "Key-value pairs of field values",
|
|
104
|
+
},
|
|
92
105
|
},
|
|
93
106
|
async execute(input, ctx) {
|
|
94
107
|
const { typeName, properties } = input;
|
|
@@ -99,8 +112,16 @@ export default function bubble(rl) {
|
|
|
99
112
|
rl.registerAction("object.get", {
|
|
100
113
|
description: "Get an object by ID",
|
|
101
114
|
inputSchema: {
|
|
102
|
-
typeName: {
|
|
103
|
-
|
|
115
|
+
typeName: {
|
|
116
|
+
type: "string",
|
|
117
|
+
required: true,
|
|
118
|
+
description: "Data type name",
|
|
119
|
+
},
|
|
120
|
+
objectId: {
|
|
121
|
+
type: "string",
|
|
122
|
+
required: true,
|
|
123
|
+
description: "Object unique ID",
|
|
124
|
+
},
|
|
104
125
|
},
|
|
105
126
|
async execute(input, ctx) {
|
|
106
127
|
const { typeName, objectId } = input;
|
|
@@ -112,14 +133,31 @@ export default function bubble(rl) {
|
|
|
112
133
|
rl.registerAction("object.list", {
|
|
113
134
|
description: "List objects of a type with optional constraints and sorting",
|
|
114
135
|
inputSchema: {
|
|
115
|
-
typeName: {
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
136
|
+
typeName: {
|
|
137
|
+
type: "string",
|
|
138
|
+
required: true,
|
|
139
|
+
description: "Data type name",
|
|
140
|
+
},
|
|
141
|
+
constraints: {
|
|
142
|
+
type: "array",
|
|
143
|
+
required: false,
|
|
144
|
+
description: "Array of constraint objects [{key, constraint_type, value}]",
|
|
145
|
+
},
|
|
146
|
+
sortField: {
|
|
147
|
+
type: "string",
|
|
148
|
+
required: false,
|
|
149
|
+
description: "Field to sort by",
|
|
150
|
+
},
|
|
151
|
+
descending: {
|
|
152
|
+
type: "boolean",
|
|
153
|
+
required: false,
|
|
154
|
+
description: "Sort descending",
|
|
155
|
+
},
|
|
119
156
|
limit: { type: "number", required: false, description: "Max results" },
|
|
120
157
|
},
|
|
121
158
|
async execute(input, ctx) {
|
|
122
|
-
const { typeName, constraints, sortField, descending, limit } = (input ??
|
|
159
|
+
const { typeName, constraints, sortField, descending, limit } = (input ??
|
|
160
|
+
{});
|
|
123
161
|
const { baseUrl, token } = getConn(ctx);
|
|
124
162
|
const qs = {};
|
|
125
163
|
if (constraints)
|
|
@@ -133,7 +171,8 @@ export default function bubble(rl) {
|
|
|
133
171
|
if (limit) {
|
|
134
172
|
qs.limit = limit;
|
|
135
173
|
const data = (await apiRequest(baseUrl, token, "GET", endpoint, undefined, qs));
|
|
136
|
-
return data.response?.results ??
|
|
174
|
+
return (data.response?.results ??
|
|
175
|
+
[]);
|
|
137
176
|
}
|
|
138
177
|
// Paginate all
|
|
139
178
|
const results = [];
|
|
@@ -154,9 +193,21 @@ export default function bubble(rl) {
|
|
|
154
193
|
rl.registerAction("object.update", {
|
|
155
194
|
description: "Update an object",
|
|
156
195
|
inputSchema: {
|
|
157
|
-
typeName: {
|
|
158
|
-
|
|
159
|
-
|
|
196
|
+
typeName: {
|
|
197
|
+
type: "string",
|
|
198
|
+
required: true,
|
|
199
|
+
description: "Data type name",
|
|
200
|
+
},
|
|
201
|
+
objectId: {
|
|
202
|
+
type: "string",
|
|
203
|
+
required: true,
|
|
204
|
+
description: "Object unique ID",
|
|
205
|
+
},
|
|
206
|
+
properties: {
|
|
207
|
+
type: "object",
|
|
208
|
+
required: true,
|
|
209
|
+
description: "Key-value pairs of fields to update",
|
|
210
|
+
},
|
|
160
211
|
},
|
|
161
212
|
async execute(input, ctx) {
|
|
162
213
|
const { typeName, objectId, properties } = input;
|
|
@@ -168,8 +219,16 @@ export default function bubble(rl) {
|
|
|
168
219
|
rl.registerAction("object.delete", {
|
|
169
220
|
description: "Delete an object",
|
|
170
221
|
inputSchema: {
|
|
171
|
-
typeName: {
|
|
172
|
-
|
|
222
|
+
typeName: {
|
|
223
|
+
type: "string",
|
|
224
|
+
required: true,
|
|
225
|
+
description: "Data type name",
|
|
226
|
+
},
|
|
227
|
+
objectId: {
|
|
228
|
+
type: "string",
|
|
229
|
+
required: true,
|
|
230
|
+
description: "Object unique ID",
|
|
231
|
+
},
|
|
173
232
|
},
|
|
174
233
|
async execute(input, ctx) {
|
|
175
234
|
const { typeName, objectId } = input;
|
|
@@ -50,8 +50,16 @@ export default function chargebee(rl) {
|
|
|
50
50
|
rl.registerAction("customer.create", {
|
|
51
51
|
description: "Create a customer",
|
|
52
52
|
inputSchema: {
|
|
53
|
-
id: {
|
|
54
|
-
|
|
53
|
+
id: {
|
|
54
|
+
type: "string",
|
|
55
|
+
required: false,
|
|
56
|
+
description: "Customer ID (auto-generated if omitted)",
|
|
57
|
+
},
|
|
58
|
+
first_name: {
|
|
59
|
+
type: "string",
|
|
60
|
+
required: false,
|
|
61
|
+
description: "First name",
|
|
62
|
+
},
|
|
55
63
|
last_name: { type: "string", required: false, description: "Last name" },
|
|
56
64
|
email: { type: "string", required: false, description: "Email" },
|
|
57
65
|
phone: { type: "string", required: false, description: "Phone" },
|
|
@@ -68,8 +76,16 @@ export default function chargebee(rl) {
|
|
|
68
76
|
rl.registerAction("invoice.list", {
|
|
69
77
|
description: "List invoices",
|
|
70
78
|
inputSchema: {
|
|
71
|
-
limit: {
|
|
72
|
-
|
|
79
|
+
limit: {
|
|
80
|
+
type: "number",
|
|
81
|
+
required: false,
|
|
82
|
+
description: "Max results (default: 10, max: 100)",
|
|
83
|
+
},
|
|
84
|
+
sortBy: {
|
|
85
|
+
type: "string",
|
|
86
|
+
required: false,
|
|
87
|
+
description: "Sort field (default: date desc)",
|
|
88
|
+
},
|
|
73
89
|
},
|
|
74
90
|
async execute(input, ctx) {
|
|
75
91
|
const { accountName, apiKey } = getConn(ctx);
|
|
@@ -100,8 +116,16 @@ export default function chargebee(rl) {
|
|
|
100
116
|
rl.registerAction("subscription.cancel", {
|
|
101
117
|
description: "Cancel a subscription",
|
|
102
118
|
inputSchema: {
|
|
103
|
-
subscriptionId: {
|
|
104
|
-
|
|
119
|
+
subscriptionId: {
|
|
120
|
+
type: "string",
|
|
121
|
+
required: true,
|
|
122
|
+
description: "Subscription ID",
|
|
123
|
+
},
|
|
124
|
+
endOfTerm: {
|
|
125
|
+
type: "boolean",
|
|
126
|
+
required: false,
|
|
127
|
+
description: "Schedule cancellation at end of term instead of immediate",
|
|
128
|
+
},
|
|
105
129
|
},
|
|
106
130
|
async execute(input, ctx) {
|
|
107
131
|
const { subscriptionId, endOfTerm } = input;
|
|
@@ -115,7 +139,11 @@ export default function chargebee(rl) {
|
|
|
115
139
|
rl.registerAction("subscription.delete", {
|
|
116
140
|
description: "Delete a subscription",
|
|
117
141
|
inputSchema: {
|
|
118
|
-
subscriptionId: {
|
|
142
|
+
subscriptionId: {
|
|
143
|
+
type: "string",
|
|
144
|
+
required: true,
|
|
145
|
+
description: "Subscription ID",
|
|
146
|
+
},
|
|
119
147
|
},
|
|
120
148
|
async execute(input, ctx) {
|
|
121
149
|
const { subscriptionId } = input;
|
|
@@ -58,9 +58,21 @@ export default function circleci(rl) {
|
|
|
58
58
|
rl.registerAction("pipeline.get", {
|
|
59
59
|
description: "Get a specific pipeline by number",
|
|
60
60
|
inputSchema: {
|
|
61
|
-
vcs: {
|
|
62
|
-
|
|
63
|
-
|
|
61
|
+
vcs: {
|
|
62
|
+
type: "string",
|
|
63
|
+
required: true,
|
|
64
|
+
description: "VCS type: github or bitbucket",
|
|
65
|
+
},
|
|
66
|
+
projectSlug: {
|
|
67
|
+
type: "string",
|
|
68
|
+
required: true,
|
|
69
|
+
description: "Project slug (org/repo)",
|
|
70
|
+
},
|
|
71
|
+
pipelineNumber: {
|
|
72
|
+
type: "number",
|
|
73
|
+
required: true,
|
|
74
|
+
description: "Pipeline number",
|
|
75
|
+
},
|
|
64
76
|
},
|
|
65
77
|
async execute(input, ctx) {
|
|
66
78
|
const { vcs, projectSlug, pipelineNumber } = input;
|
|
@@ -70,10 +82,26 @@ export default function circleci(rl) {
|
|
|
70
82
|
rl.registerAction("pipeline.list", {
|
|
71
83
|
description: "List pipelines for a project",
|
|
72
84
|
inputSchema: {
|
|
73
|
-
vcs: {
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
85
|
+
vcs: {
|
|
86
|
+
type: "string",
|
|
87
|
+
required: true,
|
|
88
|
+
description: "VCS type: github or bitbucket",
|
|
89
|
+
},
|
|
90
|
+
projectSlug: {
|
|
91
|
+
type: "string",
|
|
92
|
+
required: true,
|
|
93
|
+
description: "Project slug (org/repo)",
|
|
94
|
+
},
|
|
95
|
+
branch: {
|
|
96
|
+
type: "string",
|
|
97
|
+
required: false,
|
|
98
|
+
description: "Filter by branch",
|
|
99
|
+
},
|
|
100
|
+
limit: {
|
|
101
|
+
type: "number",
|
|
102
|
+
required: false,
|
|
103
|
+
description: "Max results (omit for all)",
|
|
104
|
+
},
|
|
77
105
|
},
|
|
78
106
|
async execute(input, ctx) {
|
|
79
107
|
const { vcs, projectSlug, branch, limit } = (input ?? {});
|
|
@@ -93,9 +121,21 @@ export default function circleci(rl) {
|
|
|
93
121
|
rl.registerAction("pipeline.trigger", {
|
|
94
122
|
description: "Trigger a new pipeline",
|
|
95
123
|
inputSchema: {
|
|
96
|
-
vcs: {
|
|
97
|
-
|
|
98
|
-
|
|
124
|
+
vcs: {
|
|
125
|
+
type: "string",
|
|
126
|
+
required: true,
|
|
127
|
+
description: "VCS type: github or bitbucket",
|
|
128
|
+
},
|
|
129
|
+
projectSlug: {
|
|
130
|
+
type: "string",
|
|
131
|
+
required: true,
|
|
132
|
+
description: "Project slug (org/repo)",
|
|
133
|
+
},
|
|
134
|
+
branch: {
|
|
135
|
+
type: "string",
|
|
136
|
+
required: false,
|
|
137
|
+
description: "Branch to build",
|
|
138
|
+
},
|
|
99
139
|
tag: { type: "string", required: false, description: "Tag to build" },
|
|
100
140
|
},
|
|
101
141
|
async execute(input, ctx) {
|