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
|
@@ -36,15 +36,39 @@ export default function bannerbear(rl) {
|
|
|
36
36
|
rl.registerAction("image.create", {
|
|
37
37
|
description: "Create an image from a template",
|
|
38
38
|
inputSchema: {
|
|
39
|
-
templateId: {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
39
|
+
templateId: {
|
|
40
|
+
type: "string",
|
|
41
|
+
required: true,
|
|
42
|
+
description: "Template UID",
|
|
43
|
+
},
|
|
44
|
+
modifications: {
|
|
45
|
+
type: "array",
|
|
46
|
+
required: false,
|
|
47
|
+
description: "Array of modification objects (name, text, color, image_url, etc.)",
|
|
48
|
+
},
|
|
49
|
+
webhookUrl: {
|
|
50
|
+
type: "string",
|
|
51
|
+
required: false,
|
|
52
|
+
description: "Webhook URL to notify on completion",
|
|
53
|
+
},
|
|
54
|
+
metadata: {
|
|
55
|
+
type: "string",
|
|
56
|
+
required: false,
|
|
57
|
+
description: "Custom metadata string",
|
|
58
|
+
},
|
|
59
|
+
waitForImage: {
|
|
60
|
+
type: "boolean",
|
|
61
|
+
required: false,
|
|
62
|
+
description: "Wait for image to finish processing (polls until complete)",
|
|
63
|
+
},
|
|
64
|
+
maxTries: {
|
|
65
|
+
type: "number",
|
|
66
|
+
required: false,
|
|
67
|
+
description: "Max poll attempts when waiting (default: 3)",
|
|
68
|
+
},
|
|
45
69
|
},
|
|
46
70
|
async execute(input, ctx) {
|
|
47
|
-
const { templateId, modifications, webhookUrl, metadata, waitForImage, maxTries = 3 } = (input ?? {});
|
|
71
|
+
const { templateId, modifications, webhookUrl, metadata, waitForImage, maxTries = 3, } = (input ?? {});
|
|
48
72
|
const apiKey = getKey(ctx);
|
|
49
73
|
const body = { template: templateId };
|
|
50
74
|
if (modifications)
|
|
@@ -84,7 +108,11 @@ export default function bannerbear(rl) {
|
|
|
84
108
|
rl.registerAction("template.get", {
|
|
85
109
|
description: "Get a template by ID",
|
|
86
110
|
inputSchema: {
|
|
87
|
-
templateId: {
|
|
111
|
+
templateId: {
|
|
112
|
+
type: "string",
|
|
113
|
+
required: true,
|
|
114
|
+
description: "Template UID",
|
|
115
|
+
},
|
|
88
116
|
},
|
|
89
117
|
async execute(input, ctx) {
|
|
90
118
|
const { templateId } = input;
|
|
@@ -73,7 +73,11 @@ export default function baserow(rl) {
|
|
|
73
73
|
description: "Create a row in a table",
|
|
74
74
|
inputSchema: {
|
|
75
75
|
tableId: { type: "string", required: true, description: "Table ID" },
|
|
76
|
-
fields: {
|
|
76
|
+
fields: {
|
|
77
|
+
type: "object",
|
|
78
|
+
required: true,
|
|
79
|
+
description: "Field values as key-value pairs (use field_N keys or field names)",
|
|
80
|
+
},
|
|
77
81
|
},
|
|
78
82
|
async execute(input, ctx) {
|
|
79
83
|
const { tableId, fields } = input;
|
|
@@ -98,8 +102,16 @@ export default function baserow(rl) {
|
|
|
98
102
|
inputSchema: {
|
|
99
103
|
tableId: { type: "string", required: true, description: "Table ID" },
|
|
100
104
|
search: { type: "string", required: false, description: "Search query" },
|
|
101
|
-
orderBy: {
|
|
102
|
-
|
|
105
|
+
orderBy: {
|
|
106
|
+
type: "string",
|
|
107
|
+
required: false,
|
|
108
|
+
description: "Comma-separated field IDs prefixed with +/- (e.g. +field_1,-field_2)",
|
|
109
|
+
},
|
|
110
|
+
limit: {
|
|
111
|
+
type: "number",
|
|
112
|
+
required: false,
|
|
113
|
+
description: "Max results to return",
|
|
114
|
+
},
|
|
103
115
|
},
|
|
104
116
|
async execute(input, ctx) {
|
|
105
117
|
const { tableId, search, orderBy, limit } = input;
|
|
@@ -117,7 +129,11 @@ export default function baserow(rl) {
|
|
|
117
129
|
inputSchema: {
|
|
118
130
|
tableId: { type: "string", required: true, description: "Table ID" },
|
|
119
131
|
rowId: { type: "string", required: true, description: "Row ID" },
|
|
120
|
-
fields: {
|
|
132
|
+
fields: {
|
|
133
|
+
type: "object",
|
|
134
|
+
required: true,
|
|
135
|
+
description: "Fields to update",
|
|
136
|
+
},
|
|
121
137
|
},
|
|
122
138
|
async execute(input, ctx) {
|
|
123
139
|
const { tableId, rowId, fields } = input;
|
|
@@ -142,7 +158,11 @@ export default function baserow(rl) {
|
|
|
142
158
|
description: "Create up to 200 rows in one request",
|
|
143
159
|
inputSchema: {
|
|
144
160
|
tableId: { type: "string", required: true, description: "Table ID" },
|
|
145
|
-
items: {
|
|
161
|
+
items: {
|
|
162
|
+
type: "array",
|
|
163
|
+
required: true,
|
|
164
|
+
description: "Array of row objects with field values",
|
|
165
|
+
},
|
|
146
166
|
},
|
|
147
167
|
async execute(input, ctx) {
|
|
148
168
|
const { tableId, items } = input;
|
|
@@ -154,7 +174,11 @@ export default function baserow(rl) {
|
|
|
154
174
|
description: "Update up to 200 rows in one request",
|
|
155
175
|
inputSchema: {
|
|
156
176
|
tableId: { type: "string", required: true, description: "Table ID" },
|
|
157
|
-
items: {
|
|
177
|
+
items: {
|
|
178
|
+
type: "array",
|
|
179
|
+
required: true,
|
|
180
|
+
description: "Array of { id, ...fields } objects",
|
|
181
|
+
},
|
|
158
182
|
},
|
|
159
183
|
async execute(input, ctx) {
|
|
160
184
|
const { tableId, items } = input;
|
|
@@ -166,7 +190,11 @@ export default function baserow(rl) {
|
|
|
166
190
|
description: "Delete up to 200 rows in one request",
|
|
167
191
|
inputSchema: {
|
|
168
192
|
tableId: { type: "string", required: true, description: "Table ID" },
|
|
169
|
-
rowIds: {
|
|
193
|
+
rowIds: {
|
|
194
|
+
type: "array",
|
|
195
|
+
required: true,
|
|
196
|
+
description: "Array of row IDs to delete",
|
|
197
|
+
},
|
|
170
198
|
},
|
|
171
199
|
async execute(input, ctx) {
|
|
172
200
|
const { tableId, rowIds } = input;
|
|
@@ -12,7 +12,10 @@ async function apiRequest(token, method, endpoint, body, qs) {
|
|
|
12
12
|
method,
|
|
13
13
|
headers: { "Content-Type": "application/json" },
|
|
14
14
|
};
|
|
15
|
-
if (body &&
|
|
15
|
+
if (body &&
|
|
16
|
+
Object.keys(body).length > 0 &&
|
|
17
|
+
method !== "GET" &&
|
|
18
|
+
method !== "DELETE") {
|
|
16
19
|
opts.body = JSON.stringify(body);
|
|
17
20
|
}
|
|
18
21
|
const res = await fetch(url.toString(), opts);
|
|
@@ -29,7 +32,10 @@ async function paginateAll(token, endpoint, qs) {
|
|
|
29
32
|
const results = [];
|
|
30
33
|
let page = 1;
|
|
31
34
|
while (true) {
|
|
32
|
-
const data = (await apiRequest(token, "GET", endpoint, undefined, {
|
|
35
|
+
const data = (await apiRequest(token, "GET", endpoint, undefined, {
|
|
36
|
+
...qs,
|
|
37
|
+
page,
|
|
38
|
+
}));
|
|
33
39
|
if (!Array.isArray(data) || data.length === 0)
|
|
34
40
|
break;
|
|
35
41
|
results.push(...data);
|
|
@@ -57,9 +63,17 @@ export default function beeminder(rl) {
|
|
|
57
63
|
inputSchema: {
|
|
58
64
|
goalName: { type: "string", required: true, description: "Goal slug" },
|
|
59
65
|
value: { type: "number", required: true, description: "Datapoint value" },
|
|
60
|
-
timestamp: {
|
|
66
|
+
timestamp: {
|
|
67
|
+
type: "number",
|
|
68
|
+
required: false,
|
|
69
|
+
description: "Unix timestamp (default: now)",
|
|
70
|
+
},
|
|
61
71
|
comment: { type: "string", required: false, description: "Comment" },
|
|
62
|
-
requestid: {
|
|
72
|
+
requestid: {
|
|
73
|
+
type: "string",
|
|
74
|
+
required: false,
|
|
75
|
+
description: "Unique ID to prevent duplicates",
|
|
76
|
+
},
|
|
63
77
|
},
|
|
64
78
|
async execute(input, ctx) {
|
|
65
79
|
const { goalName, ...body } = input;
|
|
@@ -70,7 +84,11 @@ export default function beeminder(rl) {
|
|
|
70
84
|
description: "Create multiple datapoints at once",
|
|
71
85
|
inputSchema: {
|
|
72
86
|
goalName: { type: "string", required: true, description: "Goal slug" },
|
|
73
|
-
datapoints: {
|
|
87
|
+
datapoints: {
|
|
88
|
+
type: "array",
|
|
89
|
+
required: true,
|
|
90
|
+
description: "Array of {value, timestamp?, comment?, requestid?}",
|
|
91
|
+
},
|
|
74
92
|
},
|
|
75
93
|
async execute(input, ctx) {
|
|
76
94
|
const { goalName, datapoints } = input;
|
|
@@ -81,7 +99,11 @@ export default function beeminder(rl) {
|
|
|
81
99
|
description: "Get a single datapoint",
|
|
82
100
|
inputSchema: {
|
|
83
101
|
goalName: { type: "string", required: true, description: "Goal slug" },
|
|
84
|
-
datapointId: {
|
|
102
|
+
datapointId: {
|
|
103
|
+
type: "string",
|
|
104
|
+
required: true,
|
|
105
|
+
description: "Datapoint ID",
|
|
106
|
+
},
|
|
85
107
|
},
|
|
86
108
|
async execute(input, ctx) {
|
|
87
109
|
const { goalName, datapointId } = input;
|
|
@@ -92,9 +114,21 @@ export default function beeminder(rl) {
|
|
|
92
114
|
description: "List datapoints for a goal",
|
|
93
115
|
inputSchema: {
|
|
94
116
|
goalName: { type: "string", required: true, description: "Goal slug" },
|
|
95
|
-
sort: {
|
|
96
|
-
|
|
97
|
-
|
|
117
|
+
sort: {
|
|
118
|
+
type: "string",
|
|
119
|
+
required: false,
|
|
120
|
+
description: "Sort attribute (default: id)",
|
|
121
|
+
},
|
|
122
|
+
limit: {
|
|
123
|
+
type: "number",
|
|
124
|
+
required: false,
|
|
125
|
+
description: "Max results (omit for all)",
|
|
126
|
+
},
|
|
127
|
+
page: {
|
|
128
|
+
type: "number",
|
|
129
|
+
required: false,
|
|
130
|
+
description: "Page number (1-indexed)",
|
|
131
|
+
},
|
|
98
132
|
per: { type: "number", required: false, description: "Results per page" },
|
|
99
133
|
},
|
|
100
134
|
async execute(input, ctx) {
|
|
@@ -118,10 +152,18 @@ export default function beeminder(rl) {
|
|
|
118
152
|
description: "Update a datapoint",
|
|
119
153
|
inputSchema: {
|
|
120
154
|
goalName: { type: "string", required: true, description: "Goal slug" },
|
|
121
|
-
datapointId: {
|
|
155
|
+
datapointId: {
|
|
156
|
+
type: "string",
|
|
157
|
+
required: true,
|
|
158
|
+
description: "Datapoint ID",
|
|
159
|
+
},
|
|
122
160
|
value: { type: "number", required: false, description: "New value" },
|
|
123
161
|
comment: { type: "string", required: false, description: "New comment" },
|
|
124
|
-
timestamp: {
|
|
162
|
+
timestamp: {
|
|
163
|
+
type: "number",
|
|
164
|
+
required: false,
|
|
165
|
+
description: "New unix timestamp",
|
|
166
|
+
},
|
|
125
167
|
},
|
|
126
168
|
async execute(input, ctx) {
|
|
127
169
|
const { goalName, datapointId, ...body } = input;
|
|
@@ -132,7 +174,11 @@ export default function beeminder(rl) {
|
|
|
132
174
|
description: "Delete a datapoint",
|
|
133
175
|
inputSchema: {
|
|
134
176
|
goalName: { type: "string", required: true, description: "Goal slug" },
|
|
135
|
-
datapointId: {
|
|
177
|
+
datapointId: {
|
|
178
|
+
type: "string",
|
|
179
|
+
required: true,
|
|
180
|
+
description: "Datapoint ID",
|
|
181
|
+
},
|
|
136
182
|
},
|
|
137
183
|
async execute(input, ctx) {
|
|
138
184
|
const { goalName, datapointId } = input;
|
|
@@ -144,8 +190,16 @@ export default function beeminder(rl) {
|
|
|
144
190
|
description: "Create a charge (pay money to Beeminder)",
|
|
145
191
|
inputSchema: {
|
|
146
192
|
amount: { type: "number", required: true, description: "Amount in USD" },
|
|
147
|
-
note: {
|
|
148
|
-
|
|
193
|
+
note: {
|
|
194
|
+
type: "string",
|
|
195
|
+
required: false,
|
|
196
|
+
description: "Charge explanation",
|
|
197
|
+
},
|
|
198
|
+
dryrun: {
|
|
199
|
+
type: "boolean",
|
|
200
|
+
required: false,
|
|
201
|
+
description: "Test without actually charging",
|
|
202
|
+
},
|
|
149
203
|
},
|
|
150
204
|
async execute(input, ctx) {
|
|
151
205
|
const { amount, note, dryrun } = input;
|
|
@@ -161,19 +215,63 @@ export default function beeminder(rl) {
|
|
|
161
215
|
rl.registerAction("goal.create", {
|
|
162
216
|
description: "Create a new goal",
|
|
163
217
|
inputSchema: {
|
|
164
|
-
slug: {
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
218
|
+
slug: {
|
|
219
|
+
type: "string",
|
|
220
|
+
required: true,
|
|
221
|
+
description: "Goal slug (unique identifier)",
|
|
222
|
+
},
|
|
223
|
+
title: {
|
|
224
|
+
type: "string",
|
|
225
|
+
required: true,
|
|
226
|
+
description: "Human-readable title",
|
|
227
|
+
},
|
|
228
|
+
goal_type: {
|
|
229
|
+
type: "string",
|
|
230
|
+
required: true,
|
|
231
|
+
description: "Goal type: hustler, biker, fatloser, gainer, inboxer, drinker, custom",
|
|
232
|
+
},
|
|
233
|
+
gunits: {
|
|
234
|
+
type: "string",
|
|
235
|
+
required: true,
|
|
236
|
+
description: "Units (e.g. hours, pages, pounds)",
|
|
237
|
+
},
|
|
238
|
+
goaldate: {
|
|
239
|
+
type: "number",
|
|
240
|
+
required: false,
|
|
241
|
+
description: "Target date (unix timestamp)",
|
|
242
|
+
},
|
|
169
243
|
goalval: { type: "number", required: false, description: "Target value" },
|
|
170
|
-
rate: {
|
|
171
|
-
|
|
244
|
+
rate: {
|
|
245
|
+
type: "number",
|
|
246
|
+
required: false,
|
|
247
|
+
description: "Rate (units per day)",
|
|
248
|
+
},
|
|
249
|
+
initval: {
|
|
250
|
+
type: "number",
|
|
251
|
+
required: false,
|
|
252
|
+
description: "Initial value (default: 0)",
|
|
253
|
+
},
|
|
172
254
|
secret: { type: "boolean", required: false, description: "Secret goal" },
|
|
173
|
-
datapublic: {
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
255
|
+
datapublic: {
|
|
256
|
+
type: "boolean",
|
|
257
|
+
required: false,
|
|
258
|
+
description: "Public data",
|
|
259
|
+
},
|
|
260
|
+
datasource: {
|
|
261
|
+
type: "string",
|
|
262
|
+
required: false,
|
|
263
|
+
description: "Data source: api, ifttt, zapier, manual",
|
|
264
|
+
},
|
|
265
|
+
dryrun: {
|
|
266
|
+
type: "boolean",
|
|
267
|
+
required: false,
|
|
268
|
+
description: "Test without creating",
|
|
269
|
+
},
|
|
270
|
+
tags: {
|
|
271
|
+
type: "array",
|
|
272
|
+
required: false,
|
|
273
|
+
description: "Array of tag strings",
|
|
274
|
+
},
|
|
177
275
|
},
|
|
178
276
|
async execute(input, ctx) {
|
|
179
277
|
return apiRequest(getToken(ctx), "POST", "/users/me/goals.json", input);
|
|
@@ -183,8 +281,16 @@ export default function beeminder(rl) {
|
|
|
183
281
|
description: "Get a specific goal",
|
|
184
282
|
inputSchema: {
|
|
185
283
|
goalName: { type: "string", required: true, description: "Goal slug" },
|
|
186
|
-
datapoints: {
|
|
187
|
-
|
|
284
|
+
datapoints: {
|
|
285
|
+
type: "boolean",
|
|
286
|
+
required: false,
|
|
287
|
+
description: "Include datapoints",
|
|
288
|
+
},
|
|
289
|
+
emaciated: {
|
|
290
|
+
type: "boolean",
|
|
291
|
+
required: false,
|
|
292
|
+
description: "Strip road/roadall/fullroad attributes",
|
|
293
|
+
},
|
|
188
294
|
},
|
|
189
295
|
async execute(input, ctx) {
|
|
190
296
|
const { goalName, ...qs } = input;
|
|
@@ -194,7 +300,11 @@ export default function beeminder(rl) {
|
|
|
194
300
|
rl.registerAction("goal.list", {
|
|
195
301
|
description: "List all goals",
|
|
196
302
|
inputSchema: {
|
|
197
|
-
emaciated: {
|
|
303
|
+
emaciated: {
|
|
304
|
+
type: "boolean",
|
|
305
|
+
required: false,
|
|
306
|
+
description: "Strip road attributes",
|
|
307
|
+
},
|
|
198
308
|
},
|
|
199
309
|
async execute(input, ctx) {
|
|
200
310
|
const qs = (input ?? {});
|
|
@@ -204,7 +314,11 @@ export default function beeminder(rl) {
|
|
|
204
314
|
rl.registerAction("goal.listArchived", {
|
|
205
315
|
description: "List archived goals",
|
|
206
316
|
inputSchema: {
|
|
207
|
-
emaciated: {
|
|
317
|
+
emaciated: {
|
|
318
|
+
type: "boolean",
|
|
319
|
+
required: false,
|
|
320
|
+
description: "Strip road attributes",
|
|
321
|
+
},
|
|
208
322
|
},
|
|
209
323
|
async execute(input, ctx) {
|
|
210
324
|
const qs = (input ?? {});
|
|
@@ -217,13 +331,37 @@ export default function beeminder(rl) {
|
|
|
217
331
|
goalName: { type: "string", required: true, description: "Goal slug" },
|
|
218
332
|
title: { type: "string", required: false, description: "New title" },
|
|
219
333
|
yaxis: { type: "string", required: false, description: "Y-axis label" },
|
|
220
|
-
tmin: {
|
|
221
|
-
|
|
334
|
+
tmin: {
|
|
335
|
+
type: "string",
|
|
336
|
+
required: false,
|
|
337
|
+
description: "Min date (yyyy-mm-dd)",
|
|
338
|
+
},
|
|
339
|
+
tmax: {
|
|
340
|
+
type: "string",
|
|
341
|
+
required: false,
|
|
342
|
+
description: "Max date (yyyy-mm-dd)",
|
|
343
|
+
},
|
|
222
344
|
secret: { type: "boolean", required: false, description: "Secret goal" },
|
|
223
|
-
datapublic: {
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
345
|
+
datapublic: {
|
|
346
|
+
type: "boolean",
|
|
347
|
+
required: false,
|
|
348
|
+
description: "Public data",
|
|
349
|
+
},
|
|
350
|
+
roadall: {
|
|
351
|
+
type: "array",
|
|
352
|
+
required: false,
|
|
353
|
+
description: "Road matrix [[date, value, rate], ...]",
|
|
354
|
+
},
|
|
355
|
+
datasource: {
|
|
356
|
+
type: "string",
|
|
357
|
+
required: false,
|
|
358
|
+
description: "Data source",
|
|
359
|
+
},
|
|
360
|
+
tags: {
|
|
361
|
+
type: "array",
|
|
362
|
+
required: false,
|
|
363
|
+
description: "Array of tag strings",
|
|
364
|
+
},
|
|
227
365
|
},
|
|
228
366
|
async execute(input, ctx) {
|
|
229
367
|
const { goalName, ...body } = input;
|
|
@@ -284,11 +422,31 @@ export default function beeminder(rl) {
|
|
|
284
422
|
rl.registerAction("user.get", {
|
|
285
423
|
description: "Get current user information",
|
|
286
424
|
inputSchema: {
|
|
287
|
-
associations: {
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
425
|
+
associations: {
|
|
426
|
+
type: "boolean",
|
|
427
|
+
required: false,
|
|
428
|
+
description: "Include associations",
|
|
429
|
+
},
|
|
430
|
+
diff_since: {
|
|
431
|
+
type: "number",
|
|
432
|
+
required: false,
|
|
433
|
+
description: "Unix timestamp — only return goals/datapoints changed since",
|
|
434
|
+
},
|
|
435
|
+
skinny: {
|
|
436
|
+
type: "boolean",
|
|
437
|
+
required: false,
|
|
438
|
+
description: "Minimal user data",
|
|
439
|
+
},
|
|
440
|
+
emaciated: {
|
|
441
|
+
type: "boolean",
|
|
442
|
+
required: false,
|
|
443
|
+
description: "Strip road attributes from goals",
|
|
444
|
+
},
|
|
445
|
+
datapoints_count: {
|
|
446
|
+
type: "number",
|
|
447
|
+
required: false,
|
|
448
|
+
description: "Number of datapoints to include",
|
|
449
|
+
},
|
|
292
450
|
},
|
|
293
451
|
async execute(input, ctx) {
|
|
294
452
|
const qs = (input ?? {});
|
|
@@ -7,7 +7,10 @@ async function apiRequest(token, method, endpoint, body) {
|
|
|
7
7
|
Authorization: `Bearer ${token}`,
|
|
8
8
|
},
|
|
9
9
|
};
|
|
10
|
-
if (body &&
|
|
10
|
+
if (body &&
|
|
11
|
+
Object.keys(body).length > 0 &&
|
|
12
|
+
method !== "GET" &&
|
|
13
|
+
method !== "DELETE") {
|
|
11
14
|
opts.body = JSON.stringify(body);
|
|
12
15
|
}
|
|
13
16
|
const res = await fetch(`${BASE_URL}${endpoint}`, opts);
|
|
@@ -34,11 +37,27 @@ export default function bitly(rl) {
|
|
|
34
37
|
rl.registerAction("link.create", {
|
|
35
38
|
description: "Create a shortened link (bitlink)",
|
|
36
39
|
inputSchema: {
|
|
37
|
-
longUrl: {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
+
longUrl: {
|
|
41
|
+
type: "string",
|
|
42
|
+
required: true,
|
|
43
|
+
description: "Long URL to shorten",
|
|
44
|
+
},
|
|
45
|
+
title: {
|
|
46
|
+
type: "string",
|
|
47
|
+
required: false,
|
|
48
|
+
description: "Title for the link",
|
|
49
|
+
},
|
|
50
|
+
domain: {
|
|
51
|
+
type: "string",
|
|
52
|
+
required: false,
|
|
53
|
+
description: "Custom domain (default: bit.ly)",
|
|
54
|
+
},
|
|
40
55
|
group: { type: "string", required: false, description: "Group GUID" },
|
|
41
|
-
tags: {
|
|
56
|
+
tags: {
|
|
57
|
+
type: "array",
|
|
58
|
+
required: false,
|
|
59
|
+
description: "Array of tag strings",
|
|
60
|
+
},
|
|
42
61
|
deeplinks: {
|
|
43
62
|
type: "array",
|
|
44
63
|
required: false,
|
|
@@ -46,7 +65,8 @@ export default function bitly(rl) {
|
|
|
46
65
|
},
|
|
47
66
|
},
|
|
48
67
|
async execute(input, ctx) {
|
|
49
|
-
const { longUrl, title, domain, group, tags, deeplinks } = (input ??
|
|
68
|
+
const { longUrl, title, domain, group, tags, deeplinks } = (input ??
|
|
69
|
+
{});
|
|
50
70
|
const body = { long_url: longUrl };
|
|
51
71
|
if (title)
|
|
52
72
|
body.title = title;
|
|
@@ -64,7 +84,11 @@ export default function bitly(rl) {
|
|
|
64
84
|
rl.registerAction("link.get", {
|
|
65
85
|
description: "Get a bitlink by ID",
|
|
66
86
|
inputSchema: {
|
|
67
|
-
bitlink: {
|
|
87
|
+
bitlink: {
|
|
88
|
+
type: "string",
|
|
89
|
+
required: true,
|
|
90
|
+
description: "Bitlink (e.g. bit.ly/22u3ypK)",
|
|
91
|
+
},
|
|
68
92
|
},
|
|
69
93
|
async execute(input, ctx) {
|
|
70
94
|
const { bitlink } = input;
|
|
@@ -74,12 +98,24 @@ export default function bitly(rl) {
|
|
|
74
98
|
rl.registerAction("link.update", {
|
|
75
99
|
description: "Update a bitlink",
|
|
76
100
|
inputSchema: {
|
|
77
|
-
bitlink: {
|
|
101
|
+
bitlink: {
|
|
102
|
+
type: "string",
|
|
103
|
+
required: true,
|
|
104
|
+
description: "Bitlink (e.g. bit.ly/22u3ypK)",
|
|
105
|
+
},
|
|
78
106
|
longUrl: { type: "string", required: false, description: "New long URL" },
|
|
79
107
|
title: { type: "string", required: false, description: "New title" },
|
|
80
|
-
archived: {
|
|
108
|
+
archived: {
|
|
109
|
+
type: "boolean",
|
|
110
|
+
required: false,
|
|
111
|
+
description: "Archive the link",
|
|
112
|
+
},
|
|
81
113
|
group: { type: "string", required: false, description: "Group GUID" },
|
|
82
|
-
tags: {
|
|
114
|
+
tags: {
|
|
115
|
+
type: "array",
|
|
116
|
+
required: false,
|
|
117
|
+
description: "Array of tag strings",
|
|
118
|
+
},
|
|
83
119
|
deeplinks: {
|
|
84
120
|
type: "array",
|
|
85
121
|
required: false,
|