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
|
@@ -7,8 +7,17 @@ async function apiRequest(token, method, endpoint, body, qs) {
|
|
|
7
7
|
url.searchParams.set(k, String(v));
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
|
-
const opts = {
|
|
11
|
-
|
|
10
|
+
const opts = {
|
|
11
|
+
method,
|
|
12
|
+
headers: {
|
|
13
|
+
Authorization: `Bearer ${token}`,
|
|
14
|
+
"Content-Type": "application/json",
|
|
15
|
+
},
|
|
16
|
+
};
|
|
17
|
+
if (body &&
|
|
18
|
+
Object.keys(body).length > 0 &&
|
|
19
|
+
method !== "GET" &&
|
|
20
|
+
method !== "DELETE")
|
|
12
21
|
opts.body = JSON.stringify(body);
|
|
13
22
|
const res = await fetch(url.toString(), opts);
|
|
14
23
|
if (!res.ok)
|
|
@@ -37,18 +46,43 @@ export default function keap(rl) {
|
|
|
37
46
|
rl.setName("keap");
|
|
38
47
|
rl.setVersion("0.1.0");
|
|
39
48
|
rl.setConnectionSchema({
|
|
40
|
-
accessToken: {
|
|
49
|
+
accessToken: {
|
|
50
|
+
type: "string",
|
|
51
|
+
required: true,
|
|
52
|
+
description: "Keap OAuth2 access token",
|
|
53
|
+
env: "KEAP_ACCESS_TOKEN",
|
|
54
|
+
},
|
|
41
55
|
});
|
|
42
56
|
const tok = (ctx) => ctx.connection.config.accessToken;
|
|
43
57
|
// ── Company ─────────────────────────────────────────
|
|
44
58
|
rl.registerAction("company.create", {
|
|
45
59
|
description: "Create a company",
|
|
46
60
|
inputSchema: {
|
|
47
|
-
companyName: {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
61
|
+
companyName: {
|
|
62
|
+
type: "string",
|
|
63
|
+
required: true,
|
|
64
|
+
description: "Company name",
|
|
65
|
+
},
|
|
66
|
+
address: {
|
|
67
|
+
type: "object",
|
|
68
|
+
required: false,
|
|
69
|
+
description: "Address object (line1, line2, locality, region, zip_code, country_code)",
|
|
70
|
+
},
|
|
71
|
+
phone: {
|
|
72
|
+
type: "object",
|
|
73
|
+
required: false,
|
|
74
|
+
description: "Phone object (number, field, type)",
|
|
75
|
+
},
|
|
76
|
+
fax: {
|
|
77
|
+
type: "object",
|
|
78
|
+
required: false,
|
|
79
|
+
description: "Fax object (number, type)",
|
|
80
|
+
},
|
|
81
|
+
additionalFields: {
|
|
82
|
+
type: "object",
|
|
83
|
+
required: false,
|
|
84
|
+
description: "Additional company fields (email_address, website, notes, etc.)",
|
|
85
|
+
},
|
|
52
86
|
},
|
|
53
87
|
async execute(input, ctx) {
|
|
54
88
|
const { companyName, address, phone, fax, additionalFields } = input;
|
|
@@ -67,9 +101,17 @@ export default function keap(rl) {
|
|
|
67
101
|
rl.registerAction("company.list", {
|
|
68
102
|
description: "List companies",
|
|
69
103
|
inputSchema: {
|
|
70
|
-
limit: {
|
|
104
|
+
limit: {
|
|
105
|
+
type: "number",
|
|
106
|
+
required: false,
|
|
107
|
+
description: "Max results (default 50)",
|
|
108
|
+
},
|
|
71
109
|
offset: { type: "number", required: false },
|
|
72
|
-
optionalProperties: {
|
|
110
|
+
optionalProperties: {
|
|
111
|
+
type: "string",
|
|
112
|
+
required: false,
|
|
113
|
+
description: "Comma-separated optional fields to include",
|
|
114
|
+
},
|
|
73
115
|
},
|
|
74
116
|
async execute(input, ctx) {
|
|
75
117
|
const { limit, offset, optionalProperties } = (input ?? {});
|
|
@@ -80,7 +122,7 @@ export default function keap(rl) {
|
|
|
80
122
|
qs.offset = offset;
|
|
81
123
|
if (optionalProperties)
|
|
82
124
|
qs.optional_properties = optionalProperties;
|
|
83
|
-
const data = await apiRequest(tok(ctx), "GET", "/companies", undefined, qs);
|
|
125
|
+
const data = (await apiRequest(tok(ctx), "GET", "/companies", undefined, qs));
|
|
84
126
|
return data.companies;
|
|
85
127
|
},
|
|
86
128
|
});
|
|
@@ -88,19 +130,49 @@ export default function keap(rl) {
|
|
|
88
130
|
rl.registerAction("contact.upsert", {
|
|
89
131
|
description: "Create or update a contact (PUT). Duplicate matching is controlled by duplicate_option.",
|
|
90
132
|
inputSchema: {
|
|
91
|
-
duplicateOption: {
|
|
92
|
-
|
|
133
|
+
duplicateOption: {
|
|
134
|
+
type: "string",
|
|
135
|
+
required: true,
|
|
136
|
+
description: "How to handle duplicates: 'Email', 'EmailAndName', 'EmailAndNameAndCompany'",
|
|
137
|
+
},
|
|
138
|
+
emailAddresses: {
|
|
139
|
+
type: "array",
|
|
140
|
+
required: false,
|
|
141
|
+
description: "Array of {email, field} objects (field: EMAIL1, EMAIL2, EMAIL3)",
|
|
142
|
+
},
|
|
93
143
|
givenName: { type: "string", required: false },
|
|
94
144
|
familyName: { type: "string", required: false },
|
|
95
|
-
phoneNumbers: {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
145
|
+
phoneNumbers: {
|
|
146
|
+
type: "array",
|
|
147
|
+
required: false,
|
|
148
|
+
description: "Array of {number, field, type} objects",
|
|
149
|
+
},
|
|
150
|
+
addresses: {
|
|
151
|
+
type: "array",
|
|
152
|
+
required: false,
|
|
153
|
+
description: "Array of address objects (line1, line2, locality, region, zip_code, country_code, field)",
|
|
154
|
+
},
|
|
155
|
+
faxNumbers: {
|
|
156
|
+
type: "array",
|
|
157
|
+
required: false,
|
|
158
|
+
description: "Array of {number, type} objects",
|
|
159
|
+
},
|
|
160
|
+
socialAccounts: {
|
|
161
|
+
type: "array",
|
|
162
|
+
required: false,
|
|
163
|
+
description: "Array of {name, type} objects",
|
|
164
|
+
},
|
|
165
|
+
additionalFields: {
|
|
166
|
+
type: "object",
|
|
167
|
+
required: false,
|
|
168
|
+
description: "Additional fields: contact_type, job_title, lead_source_id, middle_name, opt_in_reason, owner_id, preferred_locale, preferred_name, source_type, spouse_name, time_zone, website, anniversary, company (as {id: number}), origin (as {ip_address: string})",
|
|
169
|
+
},
|
|
100
170
|
},
|
|
101
171
|
async execute(input, ctx) {
|
|
102
|
-
const { duplicateOption, emailAddresses, givenName, familyName, phoneNumbers, addresses, faxNumbers, socialAccounts, additionalFields } = input;
|
|
103
|
-
const body = {
|
|
172
|
+
const { duplicateOption, emailAddresses, givenName, familyName, phoneNumbers, addresses, faxNumbers, socialAccounts, additionalFields, } = input;
|
|
173
|
+
const body = {
|
|
174
|
+
duplicate_option: duplicateOption,
|
|
175
|
+
};
|
|
104
176
|
if (givenName)
|
|
105
177
|
body.given_name = givenName;
|
|
106
178
|
if (familyName)
|
|
@@ -124,7 +196,11 @@ export default function keap(rl) {
|
|
|
124
196
|
description: "Get a contact by ID",
|
|
125
197
|
inputSchema: {
|
|
126
198
|
contactId: { type: "number", required: true },
|
|
127
|
-
optionalProperties: {
|
|
199
|
+
optionalProperties: {
|
|
200
|
+
type: "string",
|
|
201
|
+
required: false,
|
|
202
|
+
description: "Comma-separated optional fields",
|
|
203
|
+
},
|
|
128
204
|
},
|
|
129
205
|
async execute(input, ctx) {
|
|
130
206
|
const { contactId, optionalProperties } = input;
|
|
@@ -142,7 +218,11 @@ export default function keap(rl) {
|
|
|
142
218
|
givenName: { type: "string", required: false },
|
|
143
219
|
familyName: { type: "string", required: false },
|
|
144
220
|
order: { type: "string", required: false },
|
|
145
|
-
orderDirection: {
|
|
221
|
+
orderDirection: {
|
|
222
|
+
type: "string",
|
|
223
|
+
required: false,
|
|
224
|
+
description: "ASCENDING or DESCENDING",
|
|
225
|
+
},
|
|
146
226
|
since: { type: "string", required: false, description: "ISO date" },
|
|
147
227
|
until: { type: "string", required: false, description: "ISO date" },
|
|
148
228
|
},
|
|
@@ -165,7 +245,7 @@ export default function keap(rl) {
|
|
|
165
245
|
qs.since = p.since;
|
|
166
246
|
if (p.until)
|
|
167
247
|
qs.until = p.until;
|
|
168
|
-
const data = await apiRequest(tok(ctx), "GET", "/contacts", undefined, qs);
|
|
248
|
+
const data = (await apiRequest(tok(ctx), "GET", "/contacts", undefined, qs));
|
|
169
249
|
return data.contacts;
|
|
170
250
|
},
|
|
171
251
|
});
|
|
@@ -181,15 +261,26 @@ export default function keap(rl) {
|
|
|
181
261
|
rl.registerAction("contactNote.create", {
|
|
182
262
|
description: "Create a note on a contact",
|
|
183
263
|
inputSchema: {
|
|
184
|
-
userId: {
|
|
264
|
+
userId: {
|
|
265
|
+
type: "number",
|
|
266
|
+
required: true,
|
|
267
|
+
description: "Keap user ID who is creating the note",
|
|
268
|
+
},
|
|
185
269
|
contactId: { type: "number", required: true },
|
|
186
270
|
body: { type: "string", required: false, description: "Note body text" },
|
|
187
271
|
title: { type: "string", required: false },
|
|
188
|
-
type: {
|
|
272
|
+
type: {
|
|
273
|
+
type: "string",
|
|
274
|
+
required: false,
|
|
275
|
+
description: "Appointment, Call, Email, Fax, Letter, Other",
|
|
276
|
+
},
|
|
189
277
|
},
|
|
190
278
|
async execute(input, ctx) {
|
|
191
|
-
const { userId, contactId, body: noteBody, title, type } = input;
|
|
192
|
-
const b = {
|
|
279
|
+
const { userId, contactId, body: noteBody, title, type, } = input;
|
|
280
|
+
const b = {
|
|
281
|
+
user_id: userId,
|
|
282
|
+
contact_id: contactId,
|
|
283
|
+
};
|
|
193
284
|
if (noteBody)
|
|
194
285
|
b.body = noteBody;
|
|
195
286
|
if (title)
|
|
@@ -202,14 +293,24 @@ export default function keap(rl) {
|
|
|
202
293
|
rl.registerAction("contactNote.get", {
|
|
203
294
|
description: "Get a note",
|
|
204
295
|
inputSchema: { noteId: { type: "number", required: true } },
|
|
205
|
-
async execute(input, ctx) {
|
|
296
|
+
async execute(input, ctx) {
|
|
297
|
+
return apiRequest(tok(ctx), "GET", `/notes/${input.noteId}`);
|
|
298
|
+
},
|
|
206
299
|
});
|
|
207
300
|
rl.registerAction("contactNote.list", {
|
|
208
301
|
description: "List notes (optionally filtered by contact_id, user_id)",
|
|
209
302
|
inputSchema: {
|
|
210
303
|
limit: { type: "number", required: false },
|
|
211
|
-
contactId: {
|
|
212
|
-
|
|
304
|
+
contactId: {
|
|
305
|
+
type: "number",
|
|
306
|
+
required: false,
|
|
307
|
+
description: "Filter by contact",
|
|
308
|
+
},
|
|
309
|
+
userId: {
|
|
310
|
+
type: "number",
|
|
311
|
+
required: false,
|
|
312
|
+
description: "Filter by user",
|
|
313
|
+
},
|
|
213
314
|
},
|
|
214
315
|
async execute(input, ctx) {
|
|
215
316
|
const p = (input ?? {});
|
|
@@ -220,7 +321,7 @@ export default function keap(rl) {
|
|
|
220
321
|
qs.contact_id = p.contactId;
|
|
221
322
|
if (p.userId)
|
|
222
323
|
qs.user_id = p.userId;
|
|
223
|
-
const data = await apiRequest(tok(ctx), "GET", "/notes", undefined, qs);
|
|
324
|
+
const data = (await apiRequest(tok(ctx), "GET", "/notes", undefined, qs));
|
|
224
325
|
return data.notes;
|
|
225
326
|
},
|
|
226
327
|
});
|
|
@@ -257,18 +358,28 @@ export default function keap(rl) {
|
|
|
257
358
|
description: "Apply tags to a contact",
|
|
258
359
|
inputSchema: {
|
|
259
360
|
contactId: { type: "number", required: true },
|
|
260
|
-
tagIds: {
|
|
361
|
+
tagIds: {
|
|
362
|
+
type: "array",
|
|
363
|
+
required: true,
|
|
364
|
+
description: "Array of tag IDs to apply",
|
|
365
|
+
},
|
|
261
366
|
},
|
|
262
367
|
async execute(input, ctx) {
|
|
263
368
|
const { contactId, tagIds } = input;
|
|
264
|
-
return apiRequest(tok(ctx), "POST", `/contacts/${contactId}/tags`, {
|
|
369
|
+
return apiRequest(tok(ctx), "POST", `/contacts/${contactId}/tags`, {
|
|
370
|
+
tagIds,
|
|
371
|
+
});
|
|
265
372
|
},
|
|
266
373
|
});
|
|
267
374
|
rl.registerAction("contactTag.remove", {
|
|
268
375
|
description: "Remove tags from a contact",
|
|
269
376
|
inputSchema: {
|
|
270
377
|
contactId: { type: "number", required: true },
|
|
271
|
-
tagIds: {
|
|
378
|
+
tagIds: {
|
|
379
|
+
type: "string",
|
|
380
|
+
required: true,
|
|
381
|
+
description: "Comma-separated tag IDs to remove",
|
|
382
|
+
},
|
|
272
383
|
},
|
|
273
384
|
async execute(input, ctx) {
|
|
274
385
|
const { contactId, tagIds } = input;
|
|
@@ -287,7 +398,7 @@ export default function keap(rl) {
|
|
|
287
398
|
const qs = {};
|
|
288
399
|
if (limit)
|
|
289
400
|
qs.limit = limit;
|
|
290
|
-
const data = await apiRequest(tok(ctx), "GET", `/contacts/${contactId}/tags`, undefined, qs);
|
|
401
|
+
const data = (await apiRequest(tok(ctx), "GET", `/contacts/${contactId}/tags`, undefined, qs));
|
|
291
402
|
return data.tags;
|
|
292
403
|
},
|
|
293
404
|
});
|
|
@@ -298,13 +409,25 @@ export default function keap(rl) {
|
|
|
298
409
|
contactId: { type: "number", required: true },
|
|
299
410
|
orderDate: { type: "string", required: true, description: "ISO date" },
|
|
300
411
|
orderTitle: { type: "string", required: true },
|
|
301
|
-
orderType: {
|
|
302
|
-
|
|
412
|
+
orderType: {
|
|
413
|
+
type: "string",
|
|
414
|
+
required: true,
|
|
415
|
+
description: "Online, Offline, etc.",
|
|
416
|
+
},
|
|
417
|
+
orderItems: {
|
|
418
|
+
type: "array",
|
|
419
|
+
required: true,
|
|
420
|
+
description: "Array of order item objects (product_id, quantity, price, etc.)",
|
|
421
|
+
},
|
|
303
422
|
shippingAddress: { type: "object", required: false },
|
|
304
|
-
additionalFields: {
|
|
423
|
+
additionalFields: {
|
|
424
|
+
type: "object",
|
|
425
|
+
required: false,
|
|
426
|
+
description: "promo_codes (array), lead_affiliate_id, sale_affiliate_id, etc.",
|
|
427
|
+
},
|
|
305
428
|
},
|
|
306
429
|
async execute(input, ctx) {
|
|
307
|
-
const { contactId, orderDate, orderTitle, orderType, orderItems, shippingAddress, additionalFields } = input;
|
|
430
|
+
const { contactId, orderDate, orderTitle, orderType, orderItems, shippingAddress, additionalFields, } = input;
|
|
308
431
|
const body = {
|
|
309
432
|
contact_id: contactId,
|
|
310
433
|
order_date: orderDate,
|
|
@@ -322,7 +445,9 @@ export default function keap(rl) {
|
|
|
322
445
|
rl.registerAction("order.get", {
|
|
323
446
|
description: "Get an order",
|
|
324
447
|
inputSchema: { orderId: { type: "number", required: true } },
|
|
325
|
-
async execute(input, ctx) {
|
|
448
|
+
async execute(input, ctx) {
|
|
449
|
+
return apiRequest(tok(ctx), "GET", `/orders/${input.orderId}`);
|
|
450
|
+
},
|
|
326
451
|
});
|
|
327
452
|
rl.registerAction("order.list", {
|
|
328
453
|
description: "List orders",
|
|
@@ -343,7 +468,7 @@ export default function keap(rl) {
|
|
|
343
468
|
qs.since = p.since;
|
|
344
469
|
if (p.until)
|
|
345
470
|
qs.until = p.until;
|
|
346
|
-
const data = await apiRequest(tok(ctx), "GET", "/orders", undefined, qs);
|
|
471
|
+
const data = (await apiRequest(tok(ctx), "GET", "/orders", undefined, qs));
|
|
347
472
|
return data.orders;
|
|
348
473
|
},
|
|
349
474
|
});
|
|
@@ -360,7 +485,11 @@ export default function keap(rl) {
|
|
|
360
485
|
description: "Create a product",
|
|
361
486
|
inputSchema: {
|
|
362
487
|
productName: { type: "string", required: true },
|
|
363
|
-
additionalFields: {
|
|
488
|
+
additionalFields: {
|
|
489
|
+
type: "object",
|
|
490
|
+
required: false,
|
|
491
|
+
description: "product_price, product_desc, sku, etc.",
|
|
492
|
+
},
|
|
364
493
|
},
|
|
365
494
|
async execute(input, ctx) {
|
|
366
495
|
const { productName, additionalFields } = input;
|
|
@@ -373,7 +502,9 @@ export default function keap(rl) {
|
|
|
373
502
|
rl.registerAction("product.get", {
|
|
374
503
|
description: "Get a product",
|
|
375
504
|
inputSchema: { productId: { type: "number", required: true } },
|
|
376
|
-
async execute(input, ctx) {
|
|
505
|
+
async execute(input, ctx) {
|
|
506
|
+
return apiRequest(tok(ctx), "GET", `/products/${input.productId}`);
|
|
507
|
+
},
|
|
377
508
|
});
|
|
378
509
|
rl.registerAction("product.list", {
|
|
379
510
|
description: "List products",
|
|
@@ -382,7 +513,7 @@ export default function keap(rl) {
|
|
|
382
513
|
const qs = {};
|
|
383
514
|
if (input?.limit)
|
|
384
515
|
qs.limit = input.limit;
|
|
385
|
-
const data = await apiRequest(tok(ctx), "GET", "/products", undefined, qs);
|
|
516
|
+
const data = (await apiRequest(tok(ctx), "GET", "/products", undefined, qs));
|
|
386
517
|
return data.products;
|
|
387
518
|
},
|
|
388
519
|
});
|
|
@@ -400,11 +531,18 @@ export default function keap(rl) {
|
|
|
400
531
|
inputSchema: {
|
|
401
532
|
sentFromAddress: { type: "string", required: true },
|
|
402
533
|
sentToAddress: { type: "string", required: true },
|
|
403
|
-
additionalFields: {
|
|
534
|
+
additionalFields: {
|
|
535
|
+
type: "object",
|
|
536
|
+
required: false,
|
|
537
|
+
description: "subject, sent_date, received_date, headers, html_content, plain_content, etc.",
|
|
538
|
+
},
|
|
404
539
|
},
|
|
405
540
|
async execute(input, ctx) {
|
|
406
541
|
const { sentFromAddress, sentToAddress, additionalFields } = input;
|
|
407
|
-
const body = {
|
|
542
|
+
const body = {
|
|
543
|
+
sent_to_address: sentToAddress,
|
|
544
|
+
sent_from_address: sentFromAddress,
|
|
545
|
+
};
|
|
408
546
|
if (additionalFields)
|
|
409
547
|
Object.assign(body, additionalFields);
|
|
410
548
|
return apiRequest(tok(ctx), "POST", "/emails", body);
|
|
@@ -437,23 +575,39 @@ export default function keap(rl) {
|
|
|
437
575
|
qs.email = p.email;
|
|
438
576
|
if (p.sinceDate)
|
|
439
577
|
qs.since_sent_date = p.sinceDate;
|
|
440
|
-
const data = await apiRequest(tok(ctx), "GET", "/emails", undefined, qs);
|
|
578
|
+
const data = (await apiRequest(tok(ctx), "GET", "/emails", undefined, qs));
|
|
441
579
|
return data.emails;
|
|
442
580
|
},
|
|
443
581
|
});
|
|
444
582
|
rl.registerAction("email.send", {
|
|
445
583
|
description: "Queue an email to be sent",
|
|
446
584
|
inputSchema: {
|
|
447
|
-
userId: {
|
|
448
|
-
|
|
585
|
+
userId: {
|
|
586
|
+
type: "number",
|
|
587
|
+
required: true,
|
|
588
|
+
description: "Keap user ID sending the email",
|
|
589
|
+
},
|
|
590
|
+
contactIds: {
|
|
591
|
+
type: "array",
|
|
592
|
+
required: true,
|
|
593
|
+
description: "Array of contact IDs to send to",
|
|
594
|
+
},
|
|
449
595
|
subject: { type: "string", required: true },
|
|
450
596
|
htmlContent: { type: "string", required: false },
|
|
451
597
|
plainContent: { type: "string", required: false },
|
|
452
|
-
attachments: {
|
|
598
|
+
attachments: {
|
|
599
|
+
type: "array",
|
|
600
|
+
required: false,
|
|
601
|
+
description: "Array of {file_data, file_name} objects",
|
|
602
|
+
},
|
|
453
603
|
},
|
|
454
604
|
async execute(input, ctx) {
|
|
455
|
-
const { userId, contactIds, subject, htmlContent, plainContent, attachments } = input;
|
|
456
|
-
const body = {
|
|
605
|
+
const { userId, contactIds, subject, htmlContent, plainContent, attachments, } = input;
|
|
606
|
+
const body = {
|
|
607
|
+
user_id: userId,
|
|
608
|
+
contacts: contactIds,
|
|
609
|
+
subject,
|
|
610
|
+
};
|
|
457
611
|
if (htmlContent)
|
|
458
612
|
body.html_content = htmlContent;
|
|
459
613
|
if (plainContent)
|
|
@@ -477,9 +631,21 @@ export default function keap(rl) {
|
|
|
477
631
|
description: "List files",
|
|
478
632
|
inputSchema: {
|
|
479
633
|
limit: { type: "number", required: false },
|
|
480
|
-
permission: {
|
|
481
|
-
|
|
482
|
-
|
|
634
|
+
permission: {
|
|
635
|
+
type: "string",
|
|
636
|
+
required: false,
|
|
637
|
+
description: "USER, COMPANY",
|
|
638
|
+
},
|
|
639
|
+
type: {
|
|
640
|
+
type: "string",
|
|
641
|
+
required: false,
|
|
642
|
+
description: "Application, Image, Fax, Attachment, Ticket, Contact, Digital Product, Import, Hidden, Webform, Styled Cart, Logo, Resampled, Template Thumbnail, Funnel",
|
|
643
|
+
},
|
|
644
|
+
viewable: {
|
|
645
|
+
type: "string",
|
|
646
|
+
required: false,
|
|
647
|
+
description: "PUBLIC, PRIVATE, BOTH",
|
|
648
|
+
},
|
|
483
649
|
contactId: { type: "number", required: false },
|
|
484
650
|
},
|
|
485
651
|
async execute(input, ctx) {
|
|
@@ -495,7 +661,7 @@ export default function keap(rl) {
|
|
|
495
661
|
qs.viewable = p.viewable.toUpperCase();
|
|
496
662
|
if (p.contactId)
|
|
497
663
|
qs.contact_id = p.contactId;
|
|
498
|
-
const data = await apiRequest(tok(ctx), "GET", "/files", undefined, qs);
|
|
664
|
+
const data = (await apiRequest(tok(ctx), "GET", "/files", undefined, qs));
|
|
499
665
|
return data.files;
|
|
500
666
|
},
|
|
501
667
|
});
|