@tangle-network/agent-integrations 0.41.0 → 0.43.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/catalog.js +2 -2
- package/dist/{chunk-I3NAY66Z.js → chunk-6OOMR4SL.js} +2 -2
- package/dist/{chunk-COKK7BOH.js → chunk-HRPCFEGL.js} +4380 -15
- package/dist/chunk-HRPCFEGL.js.map +1 -0
- package/dist/connectors/adapters/index.d.ts +188 -1
- package/dist/connectors/adapters/index.js +79 -1
- package/dist/connectors/index.d.ts +1 -1
- package/dist/connectors/index.js +79 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +80 -2
- package/dist/mcp.js +2 -2
- package/dist/registry.js +2 -2
- package/dist/runtime.js +2 -2
- package/package.json +1 -1
- package/dist/chunk-COKK7BOH.js.map +0 -1
- /package/dist/{chunk-I3NAY66Z.js.map → chunk-6OOMR4SL.js.map} +0 -0
|
@@ -48,6 +48,7 @@ __export(adapters_exports, {
|
|
|
48
48
|
amazonTextractConnector: () => amazonTextractConnector,
|
|
49
49
|
aminosConnector: () => aminosConnector,
|
|
50
50
|
ampecoConnector: () => ampecoConnector,
|
|
51
|
+
amplemarketConnector: () => amplemarketConnector,
|
|
51
52
|
anthropicConnector: () => anthropicConnector,
|
|
52
53
|
apitableConnector: () => apitableConnector,
|
|
53
54
|
apitemplateIoConnector: () => apitemplateIoConnector,
|
|
@@ -59,6 +60,7 @@ __export(adapters_exports, {
|
|
|
59
60
|
assemblyaiConnector: () => assemblyaiConnector,
|
|
60
61
|
attioConnector: () => attioConnector,
|
|
61
62
|
auth0Connector: () => auth0Connector,
|
|
63
|
+
autoboundConnector: () => autoboundConnector,
|
|
62
64
|
autocallsConnector: () => autocallsConnector,
|
|
63
65
|
avianConnector: () => avianConnector,
|
|
64
66
|
avomaConnector: () => avomaConnector,
|
|
@@ -71,6 +73,7 @@ __export(adapters_exports, {
|
|
|
71
73
|
baremetricsConnector: () => baremetricsConnector,
|
|
72
74
|
basecampConnector: () => basecampConnector,
|
|
73
75
|
beamerConnector: () => beamerConnector,
|
|
76
|
+
bettercontactConnector: () => bettercontactConnector,
|
|
74
77
|
bettermodeConnector: () => bettermodeConnector,
|
|
75
78
|
bexioConnector: () => bexioConnector,
|
|
76
79
|
bigcommerceConnector: () => bigcommerceConnector,
|
|
@@ -85,8 +88,10 @@ __export(adapters_exports, {
|
|
|
85
88
|
boxConnector: () => boxConnector,
|
|
86
89
|
braveSearchConnector: () => braveSearchConnector,
|
|
87
90
|
brazeConnector: () => brazeConnector,
|
|
91
|
+
brightdataConnector: () => brightdataConnector,
|
|
88
92
|
brilliantDirectoriesConnector: () => brilliantDirectoriesConnector,
|
|
89
93
|
browseAiConnector: () => browseAiConnector,
|
|
94
|
+
builtwithConnector: () => builtwithConnector,
|
|
90
95
|
calComConnector: () => calComConnector,
|
|
91
96
|
calendlyConnector: () => calendlyConnector,
|
|
92
97
|
campaignMonitorConnector: () => campaignMonitorConnector,
|
|
@@ -124,14 +129,17 @@ __export(adapters_exports, {
|
|
|
124
129
|
cohereConnector: () => cohereConnector,
|
|
125
130
|
cometapiConnector: () => cometapiConnector,
|
|
126
131
|
comfyicuConnector: () => comfyicuConnector,
|
|
132
|
+
commonRoomConnector: () => commonRoomConnector,
|
|
127
133
|
confluenceConnector: () => confluenceConnector,
|
|
128
134
|
constantContactConnector: () => constantContactConnector,
|
|
135
|
+
contactoutConnector: () => contactoutConnector,
|
|
129
136
|
contentfulConnector: () => contentfulConnector,
|
|
130
137
|
convertkitConnector: () => convertkitConnector,
|
|
131
138
|
copperConnector: () => copperConnector,
|
|
132
139
|
copyAiConnector: () => copyAiConnector,
|
|
133
140
|
createTangleIdentityClient: () => createTangleIdentityClient,
|
|
134
141
|
crispConnector: () => crispConnector,
|
|
142
|
+
crustdataConnector: () => crustdataConnector,
|
|
135
143
|
cryptolensConnector: () => cryptolensConnector,
|
|
136
144
|
customerIoConnector: () => customerIoConnector,
|
|
137
145
|
customgptConnector: () => customgptConnector,
|
|
@@ -141,9 +149,11 @@ __export(adapters_exports, {
|
|
|
141
149
|
datocmsConnector: () => datocmsConnector,
|
|
142
150
|
declarativeRestConnector: () => declarativeRestConnector,
|
|
143
151
|
deepseekConnector: () => deepseekConnector,
|
|
152
|
+
demandbaseConnector: () => demandbaseConnector,
|
|
144
153
|
denserAiConnector: () => denserAiConnector,
|
|
145
154
|
descriptConnector: () => descriptConnector,
|
|
146
155
|
devinConnector: () => devinConnector,
|
|
156
|
+
dialpadConnector: () => dialpadConnector,
|
|
147
157
|
discordConnector: () => discordConnector,
|
|
148
158
|
dittofeedConnector: () => dittofeedConnector,
|
|
149
159
|
doctlyConnector: () => doctlyConnector,
|
|
@@ -167,11 +177,13 @@ __export(adapters_exports, {
|
|
|
167
177
|
exaConnector: () => exaConnector,
|
|
168
178
|
facebookLeadsConnector: () => facebookLeadsConnector,
|
|
169
179
|
facebookPagesConnector: () => facebookPagesConnector,
|
|
180
|
+
factorsAiConnector: () => factorsAiConnector,
|
|
170
181
|
fathomAnalyticsConnector: () => fathomAnalyticsConnector,
|
|
171
182
|
fathomConnector: () => fathomConnector,
|
|
172
183
|
figjamConnector: () => figjamConnector,
|
|
173
184
|
figmaConnector: () => figmaConnector,
|
|
174
185
|
filloutFormsConnector: () => filloutFormsConnector,
|
|
186
|
+
findymailConnector: () => findymailConnector,
|
|
175
187
|
firebaseConnector: () => firebaseConnector,
|
|
176
188
|
fireberryConnector: () => fireberryConnector,
|
|
177
189
|
firecrawlConnector: () => firecrawlConnector,
|
|
@@ -190,8 +202,10 @@ __export(adapters_exports, {
|
|
|
190
202
|
freshsalesConnector: () => freshsalesConnector,
|
|
191
203
|
freshserviceConnector: () => freshserviceConnector,
|
|
192
204
|
frontConnector: () => frontConnector,
|
|
205
|
+
fullenrichConnector: () => fullenrichConnector,
|
|
193
206
|
gameballConnector: () => gameballConnector,
|
|
194
207
|
geminiConnector: () => geminiConnector,
|
|
208
|
+
getresponseConnector: () => getresponseConnector,
|
|
195
209
|
ghostcmsConnector: () => ghostcmsConnector,
|
|
196
210
|
gistlyConnector: () => gistlyConnector,
|
|
197
211
|
giteaConnector: () => giteaConnector,
|
|
@@ -199,6 +213,7 @@ __export(adapters_exports, {
|
|
|
199
213
|
gitlabConnector: () => gitlabConnector,
|
|
200
214
|
glideConnector: () => glideConnector,
|
|
201
215
|
gmail: () => gmail,
|
|
216
|
+
gongConnector: () => gongConnector,
|
|
202
217
|
googleAnalyticsConnector: () => googleAnalyticsConnector,
|
|
203
218
|
googleBigqueryConnector: () => googleBigqueryConnector,
|
|
204
219
|
googleCalendar: () => googleCalendar,
|
|
@@ -237,6 +252,8 @@ __export(adapters_exports, {
|
|
|
237
252
|
helpscoutConnector: () => helpscoutConnector,
|
|
238
253
|
heygenConnector: () => heygenConnector,
|
|
239
254
|
heymarketSmsConnector: () => heymarketSmsConnector,
|
|
255
|
+
heyreachConnector: () => heyreachConnector,
|
|
256
|
+
hightouchConnector: () => hightouchConnector,
|
|
240
257
|
housecallProConnector: () => housecallProConnector,
|
|
241
258
|
hubspot: () => hubspot,
|
|
242
259
|
huggingFaceConnector: () => huggingFaceConnector,
|
|
@@ -261,6 +278,7 @@ __export(adapters_exports, {
|
|
|
261
278
|
joggAiConnector: () => joggAiConnector,
|
|
262
279
|
jotformConnector: () => jotformConnector,
|
|
263
280
|
justInvoiceConnector: () => justInvoiceConnector,
|
|
281
|
+
justcallConnector: () => justcallConnector,
|
|
264
282
|
kallabotAiConnector: () => kallabotAiConnector,
|
|
265
283
|
kapsoConnector: () => kapsoConnector,
|
|
266
284
|
kimaiConnector: () => kimaiConnector,
|
|
@@ -274,7 +292,10 @@ __export(adapters_exports, {
|
|
|
274
292
|
kommoConnector: () => kommoConnector,
|
|
275
293
|
kudosityConnector: () => kudosityConnector,
|
|
276
294
|
kustomerConnector: () => kustomerConnector,
|
|
295
|
+
lagrowthmachineConnector: () => lagrowthmachineConnector,
|
|
277
296
|
leadConnectorConnector: () => leadConnectorConnector,
|
|
297
|
+
leadfeederConnector: () => leadfeederConnector,
|
|
298
|
+
leadmagicConnector: () => leadmagicConnector,
|
|
278
299
|
leapAiConnector: () => leapAiConnector,
|
|
279
300
|
leexiConnector: () => leexiConnector,
|
|
280
301
|
lemlistConnector: () => lemlistConnector,
|
|
@@ -335,6 +356,7 @@ __export(adapters_exports, {
|
|
|
335
356
|
missiveConnector: () => missiveConnector,
|
|
336
357
|
mixmaxConnector: () => mixmaxConnector,
|
|
337
358
|
mixpanelConnector: () => mixpanelConnector,
|
|
359
|
+
modjoConnector: () => modjoConnector,
|
|
338
360
|
mollieConnector: () => mollieConnector,
|
|
339
361
|
mondayConnector: () => mondayConnector,
|
|
340
362
|
mongodbConnector: () => mongodbConnector,
|
|
@@ -343,9 +365,11 @@ __export(adapters_exports, {
|
|
|
343
365
|
niftyConnector: () => niftyConnector,
|
|
344
366
|
ninjapipeConnector: () => ninjapipeConnector,
|
|
345
367
|
nocodbConnector: () => nocodbConnector,
|
|
368
|
+
nooksConnector: () => nooksConnector,
|
|
346
369
|
notion: () => notion,
|
|
347
370
|
notionConnector: () => notionConnector,
|
|
348
371
|
ntfyConnector: () => ntfyConnector,
|
|
372
|
+
oceanIoConnector: () => oceanIoConnector,
|
|
349
373
|
odooConnector: () => odooConnector,
|
|
350
374
|
omniCoConnector: () => omniCoConnector,
|
|
351
375
|
omnihrConnector: () => omnihrConnector,
|
|
@@ -360,6 +384,7 @@ __export(adapters_exports, {
|
|
|
360
384
|
oracleDatabaseConnector: () => oracleDatabaseConnector,
|
|
361
385
|
orimonConnector: () => orimonConnector,
|
|
362
386
|
outlookMail: () => outlookMail,
|
|
387
|
+
outreachConnector: () => outreachConnector,
|
|
363
388
|
paddleConnector: () => paddleConnector,
|
|
364
389
|
pagerdutyConnector: () => pagerdutyConnector,
|
|
365
390
|
pandadoc: () => pandadoc,
|
|
@@ -372,6 +397,7 @@ __export(adapters_exports, {
|
|
|
372
397
|
peekshotConnector: () => peekshotConnector,
|
|
373
398
|
perplexityAiConnector: () => perplexityAiConnector,
|
|
374
399
|
personalAiConnector: () => personalAiConnector,
|
|
400
|
+
phantombusterConnector: () => phantombusterConnector,
|
|
375
401
|
phonyConnector: () => phonyConnector,
|
|
376
402
|
pinchPaymentsConnector: () => pinchPaymentsConnector,
|
|
377
403
|
pineconeConnector: () => pineconeConnector,
|
|
@@ -381,6 +407,7 @@ __export(adapters_exports, {
|
|
|
381
407
|
plausibleConnector: () => plausibleConnector,
|
|
382
408
|
pocketbaseConnector: () => pocketbaseConnector,
|
|
383
409
|
pollybotAiConnector: () => pollybotAiConnector,
|
|
410
|
+
polytomicConnector: () => polytomicConnector,
|
|
384
411
|
postgresConnector: () => postgresConnector,
|
|
385
412
|
posthogConnector: () => posthogConnector,
|
|
386
413
|
postizConnector: () => postizConnector,
|
|
@@ -404,17 +431,21 @@ __export(adapters_exports, {
|
|
|
404
431
|
replyIoConnector: () => replyIoConnector,
|
|
405
432
|
retableConnector: () => retableConnector,
|
|
406
433
|
retellAiConnector: () => retellAiConnector,
|
|
434
|
+
ringcentralConnector: () => ringcentralConnector,
|
|
407
435
|
ripplingConnector: () => ripplingConnector,
|
|
408
436
|
robollyConnector: () => robollyConnector,
|
|
409
437
|
runwareConnector: () => runwareConnector,
|
|
410
438
|
saasticConnector: () => saasticConnector,
|
|
411
439
|
saleorConnector: () => saleorConnector,
|
|
412
440
|
salesforceConnector: () => salesforceConnector,
|
|
441
|
+
saleshandyConnector: () => saleshandyConnector,
|
|
442
|
+
salesloftConnector: () => salesloftConnector,
|
|
413
443
|
sanityConnector: () => sanityConnector,
|
|
414
444
|
sardisConnector: () => sardisConnector,
|
|
415
445
|
savvycalConnector: () => savvycalConnector,
|
|
416
446
|
scrapegraphaiConnector: () => scrapegraphaiConnector,
|
|
417
447
|
scrapelessConnector: () => scrapelessConnector,
|
|
448
|
+
seamlessAiConnector: () => seamlessAiConnector,
|
|
418
449
|
seekTableConnector: () => seekTableConnector,
|
|
419
450
|
semrushConnector: () => semrushConnector,
|
|
420
451
|
sendgridConnector: () => sendgridConnector,
|
|
@@ -422,6 +453,7 @@ __export(adapters_exports, {
|
|
|
422
453
|
sendpulseConnector: () => sendpulseConnector,
|
|
423
454
|
senjaConnector: () => senjaConnector,
|
|
424
455
|
sentryConnector: () => sentryConnector,
|
|
456
|
+
serperConnector: () => serperConnector,
|
|
425
457
|
serpstatConnector: () => serpstatConnector,
|
|
426
458
|
serviceNowConnector: () => serviceNowConnector,
|
|
427
459
|
sharepoint: () => sharepoint,
|
|
@@ -430,6 +462,7 @@ __export(adapters_exports, {
|
|
|
430
462
|
shortIoConnector: () => shortIoConnector,
|
|
431
463
|
signNowConnector: () => signNowConnector,
|
|
432
464
|
signrequestConnector: () => signrequestConnector,
|
|
465
|
+
signwellConnector: () => signwellConnector,
|
|
433
466
|
similarwebConnector: () => similarwebConnector,
|
|
434
467
|
simplirouteConnector: () => simplirouteConnector,
|
|
435
468
|
simplybookmeConnector: () => simplybookmeConnector,
|
|
@@ -441,6 +474,7 @@ __export(adapters_exports, {
|
|
|
441
474
|
smartsuiteConnector: () => smartsuiteConnector,
|
|
442
475
|
smooveConnector: () => smooveConnector,
|
|
443
476
|
smsmodeConnector: () => smsmodeConnector,
|
|
477
|
+
snovIoConnector: () => snovIoConnector,
|
|
444
478
|
snowflakeConnector: () => snowflakeConnector,
|
|
445
479
|
socialkitConnector: () => socialkitConnector,
|
|
446
480
|
squareConnector: () => squareConnector,
|
|
@@ -460,6 +494,7 @@ __export(adapters_exports, {
|
|
|
460
494
|
telnyxConnector: () => telnyxConnector,
|
|
461
495
|
tenzoConnector: () => tenzoConnector,
|
|
462
496
|
textcortexAiConnector: () => textcortexAiConnector,
|
|
497
|
+
theirstackConnector: () => theirstackConnector,
|
|
463
498
|
ticktickConnector: () => ticktickConnector,
|
|
464
499
|
timeOpsConnector: () => timeOpsConnector,
|
|
465
500
|
timelinesAiConnector: () => timelinesAiConnector,
|
|
@@ -479,6 +514,7 @@ __export(adapters_exports, {
|
|
|
479
514
|
umamiConnector: () => umamiConnector,
|
|
480
515
|
upgradechatConnector: () => upgradechatConnector,
|
|
481
516
|
uscreenConnector: () => uscreenConnector,
|
|
517
|
+
usergemsConnector: () => usergemsConnector,
|
|
482
518
|
validatedmailsConnector: () => validatedmailsConnector,
|
|
483
519
|
vapiConnector: () => vapiConnector,
|
|
484
520
|
vboutConnector: () => vboutConnector,
|
|
@@ -490,6 +526,7 @@ __export(adapters_exports, {
|
|
|
490
526
|
vtexConnector: () => vtexConnector,
|
|
491
527
|
vtigerConnector: () => vtigerConnector,
|
|
492
528
|
wafeqConnector: () => wafeqConnector,
|
|
529
|
+
warmlyConnector: () => warmlyConnector,
|
|
493
530
|
weaviateConnector: () => weaviateConnector,
|
|
494
531
|
webflowConnector: () => webflowConnector,
|
|
495
532
|
webhookConnector: () => webhookConnector,
|
|
@@ -498,6 +535,7 @@ __export(adapters_exports, {
|
|
|
498
535
|
whatsappBusiness: () => whatsappBusiness,
|
|
499
536
|
whatsappConnector: () => whatsappConnector,
|
|
500
537
|
whatsscaleConnector: () => whatsscaleConnector,
|
|
538
|
+
wizaConnector: () => wizaConnector,
|
|
501
539
|
wonderchatConnector: () => wonderchatConnector,
|
|
502
540
|
woocommerceConnector: () => woocommerceConnector,
|
|
503
541
|
woodpeckerConnector: () => woodpeckerConnector,
|
|
@@ -515,6 +553,7 @@ __export(adapters_exports, {
|
|
|
515
553
|
zapierConnector: () => zapierConnector,
|
|
516
554
|
zendeskConnector: () => zendeskConnector,
|
|
517
555
|
zendeskSellConnector: () => zendeskSellConnector,
|
|
556
|
+
zenrowsConnector: () => zenrowsConnector,
|
|
518
557
|
zeplinConnector: () => zeplinConnector,
|
|
519
558
|
zerobounceConnector: () => zerobounceConnector,
|
|
520
559
|
zohoBookingsConnector: () => zohoBookingsConnector,
|
|
@@ -2281,7 +2320,7 @@ function declarativeRestConnector(spec) {
|
|
|
2281
2320
|
},
|
|
2282
2321
|
async executeRead(inv) {
|
|
2283
2322
|
const op = readOperation(spec, inv.capabilityName, "read");
|
|
2284
|
-
const response = await executeRestRequest(spec, op.request, inv);
|
|
2323
|
+
const response = await executeRestRequest(spec, op.request, inv, requiredArgsOf(op.parameters));
|
|
2285
2324
|
return {
|
|
2286
2325
|
data: response.data,
|
|
2287
2326
|
etag: response.etag,
|
|
@@ -2290,7 +2329,7 @@ function declarativeRestConnector(spec) {
|
|
|
2290
2329
|
},
|
|
2291
2330
|
async executeMutation(inv) {
|
|
2292
2331
|
const op = readOperation(spec, inv.capabilityName, "mutation");
|
|
2293
|
-
const response = await executeRestRequest(spec, op.request, inv);
|
|
2332
|
+
const response = await executeRestRequest(spec, op.request, inv, requiredArgsOf(op.parameters));
|
|
2294
2333
|
return {
|
|
2295
2334
|
status: "committed",
|
|
2296
2335
|
data: response.data,
|
|
@@ -2360,7 +2399,11 @@ function readOperation(spec, name, expected) {
|
|
|
2360
2399
|
}
|
|
2361
2400
|
return op;
|
|
2362
2401
|
}
|
|
2363
|
-
|
|
2402
|
+
function requiredArgsOf(parameters) {
|
|
2403
|
+
const required = parameters.required;
|
|
2404
|
+
return Array.isArray(required) ? required.filter((entry) => typeof entry === "string") : void 0;
|
|
2405
|
+
}
|
|
2406
|
+
async function executeRestRequest(spec, request, inv, requiredArgs) {
|
|
2364
2407
|
const baseUrl = resolveBaseUrl(spec.baseUrl, inv.source.metadata);
|
|
2365
2408
|
const renderedPath = interpolate(request.path, inv.args).replace(/^\/+/, "");
|
|
2366
2409
|
const baseWithSlash = baseUrl.endsWith("/") ? baseUrl : `${baseUrl}/`;
|
|
@@ -2376,13 +2419,14 @@ async function executeRestRequest(spec, request, inv) {
|
|
|
2376
2419
|
};
|
|
2377
2420
|
applyCredentials(headers, url, spec.credentialPlacement ?? { kind: "bearer" }, inv.source.credentials);
|
|
2378
2421
|
if (inv.expectedEtag) headers["if-match"] = inv.expectedEtag;
|
|
2379
|
-
|
|
2422
|
+
const sendsBody = request.method !== "GET" && (request.method !== "DELETE" || request.body !== void 0);
|
|
2423
|
+
if (sendsBody) {
|
|
2380
2424
|
headers["content-type"] = headers["content-type"] ?? "application/json";
|
|
2381
2425
|
}
|
|
2382
2426
|
const res = await fetch(url, {
|
|
2383
2427
|
method: request.method,
|
|
2384
2428
|
headers,
|
|
2385
|
-
body:
|
|
2429
|
+
body: sendsBody ? JSON.stringify(resolveBody(request.body, inv.args, requiredArgs)) : void 0,
|
|
2386
2430
|
signal: AbortSignal.timeout(2e4)
|
|
2387
2431
|
});
|
|
2388
2432
|
if (res.status === 401 || res.status === 403) {
|
|
@@ -2410,7 +2454,14 @@ async function executeRestRequest(spec, request, inv) {
|
|
|
2410
2454
|
throw new Error(`${spec.kind} ${request.method} ${url.pathname} HTTP ${res.status}: ${(await safeErrorText(res)).slice(0, 300)}`);
|
|
2411
2455
|
}
|
|
2412
2456
|
const text = await res.text();
|
|
2413
|
-
|
|
2457
|
+
let data = null;
|
|
2458
|
+
if (text) {
|
|
2459
|
+
try {
|
|
2460
|
+
data = JSON.parse(text);
|
|
2461
|
+
} catch {
|
|
2462
|
+
data = { raw: text };
|
|
2463
|
+
}
|
|
2464
|
+
}
|
|
2414
2465
|
return { data, etag: res.headers.get("etag") ?? void 0 };
|
|
2415
2466
|
}
|
|
2416
2467
|
function resolveBaseUrl(baseUrl, metadata) {
|
|
@@ -2431,28 +2482,47 @@ function credentialToken(credentials) {
|
|
|
2431
2482
|
if (credentials.kind === "api-key") return credentials.apiKey;
|
|
2432
2483
|
throw new Error(`declarative REST connectors require oauth2 or api-key credentials, got ${credentials.kind}`);
|
|
2433
2484
|
}
|
|
2434
|
-
function resolveBody(body, args) {
|
|
2485
|
+
function resolveBody(body, args, requiredArgs) {
|
|
2435
2486
|
if (!body || body === "args") return args;
|
|
2436
|
-
if (typeof body === "string") return renderValue(body, args);
|
|
2437
|
-
return renderObject(body, args);
|
|
2487
|
+
if (typeof body === "string") return renderValue(body, args, requiredArgs);
|
|
2488
|
+
return renderObject(body, args, requiredArgs);
|
|
2438
2489
|
}
|
|
2439
2490
|
function renderHeaders(headers, args) {
|
|
2440
2491
|
return Object.fromEntries(Object.entries(headers).map(([key, value]) => [key, interpolate(value, args)]));
|
|
2441
2492
|
}
|
|
2442
|
-
function renderObject(input, args) {
|
|
2443
|
-
|
|
2493
|
+
function renderObject(input, args, requiredArgs) {
|
|
2494
|
+
const out = {};
|
|
2495
|
+
for (const [key, value] of Object.entries(input)) {
|
|
2496
|
+
if (typeof value === "string") {
|
|
2497
|
+
const exact = value.match(/^\{([a-zA-Z0-9_.-]+)\}$/);
|
|
2498
|
+
if (exact) {
|
|
2499
|
+
const name = exact[1];
|
|
2500
|
+
const resolved = readPath(args, name);
|
|
2501
|
+
if (resolved === void 0 || resolved === null) {
|
|
2502
|
+
if (requiredArgs?.includes(name)) {
|
|
2503
|
+
throw new Error(`missing required argument: ${name}`);
|
|
2504
|
+
}
|
|
2505
|
+
continue;
|
|
2506
|
+
}
|
|
2507
|
+
out[key] = resolved;
|
|
2508
|
+
continue;
|
|
2509
|
+
}
|
|
2510
|
+
}
|
|
2511
|
+
out[key] = renderValue(value, args, requiredArgs);
|
|
2512
|
+
}
|
|
2513
|
+
return out;
|
|
2444
2514
|
}
|
|
2445
|
-
function renderValue(value, args) {
|
|
2515
|
+
function renderValue(value, args, requiredArgs) {
|
|
2446
2516
|
if (typeof value === "string") {
|
|
2447
2517
|
const exact = value.match(/^\{([a-zA-Z0-9_.-]+)\}$/);
|
|
2448
2518
|
if (exact) return readRequiredPath(args, exact[1]);
|
|
2449
2519
|
return interpolate(value, args);
|
|
2450
2520
|
}
|
|
2451
2521
|
if (Array.isArray(value)) {
|
|
2452
|
-
return value.map((entry) => renderValue(entry, args));
|
|
2522
|
+
return value.map((entry) => renderValue(entry, args, requiredArgs));
|
|
2453
2523
|
}
|
|
2454
2524
|
if (value && typeof value === "object") {
|
|
2455
|
-
return renderObject(value, args);
|
|
2525
|
+
return renderObject(value, args, requiredArgs);
|
|
2456
2526
|
}
|
|
2457
2527
|
return value;
|
|
2458
2528
|
}
|
|
@@ -120259,6 +120329,4262 @@ var pipedreamConnector = declarativeRestConnector({
|
|
|
120259
120329
|
]
|
|
120260
120330
|
});
|
|
120261
120331
|
|
|
120332
|
+
// src/connectors/adapters/amplemarket.ts
|
|
120333
|
+
var amplemarketConnector = declarativeRestConnector({
|
|
120334
|
+
kind: "amplemarket",
|
|
120335
|
+
displayName: "Amplemarket",
|
|
120336
|
+
description: "Sales intelligence and outbound platform: search and enrich people and companies, validate emails, and add leads to sequences.",
|
|
120337
|
+
auth: {
|
|
120338
|
+
kind: "api-key",
|
|
120339
|
+
hint: "Generate an API key in the Amplemarket dashboard (Settings -> API). Sent as the Authorization: Bearer header."
|
|
120340
|
+
},
|
|
120341
|
+
category: "crm",
|
|
120342
|
+
defaultConsistencyModel: "authoritative",
|
|
120343
|
+
baseUrl: "https://api.amplemarket.com",
|
|
120344
|
+
credentialPlacement: { kind: "bearer" },
|
|
120345
|
+
defaultHeaders: { "content-type": "application/json" },
|
|
120346
|
+
test: { method: "GET", path: "/account-info" },
|
|
120347
|
+
capabilities: [
|
|
120348
|
+
{
|
|
120349
|
+
name: "people.search",
|
|
120350
|
+
class: "read",
|
|
120351
|
+
description: "Search for people by job function, company, industry and other filters.",
|
|
120352
|
+
parameters: {
|
|
120353
|
+
type: "object",
|
|
120354
|
+
properties: {
|
|
120355
|
+
page: { type: "integer", description: "Page number." },
|
|
120356
|
+
page_size: { type: "integer", description: "Results per page." },
|
|
120357
|
+
job_functions: {
|
|
120358
|
+
type: "array",
|
|
120359
|
+
items: { type: "string" },
|
|
120360
|
+
description: "Job functions to filter by."
|
|
120361
|
+
},
|
|
120362
|
+
industries: {
|
|
120363
|
+
type: "array",
|
|
120364
|
+
items: { type: "string" },
|
|
120365
|
+
description: "Industries to filter by."
|
|
120366
|
+
}
|
|
120367
|
+
},
|
|
120368
|
+
required: []
|
|
120369
|
+
},
|
|
120370
|
+
request: {
|
|
120371
|
+
method: "POST",
|
|
120372
|
+
path: "/people/search",
|
|
120373
|
+
body: {
|
|
120374
|
+
page: "{page}",
|
|
120375
|
+
page_size: "{page_size}",
|
|
120376
|
+
job_functions: "{job_functions}",
|
|
120377
|
+
industries: "{industries}"
|
|
120378
|
+
}
|
|
120379
|
+
}
|
|
120380
|
+
},
|
|
120381
|
+
{
|
|
120382
|
+
name: "people.find",
|
|
120383
|
+
class: "mutation",
|
|
120384
|
+
description: "Enrich a single person by LinkedIn URL, email, or full name plus company. Consumes credits when contact data is revealed.",
|
|
120385
|
+
parameters: {
|
|
120386
|
+
type: "object",
|
|
120387
|
+
properties: {
|
|
120388
|
+
linkedin_url: { type: "string", description: "LinkedIn profile URL." },
|
|
120389
|
+
email: { type: "string", description: "Known email address." },
|
|
120390
|
+
full_name: { type: "string", description: "Person's full name." },
|
|
120391
|
+
company_name: { type: "string", description: "Company name (use with full_name)." }
|
|
120392
|
+
},
|
|
120393
|
+
required: []
|
|
120394
|
+
},
|
|
120395
|
+
request: {
|
|
120396
|
+
method: "GET",
|
|
120397
|
+
path: "/people/find",
|
|
120398
|
+
query: {
|
|
120399
|
+
linkedin_url: "{linkedin_url}",
|
|
120400
|
+
email: "{email}",
|
|
120401
|
+
full_name: "{full_name}",
|
|
120402
|
+
company_name: "{company_name}"
|
|
120403
|
+
}
|
|
120404
|
+
},
|
|
120405
|
+
cas: "native-idempotency",
|
|
120406
|
+
externalEffect: false
|
|
120407
|
+
},
|
|
120408
|
+
{
|
|
120409
|
+
name: "companies.find",
|
|
120410
|
+
class: "read",
|
|
120411
|
+
description: "Enrich a single company by LinkedIn URL, domain, or name.",
|
|
120412
|
+
parameters: {
|
|
120413
|
+
type: "object",
|
|
120414
|
+
properties: {
|
|
120415
|
+
linkedin_url: { type: "string", description: "Company LinkedIn URL." },
|
|
120416
|
+
domain: { type: "string", description: "Company domain." },
|
|
120417
|
+
name: { type: "string", description: "Company name." }
|
|
120418
|
+
},
|
|
120419
|
+
required: []
|
|
120420
|
+
},
|
|
120421
|
+
request: {
|
|
120422
|
+
method: "GET",
|
|
120423
|
+
path: "/companies/find",
|
|
120424
|
+
query: { linkedin_url: "{linkedin_url}", domain: "{domain}", name: "{name}" }
|
|
120425
|
+
}
|
|
120426
|
+
},
|
|
120427
|
+
{
|
|
120428
|
+
name: "email.validate",
|
|
120429
|
+
class: "mutation",
|
|
120430
|
+
description: "Start a batch email validation job. Consumes one email credit per validated address.",
|
|
120431
|
+
parameters: {
|
|
120432
|
+
type: "object",
|
|
120433
|
+
properties: {
|
|
120434
|
+
emails: {
|
|
120435
|
+
type: "array",
|
|
120436
|
+
items: { type: "object", properties: { email: { type: "string" } } },
|
|
120437
|
+
description: "List of email objects to validate."
|
|
120438
|
+
}
|
|
120439
|
+
},
|
|
120440
|
+
required: ["emails"]
|
|
120441
|
+
},
|
|
120442
|
+
request: { method: "POST", path: "/email-validations", body: { emails: "{emails}" } },
|
|
120443
|
+
cas: "native-idempotency",
|
|
120444
|
+
externalEffect: false
|
|
120445
|
+
},
|
|
120446
|
+
{
|
|
120447
|
+
name: "sequence.add_leads",
|
|
120448
|
+
class: "mutation",
|
|
120449
|
+
description: "Add one or more leads to an existing Amplemarket sequence.",
|
|
120450
|
+
parameters: {
|
|
120451
|
+
type: "object",
|
|
120452
|
+
properties: {
|
|
120453
|
+
id: { type: "string", description: "Sequence ID." },
|
|
120454
|
+
leads: {
|
|
120455
|
+
type: "array",
|
|
120456
|
+
items: { type: "object" },
|
|
120457
|
+
description: "Array of lead objects to enroll."
|
|
120458
|
+
}
|
|
120459
|
+
},
|
|
120460
|
+
required: ["id", "leads"]
|
|
120461
|
+
},
|
|
120462
|
+
request: { method: "POST", path: "/sequences/{id}/leads", body: { leads: "{leads}" } },
|
|
120463
|
+
cas: "native-idempotency",
|
|
120464
|
+
externalEffect: true
|
|
120465
|
+
}
|
|
120466
|
+
]
|
|
120467
|
+
});
|
|
120468
|
+
|
|
120469
|
+
// src/connectors/adapters/heyreach.ts
|
|
120470
|
+
var heyreachConnector = declarativeRestConnector({
|
|
120471
|
+
kind: "heyreach",
|
|
120472
|
+
displayName: "HeyReach",
|
|
120473
|
+
description: "LinkedIn outreach automation at agency scale. List campaigns and lists, add leads to campaigns, look up leads, and read inbox conversations.",
|
|
120474
|
+
auth: {
|
|
120475
|
+
kind: "api-key",
|
|
120476
|
+
hint: "Generate an API key in HeyReach (Settings -> Integrations -> Public API). Sent as the X-API-KEY header."
|
|
120477
|
+
},
|
|
120478
|
+
category: "crm",
|
|
120479
|
+
defaultConsistencyModel: "authoritative",
|
|
120480
|
+
baseUrl: "https://api.heyreach.io/api/public",
|
|
120481
|
+
credentialPlacement: { kind: "header", header: "X-API-KEY" },
|
|
120482
|
+
defaultHeaders: { "content-type": "application/json" },
|
|
120483
|
+
test: { method: "GET", path: "/auth/CheckApiKey" },
|
|
120484
|
+
capabilities: [
|
|
120485
|
+
{
|
|
120486
|
+
name: "campaign.list",
|
|
120487
|
+
class: "read",
|
|
120488
|
+
description: "List campaigns in the workspace with pagination.",
|
|
120489
|
+
parameters: {
|
|
120490
|
+
type: "object",
|
|
120491
|
+
properties: {
|
|
120492
|
+
offset: { type: "integer", description: "Number of records to skip." },
|
|
120493
|
+
limit: { type: "integer", description: "Maximum records to return." }
|
|
120494
|
+
},
|
|
120495
|
+
required: ["offset", "limit"]
|
|
120496
|
+
},
|
|
120497
|
+
request: {
|
|
120498
|
+
method: "POST",
|
|
120499
|
+
path: "/campaign/GetAll",
|
|
120500
|
+
body: { offset: "{offset}", limit: "{limit}" }
|
|
120501
|
+
}
|
|
120502
|
+
},
|
|
120503
|
+
{
|
|
120504
|
+
name: "list.list",
|
|
120505
|
+
class: "read",
|
|
120506
|
+
description: "List lead lists in the workspace with pagination.",
|
|
120507
|
+
parameters: {
|
|
120508
|
+
type: "object",
|
|
120509
|
+
properties: {
|
|
120510
|
+
offset: { type: "integer", description: "Number of records to skip." },
|
|
120511
|
+
limit: { type: "integer", description: "Maximum records to return." }
|
|
120512
|
+
},
|
|
120513
|
+
required: ["offset", "limit"]
|
|
120514
|
+
},
|
|
120515
|
+
request: {
|
|
120516
|
+
method: "POST",
|
|
120517
|
+
path: "/list/GetAll",
|
|
120518
|
+
body: { offset: "{offset}", limit: "{limit}" }
|
|
120519
|
+
}
|
|
120520
|
+
},
|
|
120521
|
+
{
|
|
120522
|
+
name: "lead.get",
|
|
120523
|
+
class: "read",
|
|
120524
|
+
description: "Get details for a lead by their LinkedIn profile URL.",
|
|
120525
|
+
parameters: {
|
|
120526
|
+
type: "object",
|
|
120527
|
+
properties: {
|
|
120528
|
+
profileUrl: { type: "string", description: "LinkedIn profile URL of the lead." }
|
|
120529
|
+
},
|
|
120530
|
+
required: ["profileUrl"]
|
|
120531
|
+
},
|
|
120532
|
+
request: {
|
|
120533
|
+
method: "POST",
|
|
120534
|
+
path: "/lead/GetLead",
|
|
120535
|
+
body: { profileUrl: "{profileUrl}" }
|
|
120536
|
+
}
|
|
120537
|
+
},
|
|
120538
|
+
{
|
|
120539
|
+
name: "campaign.add_leads",
|
|
120540
|
+
class: "mutation",
|
|
120541
|
+
description: "Add leads (LinkedIn profiles) to an active campaign, assigned to specific sender accounts.",
|
|
120542
|
+
parameters: {
|
|
120543
|
+
type: "object",
|
|
120544
|
+
properties: {
|
|
120545
|
+
campaignId: {
|
|
120546
|
+
type: "integer",
|
|
120547
|
+
description: "Target campaign ID (must be ACTIVE or IN_PROGRESS)."
|
|
120548
|
+
},
|
|
120549
|
+
accountLeadPairs: {
|
|
120550
|
+
type: "array",
|
|
120551
|
+
description: "Array of pairs, each with an optional linkedInAccountId (sender) and a lead object (profileUrl, firstName, lastName, companyName, position, location, emailAddress).",
|
|
120552
|
+
items: { type: "object" }
|
|
120553
|
+
}
|
|
120554
|
+
},
|
|
120555
|
+
required: ["campaignId", "accountLeadPairs"]
|
|
120556
|
+
},
|
|
120557
|
+
request: {
|
|
120558
|
+
method: "POST",
|
|
120559
|
+
path: "/campaign/AddLeadsToCampaignV2",
|
|
120560
|
+
body: { campaignId: "{campaignId}", accountLeadPairs: "{accountLeadPairs}" }
|
|
120561
|
+
},
|
|
120562
|
+
cas: "native-idempotency",
|
|
120563
|
+
externalEffect: true
|
|
120564
|
+
},
|
|
120565
|
+
{
|
|
120566
|
+
name: "inbox.get_conversations",
|
|
120567
|
+
class: "read",
|
|
120568
|
+
description: "Retrieve inbox conversations with filtering and pagination.",
|
|
120569
|
+
parameters: {
|
|
120570
|
+
type: "object",
|
|
120571
|
+
properties: {
|
|
120572
|
+
offset: { type: "integer", description: "Number of records to skip." },
|
|
120573
|
+
limit: { type: "integer", description: "Maximum records to return." },
|
|
120574
|
+
filters: { type: "object", description: "Optional conversation filters." }
|
|
120575
|
+
},
|
|
120576
|
+
required: ["offset", "limit"]
|
|
120577
|
+
},
|
|
120578
|
+
request: {
|
|
120579
|
+
method: "POST",
|
|
120580
|
+
path: "/inbox/GetConversationsV2",
|
|
120581
|
+
body: { offset: "{offset}", limit: "{limit}", filters: "{filters}" }
|
|
120582
|
+
}
|
|
120583
|
+
}
|
|
120584
|
+
]
|
|
120585
|
+
});
|
|
120586
|
+
|
|
120587
|
+
// src/connectors/adapters/lagrowthmachine.ts
|
|
120588
|
+
var lagrowthmachineConnector = declarativeRestConnector({
|
|
120589
|
+
kind: "lagrowthmachine",
|
|
120590
|
+
displayName: "LaGrowthMachine",
|
|
120591
|
+
description: "Multichannel sales automation (LinkedIn, email, Twitter). Create or update leads in audiences, list campaigns and audiences, and read campaign stats.",
|
|
120592
|
+
auth: {
|
|
120593
|
+
kind: "api-key",
|
|
120594
|
+
hint: "Get your API key at app.lagrowthmachine.com/settings/api. Sent as the 'apikey' query parameter on every request."
|
|
120595
|
+
},
|
|
120596
|
+
category: "crm",
|
|
120597
|
+
defaultConsistencyModel: "authoritative",
|
|
120598
|
+
baseUrl: "https://apiv2.lagrowthmachine.com",
|
|
120599
|
+
credentialPlacement: { kind: "query", parameter: "apikey" },
|
|
120600
|
+
defaultHeaders: { "content-type": "application/json" },
|
|
120601
|
+
test: { method: "GET", path: "/flow/audiences" },
|
|
120602
|
+
capabilities: [
|
|
120603
|
+
{
|
|
120604
|
+
name: "campaigns.list",
|
|
120605
|
+
class: "read",
|
|
120606
|
+
description: "List campaigns with pagination.",
|
|
120607
|
+
parameters: {
|
|
120608
|
+
type: "object",
|
|
120609
|
+
properties: {
|
|
120610
|
+
skip: { type: "integer", description: "Pagination offset." },
|
|
120611
|
+
limit: { type: "integer", description: "Maximum results to return." }
|
|
120612
|
+
},
|
|
120613
|
+
required: []
|
|
120614
|
+
},
|
|
120615
|
+
request: {
|
|
120616
|
+
method: "GET",
|
|
120617
|
+
path: "/flow/campaigns",
|
|
120618
|
+
query: { skip: "{skip}", limit: "{limit}" }
|
|
120619
|
+
}
|
|
120620
|
+
},
|
|
120621
|
+
{
|
|
120622
|
+
name: "audiences.list",
|
|
120623
|
+
class: "read",
|
|
120624
|
+
description: "List the audiences in the workspace.",
|
|
120625
|
+
parameters: { type: "object", properties: {}, required: [] },
|
|
120626
|
+
request: { method: "GET", path: "/flow/audiences" }
|
|
120627
|
+
},
|
|
120628
|
+
{
|
|
120629
|
+
name: "campaign.get_stats",
|
|
120630
|
+
class: "read",
|
|
120631
|
+
description: "Get engagement statistics for a campaign.",
|
|
120632
|
+
parameters: {
|
|
120633
|
+
type: "object",
|
|
120634
|
+
properties: { campaignId: { type: "string", description: "Campaign ID." } },
|
|
120635
|
+
required: ["campaignId"]
|
|
120636
|
+
},
|
|
120637
|
+
request: { method: "GET", path: "/flow/campaigns/{campaignId}/stats" }
|
|
120638
|
+
},
|
|
120639
|
+
{
|
|
120640
|
+
name: "lead.create_or_update",
|
|
120641
|
+
class: "mutation",
|
|
120642
|
+
description: "Create or update a lead in an audience, which starts it through the audience's workflow.",
|
|
120643
|
+
parameters: {
|
|
120644
|
+
type: "object",
|
|
120645
|
+
properties: {
|
|
120646
|
+
audience: { type: "string", description: "Audience name or identifier." },
|
|
120647
|
+
proEmail: { type: "string", description: "Professional email." },
|
|
120648
|
+
persoEmail: { type: "string", description: "Personal email." },
|
|
120649
|
+
linkedinUrl: { type: "string", description: "LinkedIn profile URL." },
|
|
120650
|
+
firstname: { type: "string", description: "First name." },
|
|
120651
|
+
lastname: { type: "string", description: "Last name." },
|
|
120652
|
+
companyName: { type: "string", description: "Company name." },
|
|
120653
|
+
jobTitle: { type: "string", description: "Job title." }
|
|
120654
|
+
},
|
|
120655
|
+
required: ["audience"]
|
|
120656
|
+
},
|
|
120657
|
+
request: {
|
|
120658
|
+
method: "POST",
|
|
120659
|
+
path: "/flow/leads",
|
|
120660
|
+
body: {
|
|
120661
|
+
audience: "{audience}",
|
|
120662
|
+
proEmail: "{proEmail}",
|
|
120663
|
+
persoEmail: "{persoEmail}",
|
|
120664
|
+
linkedinUrl: "{linkedinUrl}",
|
|
120665
|
+
firstname: "{firstname}",
|
|
120666
|
+
lastname: "{lastname}",
|
|
120667
|
+
companyName: "{companyName}",
|
|
120668
|
+
jobTitle: "{jobTitle}"
|
|
120669
|
+
}
|
|
120670
|
+
},
|
|
120671
|
+
cas: "native-idempotency",
|
|
120672
|
+
externalEffect: true
|
|
120673
|
+
}
|
|
120674
|
+
]
|
|
120675
|
+
});
|
|
120676
|
+
|
|
120677
|
+
// src/connectors/adapters/saleshandy.ts
|
|
120678
|
+
var saleshandyConnector = declarativeRestConnector({
|
|
120679
|
+
kind: "saleshandy",
|
|
120680
|
+
displayName: "Saleshandy",
|
|
120681
|
+
description: "Cold email outreach platform: manage prospects, build sequences, add prospects to sequence steps, and control sequence status.",
|
|
120682
|
+
auth: {
|
|
120683
|
+
kind: "api-key",
|
|
120684
|
+
hint: "Generate an API key in company Settings -> API Settings. Sent as the x-api-key header."
|
|
120685
|
+
},
|
|
120686
|
+
category: "crm",
|
|
120687
|
+
defaultConsistencyModel: "authoritative",
|
|
120688
|
+
baseUrl: "https://open-api.saleshandy.com",
|
|
120689
|
+
credentialPlacement: { kind: "header", header: "x-api-key" },
|
|
120690
|
+
defaultHeaders: { "content-type": "application/json" },
|
|
120691
|
+
test: { method: "GET", path: "/v1/user/team-member-list" },
|
|
120692
|
+
capabilities: [
|
|
120693
|
+
{
|
|
120694
|
+
name: "sequences.list",
|
|
120695
|
+
class: "read",
|
|
120696
|
+
description: "List sequences and their steps.",
|
|
120697
|
+
parameters: {
|
|
120698
|
+
type: "object",
|
|
120699
|
+
properties: {
|
|
120700
|
+
sequenceName: { type: "string", description: "Filter by sequence name." },
|
|
120701
|
+
page: { type: "integer", description: "Page number." },
|
|
120702
|
+
pageSize: { type: "integer", description: "Results per page." }
|
|
120703
|
+
},
|
|
120704
|
+
required: []
|
|
120705
|
+
},
|
|
120706
|
+
request: {
|
|
120707
|
+
method: "GET",
|
|
120708
|
+
path: "/v1/sequences",
|
|
120709
|
+
query: { sequenceName: "{sequenceName}", page: "{page}", pageSize: "{pageSize}" }
|
|
120710
|
+
}
|
|
120711
|
+
},
|
|
120712
|
+
{
|
|
120713
|
+
name: "prospects.list",
|
|
120714
|
+
class: "read",
|
|
120715
|
+
description: "List all prospects with pagination and search.",
|
|
120716
|
+
parameters: {
|
|
120717
|
+
type: "object",
|
|
120718
|
+
properties: {
|
|
120719
|
+
search: { type: "string", description: "Search term." },
|
|
120720
|
+
page: { type: "integer", description: "Page number." },
|
|
120721
|
+
pageSize: { type: "integer", description: "Results per page." }
|
|
120722
|
+
},
|
|
120723
|
+
required: []
|
|
120724
|
+
},
|
|
120725
|
+
request: {
|
|
120726
|
+
method: "GET",
|
|
120727
|
+
path: "/v1/prospects",
|
|
120728
|
+
query: { search: "{search}", page: "{page}", pageSize: "{pageSize}" }
|
|
120729
|
+
}
|
|
120730
|
+
},
|
|
120731
|
+
{
|
|
120732
|
+
name: "sequence.import_prospects",
|
|
120733
|
+
class: "mutation",
|
|
120734
|
+
description: "Import prospects (keyed by field name) into a sequence at a given step.",
|
|
120735
|
+
parameters: {
|
|
120736
|
+
type: "object",
|
|
120737
|
+
properties: {
|
|
120738
|
+
prospectList: {
|
|
120739
|
+
type: "array",
|
|
120740
|
+
description: "Array of prospect objects keyed by field name (e.g. Email, First Name).",
|
|
120741
|
+
items: { type: "object" }
|
|
120742
|
+
},
|
|
120743
|
+
stepId: { type: "integer", description: "Sequence step ID to add prospects to." },
|
|
120744
|
+
conflictAction: {
|
|
120745
|
+
type: "string",
|
|
120746
|
+
description: "How to handle duplicates (e.g. skip, update)."
|
|
120747
|
+
},
|
|
120748
|
+
verifyProspects: { type: "boolean", description: "Verify emails on import." },
|
|
120749
|
+
tags: { type: "array", items: { type: "string" }, description: "Tags to apply." }
|
|
120750
|
+
},
|
|
120751
|
+
required: ["prospectList", "stepId", "conflictAction"]
|
|
120752
|
+
},
|
|
120753
|
+
request: {
|
|
120754
|
+
method: "POST",
|
|
120755
|
+
path: "/v1/sequences/prospects/import-with-field-name",
|
|
120756
|
+
body: {
|
|
120757
|
+
prospectList: "{prospectList}",
|
|
120758
|
+
stepId: "{stepId}",
|
|
120759
|
+
conflictAction: "{conflictAction}",
|
|
120760
|
+
verifyProspects: "{verifyProspects}",
|
|
120761
|
+
tags: "{tags}"
|
|
120762
|
+
}
|
|
120763
|
+
},
|
|
120764
|
+
cas: "native-idempotency",
|
|
120765
|
+
externalEffect: true
|
|
120766
|
+
},
|
|
120767
|
+
{
|
|
120768
|
+
name: "sequence.set_status",
|
|
120769
|
+
class: "mutation",
|
|
120770
|
+
description: "Activate or pause one or more sequences.",
|
|
120771
|
+
parameters: {
|
|
120772
|
+
type: "object",
|
|
120773
|
+
properties: {
|
|
120774
|
+
sequenceIds: {
|
|
120775
|
+
type: "array",
|
|
120776
|
+
items: { type: "string" },
|
|
120777
|
+
description: "Sequence IDs to update."
|
|
120778
|
+
},
|
|
120779
|
+
status: { type: "string", description: "Target status (e.g. ACTIVE, PAUSED)." }
|
|
120780
|
+
},
|
|
120781
|
+
required: ["sequenceIds", "status"]
|
|
120782
|
+
},
|
|
120783
|
+
request: {
|
|
120784
|
+
method: "POST",
|
|
120785
|
+
path: "/v1/sequences/status",
|
|
120786
|
+
body: { sequenceIds: "{sequenceIds}", status: "{status}" }
|
|
120787
|
+
},
|
|
120788
|
+
cas: "native-idempotency",
|
|
120789
|
+
externalEffect: true
|
|
120790
|
+
}
|
|
120791
|
+
]
|
|
120792
|
+
});
|
|
120793
|
+
|
|
120794
|
+
// src/connectors/adapters/bettercontact.ts
|
|
120795
|
+
var bettercontactConnector = declarativeRestConnector({
|
|
120796
|
+
kind: "bettercontact",
|
|
120797
|
+
displayName: "BetterContact",
|
|
120798
|
+
description: "Waterfall email and phone enrichment that queries 20+ data providers to find a contact's work email and direct phone number.",
|
|
120799
|
+
auth: {
|
|
120800
|
+
kind: "api-key",
|
|
120801
|
+
hint: "API key from the BetterContact dashboard (Settings -> API). Sent as the X-API-Key header."
|
|
120802
|
+
},
|
|
120803
|
+
category: "crm",
|
|
120804
|
+
defaultConsistencyModel: "authoritative",
|
|
120805
|
+
baseUrl: "https://app.bettercontact.rocks/api/v2",
|
|
120806
|
+
credentialPlacement: { kind: "header", header: "X-API-Key" },
|
|
120807
|
+
defaultHeaders: { "content-type": "application/json" },
|
|
120808
|
+
capabilities: [
|
|
120809
|
+
{
|
|
120810
|
+
name: "enrichment.create",
|
|
120811
|
+
class: "mutation",
|
|
120812
|
+
description: "Start an asynchronous waterfall enrichment for 1-100 contacts to find work emails and/or direct phone numbers. Consumes credits per found data point.",
|
|
120813
|
+
parameters: {
|
|
120814
|
+
type: "object",
|
|
120815
|
+
properties: {
|
|
120816
|
+
data: {
|
|
120817
|
+
type: "array",
|
|
120818
|
+
description: "Array of 1-100 lead objects to enrich; each supports first_name, last_name, company, company_domain, linkedin_url, and custom_fields.",
|
|
120819
|
+
items: { type: "object" }
|
|
120820
|
+
},
|
|
120821
|
+
enrich_email_address: { type: "boolean", description: "If true, enrich the work email address." },
|
|
120822
|
+
enrich_phone_number: { type: "boolean", description: "If true, enrich the direct phone number." },
|
|
120823
|
+
webhook: {
|
|
120824
|
+
type: "string",
|
|
120825
|
+
description: "Optional URL to which results are pushed when enrichment completes."
|
|
120826
|
+
}
|
|
120827
|
+
},
|
|
120828
|
+
required: ["data", "enrich_email_address", "enrich_phone_number"]
|
|
120829
|
+
},
|
|
120830
|
+
request: {
|
|
120831
|
+
method: "POST",
|
|
120832
|
+
path: "/async",
|
|
120833
|
+
body: {
|
|
120834
|
+
data: "{data}",
|
|
120835
|
+
enrich_email_address: "{enrich_email_address}",
|
|
120836
|
+
enrich_phone_number: "{enrich_phone_number}",
|
|
120837
|
+
webhook: "{webhook}"
|
|
120838
|
+
}
|
|
120839
|
+
},
|
|
120840
|
+
cas: "native-idempotency",
|
|
120841
|
+
externalEffect: false
|
|
120842
|
+
},
|
|
120843
|
+
{
|
|
120844
|
+
name: "enrichment.get",
|
|
120845
|
+
class: "read",
|
|
120846
|
+
description: "Retrieve the status and enriched results of a previously submitted enrichment request by its request id.",
|
|
120847
|
+
parameters: {
|
|
120848
|
+
type: "object",
|
|
120849
|
+
properties: {
|
|
120850
|
+
request_id: { type: "string", description: "The id returned by enrichment.create." }
|
|
120851
|
+
},
|
|
120852
|
+
required: ["request_id"]
|
|
120853
|
+
},
|
|
120854
|
+
request: { method: "GET", path: "/async/{request_id}" }
|
|
120855
|
+
}
|
|
120856
|
+
]
|
|
120857
|
+
});
|
|
120858
|
+
|
|
120859
|
+
// src/connectors/adapters/contactout.ts
|
|
120860
|
+
var contactoutConnector = declarativeRestConnector({
|
|
120861
|
+
kind: "contactout",
|
|
120862
|
+
displayName: "ContactOut",
|
|
120863
|
+
description: "Find and enrich professional and personal emails, phone numbers, and LinkedIn data for prospects.",
|
|
120864
|
+
auth: {
|
|
120865
|
+
kind: "api-key",
|
|
120866
|
+
hint: "API token from your ContactOut account. Sent as the 'token' header."
|
|
120867
|
+
},
|
|
120868
|
+
category: "crm",
|
|
120869
|
+
defaultConsistencyModel: "authoritative",
|
|
120870
|
+
baseUrl: "https://api.contactout.com",
|
|
120871
|
+
credentialPlacement: { kind: "header", header: "token" },
|
|
120872
|
+
defaultHeaders: { "content-type": "application/json" },
|
|
120873
|
+
capabilities: [
|
|
120874
|
+
{
|
|
120875
|
+
name: "people.search",
|
|
120876
|
+
class: "read",
|
|
120877
|
+
description: "Search for people profiles matching criteria such as name, job title, company, and location.",
|
|
120878
|
+
parameters: {
|
|
120879
|
+
type: "object",
|
|
120880
|
+
properties: {
|
|
120881
|
+
name: { type: "string" },
|
|
120882
|
+
job_title: { type: "array", items: { type: "string" } },
|
|
120883
|
+
company: { type: "array", items: { type: "string" } },
|
|
120884
|
+
location: { type: "array", items: { type: "string" } },
|
|
120885
|
+
page: { type: "integer", description: "Result page number." },
|
|
120886
|
+
reveal_info: {
|
|
120887
|
+
type: "boolean",
|
|
120888
|
+
description: "Include contact data (consumes email/phone credits)."
|
|
120889
|
+
}
|
|
120890
|
+
},
|
|
120891
|
+
required: []
|
|
120892
|
+
},
|
|
120893
|
+
request: {
|
|
120894
|
+
method: "POST",
|
|
120895
|
+
path: "/v1/people/search",
|
|
120896
|
+
body: {
|
|
120897
|
+
name: "{name}",
|
|
120898
|
+
job_title: "{job_title}",
|
|
120899
|
+
company: "{company}",
|
|
120900
|
+
location: "{location}",
|
|
120901
|
+
page: "{page}",
|
|
120902
|
+
reveal_info: "{reveal_info}"
|
|
120903
|
+
}
|
|
120904
|
+
}
|
|
120905
|
+
},
|
|
120906
|
+
{
|
|
120907
|
+
name: "linkedin.enrich",
|
|
120908
|
+
class: "mutation",
|
|
120909
|
+
description: "Look up a LinkedIn profile URL and return contact data including emails and phones. Consumes credits when contact info is found.",
|
|
120910
|
+
parameters: {
|
|
120911
|
+
type: "object",
|
|
120912
|
+
properties: {
|
|
120913
|
+
profile: { type: "string", description: "URL-encoded LinkedIn profile URL." },
|
|
120914
|
+
profile_only: {
|
|
120915
|
+
type: "boolean",
|
|
120916
|
+
description: "If true, return profile data without contact info."
|
|
120917
|
+
}
|
|
120918
|
+
},
|
|
120919
|
+
required: ["profile"]
|
|
120920
|
+
},
|
|
120921
|
+
request: {
|
|
120922
|
+
method: "GET",
|
|
120923
|
+
path: "/v1/linkedin/enrich",
|
|
120924
|
+
query: { profile: "{profile}", profile_only: "{profile_only}" }
|
|
120925
|
+
},
|
|
120926
|
+
cas: "native-idempotency",
|
|
120927
|
+
externalEffect: false
|
|
120928
|
+
},
|
|
120929
|
+
{
|
|
120930
|
+
name: "people.enrich",
|
|
120931
|
+
class: "mutation",
|
|
120932
|
+
description: "Enrich a person from a LinkedIn URL, email, or name plus company. Returns work/personal emails and phones; consumes credits when found.",
|
|
120933
|
+
parameters: {
|
|
120934
|
+
type: "object",
|
|
120935
|
+
properties: {
|
|
120936
|
+
linkedin_url: { type: "string" },
|
|
120937
|
+
email: { type: "string" },
|
|
120938
|
+
full_name: { type: "string" },
|
|
120939
|
+
company: { type: "string" },
|
|
120940
|
+
company_domain: { type: "string" },
|
|
120941
|
+
include: {
|
|
120942
|
+
type: "array",
|
|
120943
|
+
description: "Data types to include, e.g. work_email, personal_email, phone.",
|
|
120944
|
+
items: { type: "string" }
|
|
120945
|
+
}
|
|
120946
|
+
},
|
|
120947
|
+
required: []
|
|
120948
|
+
},
|
|
120949
|
+
request: {
|
|
120950
|
+
method: "POST",
|
|
120951
|
+
path: "/v1/people/enrich",
|
|
120952
|
+
body: {
|
|
120953
|
+
linkedin_url: "{linkedin_url}",
|
|
120954
|
+
email: "{email}",
|
|
120955
|
+
full_name: "{full_name}",
|
|
120956
|
+
company: "{company}",
|
|
120957
|
+
company_domain: "{company_domain}",
|
|
120958
|
+
include: "{include}"
|
|
120959
|
+
}
|
|
120960
|
+
},
|
|
120961
|
+
cas: "native-idempotency",
|
|
120962
|
+
externalEffect: false
|
|
120963
|
+
},
|
|
120964
|
+
{
|
|
120965
|
+
name: "email.verify",
|
|
120966
|
+
class: "mutation",
|
|
120967
|
+
description: "Verify the deliverability of an email address. Consumes a verifier credit for definitive results.",
|
|
120968
|
+
parameters: {
|
|
120969
|
+
type: "object",
|
|
120970
|
+
properties: { email: { type: "string" } },
|
|
120971
|
+
required: ["email"]
|
|
120972
|
+
},
|
|
120973
|
+
request: { method: "GET", path: "/v1/email/verify", query: { email: "{email}" } },
|
|
120974
|
+
cas: "native-idempotency",
|
|
120975
|
+
externalEffect: false
|
|
120976
|
+
}
|
|
120977
|
+
]
|
|
120978
|
+
});
|
|
120979
|
+
|
|
120980
|
+
// src/connectors/adapters/findymail.ts
|
|
120981
|
+
var findymailConnector = declarativeRestConnector({
|
|
120982
|
+
kind: "findymail",
|
|
120983
|
+
displayName: "Findymail",
|
|
120984
|
+
description: "Find verified work email addresses by name and company domain, verify deliverability, and discover emails across a domain.",
|
|
120985
|
+
auth: {
|
|
120986
|
+
kind: "api-key",
|
|
120987
|
+
hint: "API key from your Findymail dashboard. Sent as the Authorization: Bearer header."
|
|
120988
|
+
},
|
|
120989
|
+
category: "crm",
|
|
120990
|
+
defaultConsistencyModel: "authoritative",
|
|
120991
|
+
baseUrl: "https://app.findymail.com",
|
|
120992
|
+
credentialPlacement: { kind: "bearer" },
|
|
120993
|
+
defaultHeaders: { "content-type": "application/json", accept: "application/json" },
|
|
120994
|
+
test: { method: "GET", path: "/api/credits" },
|
|
120995
|
+
capabilities: [
|
|
120996
|
+
{
|
|
120997
|
+
name: "email.find",
|
|
120998
|
+
class: "mutation",
|
|
120999
|
+
description: "Find a person's verified work email from their full name and company domain. Consumes a credit when an email is found.",
|
|
121000
|
+
parameters: {
|
|
121001
|
+
type: "object",
|
|
121002
|
+
properties: {
|
|
121003
|
+
name: { type: "string", description: "Full name of the person." },
|
|
121004
|
+
domain: { type: "string", description: "Company domain." }
|
|
121005
|
+
},
|
|
121006
|
+
required: ["name", "domain"]
|
|
121007
|
+
},
|
|
121008
|
+
request: {
|
|
121009
|
+
method: "POST",
|
|
121010
|
+
path: "/api/search/name",
|
|
121011
|
+
body: { name: "{name}", domain: "{domain}" }
|
|
121012
|
+
},
|
|
121013
|
+
cas: "native-idempotency",
|
|
121014
|
+
externalEffect: false
|
|
121015
|
+
},
|
|
121016
|
+
{
|
|
121017
|
+
name: "email.verify",
|
|
121018
|
+
class: "mutation",
|
|
121019
|
+
description: "Verify the deliverability of an email address and return the email provider. Consumes a verification credit.",
|
|
121020
|
+
parameters: {
|
|
121021
|
+
type: "object",
|
|
121022
|
+
properties: { email: { type: "string" } },
|
|
121023
|
+
required: ["email"]
|
|
121024
|
+
},
|
|
121025
|
+
request: { method: "POST", path: "/api/verify", body: { email: "{email}" } },
|
|
121026
|
+
cas: "native-idempotency",
|
|
121027
|
+
externalEffect: false
|
|
121028
|
+
},
|
|
121029
|
+
{
|
|
121030
|
+
name: "email.find_by_domain",
|
|
121031
|
+
class: "mutation",
|
|
121032
|
+
description: "Find email addresses associated with a company domain. Consumes credits per email returned.",
|
|
121033
|
+
parameters: {
|
|
121034
|
+
type: "object",
|
|
121035
|
+
properties: { domain: { type: "string", description: "Company domain to search." } },
|
|
121036
|
+
required: ["domain"]
|
|
121037
|
+
},
|
|
121038
|
+
request: { method: "POST", path: "/api/search/domain", body: { domain: "{domain}" } },
|
|
121039
|
+
cas: "native-idempotency",
|
|
121040
|
+
externalEffect: false
|
|
121041
|
+
},
|
|
121042
|
+
{
|
|
121043
|
+
name: "credits.get",
|
|
121044
|
+
class: "read",
|
|
121045
|
+
description: "Retrieve the remaining credit balance for the account.",
|
|
121046
|
+
parameters: { type: "object", properties: {}, required: [] },
|
|
121047
|
+
request: { method: "GET", path: "/api/credits" }
|
|
121048
|
+
}
|
|
121049
|
+
]
|
|
121050
|
+
});
|
|
121051
|
+
|
|
121052
|
+
// src/connectors/adapters/snov-io.ts
|
|
121053
|
+
var snovIoConnector = declarativeRestConnector({
|
|
121054
|
+
kind: "snov-io",
|
|
121055
|
+
displayName: "Snov.io",
|
|
121056
|
+
description: "Find and verify B2B email addresses by domain or by name, and enrich profiles from an email address.",
|
|
121057
|
+
auth: {
|
|
121058
|
+
kind: "api-key",
|
|
121059
|
+
hint: "Exchange your API User ID and Secret (account Settings -> API) for an access token via POST /v1/oauth/access_token, then paste the access token here. Sent as the Authorization: Bearer header."
|
|
121060
|
+
},
|
|
121061
|
+
category: "crm",
|
|
121062
|
+
defaultConsistencyModel: "authoritative",
|
|
121063
|
+
baseUrl: "https://api.snov.io",
|
|
121064
|
+
credentialPlacement: { kind: "bearer" },
|
|
121065
|
+
defaultHeaders: { "content-type": "application/json" },
|
|
121066
|
+
test: { method: "GET", path: "/v2/sender-accounts/emails" },
|
|
121067
|
+
capabilities: [
|
|
121068
|
+
{
|
|
121069
|
+
name: "domain_search.start",
|
|
121070
|
+
class: "mutation",
|
|
121071
|
+
description: "Start an asynchronous search for email addresses belonging to a company domain. Returns a task to poll for results.",
|
|
121072
|
+
parameters: {
|
|
121073
|
+
type: "object",
|
|
121074
|
+
properties: { domain: { type: "string", description: "Company domain to search." } },
|
|
121075
|
+
required: ["domain"]
|
|
121076
|
+
},
|
|
121077
|
+
request: {
|
|
121078
|
+
method: "POST",
|
|
121079
|
+
path: "/v2/domain-search/start",
|
|
121080
|
+
body: { domain: "{domain}" }
|
|
121081
|
+
},
|
|
121082
|
+
cas: "native-idempotency",
|
|
121083
|
+
externalEffect: false
|
|
121084
|
+
},
|
|
121085
|
+
{
|
|
121086
|
+
name: "email_finder.start",
|
|
121087
|
+
class: "mutation",
|
|
121088
|
+
description: "Start finding email addresses for one or more people by first name, last name, and company domain. Returns a task to poll; consumes credits when emails are found.",
|
|
121089
|
+
parameters: {
|
|
121090
|
+
type: "object",
|
|
121091
|
+
properties: {
|
|
121092
|
+
rows: {
|
|
121093
|
+
type: "array",
|
|
121094
|
+
description: "Array of objects each with first_name, last_name, and domain.",
|
|
121095
|
+
items: { type: "object" }
|
|
121096
|
+
}
|
|
121097
|
+
},
|
|
121098
|
+
required: ["rows"]
|
|
121099
|
+
},
|
|
121100
|
+
request: {
|
|
121101
|
+
method: "POST",
|
|
121102
|
+
path: "/v2/emails-by-domain-by-name/start",
|
|
121103
|
+
body: { rows: "{rows}" }
|
|
121104
|
+
},
|
|
121105
|
+
cas: "native-idempotency",
|
|
121106
|
+
externalEffect: false
|
|
121107
|
+
},
|
|
121108
|
+
{
|
|
121109
|
+
name: "email_verification.start",
|
|
121110
|
+
class: "mutation",
|
|
121111
|
+
description: "Start verification of up to 10 email addresses. Returns a task to poll for deliverability results. Consumes credits.",
|
|
121112
|
+
parameters: {
|
|
121113
|
+
type: "object",
|
|
121114
|
+
properties: {
|
|
121115
|
+
emails: {
|
|
121116
|
+
type: "array",
|
|
121117
|
+
description: "Array of email addresses to verify (max 10).",
|
|
121118
|
+
items: { type: "string" }
|
|
121119
|
+
}
|
|
121120
|
+
},
|
|
121121
|
+
required: ["emails"]
|
|
121122
|
+
},
|
|
121123
|
+
request: {
|
|
121124
|
+
method: "POST",
|
|
121125
|
+
path: "/v2/email-verification/start",
|
|
121126
|
+
body: { emails: "{emails}" }
|
|
121127
|
+
},
|
|
121128
|
+
cas: "native-idempotency",
|
|
121129
|
+
externalEffect: false
|
|
121130
|
+
},
|
|
121131
|
+
{
|
|
121132
|
+
name: "profile.get_by_email",
|
|
121133
|
+
class: "mutation",
|
|
121134
|
+
description: "Enrich a social/professional profile from an email address. Consumes a credit.",
|
|
121135
|
+
parameters: {
|
|
121136
|
+
type: "object",
|
|
121137
|
+
properties: { email: { type: "string" } },
|
|
121138
|
+
required: ["email"]
|
|
121139
|
+
},
|
|
121140
|
+
request: {
|
|
121141
|
+
method: "POST",
|
|
121142
|
+
path: "/v1/get-profile-by-email",
|
|
121143
|
+
body: { email: "{email}" }
|
|
121144
|
+
},
|
|
121145
|
+
cas: "native-idempotency",
|
|
121146
|
+
externalEffect: false
|
|
121147
|
+
},
|
|
121148
|
+
{
|
|
121149
|
+
name: "domain_emails_count.get",
|
|
121150
|
+
class: "read",
|
|
121151
|
+
description: "Get the count of email addresses available for a domain (free, does not consume credits).",
|
|
121152
|
+
parameters: {
|
|
121153
|
+
type: "object",
|
|
121154
|
+
properties: { domain: { type: "string" } },
|
|
121155
|
+
required: ["domain"]
|
|
121156
|
+
},
|
|
121157
|
+
request: {
|
|
121158
|
+
method: "POST",
|
|
121159
|
+
path: "/v1/get-domain-emails-count",
|
|
121160
|
+
body: { domain: "{domain}" }
|
|
121161
|
+
}
|
|
121162
|
+
}
|
|
121163
|
+
]
|
|
121164
|
+
});
|
|
121165
|
+
|
|
121166
|
+
// src/connectors/adapters/wiza.ts
|
|
121167
|
+
var wizaConnector = declarativeRestConnector({
|
|
121168
|
+
kind: "wiza",
|
|
121169
|
+
displayName: "Wiza",
|
|
121170
|
+
description: "Real-time contact enrichment that reveals a person's work/personal email and phone from a LinkedIn URL, email, or name plus company.",
|
|
121171
|
+
auth: {
|
|
121172
|
+
kind: "api-key",
|
|
121173
|
+
hint: "API key from Wiza account settings. Sent as the Authorization: Bearer header."
|
|
121174
|
+
},
|
|
121175
|
+
category: "crm",
|
|
121176
|
+
defaultConsistencyModel: "authoritative",
|
|
121177
|
+
baseUrl: "https://wiza.co/api",
|
|
121178
|
+
credentialPlacement: { kind: "bearer" },
|
|
121179
|
+
defaultHeaders: { "content-type": "application/json" },
|
|
121180
|
+
test: { method: "GET", path: "/meta/credits" },
|
|
121181
|
+
capabilities: [
|
|
121182
|
+
{
|
|
121183
|
+
name: "individual_reveal.create",
|
|
121184
|
+
class: "mutation",
|
|
121185
|
+
description: "Start a real-time individual reveal to enrich one contact's email and phone from a LinkedIn URL, email, or name plus company/domain. Consumes credits.",
|
|
121186
|
+
parameters: {
|
|
121187
|
+
type: "object",
|
|
121188
|
+
properties: {
|
|
121189
|
+
individual_reveal: {
|
|
121190
|
+
type: "object",
|
|
121191
|
+
description: "Contact identifiers: full_name + company or domain, OR email, OR linkedin (profile URL)."
|
|
121192
|
+
},
|
|
121193
|
+
enrichment_level: { type: "string", description: "One of none, partial, phone, or full." },
|
|
121194
|
+
email_options: {
|
|
121195
|
+
type: "object",
|
|
121196
|
+
description: "Object with accept_work and accept_personal booleans."
|
|
121197
|
+
},
|
|
121198
|
+
phone_options: { type: "object", description: "Phone enrichment options." }
|
|
121199
|
+
},
|
|
121200
|
+
required: ["individual_reveal", "enrichment_level"]
|
|
121201
|
+
},
|
|
121202
|
+
request: {
|
|
121203
|
+
method: "POST",
|
|
121204
|
+
path: "/individual_reveals",
|
|
121205
|
+
body: {
|
|
121206
|
+
individual_reveal: "{individual_reveal}",
|
|
121207
|
+
enrichment_level: "{enrichment_level}",
|
|
121208
|
+
email_options: "{email_options}",
|
|
121209
|
+
phone_options: "{phone_options}"
|
|
121210
|
+
}
|
|
121211
|
+
},
|
|
121212
|
+
cas: "native-idempotency",
|
|
121213
|
+
externalEffect: false
|
|
121214
|
+
},
|
|
121215
|
+
{
|
|
121216
|
+
name: "individual_reveal.get",
|
|
121217
|
+
class: "read",
|
|
121218
|
+
description: "Retrieve the status and revealed contact data of an individual reveal by its id.",
|
|
121219
|
+
parameters: {
|
|
121220
|
+
type: "object",
|
|
121221
|
+
properties: {
|
|
121222
|
+
id: {
|
|
121223
|
+
type: "string",
|
|
121224
|
+
description: "The individual reveal id returned by individual_reveal.create."
|
|
121225
|
+
}
|
|
121226
|
+
},
|
|
121227
|
+
required: ["id"]
|
|
121228
|
+
},
|
|
121229
|
+
request: { method: "GET", path: "/individual_reveals/{id}" }
|
|
121230
|
+
},
|
|
121231
|
+
{
|
|
121232
|
+
name: "list.create",
|
|
121233
|
+
class: "mutation",
|
|
121234
|
+
description: "Create a list to enrich up to 2500 profiles in bulk with email and phone data. Consumes credits.",
|
|
121235
|
+
parameters: {
|
|
121236
|
+
type: "object",
|
|
121237
|
+
properties: {
|
|
121238
|
+
list: {
|
|
121239
|
+
type: "object",
|
|
121240
|
+
description: "List config including name, enrichment_level, email_options, and items (array of up to 2500 profiles)."
|
|
121241
|
+
}
|
|
121242
|
+
},
|
|
121243
|
+
required: ["list"]
|
|
121244
|
+
},
|
|
121245
|
+
request: { method: "POST", path: "/lists", body: { list: "{list}" } },
|
|
121246
|
+
cas: "native-idempotency",
|
|
121247
|
+
externalEffect: true
|
|
121248
|
+
},
|
|
121249
|
+
{
|
|
121250
|
+
name: "credits.get",
|
|
121251
|
+
class: "read",
|
|
121252
|
+
description: "Get the account's remaining email, phone, export, and API credit balances.",
|
|
121253
|
+
parameters: { type: "object", properties: {}, required: [] },
|
|
121254
|
+
request: { method: "GET", path: "/meta/credits" }
|
|
121255
|
+
}
|
|
121256
|
+
]
|
|
121257
|
+
});
|
|
121258
|
+
|
|
121259
|
+
// src/connectors/adapters/builtwith.ts
|
|
121260
|
+
var builtwithConnector = declarativeRestConnector({
|
|
121261
|
+
kind: "builtwith",
|
|
121262
|
+
displayName: "BuiltWith",
|
|
121263
|
+
description: "Look up the technology stack, analytics, hosting, and metadata detected on any website.",
|
|
121264
|
+
auth: {
|
|
121265
|
+
kind: "api-key",
|
|
121266
|
+
hint: "API key (a UUID) from your BuiltWith account dashboard under My Account -> API Access. Sent as the KEY query parameter."
|
|
121267
|
+
},
|
|
121268
|
+
category: "market-intelligence",
|
|
121269
|
+
defaultConsistencyModel: "authoritative",
|
|
121270
|
+
baseUrl: "https://api.builtwith.com/v22",
|
|
121271
|
+
credentialPlacement: { kind: "query", parameter: "KEY" },
|
|
121272
|
+
defaultHeaders: { "content-type": "application/json" },
|
|
121273
|
+
test: { method: "GET", path: "/free1/api.json", query: { LOOKUP: "builtwith.com" } },
|
|
121274
|
+
capabilities: [
|
|
121275
|
+
{
|
|
121276
|
+
name: "domain.lookup",
|
|
121277
|
+
class: "read",
|
|
121278
|
+
description: "Return the full set of detected technologies and metadata for one or more root domains.",
|
|
121279
|
+
parameters: {
|
|
121280
|
+
type: "object",
|
|
121281
|
+
properties: {
|
|
121282
|
+
lookup: {
|
|
121283
|
+
type: "string",
|
|
121284
|
+
description: "Root domain to analyze, e.g. stripe.com. Up to 16 domains may be passed as a comma-separated list."
|
|
121285
|
+
}
|
|
121286
|
+
},
|
|
121287
|
+
required: ["lookup"]
|
|
121288
|
+
},
|
|
121289
|
+
request: { method: "GET", path: "/api.json", query: { LOOKUP: "{lookup}" } }
|
|
121290
|
+
},
|
|
121291
|
+
{
|
|
121292
|
+
name: "domain.free",
|
|
121293
|
+
class: "read",
|
|
121294
|
+
description: "Free-tier lookup returning the most popular detected technology groups for a single domain.",
|
|
121295
|
+
parameters: {
|
|
121296
|
+
type: "object",
|
|
121297
|
+
properties: { lookup: { type: "string", description: "Root domain to analyze." } },
|
|
121298
|
+
required: ["lookup"]
|
|
121299
|
+
},
|
|
121300
|
+
request: { method: "GET", path: "/free1/api.json", query: { LOOKUP: "{lookup}" } }
|
|
121301
|
+
},
|
|
121302
|
+
{
|
|
121303
|
+
name: "domain.relationships",
|
|
121304
|
+
class: "read",
|
|
121305
|
+
description: "Return domains that share relationships (e.g. analytics IDs, ad networks) with the given domain.",
|
|
121306
|
+
parameters: {
|
|
121307
|
+
type: "object",
|
|
121308
|
+
properties: {
|
|
121309
|
+
lookup: { type: "string", description: "Root domain to find related domains for." }
|
|
121310
|
+
},
|
|
121311
|
+
required: ["lookup"]
|
|
121312
|
+
},
|
|
121313
|
+
request: { method: "GET", path: "/rv2/api.json", query: { LOOKUP: "{lookup}" } }
|
|
121314
|
+
},
|
|
121315
|
+
{
|
|
121316
|
+
name: "company.to_url",
|
|
121317
|
+
class: "read",
|
|
121318
|
+
description: "Resolve a company name to its most likely website domain.",
|
|
121319
|
+
parameters: {
|
|
121320
|
+
type: "object",
|
|
121321
|
+
properties: {
|
|
121322
|
+
company: { type: "string", description: "Company name to resolve to a domain." }
|
|
121323
|
+
},
|
|
121324
|
+
required: ["company"]
|
|
121325
|
+
},
|
|
121326
|
+
request: { method: "GET", path: "/ctu1/api.json", query: { COMPANY: "{company}" } }
|
|
121327
|
+
}
|
|
121328
|
+
]
|
|
121329
|
+
});
|
|
121330
|
+
|
|
121331
|
+
// src/connectors/adapters/common-room.ts
|
|
121332
|
+
var commonRoomConnector = declarativeRestConnector({
|
|
121333
|
+
kind: "common-room",
|
|
121334
|
+
displayName: "Common Room",
|
|
121335
|
+
description: "Look up community and customer contacts, their activity, segments, and tags from your Common Room workspace.",
|
|
121336
|
+
auth: {
|
|
121337
|
+
kind: "api-key",
|
|
121338
|
+
hint: "Core API token from Common Room Settings -> API tokens (created by a workspace Admin). Sent as the Authorization: Bearer header."
|
|
121339
|
+
},
|
|
121340
|
+
category: "sales-intelligence",
|
|
121341
|
+
defaultConsistencyModel: "authoritative",
|
|
121342
|
+
baseUrl: "https://api.commonroom.io/community/v1",
|
|
121343
|
+
credentialPlacement: { kind: "bearer" },
|
|
121344
|
+
defaultHeaders: { "content-type": "application/json" },
|
|
121345
|
+
test: { method: "GET", path: "/api-token-status" },
|
|
121346
|
+
capabilities: [
|
|
121347
|
+
{
|
|
121348
|
+
name: "contact.get_by_email",
|
|
121349
|
+
class: "read",
|
|
121350
|
+
description: "Return a contact's full Common Room profile given their email address.",
|
|
121351
|
+
parameters: {
|
|
121352
|
+
type: "object",
|
|
121353
|
+
properties: {
|
|
121354
|
+
email: { type: "string", description: "Email address of the contact to look up." }
|
|
121355
|
+
},
|
|
121356
|
+
required: ["email"]
|
|
121357
|
+
},
|
|
121358
|
+
request: { method: "GET", path: "/user/{email}" }
|
|
121359
|
+
},
|
|
121360
|
+
{
|
|
121361
|
+
name: "contact.search",
|
|
121362
|
+
class: "read",
|
|
121363
|
+
description: "Find contacts by email or linked social handles (Twitter, GitHub, LinkedIn).",
|
|
121364
|
+
parameters: {
|
|
121365
|
+
type: "object",
|
|
121366
|
+
properties: {
|
|
121367
|
+
email: { type: "string", description: "Email address to search by." },
|
|
121368
|
+
github: { type: "string", description: "GitHub username to search by." },
|
|
121369
|
+
twitter: { type: "string", description: "Twitter/X handle to search by." },
|
|
121370
|
+
linkedin: {
|
|
121371
|
+
type: "string",
|
|
121372
|
+
description: "LinkedIn profile URL or handle to search by."
|
|
121373
|
+
}
|
|
121374
|
+
},
|
|
121375
|
+
required: []
|
|
121376
|
+
},
|
|
121377
|
+
request: {
|
|
121378
|
+
method: "GET",
|
|
121379
|
+
path: "/members",
|
|
121380
|
+
query: {
|
|
121381
|
+
email: "{email}",
|
|
121382
|
+
github: "{github}",
|
|
121383
|
+
twitter: "{twitter}",
|
|
121384
|
+
linkedin: "{linkedin}"
|
|
121385
|
+
}
|
|
121386
|
+
}
|
|
121387
|
+
},
|
|
121388
|
+
{
|
|
121389
|
+
name: "activity_types.list",
|
|
121390
|
+
class: "read",
|
|
121391
|
+
description: "List the activity types available in the workspace.",
|
|
121392
|
+
parameters: { type: "object", properties: {}, required: [] },
|
|
121393
|
+
request: { method: "GET", path: "/activityTypes" }
|
|
121394
|
+
},
|
|
121395
|
+
{
|
|
121396
|
+
name: "segments.list",
|
|
121397
|
+
class: "read",
|
|
121398
|
+
description: "List the segments defined in the workspace.",
|
|
121399
|
+
parameters: { type: "object", properties: {}, required: [] },
|
|
121400
|
+
request: { method: "GET", path: "/segments" }
|
|
121401
|
+
},
|
|
121402
|
+
{
|
|
121403
|
+
name: "contact.upsert",
|
|
121404
|
+
class: "mutation",
|
|
121405
|
+
description: "Create or update a contact in a destination source, optionally setting fields and custom fields.",
|
|
121406
|
+
parameters: {
|
|
121407
|
+
type: "object",
|
|
121408
|
+
properties: {
|
|
121409
|
+
destinationSourceId: {
|
|
121410
|
+
type: "string",
|
|
121411
|
+
description: "ID of the destination source to write the contact into."
|
|
121412
|
+
},
|
|
121413
|
+
fullName: { type: "string", description: "Full name of the contact." },
|
|
121414
|
+
email: { type: "string", description: "Email address of the contact." }
|
|
121415
|
+
},
|
|
121416
|
+
required: ["destinationSourceId"]
|
|
121417
|
+
},
|
|
121418
|
+
request: {
|
|
121419
|
+
method: "POST",
|
|
121420
|
+
path: "/source/{destinationSourceId}/user",
|
|
121421
|
+
body: { fullName: "{fullName}", email: "{email}" }
|
|
121422
|
+
},
|
|
121423
|
+
cas: "native-idempotency",
|
|
121424
|
+
externalEffect: true
|
|
121425
|
+
}
|
|
121426
|
+
]
|
|
121427
|
+
});
|
|
121428
|
+
|
|
121429
|
+
// src/connectors/adapters/leadfeeder.ts
|
|
121430
|
+
var leadfeederConnector = declarativeRestConnector({
|
|
121431
|
+
kind: "leadfeeder",
|
|
121432
|
+
displayName: "Leadfeeder",
|
|
121433
|
+
description: "Identify the company behind a website-visitor IP address, returning firmographic details and a confidence score.",
|
|
121434
|
+
auth: {
|
|
121435
|
+
kind: "api-key",
|
|
121436
|
+
hint: "API key from Leadfeeder (Dealfront) Settings -> API keys. Sent in the X-API-KEY request header."
|
|
121437
|
+
},
|
|
121438
|
+
category: "sales-intelligence",
|
|
121439
|
+
defaultConsistencyModel: "authoritative",
|
|
121440
|
+
baseUrl: "https://api.lf-discover.com",
|
|
121441
|
+
credentialPlacement: { kind: "header", header: "X-API-KEY" },
|
|
121442
|
+
defaultHeaders: { "content-type": "application/json" },
|
|
121443
|
+
test: { method: "GET", path: "/companies", query: { ip: "185.70.216.139" } },
|
|
121444
|
+
capabilities: [
|
|
121445
|
+
{
|
|
121446
|
+
name: "ip.enrich",
|
|
121447
|
+
class: "read",
|
|
121448
|
+
description: "Resolve an IPv4 or IPv6 address to the company that owns it, including name, domain, industry, size, revenue, location, and confidence.",
|
|
121449
|
+
parameters: {
|
|
121450
|
+
type: "object",
|
|
121451
|
+
properties: {
|
|
121452
|
+
ip: {
|
|
121453
|
+
type: "string",
|
|
121454
|
+
description: "Valid IPv4 or shortened IPv6 address to enrich, e.g. 185.70.216.139."
|
|
121455
|
+
}
|
|
121456
|
+
},
|
|
121457
|
+
required: ["ip"]
|
|
121458
|
+
},
|
|
121459
|
+
request: { method: "GET", path: "/companies", query: { ip: "{ip}" } }
|
|
121460
|
+
}
|
|
121461
|
+
]
|
|
121462
|
+
});
|
|
121463
|
+
|
|
121464
|
+
// src/connectors/adapters/serper.ts
|
|
121465
|
+
var serperConnector = declarativeRestConnector({
|
|
121466
|
+
kind: "serper",
|
|
121467
|
+
displayName: "Serper",
|
|
121468
|
+
description: "Run fast Google searches (web, news, images, places, and scholar) and get structured SERP results as JSON.",
|
|
121469
|
+
auth: {
|
|
121470
|
+
kind: "api-key",
|
|
121471
|
+
hint: "API key from your serper.dev dashboard. Sent in the X-API-KEY request header."
|
|
121472
|
+
},
|
|
121473
|
+
category: "market-intelligence",
|
|
121474
|
+
defaultConsistencyModel: "authoritative",
|
|
121475
|
+
baseUrl: "https://google.serper.dev",
|
|
121476
|
+
credentialPlacement: { kind: "header", header: "X-API-KEY" },
|
|
121477
|
+
defaultHeaders: { "content-type": "application/json" },
|
|
121478
|
+
test: { method: "POST", path: "/search", body: { q: "OpenAI" } },
|
|
121479
|
+
capabilities: [
|
|
121480
|
+
{
|
|
121481
|
+
name: "search.web",
|
|
121482
|
+
class: "read",
|
|
121483
|
+
description: "Run a Google web search and return organic results, knowledge graph, answer box, and related searches.",
|
|
121484
|
+
parameters: {
|
|
121485
|
+
type: "object",
|
|
121486
|
+
properties: {
|
|
121487
|
+
q: { type: "string", description: "The search query." },
|
|
121488
|
+
gl: {
|
|
121489
|
+
type: "string",
|
|
121490
|
+
description: "Two-letter country code for geo-targeting, e.g. us."
|
|
121491
|
+
},
|
|
121492
|
+
hl: { type: "string", description: "Two-letter language code, e.g. en." },
|
|
121493
|
+
num: { type: "integer", description: "Number of results to return." },
|
|
121494
|
+
page: { type: "integer", description: "Results page number." }
|
|
121495
|
+
},
|
|
121496
|
+
required: ["q"]
|
|
121497
|
+
},
|
|
121498
|
+
request: {
|
|
121499
|
+
method: "POST",
|
|
121500
|
+
path: "/search",
|
|
121501
|
+
body: { q: "{q}", gl: "{gl}", hl: "{hl}", num: "{num}", page: "{page}" }
|
|
121502
|
+
}
|
|
121503
|
+
},
|
|
121504
|
+
{
|
|
121505
|
+
name: "search.news",
|
|
121506
|
+
class: "read",
|
|
121507
|
+
description: "Run a Google News search and return structured news results.",
|
|
121508
|
+
parameters: {
|
|
121509
|
+
type: "object",
|
|
121510
|
+
properties: {
|
|
121511
|
+
q: { type: "string", description: "The news search query." },
|
|
121512
|
+
gl: { type: "string", description: "Two-letter country code." },
|
|
121513
|
+
hl: { type: "string", description: "Two-letter language code." }
|
|
121514
|
+
},
|
|
121515
|
+
required: ["q"]
|
|
121516
|
+
},
|
|
121517
|
+
request: { method: "POST", path: "/news", body: { q: "{q}", gl: "{gl}", hl: "{hl}" } }
|
|
121518
|
+
},
|
|
121519
|
+
{
|
|
121520
|
+
name: "search.places",
|
|
121521
|
+
class: "read",
|
|
121522
|
+
description: "Run a Google Maps/Places search and return structured place results.",
|
|
121523
|
+
parameters: {
|
|
121524
|
+
type: "object",
|
|
121525
|
+
properties: {
|
|
121526
|
+
q: { type: "string", description: "The places search query." },
|
|
121527
|
+
gl: { type: "string", description: "Two-letter country code." }
|
|
121528
|
+
},
|
|
121529
|
+
required: ["q"]
|
|
121530
|
+
},
|
|
121531
|
+
request: { method: "POST", path: "/places", body: { q: "{q}", gl: "{gl}" } }
|
|
121532
|
+
},
|
|
121533
|
+
{
|
|
121534
|
+
name: "search.scholar",
|
|
121535
|
+
class: "read",
|
|
121536
|
+
description: "Run a Google Scholar search and return structured academic results.",
|
|
121537
|
+
parameters: {
|
|
121538
|
+
type: "object",
|
|
121539
|
+
properties: { q: { type: "string", description: "The scholar search query." } },
|
|
121540
|
+
required: ["q"]
|
|
121541
|
+
},
|
|
121542
|
+
request: { method: "POST", path: "/scholar", body: { q: "{q}" } }
|
|
121543
|
+
},
|
|
121544
|
+
{
|
|
121545
|
+
name: "search.images",
|
|
121546
|
+
class: "read",
|
|
121547
|
+
description: "Run a Google Images search and return structured image results.",
|
|
121548
|
+
parameters: {
|
|
121549
|
+
type: "object",
|
|
121550
|
+
properties: {
|
|
121551
|
+
q: { type: "string", description: "The image search query." },
|
|
121552
|
+
gl: { type: "string", description: "Two-letter country code." }
|
|
121553
|
+
},
|
|
121554
|
+
required: ["q"]
|
|
121555
|
+
},
|
|
121556
|
+
request: { method: "POST", path: "/images", body: { q: "{q}", gl: "{gl}" } }
|
|
121557
|
+
}
|
|
121558
|
+
]
|
|
121559
|
+
});
|
|
121560
|
+
|
|
121561
|
+
// src/connectors/adapters/warmly.ts
|
|
121562
|
+
var warmlyConnector = declarativeRestConnector({
|
|
121563
|
+
kind: "warmly",
|
|
121564
|
+
displayName: "Warmly",
|
|
121565
|
+
description: "List identified website visitors and visiting accounts from your Warmly workspace via its agent-tools API.",
|
|
121566
|
+
auth: {
|
|
121567
|
+
kind: "api-key",
|
|
121568
|
+
hint: "Per-organization API key from the Warmly admin UI. Sent as the Authorization: Bearer header; organizationId must be included in each request body."
|
|
121569
|
+
},
|
|
121570
|
+
category: "sales-intelligence",
|
|
121571
|
+
defaultConsistencyModel: "authoritative",
|
|
121572
|
+
baseUrl: "https://opps-api.getwarmly.com/api",
|
|
121573
|
+
credentialPlacement: { kind: "bearer" },
|
|
121574
|
+
defaultHeaders: { "content-type": "application/json" },
|
|
121575
|
+
test: { method: "GET", path: "/agent-tools/tools" },
|
|
121576
|
+
capabilities: [
|
|
121577
|
+
{
|
|
121578
|
+
name: "tools.list",
|
|
121579
|
+
class: "read",
|
|
121580
|
+
description: "Discover the available agent tools and their input JSON schemas for your workspace.",
|
|
121581
|
+
parameters: { type: "object", properties: {}, required: [] },
|
|
121582
|
+
request: { method: "GET", path: "/agent-tools/tools" }
|
|
121583
|
+
},
|
|
121584
|
+
{
|
|
121585
|
+
name: "visitors.list",
|
|
121586
|
+
class: "mutation",
|
|
121587
|
+
description: "List identified people who visited your website, with optional filters and pagination. This is a billed read executed via the tool-execution endpoint.",
|
|
121588
|
+
parameters: {
|
|
121589
|
+
type: "object",
|
|
121590
|
+
properties: {
|
|
121591
|
+
organizationId: { type: "string", description: "The organization the API key is issued for." },
|
|
121592
|
+
timeWindow: {
|
|
121593
|
+
type: "string",
|
|
121594
|
+
description: "Lookback window: past_day (default) or past_week."
|
|
121595
|
+
},
|
|
121596
|
+
take: {
|
|
121597
|
+
type: "integer",
|
|
121598
|
+
description: "Number of results to return, 1-500 (default 25)."
|
|
121599
|
+
},
|
|
121600
|
+
offset: { type: "integer", description: "Pagination offset." },
|
|
121601
|
+
searchTerm: { type: "string", description: "Substring match on name, email, or company." }
|
|
121602
|
+
},
|
|
121603
|
+
required: ["organizationId"]
|
|
121604
|
+
},
|
|
121605
|
+
request: {
|
|
121606
|
+
method: "POST",
|
|
121607
|
+
path: "/agent-tools/execute",
|
|
121608
|
+
body: {
|
|
121609
|
+
toolName: "list_warm_visitors",
|
|
121610
|
+
organizationId: "{organizationId}",
|
|
121611
|
+
input: {
|
|
121612
|
+
timeWindow: "{timeWindow}",
|
|
121613
|
+
take: "{take}",
|
|
121614
|
+
offset: "{offset}",
|
|
121615
|
+
searchTerm: "{searchTerm}"
|
|
121616
|
+
}
|
|
121617
|
+
}
|
|
121618
|
+
},
|
|
121619
|
+
cas: "native-idempotency",
|
|
121620
|
+
externalEffect: false
|
|
121621
|
+
},
|
|
121622
|
+
{
|
|
121623
|
+
name: "accounts.list",
|
|
121624
|
+
class: "mutation",
|
|
121625
|
+
description: "List company-level aggregations of accounts that visited your website. Billed read executed via the tool-execution endpoint.",
|
|
121626
|
+
parameters: {
|
|
121627
|
+
type: "object",
|
|
121628
|
+
properties: {
|
|
121629
|
+
organizationId: { type: "string", description: "The organization the API key is issued for." },
|
|
121630
|
+
timeWindow: {
|
|
121631
|
+
type: "string",
|
|
121632
|
+
description: "Lookback window: past_day (default) or past_week."
|
|
121633
|
+
},
|
|
121634
|
+
take: { type: "integer", description: "Number of results to return, 1-500." }
|
|
121635
|
+
},
|
|
121636
|
+
required: ["organizationId"]
|
|
121637
|
+
},
|
|
121638
|
+
request: {
|
|
121639
|
+
method: "POST",
|
|
121640
|
+
path: "/agent-tools/execute",
|
|
121641
|
+
body: {
|
|
121642
|
+
toolName: "list_warm_accounts",
|
|
121643
|
+
organizationId: "{organizationId}",
|
|
121644
|
+
input: { timeWindow: "{timeWindow}", take: "{take}" }
|
|
121645
|
+
}
|
|
121646
|
+
},
|
|
121647
|
+
cas: "native-idempotency",
|
|
121648
|
+
externalEffect: false
|
|
121649
|
+
}
|
|
121650
|
+
]
|
|
121651
|
+
});
|
|
121652
|
+
|
|
121653
|
+
// src/connectors/adapters/autobound.ts
|
|
121654
|
+
var autoboundConnector = declarativeRestConnector({
|
|
121655
|
+
kind: "autobound",
|
|
121656
|
+
displayName: "Autobound",
|
|
121657
|
+
description: "AI sales-intelligence API that enriches companies and contacts with buyer-intent signals for personalized outreach.",
|
|
121658
|
+
auth: {
|
|
121659
|
+
kind: "api-key",
|
|
121660
|
+
hint: "API key from your Autobound account (Developer Hub). Sent as the X-API-KEY header. Base host is the Signals API at signals.autobound.ai."
|
|
121661
|
+
},
|
|
121662
|
+
category: "sales-intelligence",
|
|
121663
|
+
defaultConsistencyModel: "authoritative",
|
|
121664
|
+
baseUrl: "https://signals.autobound.ai/v1",
|
|
121665
|
+
credentialPlacement: { kind: "header", header: "X-API-KEY" },
|
|
121666
|
+
defaultHeaders: { "content-type": "application/json" },
|
|
121667
|
+
test: { method: "GET", path: "/account" },
|
|
121668
|
+
capabilities: [
|
|
121669
|
+
{
|
|
121670
|
+
name: "account.get",
|
|
121671
|
+
class: "read",
|
|
121672
|
+
description: "Return account details and rate limits. Consumes no credits.",
|
|
121673
|
+
parameters: { type: "object", properties: {}, required: [] },
|
|
121674
|
+
request: { method: "GET", path: "/account" }
|
|
121675
|
+
},
|
|
121676
|
+
{
|
|
121677
|
+
name: "company.enrich",
|
|
121678
|
+
class: "mutation",
|
|
121679
|
+
description: "Enrich a company with intent and news signals by domain (billed per returned signal).",
|
|
121680
|
+
parameters: {
|
|
121681
|
+
type: "object",
|
|
121682
|
+
properties: {
|
|
121683
|
+
domain: { type: "string" },
|
|
121684
|
+
signal_types: { type: "array", items: { type: "string" } },
|
|
121685
|
+
limit: { type: "integer" }
|
|
121686
|
+
},
|
|
121687
|
+
required: ["domain"]
|
|
121688
|
+
},
|
|
121689
|
+
request: {
|
|
121690
|
+
method: "POST",
|
|
121691
|
+
path: "/companies/enrich",
|
|
121692
|
+
body: { domain: "{domain}", signal_types: "{signal_types}", limit: "{limit}" }
|
|
121693
|
+
},
|
|
121694
|
+
cas: "native-idempotency",
|
|
121695
|
+
externalEffect: false
|
|
121696
|
+
},
|
|
121697
|
+
{
|
|
121698
|
+
name: "company.search",
|
|
121699
|
+
class: "read",
|
|
121700
|
+
description: "Search companies aggregated by entity, filtered by signal type and firmographics.",
|
|
121701
|
+
parameters: {
|
|
121702
|
+
type: "object",
|
|
121703
|
+
properties: {
|
|
121704
|
+
signal_types: { type: "array", items: { type: "string" } },
|
|
121705
|
+
company_domains: { type: "array", items: { type: "string" } },
|
|
121706
|
+
limit: { type: "integer" }
|
|
121707
|
+
},
|
|
121708
|
+
required: ["signal_types"]
|
|
121709
|
+
},
|
|
121710
|
+
request: {
|
|
121711
|
+
method: "POST",
|
|
121712
|
+
path: "/companies/search",
|
|
121713
|
+
body: {
|
|
121714
|
+
signal_types: "{signal_types}",
|
|
121715
|
+
company_domains: "{company_domains}",
|
|
121716
|
+
limit: "{limit}"
|
|
121717
|
+
}
|
|
121718
|
+
}
|
|
121719
|
+
},
|
|
121720
|
+
{
|
|
121721
|
+
name: "contact.enrich",
|
|
121722
|
+
class: "mutation",
|
|
121723
|
+
description: "Enrich a contact with personal signals by email or LinkedIn URL (billed per returned signal).",
|
|
121724
|
+
parameters: {
|
|
121725
|
+
type: "object",
|
|
121726
|
+
properties: {
|
|
121727
|
+
contact_email: { type: "string" },
|
|
121728
|
+
contact_linkedin_url: { type: "string" },
|
|
121729
|
+
signal_types: { type: "array", items: { type: "string" } },
|
|
121730
|
+
limit: { type: "integer" }
|
|
121731
|
+
},
|
|
121732
|
+
required: ["contact_email"]
|
|
121733
|
+
},
|
|
121734
|
+
request: {
|
|
121735
|
+
method: "POST",
|
|
121736
|
+
path: "/contacts/enrich",
|
|
121737
|
+
body: {
|
|
121738
|
+
contact_email: "{contact_email}",
|
|
121739
|
+
contact_linkedin_url: "{contact_linkedin_url}",
|
|
121740
|
+
signal_types: "{signal_types}",
|
|
121741
|
+
limit: "{limit}"
|
|
121742
|
+
}
|
|
121743
|
+
},
|
|
121744
|
+
cas: "native-idempotency",
|
|
121745
|
+
externalEffect: false
|
|
121746
|
+
},
|
|
121747
|
+
{
|
|
121748
|
+
name: "contact.search",
|
|
121749
|
+
class: "read",
|
|
121750
|
+
description: "Search contacts aggregated by entity, filtered by signal type.",
|
|
121751
|
+
parameters: {
|
|
121752
|
+
type: "object",
|
|
121753
|
+
properties: {
|
|
121754
|
+
signal_types: { type: "array", items: { type: "string" } },
|
|
121755
|
+
limit: { type: "integer" }
|
|
121756
|
+
},
|
|
121757
|
+
required: ["signal_types"]
|
|
121758
|
+
},
|
|
121759
|
+
request: {
|
|
121760
|
+
method: "POST",
|
|
121761
|
+
path: "/contacts/search",
|
|
121762
|
+
body: { signal_types: "{signal_types}", limit: "{limit}" }
|
|
121763
|
+
}
|
|
121764
|
+
}
|
|
121765
|
+
]
|
|
121766
|
+
});
|
|
121767
|
+
|
|
121768
|
+
// src/connectors/adapters/crustdata.ts
|
|
121769
|
+
var crustdataConnector = declarativeRestConnector({
|
|
121770
|
+
kind: "crustdata",
|
|
121771
|
+
displayName: "Crustdata",
|
|
121772
|
+
description: "Real-time B2B company and people data API for enriching, identifying, and searching companies and professional profiles.",
|
|
121773
|
+
auth: {
|
|
121774
|
+
kind: "api-key",
|
|
121775
|
+
hint: "API key (token) from the Crustdata dashboard. Sent as the Authorization: Bearer header. Requests also send the x-api-version: 2025-11-01 header."
|
|
121776
|
+
},
|
|
121777
|
+
category: "sales-intelligence",
|
|
121778
|
+
defaultConsistencyModel: "authoritative",
|
|
121779
|
+
baseUrl: "https://api.crustdata.com",
|
|
121780
|
+
credentialPlacement: { kind: "bearer" },
|
|
121781
|
+
defaultHeaders: { "content-type": "application/json", "x-api-version": "2025-11-01" },
|
|
121782
|
+
capabilities: [
|
|
121783
|
+
{
|
|
121784
|
+
name: "company.identify",
|
|
121785
|
+
class: "read",
|
|
121786
|
+
description: "Resolve company domains to Crustdata company records.",
|
|
121787
|
+
parameters: {
|
|
121788
|
+
type: "object",
|
|
121789
|
+
properties: { domains: { type: "array", items: { type: "string" } } },
|
|
121790
|
+
required: ["domains"]
|
|
121791
|
+
},
|
|
121792
|
+
request: { method: "POST", path: "/company/identify", body: { domains: "{domains}" } }
|
|
121793
|
+
},
|
|
121794
|
+
{
|
|
121795
|
+
name: "company.enrich",
|
|
121796
|
+
class: "read",
|
|
121797
|
+
description: "Retrieve full company profiles for one or more domains.",
|
|
121798
|
+
parameters: {
|
|
121799
|
+
type: "object",
|
|
121800
|
+
properties: {
|
|
121801
|
+
domains: { type: "array", items: { type: "string" } },
|
|
121802
|
+
fields: { type: "array", items: { type: "string" } }
|
|
121803
|
+
},
|
|
121804
|
+
required: ["domains"]
|
|
121805
|
+
},
|
|
121806
|
+
request: {
|
|
121807
|
+
method: "POST",
|
|
121808
|
+
path: "/company/enrich",
|
|
121809
|
+
body: { domains: "{domains}", fields: "{fields}" }
|
|
121810
|
+
}
|
|
121811
|
+
},
|
|
121812
|
+
{
|
|
121813
|
+
name: "company.search",
|
|
121814
|
+
class: "read",
|
|
121815
|
+
description: "Search companies with filters and sorting.",
|
|
121816
|
+
parameters: {
|
|
121817
|
+
type: "object",
|
|
121818
|
+
properties: { filters: { type: "object" }, page: { type: "integer" } },
|
|
121819
|
+
required: ["filters"]
|
|
121820
|
+
},
|
|
121821
|
+
request: {
|
|
121822
|
+
method: "POST",
|
|
121823
|
+
path: "/company/search",
|
|
121824
|
+
body: { filters: "{filters}", page: "{page}" }
|
|
121825
|
+
}
|
|
121826
|
+
},
|
|
121827
|
+
{
|
|
121828
|
+
name: "person.enrich",
|
|
121829
|
+
class: "read",
|
|
121830
|
+
description: "Enrich people by LinkedIn profile URL or business email; optionally select returned fields.",
|
|
121831
|
+
parameters: {
|
|
121832
|
+
type: "object",
|
|
121833
|
+
properties: {
|
|
121834
|
+
professional_network_profile_urls: { type: "array", items: { type: "string" } },
|
|
121835
|
+
business_emails: { type: "array", items: { type: "string" } },
|
|
121836
|
+
fields: { type: "array", items: { type: "string" } }
|
|
121837
|
+
},
|
|
121838
|
+
required: ["professional_network_profile_urls"]
|
|
121839
|
+
},
|
|
121840
|
+
request: {
|
|
121841
|
+
method: "POST",
|
|
121842
|
+
path: "/person/enrich",
|
|
121843
|
+
body: {
|
|
121844
|
+
professional_network_profile_urls: "{professional_network_profile_urls}",
|
|
121845
|
+
business_emails: "{business_emails}",
|
|
121846
|
+
fields: "{fields}"
|
|
121847
|
+
}
|
|
121848
|
+
}
|
|
121849
|
+
},
|
|
121850
|
+
{
|
|
121851
|
+
name: "person.search",
|
|
121852
|
+
class: "read",
|
|
121853
|
+
description: "Search people with filters and sorting.",
|
|
121854
|
+
parameters: {
|
|
121855
|
+
type: "object",
|
|
121856
|
+
properties: { filters: { type: "object" }, page: { type: "integer" } },
|
|
121857
|
+
required: ["filters"]
|
|
121858
|
+
},
|
|
121859
|
+
request: {
|
|
121860
|
+
method: "POST",
|
|
121861
|
+
path: "/person/search",
|
|
121862
|
+
body: { filters: "{filters}", page: "{page}" }
|
|
121863
|
+
}
|
|
121864
|
+
}
|
|
121865
|
+
]
|
|
121866
|
+
});
|
|
121867
|
+
|
|
121868
|
+
// src/connectors/adapters/fullenrich.ts
|
|
121869
|
+
var fullenrichConnector = declarativeRestConnector({
|
|
121870
|
+
kind: "fullenrich",
|
|
121871
|
+
displayName: "FullEnrich",
|
|
121872
|
+
description: "Waterfall B2B contact enrichment API that finds work emails and phone numbers for a contact from name, company, or LinkedIn URL.",
|
|
121873
|
+
auth: {
|
|
121874
|
+
kind: "api-key",
|
|
121875
|
+
hint: "API key from the FullEnrich dashboard (app.fullenrich.com/app/api). Sent as the Authorization: Bearer header."
|
|
121876
|
+
},
|
|
121877
|
+
category: "sales-intelligence",
|
|
121878
|
+
defaultConsistencyModel: "authoritative",
|
|
121879
|
+
baseUrl: "https://app.fullenrich.com/api/v2",
|
|
121880
|
+
credentialPlacement: { kind: "bearer" },
|
|
121881
|
+
defaultHeaders: { "content-type": "application/json" },
|
|
121882
|
+
test: { method: "GET", path: "/account/credits" },
|
|
121883
|
+
capabilities: [
|
|
121884
|
+
{
|
|
121885
|
+
name: "account.credits",
|
|
121886
|
+
class: "read",
|
|
121887
|
+
description: "Return the current credit balance for the account.",
|
|
121888
|
+
parameters: { type: "object", properties: {}, required: [] },
|
|
121889
|
+
request: { method: "GET", path: "/account/credits" }
|
|
121890
|
+
},
|
|
121891
|
+
{
|
|
121892
|
+
name: "contact.enrich.start",
|
|
121893
|
+
class: "mutation",
|
|
121894
|
+
description: "Start an async waterfall enrichment for up to 100 contacts; returns an enrichment id and bills per found data point.",
|
|
121895
|
+
parameters: {
|
|
121896
|
+
type: "object",
|
|
121897
|
+
properties: {
|
|
121898
|
+
name: { type: "string" },
|
|
121899
|
+
data: {
|
|
121900
|
+
type: "array",
|
|
121901
|
+
items: {
|
|
121902
|
+
type: "object",
|
|
121903
|
+
properties: {
|
|
121904
|
+
first_name: { type: "string" },
|
|
121905
|
+
last_name: { type: "string" },
|
|
121906
|
+
domain: { type: "string" },
|
|
121907
|
+
company_name: { type: "string" },
|
|
121908
|
+
linkedin_url: { type: "string" },
|
|
121909
|
+
enrich_fields: { type: "array", items: { type: "string" } }
|
|
121910
|
+
}
|
|
121911
|
+
}
|
|
121912
|
+
},
|
|
121913
|
+
webhook_url: { type: "string" }
|
|
121914
|
+
},
|
|
121915
|
+
required: ["name", "data"]
|
|
121916
|
+
},
|
|
121917
|
+
request: {
|
|
121918
|
+
method: "POST",
|
|
121919
|
+
path: "/contact/enrich/bulk",
|
|
121920
|
+
body: { name: "{name}", data: "{data}", webhook_url: "{webhook_url}" }
|
|
121921
|
+
},
|
|
121922
|
+
cas: "native-idempotency",
|
|
121923
|
+
externalEffect: false
|
|
121924
|
+
},
|
|
121925
|
+
{
|
|
121926
|
+
name: "contact.enrich.result",
|
|
121927
|
+
class: "read",
|
|
121928
|
+
description: "Retrieve the result of a previously started bulk enrichment by its id.",
|
|
121929
|
+
parameters: {
|
|
121930
|
+
type: "object",
|
|
121931
|
+
properties: { enrichment_id: { type: "string" } },
|
|
121932
|
+
required: ["enrichment_id"]
|
|
121933
|
+
},
|
|
121934
|
+
request: { method: "GET", path: "/contact/enrich/bulk/{enrichment_id}" }
|
|
121935
|
+
},
|
|
121936
|
+
{
|
|
121937
|
+
name: "contact.reverse_email.start",
|
|
121938
|
+
class: "mutation",
|
|
121939
|
+
description: "Start an async reverse-email lookup to find profiles/identities behind email addresses.",
|
|
121940
|
+
parameters: {
|
|
121941
|
+
type: "object",
|
|
121942
|
+
properties: {
|
|
121943
|
+
name: { type: "string" },
|
|
121944
|
+
data: {
|
|
121945
|
+
type: "array",
|
|
121946
|
+
items: { type: "object", properties: { email: { type: "string" } } }
|
|
121947
|
+
},
|
|
121948
|
+
webhook_url: { type: "string" }
|
|
121949
|
+
},
|
|
121950
|
+
required: ["name", "data"]
|
|
121951
|
+
},
|
|
121952
|
+
request: {
|
|
121953
|
+
method: "POST",
|
|
121954
|
+
path: "/contact/reverse/email/bulk",
|
|
121955
|
+
body: { name: "{name}", data: "{data}", webhook_url: "{webhook_url}" }
|
|
121956
|
+
},
|
|
121957
|
+
cas: "native-idempotency",
|
|
121958
|
+
externalEffect: false
|
|
121959
|
+
}
|
|
121960
|
+
]
|
|
121961
|
+
});
|
|
121962
|
+
|
|
121963
|
+
// src/connectors/adapters/leadmagic.ts
|
|
121964
|
+
var leadmagicConnector = declarativeRestConnector({
|
|
121965
|
+
kind: "leadmagic",
|
|
121966
|
+
displayName: "LeadMagic",
|
|
121967
|
+
description: "B2B data enrichment API for finding and validating work emails, mobile numbers, and enriching people and company profiles.",
|
|
121968
|
+
auth: {
|
|
121969
|
+
kind: "api-key",
|
|
121970
|
+
hint: "API key from LeadMagic Settings -> API. Sent as the X-API-Key header."
|
|
121971
|
+
},
|
|
121972
|
+
category: "sales-intelligence",
|
|
121973
|
+
defaultConsistencyModel: "authoritative",
|
|
121974
|
+
baseUrl: "https://api.leadmagic.io",
|
|
121975
|
+
credentialPlacement: { kind: "header", header: "X-API-Key" },
|
|
121976
|
+
defaultHeaders: { "content-type": "application/json" },
|
|
121977
|
+
test: { method: "GET", path: "/v1/credits" },
|
|
121978
|
+
capabilities: [
|
|
121979
|
+
{
|
|
121980
|
+
name: "credits.get",
|
|
121981
|
+
class: "read",
|
|
121982
|
+
description: "Return the current API key credit balance. Free, no credits consumed.",
|
|
121983
|
+
parameters: { type: "object", properties: {}, required: [] },
|
|
121984
|
+
request: { method: "GET", path: "/v1/credits" }
|
|
121985
|
+
},
|
|
121986
|
+
{
|
|
121987
|
+
name: "email.find",
|
|
121988
|
+
class: "mutation",
|
|
121989
|
+
description: "Find a verified work email from a person's name and company (charged only when an email is found).",
|
|
121990
|
+
parameters: {
|
|
121991
|
+
type: "object",
|
|
121992
|
+
properties: {
|
|
121993
|
+
first_name: { type: "string" },
|
|
121994
|
+
last_name: { type: "string" },
|
|
121995
|
+
domain: { type: "string" },
|
|
121996
|
+
company_name: { type: "string" }
|
|
121997
|
+
},
|
|
121998
|
+
required: ["first_name", "last_name", "domain"]
|
|
121999
|
+
},
|
|
122000
|
+
request: {
|
|
122001
|
+
method: "POST",
|
|
122002
|
+
path: "/v1/people/email-finder",
|
|
122003
|
+
body: {
|
|
122004
|
+
first_name: "{first_name}",
|
|
122005
|
+
last_name: "{last_name}",
|
|
122006
|
+
domain: "{domain}",
|
|
122007
|
+
company_name: "{company_name}"
|
|
122008
|
+
}
|
|
122009
|
+
},
|
|
122010
|
+
cas: "native-idempotency",
|
|
122011
|
+
externalEffect: false
|
|
122012
|
+
},
|
|
122013
|
+
{
|
|
122014
|
+
name: "email.validate",
|
|
122015
|
+
class: "mutation",
|
|
122016
|
+
description: "Validate an email address and return valid/invalid/unknown (charged only for definitive results).",
|
|
122017
|
+
parameters: {
|
|
122018
|
+
type: "object",
|
|
122019
|
+
properties: { email: { type: "string" } },
|
|
122020
|
+
required: ["email"]
|
|
122021
|
+
},
|
|
122022
|
+
request: {
|
|
122023
|
+
method: "POST",
|
|
122024
|
+
path: "/v1/people/email-validation",
|
|
122025
|
+
body: { email: "{email}" }
|
|
122026
|
+
},
|
|
122027
|
+
cas: "native-idempotency",
|
|
122028
|
+
externalEffect: false
|
|
122029
|
+
},
|
|
122030
|
+
{
|
|
122031
|
+
name: "profile.search",
|
|
122032
|
+
class: "read",
|
|
122033
|
+
description: "Enrich a B2B profile from a profile URL or username.",
|
|
122034
|
+
parameters: {
|
|
122035
|
+
type: "object",
|
|
122036
|
+
properties: { profile_url: { type: "string" } },
|
|
122037
|
+
required: ["profile_url"]
|
|
122038
|
+
},
|
|
122039
|
+
request: {
|
|
122040
|
+
method: "POST",
|
|
122041
|
+
path: "/v1/people/profile-search",
|
|
122042
|
+
body: { profile_url: "{profile_url}" }
|
|
122043
|
+
}
|
|
122044
|
+
},
|
|
122045
|
+
{
|
|
122046
|
+
name: "mobile.find",
|
|
122047
|
+
class: "mutation",
|
|
122048
|
+
description: "Find a mobile phone number from a profile URL or email (charged only on a successful match).",
|
|
122049
|
+
parameters: {
|
|
122050
|
+
type: "object",
|
|
122051
|
+
properties: {
|
|
122052
|
+
profile_url: { type: "string" },
|
|
122053
|
+
work_email: { type: "string" },
|
|
122054
|
+
personal_email: { type: "string" }
|
|
122055
|
+
},
|
|
122056
|
+
required: ["profile_url"]
|
|
122057
|
+
},
|
|
122058
|
+
request: {
|
|
122059
|
+
method: "POST",
|
|
122060
|
+
path: "/v1/people/mobile-finder",
|
|
122061
|
+
body: {
|
|
122062
|
+
profile_url: "{profile_url}",
|
|
122063
|
+
work_email: "{work_email}",
|
|
122064
|
+
personal_email: "{personal_email}"
|
|
122065
|
+
}
|
|
122066
|
+
},
|
|
122067
|
+
cas: "native-idempotency",
|
|
122068
|
+
externalEffect: false
|
|
122069
|
+
},
|
|
122070
|
+
{
|
|
122071
|
+
name: "company.search",
|
|
122072
|
+
class: "mutation",
|
|
122073
|
+
description: "Enrich a company's firmographics from its domain, name, or profile URL (charged per company found).",
|
|
122074
|
+
parameters: {
|
|
122075
|
+
type: "object",
|
|
122076
|
+
properties: {
|
|
122077
|
+
company_domain: { type: "string" },
|
|
122078
|
+
company_name: { type: "string" },
|
|
122079
|
+
profile_url: { type: "string" }
|
|
122080
|
+
},
|
|
122081
|
+
required: ["company_domain"]
|
|
122082
|
+
},
|
|
122083
|
+
request: {
|
|
122084
|
+
method: "POST",
|
|
122085
|
+
path: "/v1/companies/company-search",
|
|
122086
|
+
body: {
|
|
122087
|
+
company_domain: "{company_domain}",
|
|
122088
|
+
company_name: "{company_name}",
|
|
122089
|
+
profile_url: "{profile_url}"
|
|
122090
|
+
}
|
|
122091
|
+
},
|
|
122092
|
+
cas: "native-idempotency",
|
|
122093
|
+
externalEffect: false
|
|
122094
|
+
}
|
|
122095
|
+
]
|
|
122096
|
+
});
|
|
122097
|
+
|
|
122098
|
+
// src/connectors/adapters/brightdata.ts
|
|
122099
|
+
var brightdataConnector = declarativeRestConnector({
|
|
122100
|
+
kind: "brightdata",
|
|
122101
|
+
displayName: "Bright Data",
|
|
122102
|
+
description: "Scrape any website at scale using Bright Data's Web Unlocker (bypasses anti-bot protection) and Web Scraper API (structured dataset collection jobs).",
|
|
122103
|
+
auth: {
|
|
122104
|
+
kind: "api-key",
|
|
122105
|
+
hint: "API token from your Bright Data dashboard (Account settings -> API tokens). Sent as the Authorization: Bearer header."
|
|
122106
|
+
},
|
|
122107
|
+
category: "other",
|
|
122108
|
+
defaultConsistencyModel: "authoritative",
|
|
122109
|
+
baseUrl: "https://api.brightdata.com",
|
|
122110
|
+
credentialPlacement: { kind: "bearer" },
|
|
122111
|
+
defaultHeaders: { "content-type": "application/json" },
|
|
122112
|
+
capabilities: [
|
|
122113
|
+
{
|
|
122114
|
+
name: "unlocker.request",
|
|
122115
|
+
class: "read",
|
|
122116
|
+
description: "Fetch a target URL through the Web Unlocker, returning the page content with anti-bot bypass, CAPTCHA solving, and JS rendering handled.",
|
|
122117
|
+
parameters: {
|
|
122118
|
+
type: "object",
|
|
122119
|
+
properties: {
|
|
122120
|
+
zone: { type: "string", description: "Your Web Unlocker API zone name." },
|
|
122121
|
+
url: { type: "string", description: "Target URL to fetch." },
|
|
122122
|
+
format: {
|
|
122123
|
+
type: "string",
|
|
122124
|
+
description: "Response format, e.g. 'raw' for the unmodified site response or 'json'."
|
|
122125
|
+
},
|
|
122126
|
+
body: {
|
|
122127
|
+
type: "string",
|
|
122128
|
+
description: "Optional raw POST payload to send to the target URL."
|
|
122129
|
+
}
|
|
122130
|
+
},
|
|
122131
|
+
required: ["zone", "url"]
|
|
122132
|
+
},
|
|
122133
|
+
request: {
|
|
122134
|
+
method: "POST",
|
|
122135
|
+
path: "/request",
|
|
122136
|
+
body: { zone: "{zone}", url: "{url}", format: "{format}", body: "{body}" }
|
|
122137
|
+
}
|
|
122138
|
+
},
|
|
122139
|
+
{
|
|
122140
|
+
name: "scraper.trigger",
|
|
122141
|
+
class: "mutation",
|
|
122142
|
+
description: "Trigger an asynchronous Web Scraper data collection job for a given dataset, returning a snapshot_id used to poll progress and download results.",
|
|
122143
|
+
parameters: {
|
|
122144
|
+
type: "object",
|
|
122145
|
+
properties: {
|
|
122146
|
+
dataset_id: {
|
|
122147
|
+
type: "string",
|
|
122148
|
+
description: "Scraper dataset id, e.g. gd_xxxxxxxxxxxxxxxxx."
|
|
122149
|
+
},
|
|
122150
|
+
format: { type: "string", description: "Delivery format of results, e.g. json." },
|
|
122151
|
+
include_errors: { type: "boolean", description: "Include error records in the result set." },
|
|
122152
|
+
inputs: {
|
|
122153
|
+
type: "array",
|
|
122154
|
+
description: "Array of input objects, each typically containing a url to scrape.",
|
|
122155
|
+
items: { type: "object" }
|
|
122156
|
+
}
|
|
122157
|
+
},
|
|
122158
|
+
required: ["dataset_id", "inputs"]
|
|
122159
|
+
},
|
|
122160
|
+
request: {
|
|
122161
|
+
method: "POST",
|
|
122162
|
+
path: "/datasets/v3/trigger",
|
|
122163
|
+
query: {
|
|
122164
|
+
dataset_id: "{dataset_id}",
|
|
122165
|
+
format: "{format}",
|
|
122166
|
+
include_errors: "{include_errors}"
|
|
122167
|
+
},
|
|
122168
|
+
body: "{inputs}"
|
|
122169
|
+
},
|
|
122170
|
+
cas: "native-idempotency",
|
|
122171
|
+
externalEffect: true
|
|
122172
|
+
},
|
|
122173
|
+
{
|
|
122174
|
+
name: "scraper.progress",
|
|
122175
|
+
class: "read",
|
|
122176
|
+
description: "Check the status of a Web Scraper collection job (starting, running, ready, or failed) by its snapshot_id.",
|
|
122177
|
+
parameters: {
|
|
122178
|
+
type: "object",
|
|
122179
|
+
properties: {
|
|
122180
|
+
snapshot_id: { type: "string", description: "Snapshot id returned by scraper.trigger." }
|
|
122181
|
+
},
|
|
122182
|
+
required: ["snapshot_id"]
|
|
122183
|
+
},
|
|
122184
|
+
request: { method: "GET", path: "/datasets/v3/progress/{snapshot_id}" }
|
|
122185
|
+
},
|
|
122186
|
+
{
|
|
122187
|
+
name: "scraper.snapshot",
|
|
122188
|
+
class: "read",
|
|
122189
|
+
description: "Download the collected records for a completed Web Scraper snapshot in the requested format.",
|
|
122190
|
+
parameters: {
|
|
122191
|
+
type: "object",
|
|
122192
|
+
properties: {
|
|
122193
|
+
snapshot_id: { type: "string", description: "Snapshot id returned by scraper.trigger." },
|
|
122194
|
+
format: {
|
|
122195
|
+
type: "string",
|
|
122196
|
+
description: "Output format, e.g. json, ndjson, jsonl, or csv."
|
|
122197
|
+
}
|
|
122198
|
+
},
|
|
122199
|
+
required: ["snapshot_id"]
|
|
122200
|
+
},
|
|
122201
|
+
request: {
|
|
122202
|
+
method: "GET",
|
|
122203
|
+
path: "/datasets/v3/snapshot/{snapshot_id}",
|
|
122204
|
+
query: { format: "{format}" }
|
|
122205
|
+
}
|
|
122206
|
+
}
|
|
122207
|
+
]
|
|
122208
|
+
});
|
|
122209
|
+
|
|
122210
|
+
// src/connectors/adapters/phantombuster.ts
|
|
122211
|
+
var phantombusterConnector = declarativeRestConnector({
|
|
122212
|
+
kind: "phantombuster",
|
|
122213
|
+
displayName: "PhantomBuster",
|
|
122214
|
+
description: "Launch PhantomBuster Phantoms (automation agents) that scrape and extract data from sites like LinkedIn, then retrieve their output and results.",
|
|
122215
|
+
auth: {
|
|
122216
|
+
kind: "api-key",
|
|
122217
|
+
hint: "API key from your PhantomBuster dashboard (Workspace settings -> API key). Sent in the X-Phantombuster-Key header."
|
|
122218
|
+
},
|
|
122219
|
+
category: "other",
|
|
122220
|
+
defaultConsistencyModel: "authoritative",
|
|
122221
|
+
baseUrl: "https://api.phantombuster.com/api/v2",
|
|
122222
|
+
credentialPlacement: { kind: "header", header: "X-Phantombuster-Key" },
|
|
122223
|
+
defaultHeaders: { "content-type": "application/json" },
|
|
122224
|
+
test: { method: "GET", path: "/agents/fetch-all" },
|
|
122225
|
+
capabilities: [
|
|
122226
|
+
{
|
|
122227
|
+
name: "agents.fetch_all",
|
|
122228
|
+
class: "read",
|
|
122229
|
+
description: "List all Phantoms (agents) in the current organization.",
|
|
122230
|
+
parameters: { type: "object", properties: {}, required: [] },
|
|
122231
|
+
request: { method: "GET", path: "/agents/fetch-all" }
|
|
122232
|
+
},
|
|
122233
|
+
{
|
|
122234
|
+
name: "agents.fetch",
|
|
122235
|
+
class: "read",
|
|
122236
|
+
description: "Fetch the configuration and metadata of a single Phantom by its agent id.",
|
|
122237
|
+
parameters: {
|
|
122238
|
+
type: "object",
|
|
122239
|
+
properties: { id: { type: "string", description: "Id of the agent (Phantom) to fetch." } },
|
|
122240
|
+
required: ["id"]
|
|
122241
|
+
},
|
|
122242
|
+
request: { method: "GET", path: "/agents/fetch", query: { id: "{id}" } }
|
|
122243
|
+
},
|
|
122244
|
+
{
|
|
122245
|
+
name: "agents.launch",
|
|
122246
|
+
class: "mutation",
|
|
122247
|
+
description: "Launch a Phantom (agent), optionally passing arguments, and start a new run (container).",
|
|
122248
|
+
parameters: {
|
|
122249
|
+
type: "object",
|
|
122250
|
+
properties: {
|
|
122251
|
+
id: { type: "string", description: "Id of the agent (Phantom) to launch." },
|
|
122252
|
+
argument: {
|
|
122253
|
+
type: "object",
|
|
122254
|
+
description: "JSON object of arguments overriding the Phantom's saved configuration for this run."
|
|
122255
|
+
},
|
|
122256
|
+
bonusArgument: {
|
|
122257
|
+
type: "object",
|
|
122258
|
+
description: "Additional one-off arguments merged for this launch only."
|
|
122259
|
+
},
|
|
122260
|
+
saveArgument: {
|
|
122261
|
+
type: "boolean",
|
|
122262
|
+
description: "Persist the provided argument as the Phantom's default configuration."
|
|
122263
|
+
},
|
|
122264
|
+
manualLaunch: { type: "boolean", description: "Mark the launch as manual." }
|
|
122265
|
+
},
|
|
122266
|
+
required: ["id"]
|
|
122267
|
+
},
|
|
122268
|
+
request: {
|
|
122269
|
+
method: "POST",
|
|
122270
|
+
path: "/agents/launch",
|
|
122271
|
+
body: {
|
|
122272
|
+
id: "{id}",
|
|
122273
|
+
argument: "{argument}",
|
|
122274
|
+
bonusArgument: "{bonusArgument}",
|
|
122275
|
+
saveArgument: "{saveArgument}",
|
|
122276
|
+
manualLaunch: "{manualLaunch}"
|
|
122277
|
+
}
|
|
122278
|
+
},
|
|
122279
|
+
cas: "native-idempotency",
|
|
122280
|
+
externalEffect: true
|
|
122281
|
+
},
|
|
122282
|
+
{
|
|
122283
|
+
name: "agents.fetch_output",
|
|
122284
|
+
class: "read",
|
|
122285
|
+
description: "Retrieve the console output and most recent container status of a Phantom's run by agent id.",
|
|
122286
|
+
parameters: {
|
|
122287
|
+
type: "object",
|
|
122288
|
+
properties: {
|
|
122289
|
+
id: { type: "string", description: "Id of the agent to fetch output from." },
|
|
122290
|
+
fromOutputPos: {
|
|
122291
|
+
type: "number",
|
|
122292
|
+
description: "Position from which to start returning output."
|
|
122293
|
+
}
|
|
122294
|
+
},
|
|
122295
|
+
required: ["id"]
|
|
122296
|
+
},
|
|
122297
|
+
request: {
|
|
122298
|
+
method: "GET",
|
|
122299
|
+
path: "/agents/fetch-output",
|
|
122300
|
+
query: { id: "{id}", fromOutputPos: "{fromOutputPos}" }
|
|
122301
|
+
}
|
|
122302
|
+
},
|
|
122303
|
+
{
|
|
122304
|
+
name: "containers.fetch_output",
|
|
122305
|
+
class: "read",
|
|
122306
|
+
description: "Retrieve the console output of a specific Phantom run (container) by its container id.",
|
|
122307
|
+
parameters: {
|
|
122308
|
+
type: "object",
|
|
122309
|
+
properties: {
|
|
122310
|
+
id: {
|
|
122311
|
+
type: "string",
|
|
122312
|
+
description: "Id of the container (run) to fetch output from."
|
|
122313
|
+
}
|
|
122314
|
+
},
|
|
122315
|
+
required: ["id"]
|
|
122316
|
+
},
|
|
122317
|
+
request: { method: "GET", path: "/containers/fetch-output", query: { id: "{id}" } }
|
|
122318
|
+
}
|
|
122319
|
+
]
|
|
122320
|
+
});
|
|
122321
|
+
|
|
122322
|
+
// src/connectors/adapters/zenrows.ts
|
|
122323
|
+
var zenrowsConnector = declarativeRestConnector({
|
|
122324
|
+
kind: "zenrows",
|
|
122325
|
+
displayName: "ZenRows",
|
|
122326
|
+
description: "Render and scrape any web page through ZenRows' Universal Scraper API, handling proxy rotation, headless browsers, and anti-bot bypass.",
|
|
122327
|
+
auth: {
|
|
122328
|
+
kind: "api-key",
|
|
122329
|
+
hint: "API key from your ZenRows dashboard. Sent as the apikey query parameter."
|
|
122330
|
+
},
|
|
122331
|
+
category: "other",
|
|
122332
|
+
defaultConsistencyModel: "authoritative",
|
|
122333
|
+
baseUrl: "https://api.zenrows.com/v1/",
|
|
122334
|
+
credentialPlacement: { kind: "query", parameter: "apikey" },
|
|
122335
|
+
capabilities: [
|
|
122336
|
+
{
|
|
122337
|
+
name: "page.scrape",
|
|
122338
|
+
class: "read",
|
|
122339
|
+
description: "Fetch a URL and return its HTML, optionally rendering JavaScript and routing through premium residential proxies.",
|
|
122340
|
+
parameters: {
|
|
122341
|
+
type: "object",
|
|
122342
|
+
properties: {
|
|
122343
|
+
url: { type: "string", description: "Target URL to scrape." },
|
|
122344
|
+
js_render: { type: "boolean", description: "Render the page with a headless browser." },
|
|
122345
|
+
premium_proxy: {
|
|
122346
|
+
type: "boolean",
|
|
122347
|
+
description: "Route the request through residential proxies."
|
|
122348
|
+
},
|
|
122349
|
+
proxy_country: {
|
|
122350
|
+
type: "string",
|
|
122351
|
+
description: "Two-letter country code for proxy geolocation."
|
|
122352
|
+
},
|
|
122353
|
+
wait: {
|
|
122354
|
+
type: "integer",
|
|
122355
|
+
description: "Fixed delay in milliseconds after page load."
|
|
122356
|
+
},
|
|
122357
|
+
wait_for: {
|
|
122358
|
+
type: "string",
|
|
122359
|
+
description: "CSS selector to wait for in the DOM before returning."
|
|
122360
|
+
}
|
|
122361
|
+
},
|
|
122362
|
+
required: ["url"]
|
|
122363
|
+
},
|
|
122364
|
+
request: {
|
|
122365
|
+
method: "GET",
|
|
122366
|
+
path: "/",
|
|
122367
|
+
query: {
|
|
122368
|
+
url: "{url}",
|
|
122369
|
+
js_render: "{js_render}",
|
|
122370
|
+
premium_proxy: "{premium_proxy}",
|
|
122371
|
+
proxy_country: "{proxy_country}",
|
|
122372
|
+
wait: "{wait}",
|
|
122373
|
+
wait_for: "{wait_for}"
|
|
122374
|
+
}
|
|
122375
|
+
}
|
|
122376
|
+
},
|
|
122377
|
+
{
|
|
122378
|
+
name: "page.extract",
|
|
122379
|
+
class: "read",
|
|
122380
|
+
description: "Scrape a URL and return structured data extracted via CSS selectors or ZenRows' automatic parser.",
|
|
122381
|
+
parameters: {
|
|
122382
|
+
type: "object",
|
|
122383
|
+
properties: {
|
|
122384
|
+
url: { type: "string", description: "Target URL to scrape." },
|
|
122385
|
+
css_extractor: {
|
|
122386
|
+
type: "string",
|
|
122387
|
+
description: "JSON string mapping output keys to CSS selectors."
|
|
122388
|
+
},
|
|
122389
|
+
autoparse: {
|
|
122390
|
+
type: "boolean",
|
|
122391
|
+
description: "Automatically extract structured data from supported sites."
|
|
122392
|
+
},
|
|
122393
|
+
js_render: { type: "boolean", description: "Render the page with a headless browser." }
|
|
122394
|
+
},
|
|
122395
|
+
required: ["url"]
|
|
122396
|
+
},
|
|
122397
|
+
request: {
|
|
122398
|
+
method: "GET",
|
|
122399
|
+
path: "/",
|
|
122400
|
+
query: {
|
|
122401
|
+
url: "{url}",
|
|
122402
|
+
css_extractor: "{css_extractor}",
|
|
122403
|
+
autoparse: "{autoparse}",
|
|
122404
|
+
js_render: "{js_render}"
|
|
122405
|
+
}
|
|
122406
|
+
}
|
|
122407
|
+
},
|
|
122408
|
+
{
|
|
122409
|
+
name: "page.markdown",
|
|
122410
|
+
class: "read",
|
|
122411
|
+
description: "Fetch a URL and return its content converted to Markdown, plaintext, or PDF.",
|
|
122412
|
+
parameters: {
|
|
122413
|
+
type: "object",
|
|
122414
|
+
properties: {
|
|
122415
|
+
url: { type: "string", description: "Target URL to scrape." },
|
|
122416
|
+
response_type: {
|
|
122417
|
+
type: "string",
|
|
122418
|
+
description: "Output conversion type, e.g. markdown, plaintext, or pdf."
|
|
122419
|
+
},
|
|
122420
|
+
js_render: { type: "boolean", description: "Render the page with a headless browser." }
|
|
122421
|
+
},
|
|
122422
|
+
required: ["url"]
|
|
122423
|
+
},
|
|
122424
|
+
request: {
|
|
122425
|
+
method: "GET",
|
|
122426
|
+
path: "/",
|
|
122427
|
+
query: { url: "{url}", response_type: "{response_type}", js_render: "{js_render}" }
|
|
122428
|
+
}
|
|
122429
|
+
}
|
|
122430
|
+
]
|
|
122431
|
+
});
|
|
122432
|
+
|
|
122433
|
+
// src/connectors/adapters/ocean-io.ts
|
|
122434
|
+
var oceanIoConnector = declarativeRestConnector({
|
|
122435
|
+
kind: "ocean-io",
|
|
122436
|
+
displayName: "Ocean.io",
|
|
122437
|
+
description: "Lookalike B2B company and people search plus firmographic and contact enrichment. Build target lists from an ideal customer profile and enrich records.",
|
|
122438
|
+
auth: {
|
|
122439
|
+
kind: "api-key",
|
|
122440
|
+
hint: "API token from Settings -> API tokens. Sent as the X-Api-Token header."
|
|
122441
|
+
},
|
|
122442
|
+
category: "sales-intelligence",
|
|
122443
|
+
defaultConsistencyModel: "authoritative",
|
|
122444
|
+
baseUrl: "https://api.ocean.io",
|
|
122445
|
+
credentialPlacement: { kind: "header", header: "X-Api-Token" },
|
|
122446
|
+
defaultHeaders: { "content-type": "application/json" },
|
|
122447
|
+
capabilities: [
|
|
122448
|
+
{
|
|
122449
|
+
name: "companies.search",
|
|
122450
|
+
class: "read",
|
|
122451
|
+
description: "Search/lookalike companies by filters (location, size, industry, technologies) and/or seed lookalike domains.",
|
|
122452
|
+
parameters: {
|
|
122453
|
+
type: "object",
|
|
122454
|
+
properties: {
|
|
122455
|
+
companiesFilters: { type: "object" },
|
|
122456
|
+
lookalikeDomains: { type: "array", items: { type: "string" } },
|
|
122457
|
+
size: { type: "integer" },
|
|
122458
|
+
searchAfter: { type: "string" }
|
|
122459
|
+
},
|
|
122460
|
+
required: ["size"]
|
|
122461
|
+
},
|
|
122462
|
+
request: {
|
|
122463
|
+
method: "POST",
|
|
122464
|
+
path: "/v3/search/companies",
|
|
122465
|
+
body: {
|
|
122466
|
+
companiesFilters: "{companiesFilters}",
|
|
122467
|
+
lookalikeDomains: "{lookalikeDomains}",
|
|
122468
|
+
size: "{size}",
|
|
122469
|
+
searchAfter: "{searchAfter}"
|
|
122470
|
+
}
|
|
122471
|
+
}
|
|
122472
|
+
},
|
|
122473
|
+
{
|
|
122474
|
+
name: "people.search",
|
|
122475
|
+
class: "read",
|
|
122476
|
+
description: "Search people by persona filters (seniority, department) optionally scoped by company filters.",
|
|
122477
|
+
parameters: {
|
|
122478
|
+
type: "object",
|
|
122479
|
+
properties: {
|
|
122480
|
+
peopleFilters: { type: "object" },
|
|
122481
|
+
companiesFilters: { type: "object" },
|
|
122482
|
+
size: { type: "integer" },
|
|
122483
|
+
searchAfter: { type: "string" }
|
|
122484
|
+
},
|
|
122485
|
+
required: ["size"]
|
|
122486
|
+
},
|
|
122487
|
+
request: {
|
|
122488
|
+
method: "POST",
|
|
122489
|
+
path: "/v3/search/people",
|
|
122490
|
+
body: {
|
|
122491
|
+
peopleFilters: "{peopleFilters}",
|
|
122492
|
+
companiesFilters: "{companiesFilters}",
|
|
122493
|
+
size: "{size}",
|
|
122494
|
+
searchAfter: "{searchAfter}"
|
|
122495
|
+
}
|
|
122496
|
+
}
|
|
122497
|
+
},
|
|
122498
|
+
{
|
|
122499
|
+
name: "companies.enrich",
|
|
122500
|
+
class: "mutation",
|
|
122501
|
+
description: "Match one company against Ocean's database and return firmographic, technographic, and funding data. Costs 0.1 credits per result.",
|
|
122502
|
+
parameters: {
|
|
122503
|
+
type: "object",
|
|
122504
|
+
properties: { company: { type: "object" } },
|
|
122505
|
+
required: ["company"]
|
|
122506
|
+
},
|
|
122507
|
+
request: { method: "POST", path: "/v2/enrich/company", body: { company: "{company}" } },
|
|
122508
|
+
cas: "native-idempotency",
|
|
122509
|
+
externalEffect: false
|
|
122510
|
+
},
|
|
122511
|
+
{
|
|
122512
|
+
name: "people.enrich",
|
|
122513
|
+
class: "mutation",
|
|
122514
|
+
description: "Match one person against Ocean's database and return profile data; optionally trigger asynchronous email/phone reveal via webhook. Costs 0.1 credits per result.",
|
|
122515
|
+
parameters: {
|
|
122516
|
+
type: "object",
|
|
122517
|
+
properties: { person: { type: "object" }, revealEmails: { type: "object" } },
|
|
122518
|
+
required: ["person"]
|
|
122519
|
+
},
|
|
122520
|
+
request: {
|
|
122521
|
+
method: "POST",
|
|
122522
|
+
path: "/v2/enrich/person",
|
|
122523
|
+
body: { person: "{person}", revealEmails: "{revealEmails}" }
|
|
122524
|
+
},
|
|
122525
|
+
cas: "native-idempotency",
|
|
122526
|
+
externalEffect: false
|
|
122527
|
+
},
|
|
122528
|
+
{
|
|
122529
|
+
name: "companies.autocomplete",
|
|
122530
|
+
class: "read",
|
|
122531
|
+
description: "Type-ahead autocomplete for company name or domain, useful for picking seed companies for a lookalike search.",
|
|
122532
|
+
parameters: {
|
|
122533
|
+
type: "object",
|
|
122534
|
+
properties: { name: { type: "string" } },
|
|
122535
|
+
required: ["name"]
|
|
122536
|
+
},
|
|
122537
|
+
request: {
|
|
122538
|
+
method: "POST",
|
|
122539
|
+
path: "/v2/autocomplete/companies",
|
|
122540
|
+
body: { name: "{name}" }
|
|
122541
|
+
}
|
|
122542
|
+
}
|
|
122543
|
+
]
|
|
122544
|
+
});
|
|
122545
|
+
|
|
122546
|
+
// src/connectors/adapters/seamless-ai.ts
|
|
122547
|
+
var seamlessAiConnector = declarativeRestConnector({
|
|
122548
|
+
kind: "seamless-ai",
|
|
122549
|
+
displayName: "Seamless.ai",
|
|
122550
|
+
description: "Search and enrich B2B contact and company data, including verified emails, phone numbers, and job-change signals, for go-to-market prospecting.",
|
|
122551
|
+
auth: {
|
|
122552
|
+
kind: "api-key",
|
|
122553
|
+
hint: "API key from Settings -> API Key (Create New Connection). Sent as the Token header."
|
|
122554
|
+
},
|
|
122555
|
+
category: "sales-intelligence",
|
|
122556
|
+
defaultConsistencyModel: "authoritative",
|
|
122557
|
+
baseUrl: "https://api.seamless.ai/api/client/v1",
|
|
122558
|
+
credentialPlacement: { kind: "header", header: "Token" },
|
|
122559
|
+
defaultHeaders: { "content-type": "application/json" },
|
|
122560
|
+
capabilities: [
|
|
122561
|
+
{
|
|
122562
|
+
name: "contacts.search",
|
|
122563
|
+
class: "read",
|
|
122564
|
+
description: "Search for contacts by company, location, department, job title, seniority, and technologies. Returns search result ids used for research/enrichment.",
|
|
122565
|
+
parameters: {
|
|
122566
|
+
type: "object",
|
|
122567
|
+
properties: {
|
|
122568
|
+
jobTitle: { type: "array", items: { type: "string" } },
|
|
122569
|
+
seniority: { type: "array", items: { type: "string" } },
|
|
122570
|
+
companyDomain: { type: "array", items: { type: "string" } },
|
|
122571
|
+
industry: { type: "array", items: { type: "string" } },
|
|
122572
|
+
limit: { type: "integer" },
|
|
122573
|
+
nextToken: { type: "string" }
|
|
122574
|
+
},
|
|
122575
|
+
required: []
|
|
122576
|
+
},
|
|
122577
|
+
request: {
|
|
122578
|
+
method: "POST",
|
|
122579
|
+
path: "/search/contacts",
|
|
122580
|
+
body: {
|
|
122581
|
+
jobTitle: "{jobTitle}",
|
|
122582
|
+
seniority: "{seniority}",
|
|
122583
|
+
companyDomain: "{companyDomain}",
|
|
122584
|
+
industry: "{industry}",
|
|
122585
|
+
limit: "{limit}",
|
|
122586
|
+
nextToken: "{nextToken}"
|
|
122587
|
+
}
|
|
122588
|
+
}
|
|
122589
|
+
},
|
|
122590
|
+
{
|
|
122591
|
+
name: "companies.search",
|
|
122592
|
+
class: "read",
|
|
122593
|
+
description: "Search for companies by name, domain, location, industry, size, revenue, and technologies. Returns search result ids used for research/enrichment.",
|
|
122594
|
+
parameters: {
|
|
122595
|
+
type: "object",
|
|
122596
|
+
properties: {
|
|
122597
|
+
companyName: { type: "array", items: { type: "string" } },
|
|
122598
|
+
companyDomain: { type: "array", items: { type: "string" } },
|
|
122599
|
+
industry: { type: "array", items: { type: "string" } },
|
|
122600
|
+
companySize: { type: "array", items: { type: "string" } },
|
|
122601
|
+
technologies: { type: "array", items: { type: "string" } },
|
|
122602
|
+
limit: { type: "integer" },
|
|
122603
|
+
nextToken: { type: "string" }
|
|
122604
|
+
},
|
|
122605
|
+
required: []
|
|
122606
|
+
},
|
|
122607
|
+
request: {
|
|
122608
|
+
method: "POST",
|
|
122609
|
+
path: "/search/companies",
|
|
122610
|
+
body: {
|
|
122611
|
+
companyName: "{companyName}",
|
|
122612
|
+
companyDomain: "{companyDomain}",
|
|
122613
|
+
industry: "{industry}",
|
|
122614
|
+
companySize: "{companySize}",
|
|
122615
|
+
technologies: "{technologies}",
|
|
122616
|
+
limit: "{limit}",
|
|
122617
|
+
nextToken: "{nextToken}"
|
|
122618
|
+
}
|
|
122619
|
+
}
|
|
122620
|
+
},
|
|
122621
|
+
{
|
|
122622
|
+
name: "contacts.research",
|
|
122623
|
+
class: "mutation",
|
|
122624
|
+
description: "Research (enrich) contacts asynchronously by searchResultIds from a contact search, or by explicit contact identifiers, to reveal full profile, email, and phone.",
|
|
122625
|
+
parameters: {
|
|
122626
|
+
type: "object",
|
|
122627
|
+
properties: {
|
|
122628
|
+
searchResultIds: { type: "array", items: { type: "string" } },
|
|
122629
|
+
contacts: { type: "array", items: { type: "object" } },
|
|
122630
|
+
isJobChange: { type: "boolean" },
|
|
122631
|
+
skipDeduplicationCheck: { type: "boolean" }
|
|
122632
|
+
},
|
|
122633
|
+
required: []
|
|
122634
|
+
},
|
|
122635
|
+
request: {
|
|
122636
|
+
method: "POST",
|
|
122637
|
+
path: "/contacts/research",
|
|
122638
|
+
body: {
|
|
122639
|
+
searchResultIds: "{searchResultIds}",
|
|
122640
|
+
contacts: "{contacts}",
|
|
122641
|
+
isJobChange: "{isJobChange}",
|
|
122642
|
+
skipDeduplicationCheck: "{skipDeduplicationCheck}"
|
|
122643
|
+
}
|
|
122644
|
+
},
|
|
122645
|
+
cas: "native-idempotency",
|
|
122646
|
+
externalEffect: false
|
|
122647
|
+
},
|
|
122648
|
+
{
|
|
122649
|
+
name: "companies.research",
|
|
122650
|
+
class: "mutation",
|
|
122651
|
+
description: "Research (enrich) companies asynchronously by searchResultIds from a company search, or by direct company identifiers.",
|
|
122652
|
+
parameters: {
|
|
122653
|
+
type: "object",
|
|
122654
|
+
properties: {
|
|
122655
|
+
searchResultIds: { type: "array", items: { type: "string" } },
|
|
122656
|
+
companies: { type: "array", items: { type: "object" } },
|
|
122657
|
+
skipDeduplicationCheck: { type: "boolean" }
|
|
122658
|
+
},
|
|
122659
|
+
required: []
|
|
122660
|
+
},
|
|
122661
|
+
request: {
|
|
122662
|
+
method: "POST",
|
|
122663
|
+
path: "/companies/research",
|
|
122664
|
+
body: {
|
|
122665
|
+
searchResultIds: "{searchResultIds}",
|
|
122666
|
+
companies: "{companies}",
|
|
122667
|
+
skipDeduplicationCheck: "{skipDeduplicationCheck}"
|
|
122668
|
+
}
|
|
122669
|
+
},
|
|
122670
|
+
cas: "native-idempotency",
|
|
122671
|
+
externalEffect: false
|
|
122672
|
+
},
|
|
122673
|
+
{
|
|
122674
|
+
name: "contacts.research.poll",
|
|
122675
|
+
class: "read",
|
|
122676
|
+
description: "Poll for the results of a previously submitted contact research (enrichment) request by request id.",
|
|
122677
|
+
parameters: {
|
|
122678
|
+
type: "object",
|
|
122679
|
+
properties: { requestIds: { type: "array", items: { type: "string" } } },
|
|
122680
|
+
required: ["requestIds"]
|
|
122681
|
+
},
|
|
122682
|
+
request: {
|
|
122683
|
+
method: "GET",
|
|
122684
|
+
path: "/contacts/research/poll",
|
|
122685
|
+
query: { requestIds: "{requestIds}" }
|
|
122686
|
+
}
|
|
122687
|
+
}
|
|
122688
|
+
]
|
|
122689
|
+
});
|
|
122690
|
+
|
|
122691
|
+
// src/connectors/adapters/theirstack.ts
|
|
122692
|
+
var theirstackConnector = declarativeRestConnector({
|
|
122693
|
+
kind: "theirstack",
|
|
122694
|
+
displayName: "TheirStack",
|
|
122695
|
+
description: "Jobs and technographics data API. Search job postings and companies across 100+ countries, look up a company's tech stack, and detect buying intent.",
|
|
122696
|
+
auth: {
|
|
122697
|
+
kind: "api-key",
|
|
122698
|
+
hint: "API key from app.theirstack.com/settings/api. Sent as the Authorization: Bearer header."
|
|
122699
|
+
},
|
|
122700
|
+
category: "sales-intelligence",
|
|
122701
|
+
defaultConsistencyModel: "authoritative",
|
|
122702
|
+
baseUrl: "https://api.theirstack.com",
|
|
122703
|
+
credentialPlacement: { kind: "bearer" },
|
|
122704
|
+
defaultHeaders: { "content-type": "application/json" },
|
|
122705
|
+
test: { method: "GET", path: "/v0/billing/credit-balance" },
|
|
122706
|
+
capabilities: [
|
|
122707
|
+
{
|
|
122708
|
+
name: "jobs.search",
|
|
122709
|
+
class: "read",
|
|
122710
|
+
description: "Search job postings with filters (title, country, technology, posting recency, company). Requires at least one filter such as posted_at_max_age_days. Costs 1 credit per job returned.",
|
|
122711
|
+
parameters: {
|
|
122712
|
+
type: "object",
|
|
122713
|
+
properties: {
|
|
122714
|
+
posted_at_max_age_days: { type: "integer" },
|
|
122715
|
+
job_title_or: { type: "array", items: { type: "string" } },
|
|
122716
|
+
job_country_code_or: { type: "array", items: { type: "string" } },
|
|
122717
|
+
company_technology_slug_or: { type: "array", items: { type: "string" } },
|
|
122718
|
+
company_name_or: { type: "array", items: { type: "string" } },
|
|
122719
|
+
limit: { type: "integer" },
|
|
122720
|
+
page: { type: "integer" }
|
|
122721
|
+
},
|
|
122722
|
+
required: ["posted_at_max_age_days", "limit", "page"]
|
|
122723
|
+
},
|
|
122724
|
+
request: {
|
|
122725
|
+
method: "POST",
|
|
122726
|
+
path: "/v1/jobs/search",
|
|
122727
|
+
body: {
|
|
122728
|
+
posted_at_max_age_days: "{posted_at_max_age_days}",
|
|
122729
|
+
job_title_or: "{job_title_or}",
|
|
122730
|
+
job_country_code_or: "{job_country_code_or}",
|
|
122731
|
+
company_technology_slug_or: "{company_technology_slug_or}",
|
|
122732
|
+
company_name_or: "{company_name_or}",
|
|
122733
|
+
limit: "{limit}",
|
|
122734
|
+
page: "{page}"
|
|
122735
|
+
}
|
|
122736
|
+
}
|
|
122737
|
+
},
|
|
122738
|
+
{
|
|
122739
|
+
name: "companies.search",
|
|
122740
|
+
class: "read",
|
|
122741
|
+
description: "Search companies by country, technologies used, industry, funding, and nested job filters. Costs 3 credits per company returned.",
|
|
122742
|
+
parameters: {
|
|
122743
|
+
type: "object",
|
|
122744
|
+
properties: {
|
|
122745
|
+
company_country_code_or: { type: "array", items: { type: "string" } },
|
|
122746
|
+
company_technology_slug_or: { type: "array", items: { type: "string" } },
|
|
122747
|
+
industry_id_or: { type: "array", items: { type: "integer" } },
|
|
122748
|
+
min_funding_usd: { type: "integer" },
|
|
122749
|
+
max_funding_usd: { type: "integer" },
|
|
122750
|
+
limit: { type: "integer" },
|
|
122751
|
+
page: { type: "integer" }
|
|
122752
|
+
},
|
|
122753
|
+
required: ["limit", "page"]
|
|
122754
|
+
},
|
|
122755
|
+
request: {
|
|
122756
|
+
method: "POST",
|
|
122757
|
+
path: "/v1/companies/search",
|
|
122758
|
+
body: {
|
|
122759
|
+
company_country_code_or: "{company_country_code_or}",
|
|
122760
|
+
company_technology_slug_or: "{company_technology_slug_or}",
|
|
122761
|
+
industry_id_or: "{industry_id_or}",
|
|
122762
|
+
min_funding_usd: "{min_funding_usd}",
|
|
122763
|
+
max_funding_usd: "{max_funding_usd}",
|
|
122764
|
+
limit: "{limit}",
|
|
122765
|
+
page: "{page}"
|
|
122766
|
+
}
|
|
122767
|
+
}
|
|
122768
|
+
},
|
|
122769
|
+
{
|
|
122770
|
+
name: "companies.technologies",
|
|
122771
|
+
class: "read",
|
|
122772
|
+
description: "Look up the technologies (tech stack) detected for a company identified by domain, name, or LinkedIn URL. Costs 3 credits per company lookup.",
|
|
122773
|
+
parameters: {
|
|
122774
|
+
type: "object",
|
|
122775
|
+
properties: {
|
|
122776
|
+
company_domain: { type: "string" },
|
|
122777
|
+
company_name: { type: "string" },
|
|
122778
|
+
company_linkedin_url: { type: "string" },
|
|
122779
|
+
technology_slug_or: { type: "array", items: { type: "string" } }
|
|
122780
|
+
},
|
|
122781
|
+
required: ["company_domain"]
|
|
122782
|
+
},
|
|
122783
|
+
request: {
|
|
122784
|
+
method: "POST",
|
|
122785
|
+
path: "/v1/companies/technologies",
|
|
122786
|
+
body: {
|
|
122787
|
+
company_domain: "{company_domain}",
|
|
122788
|
+
company_name: "{company_name}",
|
|
122789
|
+
company_linkedin_url: "{company_linkedin_url}",
|
|
122790
|
+
technology_slug_or: "{technology_slug_or}"
|
|
122791
|
+
}
|
|
122792
|
+
}
|
|
122793
|
+
},
|
|
122794
|
+
{
|
|
122795
|
+
name: "companies.buying_intents",
|
|
122796
|
+
class: "read",
|
|
122797
|
+
description: "Retrieve buying-intent signals for a company identified by domain, name, or LinkedIn URL. Costs 3 credits per company lookup.",
|
|
122798
|
+
parameters: {
|
|
122799
|
+
type: "object",
|
|
122800
|
+
properties: {
|
|
122801
|
+
company_domain: { type: "string" },
|
|
122802
|
+
company_name: { type: "string" },
|
|
122803
|
+
company_linkedin_url: { type: "string" }
|
|
122804
|
+
},
|
|
122805
|
+
required: ["company_domain"]
|
|
122806
|
+
},
|
|
122807
|
+
request: {
|
|
122808
|
+
method: "POST",
|
|
122809
|
+
path: "/v1/companies/buying_intents",
|
|
122810
|
+
body: {
|
|
122811
|
+
company_domain: "{company_domain}",
|
|
122812
|
+
company_name: "{company_name}",
|
|
122813
|
+
company_linkedin_url: "{company_linkedin_url}"
|
|
122814
|
+
}
|
|
122815
|
+
}
|
|
122816
|
+
}
|
|
122817
|
+
]
|
|
122818
|
+
});
|
|
122819
|
+
|
|
122820
|
+
// src/connectors/adapters/usergems.ts
|
|
122821
|
+
var usergemsConnector = declarativeRestConnector({
|
|
122822
|
+
kind: "usergems",
|
|
122823
|
+
displayName: "UserGems",
|
|
122824
|
+
description: "Job-change and relationship tracking ingestion API. Add or remove contacts and accounts on watchlists so UserGems surfaces job-change and buying signals for them.",
|
|
122825
|
+
auth: {
|
|
122826
|
+
kind: "api-key",
|
|
122827
|
+
hint: "API key requested via support@usergems.com. Sent as the X-Api-Key header."
|
|
122828
|
+
},
|
|
122829
|
+
category: "sales-intelligence",
|
|
122830
|
+
defaultConsistencyModel: "authoritative",
|
|
122831
|
+
baseUrl: "https://api.usergems.com/v1",
|
|
122832
|
+
credentialPlacement: { kind: "header", header: "X-Api-Key" },
|
|
122833
|
+
defaultHeaders: { "content-type": "application/json" },
|
|
122834
|
+
capabilities: [
|
|
122835
|
+
{
|
|
122836
|
+
name: "contacts.add",
|
|
122837
|
+
class: "mutation",
|
|
122838
|
+
description: "Add a contact to your UserGems tracking list so job changes and signals are monitored. Email is required; many profile and custom signal fields are optional.",
|
|
122839
|
+
parameters: {
|
|
122840
|
+
type: "object",
|
|
122841
|
+
properties: {
|
|
122842
|
+
email: { type: "string" },
|
|
122843
|
+
firstName: { type: "string" },
|
|
122844
|
+
lastName: { type: "string" },
|
|
122845
|
+
fullName: { type: "string" },
|
|
122846
|
+
company: { type: "string" },
|
|
122847
|
+
relationshipType: { type: "string" },
|
|
122848
|
+
linkedinUrl: { type: "string" },
|
|
122849
|
+
signal: { type: "string" },
|
|
122850
|
+
custom: { type: "object" }
|
|
122851
|
+
},
|
|
122852
|
+
required: ["email"]
|
|
122853
|
+
},
|
|
122854
|
+
request: {
|
|
122855
|
+
method: "POST",
|
|
122856
|
+
path: "/contact",
|
|
122857
|
+
body: {
|
|
122858
|
+
email: "{email}",
|
|
122859
|
+
firstName: "{firstName}",
|
|
122860
|
+
lastName: "{lastName}",
|
|
122861
|
+
fullName: "{fullName}",
|
|
122862
|
+
company: "{company}",
|
|
122863
|
+
relationshipType: "{relationshipType}",
|
|
122864
|
+
linkedinUrl: "{linkedinUrl}",
|
|
122865
|
+
signal: "{signal}",
|
|
122866
|
+
custom: "{custom}"
|
|
122867
|
+
}
|
|
122868
|
+
},
|
|
122869
|
+
cas: "native-idempotency",
|
|
122870
|
+
externalEffect: true
|
|
122871
|
+
},
|
|
122872
|
+
{
|
|
122873
|
+
name: "contacts.delete",
|
|
122874
|
+
class: "mutation",
|
|
122875
|
+
description: "Remove a contact from your UserGems tracking list by email.",
|
|
122876
|
+
parameters: {
|
|
122877
|
+
type: "object",
|
|
122878
|
+
properties: {
|
|
122879
|
+
email: { type: "string" },
|
|
122880
|
+
relationshipType: { type: "string" },
|
|
122881
|
+
signal: { type: "string" }
|
|
122882
|
+
},
|
|
122883
|
+
required: ["email"]
|
|
122884
|
+
},
|
|
122885
|
+
request: {
|
|
122886
|
+
method: "DELETE",
|
|
122887
|
+
path: "/contact",
|
|
122888
|
+
body: {
|
|
122889
|
+
email: "{email}",
|
|
122890
|
+
relationshipType: "{relationshipType}",
|
|
122891
|
+
signal: "{signal}"
|
|
122892
|
+
}
|
|
122893
|
+
},
|
|
122894
|
+
cas: "native-idempotency",
|
|
122895
|
+
externalEffect: true
|
|
122896
|
+
},
|
|
122897
|
+
{
|
|
122898
|
+
name: "accounts.add",
|
|
122899
|
+
class: "mutation",
|
|
122900
|
+
description: "Add an account (company) for which you want to receive new-prospect and signal reports. Name and domain are required.",
|
|
122901
|
+
parameters: {
|
|
122902
|
+
type: "object",
|
|
122903
|
+
properties: {
|
|
122904
|
+
name: { type: "string" },
|
|
122905
|
+
domain: { type: "string" },
|
|
122906
|
+
reportName: { type: "string" },
|
|
122907
|
+
signal: { type: "string" },
|
|
122908
|
+
salesforceId: { type: "string" },
|
|
122909
|
+
customId: { type: "string" },
|
|
122910
|
+
custom: { type: "object" }
|
|
122911
|
+
},
|
|
122912
|
+
required: ["name", "domain"]
|
|
122913
|
+
},
|
|
122914
|
+
request: {
|
|
122915
|
+
method: "POST",
|
|
122916
|
+
path: "/account",
|
|
122917
|
+
body: {
|
|
122918
|
+
name: "{name}",
|
|
122919
|
+
domain: "{domain}",
|
|
122920
|
+
reportName: "{reportName}",
|
|
122921
|
+
signal: "{signal}",
|
|
122922
|
+
salesforceId: "{salesforceId}",
|
|
122923
|
+
customId: "{customId}",
|
|
122924
|
+
custom: "{custom}"
|
|
122925
|
+
}
|
|
122926
|
+
},
|
|
122927
|
+
cas: "native-idempotency",
|
|
122928
|
+
externalEffect: true
|
|
122929
|
+
},
|
|
122930
|
+
{
|
|
122931
|
+
name: "accounts.delete",
|
|
122932
|
+
class: "mutation",
|
|
122933
|
+
description: "Remove a previously added account by name and domain.",
|
|
122934
|
+
parameters: {
|
|
122935
|
+
type: "object",
|
|
122936
|
+
properties: {
|
|
122937
|
+
name: { type: "string" },
|
|
122938
|
+
domain: { type: "string" },
|
|
122939
|
+
reportName: { type: "string" },
|
|
122940
|
+
signal: { type: "string" },
|
|
122941
|
+
salesforceId: { type: "string" },
|
|
122942
|
+
customId: { type: "string" }
|
|
122943
|
+
},
|
|
122944
|
+
required: ["name", "domain"]
|
|
122945
|
+
},
|
|
122946
|
+
request: {
|
|
122947
|
+
method: "DELETE",
|
|
122948
|
+
path: "/account",
|
|
122949
|
+
body: {
|
|
122950
|
+
name: "{name}",
|
|
122951
|
+
domain: "{domain}",
|
|
122952
|
+
reportName: "{reportName}",
|
|
122953
|
+
signal: "{signal}",
|
|
122954
|
+
salesforceId: "{salesforceId}",
|
|
122955
|
+
customId: "{customId}"
|
|
122956
|
+
}
|
|
122957
|
+
},
|
|
122958
|
+
cas: "native-idempotency",
|
|
122959
|
+
externalEffect: true
|
|
122960
|
+
}
|
|
122961
|
+
]
|
|
122962
|
+
});
|
|
122963
|
+
|
|
122964
|
+
// src/connectors/adapters/hightouch.ts
|
|
122965
|
+
var hightouchConnector = declarativeRestConnector({
|
|
122966
|
+
kind: "hightouch",
|
|
122967
|
+
displayName: "Hightouch",
|
|
122968
|
+
description: "List and inspect Reverse ETL syncs, sources, destinations, and runs, and trigger sync runs.",
|
|
122969
|
+
auth: {
|
|
122970
|
+
kind: "api-key",
|
|
122971
|
+
hint: "API key from Settings -> API keys (Add API key). Sent as the Authorization: Bearer header."
|
|
122972
|
+
},
|
|
122973
|
+
category: "database",
|
|
122974
|
+
defaultConsistencyModel: "authoritative",
|
|
122975
|
+
baseUrl: "https://api.hightouch.com/api/v1",
|
|
122976
|
+
credentialPlacement: { kind: "bearer" },
|
|
122977
|
+
defaultHeaders: { "content-type": "application/json" },
|
|
122978
|
+
test: { method: "GET", path: "/syncs" },
|
|
122979
|
+
capabilities: [
|
|
122980
|
+
{
|
|
122981
|
+
name: "syncs.list",
|
|
122982
|
+
class: "read",
|
|
122983
|
+
description: "List configured syncs in the workspace.",
|
|
122984
|
+
parameters: {
|
|
122985
|
+
type: "object",
|
|
122986
|
+
properties: {
|
|
122987
|
+
limit: { type: "integer" },
|
|
122988
|
+
offset: { type: "integer" },
|
|
122989
|
+
modelId: { type: "number" },
|
|
122990
|
+
slug: { type: "string" },
|
|
122991
|
+
orderBy: { type: "string" }
|
|
122992
|
+
},
|
|
122993
|
+
required: []
|
|
122994
|
+
},
|
|
122995
|
+
request: {
|
|
122996
|
+
method: "GET",
|
|
122997
|
+
path: "/syncs",
|
|
122998
|
+
query: {
|
|
122999
|
+
limit: "{limit}",
|
|
123000
|
+
offset: "{offset}",
|
|
123001
|
+
modelId: "{modelId}",
|
|
123002
|
+
slug: "{slug}",
|
|
123003
|
+
orderBy: "{orderBy}"
|
|
123004
|
+
}
|
|
123005
|
+
}
|
|
123006
|
+
},
|
|
123007
|
+
{
|
|
123008
|
+
name: "syncs.get",
|
|
123009
|
+
class: "read",
|
|
123010
|
+
description: "Retrieve a single sync by its id.",
|
|
123011
|
+
parameters: {
|
|
123012
|
+
type: "object",
|
|
123013
|
+
properties: { syncId: { type: "number" } },
|
|
123014
|
+
required: ["syncId"]
|
|
123015
|
+
},
|
|
123016
|
+
request: { method: "GET", path: "/syncs/{syncId}" }
|
|
123017
|
+
},
|
|
123018
|
+
{
|
|
123019
|
+
name: "syncs.list_runs",
|
|
123020
|
+
class: "read",
|
|
123021
|
+
description: "List the runs (execution history and status) for a sync.",
|
|
123022
|
+
parameters: {
|
|
123023
|
+
type: "object",
|
|
123024
|
+
properties: {
|
|
123025
|
+
syncId: { type: "number" },
|
|
123026
|
+
limit: { type: "integer" },
|
|
123027
|
+
offset: { type: "integer" },
|
|
123028
|
+
runId: { type: "number" },
|
|
123029
|
+
orderBy: { type: "string" }
|
|
123030
|
+
},
|
|
123031
|
+
required: ["syncId"]
|
|
123032
|
+
},
|
|
123033
|
+
request: {
|
|
123034
|
+
method: "GET",
|
|
123035
|
+
path: "/syncs/{syncId}/runs",
|
|
123036
|
+
query: {
|
|
123037
|
+
limit: "{limit}",
|
|
123038
|
+
offset: "{offset}",
|
|
123039
|
+
runId: "{runId}",
|
|
123040
|
+
orderBy: "{orderBy}"
|
|
123041
|
+
}
|
|
123042
|
+
}
|
|
123043
|
+
},
|
|
123044
|
+
{
|
|
123045
|
+
name: "sources.list",
|
|
123046
|
+
class: "read",
|
|
123047
|
+
description: "List configured data sources.",
|
|
123048
|
+
parameters: {
|
|
123049
|
+
type: "object",
|
|
123050
|
+
properties: {
|
|
123051
|
+
limit: { type: "integer" },
|
|
123052
|
+
offset: { type: "integer" },
|
|
123053
|
+
name: { type: "string" },
|
|
123054
|
+
slug: { type: "string" }
|
|
123055
|
+
},
|
|
123056
|
+
required: []
|
|
123057
|
+
},
|
|
123058
|
+
request: {
|
|
123059
|
+
method: "GET",
|
|
123060
|
+
path: "/sources",
|
|
123061
|
+
query: { limit: "{limit}", offset: "{offset}", name: "{name}", slug: "{slug}" }
|
|
123062
|
+
}
|
|
123063
|
+
},
|
|
123064
|
+
{
|
|
123065
|
+
name: "destinations.list",
|
|
123066
|
+
class: "read",
|
|
123067
|
+
description: "List configured destinations.",
|
|
123068
|
+
parameters: {
|
|
123069
|
+
type: "object",
|
|
123070
|
+
properties: {
|
|
123071
|
+
limit: { type: "integer" },
|
|
123072
|
+
offset: { type: "integer" },
|
|
123073
|
+
name: { type: "string" },
|
|
123074
|
+
slug: { type: "string" }
|
|
123075
|
+
},
|
|
123076
|
+
required: []
|
|
123077
|
+
},
|
|
123078
|
+
request: {
|
|
123079
|
+
method: "GET",
|
|
123080
|
+
path: "/destinations",
|
|
123081
|
+
query: { limit: "{limit}", offset: "{offset}", name: "{name}", slug: "{slug}" }
|
|
123082
|
+
}
|
|
123083
|
+
},
|
|
123084
|
+
{
|
|
123085
|
+
name: "syncs.trigger",
|
|
123086
|
+
class: "mutation",
|
|
123087
|
+
description: "Trigger a run of the given sync, optionally forcing a full resync.",
|
|
123088
|
+
parameters: {
|
|
123089
|
+
type: "object",
|
|
123090
|
+
properties: {
|
|
123091
|
+
syncId: { type: "string" },
|
|
123092
|
+
fullResync: { type: "boolean" },
|
|
123093
|
+
resetCDC: { type: "boolean" }
|
|
123094
|
+
},
|
|
123095
|
+
required: ["syncId"]
|
|
123096
|
+
},
|
|
123097
|
+
request: {
|
|
123098
|
+
method: "POST",
|
|
123099
|
+
path: "/syncs/{syncId}/trigger",
|
|
123100
|
+
body: { fullResync: "{fullResync}", resetCDC: "{resetCDC}" }
|
|
123101
|
+
},
|
|
123102
|
+
cas: "native-idempotency",
|
|
123103
|
+
externalEffect: true
|
|
123104
|
+
}
|
|
123105
|
+
]
|
|
123106
|
+
});
|
|
123107
|
+
|
|
123108
|
+
// src/connectors/adapters/polytomic.ts
|
|
123109
|
+
var polytomicConnector = declarativeRestConnector({
|
|
123110
|
+
kind: "polytomic",
|
|
123111
|
+
displayName: "Polytomic",
|
|
123112
|
+
description: "List and create ETL/reverse-ETL syncs, inspect sync status, and list available connection types.",
|
|
123113
|
+
auth: {
|
|
123114
|
+
kind: "api-key",
|
|
123115
|
+
hint: "API key generated in the Polytomic Settings panel. Sent as the Authorization: Bearer header."
|
|
123116
|
+
},
|
|
123117
|
+
category: "database",
|
|
123118
|
+
defaultConsistencyModel: "authoritative",
|
|
123119
|
+
baseUrl: "https://app.polytomic.com/api",
|
|
123120
|
+
credentialPlacement: { kind: "bearer" },
|
|
123121
|
+
defaultHeaders: { "content-type": "application/json" },
|
|
123122
|
+
test: { method: "GET", path: "/me" },
|
|
123123
|
+
capabilities: [
|
|
123124
|
+
{
|
|
123125
|
+
name: "syncs.list",
|
|
123126
|
+
class: "read",
|
|
123127
|
+
description: "List configured syncs.",
|
|
123128
|
+
parameters: {
|
|
123129
|
+
type: "object",
|
|
123130
|
+
properties: {
|
|
123131
|
+
active: { type: "boolean" },
|
|
123132
|
+
mode: { type: "string" },
|
|
123133
|
+
target_connection_id: { type: "string" },
|
|
123134
|
+
limit: { type: "integer" },
|
|
123135
|
+
page_token: { type: "string" }
|
|
123136
|
+
},
|
|
123137
|
+
required: []
|
|
123138
|
+
},
|
|
123139
|
+
request: {
|
|
123140
|
+
method: "GET",
|
|
123141
|
+
path: "/syncs",
|
|
123142
|
+
query: {
|
|
123143
|
+
active: "{active}",
|
|
123144
|
+
mode: "{mode}",
|
|
123145
|
+
target_connection_id: "{target_connection_id}",
|
|
123146
|
+
limit: "{limit}",
|
|
123147
|
+
page_token: "{page_token}"
|
|
123148
|
+
}
|
|
123149
|
+
}
|
|
123150
|
+
},
|
|
123151
|
+
{
|
|
123152
|
+
name: "syncs.status",
|
|
123153
|
+
class: "read",
|
|
123154
|
+
description: "Get the current status of a sync by its id.",
|
|
123155
|
+
parameters: { type: "object", properties: { id: { type: "string" } }, required: ["id"] },
|
|
123156
|
+
request: { method: "GET", path: "/syncs/{id}/status" }
|
|
123157
|
+
},
|
|
123158
|
+
{
|
|
123159
|
+
name: "connection_types.list",
|
|
123160
|
+
class: "read",
|
|
123161
|
+
description: "List all connection types (source/destination connectors) supported by this deployment.",
|
|
123162
|
+
parameters: { type: "object", properties: {}, required: [] },
|
|
123163
|
+
request: { method: "GET", path: "/connection_types" }
|
|
123164
|
+
},
|
|
123165
|
+
{
|
|
123166
|
+
name: "syncs.create",
|
|
123167
|
+
class: "mutation",
|
|
123168
|
+
description: "Create a new sync from one or more models to a destination.",
|
|
123169
|
+
parameters: {
|
|
123170
|
+
type: "object",
|
|
123171
|
+
properties: {
|
|
123172
|
+
name: { type: "string" },
|
|
123173
|
+
target: { type: "object" },
|
|
123174
|
+
mode: { type: "string" },
|
|
123175
|
+
fields: { type: "array", items: { type: "object" } },
|
|
123176
|
+
schedule: { type: "object" }
|
|
123177
|
+
},
|
|
123178
|
+
required: ["name", "target", "mode", "fields"]
|
|
123179
|
+
},
|
|
123180
|
+
request: {
|
|
123181
|
+
method: "POST",
|
|
123182
|
+
path: "/syncs",
|
|
123183
|
+
body: {
|
|
123184
|
+
name: "{name}",
|
|
123185
|
+
target: "{target}",
|
|
123186
|
+
mode: "{mode}",
|
|
123187
|
+
fields: "{fields}",
|
|
123188
|
+
schedule: "{schedule}"
|
|
123189
|
+
}
|
|
123190
|
+
},
|
|
123191
|
+
cas: "native-idempotency",
|
|
123192
|
+
externalEffect: true
|
|
123193
|
+
}
|
|
123194
|
+
]
|
|
123195
|
+
});
|
|
123196
|
+
|
|
123197
|
+
// src/connectors/adapters/signwell.ts
|
|
123198
|
+
var signwellConnector = declarativeRestConnector({
|
|
123199
|
+
kind: "signwell",
|
|
123200
|
+
displayName: "SignWell",
|
|
123201
|
+
description: "Create and send documents for electronic signature, and list or retrieve documents.",
|
|
123202
|
+
auth: {
|
|
123203
|
+
kind: "api-key",
|
|
123204
|
+
hint: "API key from Settings -> API (Create API Key). Sent in the X-Api-Key header."
|
|
123205
|
+
},
|
|
123206
|
+
category: "other",
|
|
123207
|
+
defaultConsistencyModel: "authoritative",
|
|
123208
|
+
baseUrl: "https://www.signwell.com/api/v1",
|
|
123209
|
+
credentialPlacement: { kind: "header", header: "X-Api-Key" },
|
|
123210
|
+
defaultHeaders: { "content-type": "application/json" },
|
|
123211
|
+
test: { method: "GET", path: "/me" },
|
|
123212
|
+
capabilities: [
|
|
123213
|
+
{
|
|
123214
|
+
name: "documents.list",
|
|
123215
|
+
class: "read",
|
|
123216
|
+
description: "List documents in the account.",
|
|
123217
|
+
parameters: {
|
|
123218
|
+
type: "object",
|
|
123219
|
+
properties: { page: { type: "integer" }, limit: { type: "integer" } },
|
|
123220
|
+
required: []
|
|
123221
|
+
},
|
|
123222
|
+
request: {
|
|
123223
|
+
method: "GET",
|
|
123224
|
+
path: "/documents",
|
|
123225
|
+
query: { page: "{page}", limit: "{limit}" }
|
|
123226
|
+
}
|
|
123227
|
+
},
|
|
123228
|
+
{
|
|
123229
|
+
name: "documents.get",
|
|
123230
|
+
class: "read",
|
|
123231
|
+
description: "Retrieve a single document by its id.",
|
|
123232
|
+
parameters: { type: "object", properties: { id: { type: "string" } }, required: ["id"] },
|
|
123233
|
+
request: { method: "GET", path: "/documents/{id}" }
|
|
123234
|
+
},
|
|
123235
|
+
{
|
|
123236
|
+
name: "account.get",
|
|
123237
|
+
class: "read",
|
|
123238
|
+
description: "Retrieve the account information associated with the API key.",
|
|
123239
|
+
parameters: { type: "object", properties: {}, required: [] },
|
|
123240
|
+
request: { method: "GET", path: "/me" }
|
|
123241
|
+
},
|
|
123242
|
+
{
|
|
123243
|
+
name: "documents.create",
|
|
123244
|
+
class: "mutation",
|
|
123245
|
+
description: "Create and optionally send a new document for signing. Set draft to true to create without sending.",
|
|
123246
|
+
parameters: {
|
|
123247
|
+
type: "object",
|
|
123248
|
+
properties: {
|
|
123249
|
+
files: { type: "array", items: { type: "object" } },
|
|
123250
|
+
recipients: { type: "array", items: { type: "object" } },
|
|
123251
|
+
name: { type: "string" },
|
|
123252
|
+
subject: { type: "string" },
|
|
123253
|
+
message: { type: "string" },
|
|
123254
|
+
draft: { type: "boolean" },
|
|
123255
|
+
test_mode: { type: "boolean" },
|
|
123256
|
+
embedded_signing: { type: "boolean" }
|
|
123257
|
+
},
|
|
123258
|
+
required: ["files", "recipients"]
|
|
123259
|
+
},
|
|
123260
|
+
request: {
|
|
123261
|
+
method: "POST",
|
|
123262
|
+
path: "/documents",
|
|
123263
|
+
body: {
|
|
123264
|
+
files: "{files}",
|
|
123265
|
+
recipients: "{recipients}",
|
|
123266
|
+
name: "{name}",
|
|
123267
|
+
subject: "{subject}",
|
|
123268
|
+
message: "{message}",
|
|
123269
|
+
draft: "{draft}",
|
|
123270
|
+
test_mode: "{test_mode}",
|
|
123271
|
+
embedded_signing: "{embedded_signing}"
|
|
123272
|
+
}
|
|
123273
|
+
},
|
|
123274
|
+
cas: "native-idempotency",
|
|
123275
|
+
externalEffect: true
|
|
123276
|
+
}
|
|
123277
|
+
]
|
|
123278
|
+
});
|
|
123279
|
+
|
|
123280
|
+
// src/connectors/adapters/justcall.ts
|
|
123281
|
+
var justcallConnector = declarativeRestConnector({
|
|
123282
|
+
kind: "justcall",
|
|
123283
|
+
displayName: "JustCall",
|
|
123284
|
+
description: "Cloud phone system and SMS platform. Place and list calls, manage contacts, and send SMS/MMS programmatically.",
|
|
123285
|
+
auth: {
|
|
123286
|
+
kind: "api-key",
|
|
123287
|
+
hint: 'Get your API Key and API Secret from JustCall Settings -> Developers. Paste them joined by a colon as "api_key:api_secret"; sent as the Authorization header.'
|
|
123288
|
+
},
|
|
123289
|
+
category: "comms",
|
|
123290
|
+
defaultConsistencyModel: "authoritative",
|
|
123291
|
+
baseUrl: "https://api.justcall.io/v2.1",
|
|
123292
|
+
credentialPlacement: { kind: "header", header: "Authorization" },
|
|
123293
|
+
defaultHeaders: { "content-type": "application/json", accept: "application/json" },
|
|
123294
|
+
test: { method: "GET", path: "/calls", query: { per_page: "1" } },
|
|
123295
|
+
capabilities: [
|
|
123296
|
+
{
|
|
123297
|
+
name: "calls.list",
|
|
123298
|
+
class: "read",
|
|
123299
|
+
description: "List call records linked to the account, with optional filters for number, direction, type, and date range.",
|
|
123300
|
+
parameters: {
|
|
123301
|
+
type: "object",
|
|
123302
|
+
properties: {
|
|
123303
|
+
page: { type: "integer" },
|
|
123304
|
+
per_page: { type: "integer" },
|
|
123305
|
+
contact_number: { type: "string" },
|
|
123306
|
+
from_datetime: { type: "string" },
|
|
123307
|
+
to_datetime: { type: "string" },
|
|
123308
|
+
call_direction: { type: "string" }
|
|
123309
|
+
},
|
|
123310
|
+
required: []
|
|
123311
|
+
},
|
|
123312
|
+
request: {
|
|
123313
|
+
method: "GET",
|
|
123314
|
+
path: "/calls",
|
|
123315
|
+
query: {
|
|
123316
|
+
page: "{page}",
|
|
123317
|
+
per_page: "{per_page}",
|
|
123318
|
+
contact_number: "{contact_number}",
|
|
123319
|
+
from_datetime: "{from_datetime}",
|
|
123320
|
+
to_datetime: "{to_datetime}",
|
|
123321
|
+
call_direction: "{call_direction}"
|
|
123322
|
+
}
|
|
123323
|
+
}
|
|
123324
|
+
},
|
|
123325
|
+
{
|
|
123326
|
+
name: "calls.get",
|
|
123327
|
+
class: "read",
|
|
123328
|
+
description: "Get a single Sales Dialer call by its unique call id.",
|
|
123329
|
+
parameters: { type: "object", properties: { id: { type: "integer" } }, required: ["id"] },
|
|
123330
|
+
request: { method: "GET", path: "/sales_dialer/calls/{id}" }
|
|
123331
|
+
},
|
|
123332
|
+
{
|
|
123333
|
+
name: "contacts.list",
|
|
123334
|
+
class: "read",
|
|
123335
|
+
description: "List contacts in the account, optionally filtered by name or number.",
|
|
123336
|
+
parameters: {
|
|
123337
|
+
type: "object",
|
|
123338
|
+
properties: {
|
|
123339
|
+
page: { type: "integer" },
|
|
123340
|
+
per_page: { type: "integer" },
|
|
123341
|
+
contact_number: { type: "string" },
|
|
123342
|
+
first_name: { type: "string" },
|
|
123343
|
+
last_name: { type: "string" },
|
|
123344
|
+
across_team: { type: "boolean" }
|
|
123345
|
+
},
|
|
123346
|
+
required: []
|
|
123347
|
+
},
|
|
123348
|
+
request: {
|
|
123349
|
+
method: "GET",
|
|
123350
|
+
path: "/contacts",
|
|
123351
|
+
query: {
|
|
123352
|
+
page: "{page}",
|
|
123353
|
+
per_page: "{per_page}",
|
|
123354
|
+
contact_number: "{contact_number}",
|
|
123355
|
+
first_name: "{first_name}",
|
|
123356
|
+
last_name: "{last_name}",
|
|
123357
|
+
across_team: "{across_team}"
|
|
123358
|
+
}
|
|
123359
|
+
}
|
|
123360
|
+
},
|
|
123361
|
+
{
|
|
123362
|
+
name: "contacts.create",
|
|
123363
|
+
class: "mutation",
|
|
123364
|
+
description: "Create a new contact in Sales Dialer.",
|
|
123365
|
+
parameters: {
|
|
123366
|
+
type: "object",
|
|
123367
|
+
properties: {
|
|
123368
|
+
name: { type: "string" },
|
|
123369
|
+
phone_number: { type: "string" },
|
|
123370
|
+
email: { type: "string" }
|
|
123371
|
+
},
|
|
123372
|
+
required: ["name", "phone_number"]
|
|
123373
|
+
},
|
|
123374
|
+
request: {
|
|
123375
|
+
method: "POST",
|
|
123376
|
+
path: "/sales_dialer/contacts",
|
|
123377
|
+
body: { name: "{name}", phone_number: "{phone_number}", email: "{email}" }
|
|
123378
|
+
},
|
|
123379
|
+
cas: "native-idempotency",
|
|
123380
|
+
externalEffect: true
|
|
123381
|
+
},
|
|
123382
|
+
{
|
|
123383
|
+
name: "sms.send",
|
|
123384
|
+
class: "mutation",
|
|
123385
|
+
description: "Send an SMS or MMS from a JustCall number to a contact number.",
|
|
123386
|
+
parameters: {
|
|
123387
|
+
type: "object",
|
|
123388
|
+
properties: {
|
|
123389
|
+
justcall_number: { type: "string" },
|
|
123390
|
+
contact_number: { type: "string" },
|
|
123391
|
+
body: { type: "string" },
|
|
123392
|
+
media_url: { type: "string" }
|
|
123393
|
+
},
|
|
123394
|
+
required: ["justcall_number", "contact_number", "body"]
|
|
123395
|
+
},
|
|
123396
|
+
request: {
|
|
123397
|
+
method: "POST",
|
|
123398
|
+
path: "/texts/new",
|
|
123399
|
+
body: {
|
|
123400
|
+
justcall_number: "{justcall_number}",
|
|
123401
|
+
contact_number: "{contact_number}",
|
|
123402
|
+
body: "{body}",
|
|
123403
|
+
media_url: "{media_url}"
|
|
123404
|
+
}
|
|
123405
|
+
},
|
|
123406
|
+
cas: "native-idempotency",
|
|
123407
|
+
externalEffect: true
|
|
123408
|
+
}
|
|
123409
|
+
]
|
|
123410
|
+
});
|
|
123411
|
+
|
|
123412
|
+
// src/connectors/adapters/nooks.ts
|
|
123413
|
+
var nooksConnector = declarativeRestConnector({
|
|
123414
|
+
kind: "nooks",
|
|
123415
|
+
displayName: "Nooks",
|
|
123416
|
+
description: "AI sales engagement and dialer platform. Read call records, prospects, and accounts from the Nooks Sequencing API.",
|
|
123417
|
+
auth: {
|
|
123418
|
+
kind: "api-key",
|
|
123419
|
+
hint: "Create a long-lived API key (nooks-api-...) in Nooks Developer Settings -> API Keys. Sent as the Authorization: Bearer header."
|
|
123420
|
+
},
|
|
123421
|
+
category: "comms",
|
|
123422
|
+
defaultConsistencyModel: "authoritative",
|
|
123423
|
+
baseUrl: "https://partner-api.nooks.in/v1",
|
|
123424
|
+
credentialPlacement: { kind: "bearer" },
|
|
123425
|
+
defaultHeaders: { "content-type": "application/json", accept: "application/json" },
|
|
123426
|
+
test: { method: "GET", path: "/me" },
|
|
123427
|
+
capabilities: [
|
|
123428
|
+
{
|
|
123429
|
+
name: "calls.list",
|
|
123430
|
+
class: "read",
|
|
123431
|
+
description: "List call records, with optional filters by prospect, account, or owner.",
|
|
123432
|
+
parameters: {
|
|
123433
|
+
type: "object",
|
|
123434
|
+
properties: {
|
|
123435
|
+
filter_prospect_id: { type: "string" },
|
|
123436
|
+
filter_account_id: { type: "string" },
|
|
123437
|
+
filter_owner_id: { type: "string" },
|
|
123438
|
+
include: { type: "string" }
|
|
123439
|
+
},
|
|
123440
|
+
required: []
|
|
123441
|
+
},
|
|
123442
|
+
request: {
|
|
123443
|
+
method: "GET",
|
|
123444
|
+
path: "/calls",
|
|
123445
|
+
query: {
|
|
123446
|
+
"filter[prospect][id]": "{filter_prospect_id}",
|
|
123447
|
+
"filter[account][id]": "{filter_account_id}",
|
|
123448
|
+
"filter[owner][id]": "{filter_owner_id}",
|
|
123449
|
+
include: "{include}"
|
|
123450
|
+
}
|
|
123451
|
+
}
|
|
123452
|
+
},
|
|
123453
|
+
{
|
|
123454
|
+
name: "calls.get",
|
|
123455
|
+
class: "read",
|
|
123456
|
+
description: "Get a single call record by its id.",
|
|
123457
|
+
parameters: {
|
|
123458
|
+
type: "object",
|
|
123459
|
+
properties: { id: { type: "string" }, include: { type: "string" } },
|
|
123460
|
+
required: ["id"]
|
|
123461
|
+
},
|
|
123462
|
+
request: { method: "GET", path: "/calls/{id}", query: { include: "{include}" } }
|
|
123463
|
+
},
|
|
123464
|
+
{
|
|
123465
|
+
name: "prospects.list",
|
|
123466
|
+
class: "read",
|
|
123467
|
+
description: "List prospects (contacts), with optional filters by name, email, or account.",
|
|
123468
|
+
parameters: {
|
|
123469
|
+
type: "object",
|
|
123470
|
+
properties: {
|
|
123471
|
+
filter_name: { type: "string" },
|
|
123472
|
+
filter_primaryEmail: { type: "string" },
|
|
123473
|
+
filter_account_id: { type: "string" },
|
|
123474
|
+
include: { type: "string" }
|
|
123475
|
+
},
|
|
123476
|
+
required: []
|
|
123477
|
+
},
|
|
123478
|
+
request: {
|
|
123479
|
+
method: "GET",
|
|
123480
|
+
path: "/prospects",
|
|
123481
|
+
query: {
|
|
123482
|
+
"filter[name]": "{filter_name}",
|
|
123483
|
+
"filter[primaryEmail]": "{filter_primaryEmail}",
|
|
123484
|
+
"filter[account][id]": "{filter_account_id}",
|
|
123485
|
+
include: "{include}"
|
|
123486
|
+
}
|
|
123487
|
+
}
|
|
123488
|
+
},
|
|
123489
|
+
{
|
|
123490
|
+
name: "accounts.list",
|
|
123491
|
+
class: "read",
|
|
123492
|
+
description: "List accounts, with optional filters by name, domain, or CRM id.",
|
|
123493
|
+
parameters: {
|
|
123494
|
+
type: "object",
|
|
123495
|
+
properties: {
|
|
123496
|
+
filter_name: { type: "string" },
|
|
123497
|
+
filter_domain: { type: "string" },
|
|
123498
|
+
filter_crmId: { type: "string" }
|
|
123499
|
+
},
|
|
123500
|
+
required: []
|
|
123501
|
+
},
|
|
123502
|
+
request: {
|
|
123503
|
+
method: "GET",
|
|
123504
|
+
path: "/accounts",
|
|
123505
|
+
query: {
|
|
123506
|
+
"filter[name]": "{filter_name}",
|
|
123507
|
+
"filter[domain]": "{filter_domain}",
|
|
123508
|
+
"filter[crmId]": "{filter_crmId}"
|
|
123509
|
+
}
|
|
123510
|
+
}
|
|
123511
|
+
},
|
|
123512
|
+
{
|
|
123513
|
+
name: "prospects.sync",
|
|
123514
|
+
class: "mutation",
|
|
123515
|
+
description: "Sync prospects from the connected CRM into Nooks.",
|
|
123516
|
+
parameters: { type: "object", properties: {}, required: [] },
|
|
123517
|
+
request: { method: "POST", path: "/integrations/prospects/sync", body: {} },
|
|
123518
|
+
cas: "native-idempotency",
|
|
123519
|
+
externalEffect: true
|
|
123520
|
+
}
|
|
123521
|
+
]
|
|
123522
|
+
});
|
|
123523
|
+
|
|
123524
|
+
// src/connectors/adapters/modjo.ts
|
|
123525
|
+
var modjoConnector = declarativeRestConnector({
|
|
123526
|
+
kind: "modjo",
|
|
123527
|
+
displayName: "Modjo",
|
|
123528
|
+
description: "Conversation intelligence platform. Export call records with transcripts and AI summaries, and list users and teams.",
|
|
123529
|
+
auth: {
|
|
123530
|
+
kind: "api-key",
|
|
123531
|
+
hint: "Create an API key in Modjo (Administrator or Manager role required); copy it immediately as it is shown only once. Sent as the X-API-KEY header."
|
|
123532
|
+
},
|
|
123533
|
+
category: "doc",
|
|
123534
|
+
defaultConsistencyModel: "authoritative",
|
|
123535
|
+
baseUrl: "https://api.modjo.ai",
|
|
123536
|
+
credentialPlacement: { kind: "header", header: "X-API-KEY" },
|
|
123537
|
+
defaultHeaders: { "content-type": "application/json", accept: "application/json" },
|
|
123538
|
+
test: { method: "GET", path: "/v1/users", query: { page: "1", perPage: "1" } },
|
|
123539
|
+
capabilities: [
|
|
123540
|
+
{
|
|
123541
|
+
name: "calls.export",
|
|
123542
|
+
class: "read",
|
|
123543
|
+
description: "Retrieve a paginated list of calls with optional relations such as transcripts, AI summaries, and contacts.",
|
|
123544
|
+
parameters: {
|
|
123545
|
+
type: "object",
|
|
123546
|
+
properties: {
|
|
123547
|
+
page: { type: "integer" },
|
|
123548
|
+
perPage: { type: "integer" },
|
|
123549
|
+
transcript: { type: "boolean" },
|
|
123550
|
+
aiSummary: { type: "boolean" },
|
|
123551
|
+
contacts: { type: "boolean" }
|
|
123552
|
+
},
|
|
123553
|
+
required: ["page", "perPage"]
|
|
123554
|
+
},
|
|
123555
|
+
request: {
|
|
123556
|
+
method: "POST",
|
|
123557
|
+
path: "/v1/calls/exports",
|
|
123558
|
+
body: {
|
|
123559
|
+
pagination: { page: "{page}", perPage: "{perPage}" },
|
|
123560
|
+
relations: {
|
|
123561
|
+
transcript: "{transcript}",
|
|
123562
|
+
aiSummary: "{aiSummary}",
|
|
123563
|
+
contacts: "{contacts}"
|
|
123564
|
+
}
|
|
123565
|
+
}
|
|
123566
|
+
}
|
|
123567
|
+
},
|
|
123568
|
+
{
|
|
123569
|
+
name: "users.list",
|
|
123570
|
+
class: "read",
|
|
123571
|
+
description: "Retrieve a paginated list of users in the Modjo workspace.",
|
|
123572
|
+
parameters: {
|
|
123573
|
+
type: "object",
|
|
123574
|
+
properties: { page: { type: "integer" }, perPage: { type: "integer" } },
|
|
123575
|
+
required: ["page", "perPage"]
|
|
123576
|
+
},
|
|
123577
|
+
request: {
|
|
123578
|
+
method: "GET",
|
|
123579
|
+
path: "/v1/users",
|
|
123580
|
+
query: { page: "{page}", perPage: "{perPage}" }
|
|
123581
|
+
}
|
|
123582
|
+
},
|
|
123583
|
+
{
|
|
123584
|
+
name: "teams.list",
|
|
123585
|
+
class: "read",
|
|
123586
|
+
description: "Retrieve a paginated list of teams in the Modjo workspace.",
|
|
123587
|
+
parameters: {
|
|
123588
|
+
type: "object",
|
|
123589
|
+
properties: { page: { type: "integer" }, perPage: { type: "integer" } },
|
|
123590
|
+
required: ["page", "perPage"]
|
|
123591
|
+
},
|
|
123592
|
+
request: {
|
|
123593
|
+
method: "GET",
|
|
123594
|
+
path: "/v1/teams",
|
|
123595
|
+
query: { page: "{page}", perPage: "{perPage}" }
|
|
123596
|
+
}
|
|
123597
|
+
}
|
|
123598
|
+
]
|
|
123599
|
+
});
|
|
123600
|
+
|
|
123601
|
+
// src/connectors/adapters/factors-ai.ts
|
|
123602
|
+
var factorsAiConnector = declarativeRestConnector({
|
|
123603
|
+
kind: "factors-ai",
|
|
123604
|
+
displayName: "Factors.ai",
|
|
123605
|
+
description: "B2B account intelligence and ABM platform. Retrieve the engagement journey (activity timeline) for a target account by domain.",
|
|
123606
|
+
auth: {
|
|
123607
|
+
kind: "api-key",
|
|
123608
|
+
hint: "Generate a private API token for the target project in Factors.ai. Sent as the Authorization: Bearer header."
|
|
123609
|
+
},
|
|
123610
|
+
category: "sales-intelligence",
|
|
123611
|
+
defaultConsistencyModel: "authoritative",
|
|
123612
|
+
baseUrl: "https://api.factors.ai/open/v1",
|
|
123613
|
+
credentialPlacement: { kind: "bearer" },
|
|
123614
|
+
defaultHeaders: { accept: "application/json" },
|
|
123615
|
+
test: { method: "GET", path: "/account/factors.ai/journey" },
|
|
123616
|
+
capabilities: [
|
|
123617
|
+
{
|
|
123618
|
+
name: "account.journey",
|
|
123619
|
+
class: "read",
|
|
123620
|
+
description: "Get the account journey (chronological engagement events) for a given account domain, optionally filtered by date range, event name, or user.",
|
|
123621
|
+
parameters: {
|
|
123622
|
+
type: "object",
|
|
123623
|
+
properties: {
|
|
123624
|
+
account_domain: { type: "string" },
|
|
123625
|
+
from: { type: "string" },
|
|
123626
|
+
to: { type: "string" },
|
|
123627
|
+
event_name: { type: "string" },
|
|
123628
|
+
user_name: { type: "string" }
|
|
123629
|
+
},
|
|
123630
|
+
required: ["account_domain"]
|
|
123631
|
+
},
|
|
123632
|
+
request: {
|
|
123633
|
+
method: "GET",
|
|
123634
|
+
path: "/account/{account_domain}/journey",
|
|
123635
|
+
query: {
|
|
123636
|
+
from: "{from}",
|
|
123637
|
+
to: "{to}",
|
|
123638
|
+
event_name: "{event_name}",
|
|
123639
|
+
user_name: "{user_name}"
|
|
123640
|
+
}
|
|
123641
|
+
}
|
|
123642
|
+
}
|
|
123643
|
+
]
|
|
123644
|
+
});
|
|
123645
|
+
|
|
123646
|
+
// src/connectors/adapters/getresponse.ts
|
|
123647
|
+
var getresponseConnector = declarativeRestConnector({
|
|
123648
|
+
kind: "getresponse",
|
|
123649
|
+
displayName: "GetResponse",
|
|
123650
|
+
description: "Email marketing platform for managing contacts, lists (campaigns), and sending newsletters.",
|
|
123651
|
+
auth: {
|
|
123652
|
+
kind: "api-key",
|
|
123653
|
+
hint: "Generate an API key at app.getresponse.com/api. Sent as the X-Auth-Token header with the 'api-key ' prefix (X-Auth-Token: api-key <KEY>)."
|
|
123654
|
+
},
|
|
123655
|
+
category: "crm",
|
|
123656
|
+
defaultConsistencyModel: "authoritative",
|
|
123657
|
+
baseUrl: "https://api.getresponse.com/v3",
|
|
123658
|
+
credentialPlacement: { kind: "header", header: "X-Auth-Token", prefix: "api-key " },
|
|
123659
|
+
defaultHeaders: { "content-type": "application/json" },
|
|
123660
|
+
test: { method: "GET", path: "/accounts" },
|
|
123661
|
+
capabilities: [
|
|
123662
|
+
{
|
|
123663
|
+
name: "contacts.list",
|
|
123664
|
+
class: "read",
|
|
123665
|
+
description: "List or search contacts, optionally filtered by email or campaign (list).",
|
|
123666
|
+
parameters: {
|
|
123667
|
+
type: "object",
|
|
123668
|
+
properties: {
|
|
123669
|
+
email: { type: "string" },
|
|
123670
|
+
campaignId: { type: "string" },
|
|
123671
|
+
page: { type: "integer" },
|
|
123672
|
+
perPage: { type: "integer" }
|
|
123673
|
+
},
|
|
123674
|
+
required: []
|
|
123675
|
+
},
|
|
123676
|
+
request: {
|
|
123677
|
+
method: "GET",
|
|
123678
|
+
path: "/contacts",
|
|
123679
|
+
query: {
|
|
123680
|
+
"query[email]": "{email}",
|
|
123681
|
+
"query[campaignId]": "{campaignId}",
|
|
123682
|
+
page: "{page}",
|
|
123683
|
+
perPage: "{perPage}"
|
|
123684
|
+
}
|
|
123685
|
+
}
|
|
123686
|
+
},
|
|
123687
|
+
{
|
|
123688
|
+
name: "campaigns.list",
|
|
123689
|
+
class: "read",
|
|
123690
|
+
description: "List campaigns (contact lists). The campaignId returned here is used when adding contacts or sending newsletters.",
|
|
123691
|
+
parameters: {
|
|
123692
|
+
type: "object",
|
|
123693
|
+
properties: {
|
|
123694
|
+
name: { type: "string" },
|
|
123695
|
+
page: { type: "integer" },
|
|
123696
|
+
perPage: { type: "integer" }
|
|
123697
|
+
},
|
|
123698
|
+
required: []
|
|
123699
|
+
},
|
|
123700
|
+
request: {
|
|
123701
|
+
method: "GET",
|
|
123702
|
+
path: "/campaigns",
|
|
123703
|
+
query: { "query[name]": "{name}", page: "{page}", perPage: "{perPage}" }
|
|
123704
|
+
}
|
|
123705
|
+
},
|
|
123706
|
+
{
|
|
123707
|
+
name: "contacts.create",
|
|
123708
|
+
class: "mutation",
|
|
123709
|
+
description: "Add (import) a contact to a campaign (list). Only email and campaign id are required.",
|
|
123710
|
+
parameters: {
|
|
123711
|
+
type: "object",
|
|
123712
|
+
properties: {
|
|
123713
|
+
email: { type: "string" },
|
|
123714
|
+
campaign_id: { type: "string" },
|
|
123715
|
+
name: { type: "string" },
|
|
123716
|
+
dayOfCycle: { type: "integer" }
|
|
123717
|
+
},
|
|
123718
|
+
required: ["email", "campaign_id"]
|
|
123719
|
+
},
|
|
123720
|
+
request: {
|
|
123721
|
+
method: "POST",
|
|
123722
|
+
path: "/contacts",
|
|
123723
|
+
body: {
|
|
123724
|
+
email: "{email}",
|
|
123725
|
+
name: "{name}",
|
|
123726
|
+
dayOfCycle: "{dayOfCycle}",
|
|
123727
|
+
campaign: { campaignId: "{campaign_id}" }
|
|
123728
|
+
}
|
|
123729
|
+
},
|
|
123730
|
+
cas: "native-idempotency",
|
|
123731
|
+
externalEffect: true
|
|
123732
|
+
},
|
|
123733
|
+
{
|
|
123734
|
+
name: "newsletters.create",
|
|
123735
|
+
class: "mutation",
|
|
123736
|
+
description: "Create and send a newsletter (broadcast email) to a campaign. Requires subject, fromFieldId, HTML content, and a target campaign.",
|
|
123737
|
+
parameters: {
|
|
123738
|
+
type: "object",
|
|
123739
|
+
properties: {
|
|
123740
|
+
subject: { type: "string" },
|
|
123741
|
+
fromFieldId: { type: "string" },
|
|
123742
|
+
html: { type: "string" },
|
|
123743
|
+
campaign_id: { type: "string" },
|
|
123744
|
+
name: { type: "string" }
|
|
123745
|
+
},
|
|
123746
|
+
required: ["subject", "fromFieldId", "html", "campaign_id"]
|
|
123747
|
+
},
|
|
123748
|
+
request: {
|
|
123749
|
+
method: "POST",
|
|
123750
|
+
path: "/newsletters",
|
|
123751
|
+
body: {
|
|
123752
|
+
name: "{name}",
|
|
123753
|
+
subject: "{subject}",
|
|
123754
|
+
fromField: { fromFieldId: "{fromFieldId}" },
|
|
123755
|
+
content: { html: "{html}" },
|
|
123756
|
+
campaign: { campaignId: "{campaign_id}" },
|
|
123757
|
+
sendSettings: { selectedCampaigns: ["{campaign_id}"] }
|
|
123758
|
+
}
|
|
123759
|
+
},
|
|
123760
|
+
cas: "native-idempotency",
|
|
123761
|
+
externalEffect: true
|
|
123762
|
+
}
|
|
123763
|
+
]
|
|
123764
|
+
});
|
|
123765
|
+
|
|
123766
|
+
// src/connectors/adapters/outreach.ts
|
|
123767
|
+
var outreachConnector = declarativeRestConnector({
|
|
123768
|
+
kind: "outreach",
|
|
123769
|
+
displayName: "Outreach",
|
|
123770
|
+
description: "Manage Outreach prospects, accounts, and opportunities, and enroll prospects into sequences, through the JSON:API v2 REST API.",
|
|
123771
|
+
auth: {
|
|
123772
|
+
kind: "oauth2",
|
|
123773
|
+
authorizationUrl: "https://api.outreach.io/oauth/authorize",
|
|
123774
|
+
tokenUrl: "https://api.outreach.io/oauth/token",
|
|
123775
|
+
scopes: [
|
|
123776
|
+
"prospects.read",
|
|
123777
|
+
"prospects.write",
|
|
123778
|
+
"accounts.read",
|
|
123779
|
+
"accounts.write",
|
|
123780
|
+
"opportunities.read",
|
|
123781
|
+
"sequences.read",
|
|
123782
|
+
"sequenceStates.read",
|
|
123783
|
+
"sequenceStates.write",
|
|
123784
|
+
"users.read"
|
|
123785
|
+
],
|
|
123786
|
+
clientIdEnv: "OUTREACH_OAUTH_CLIENT_ID",
|
|
123787
|
+
clientSecretEnv: "OUTREACH_OAUTH_CLIENT_SECRET"
|
|
123788
|
+
},
|
|
123789
|
+
category: "crm",
|
|
123790
|
+
defaultConsistencyModel: "authoritative",
|
|
123791
|
+
baseUrl: "https://api.outreach.io/api/v2",
|
|
123792
|
+
// Outreach is JSON:API — both the request and response media type is
|
|
123793
|
+
// application/vnd.api+json. The declarative runtime only forces a body
|
|
123794
|
+
// content-type when one isn't already present, so pinning it here makes
|
|
123795
|
+
// every write carry the JSON:API media type.
|
|
123796
|
+
defaultHeaders: {
|
|
123797
|
+
accept: "application/vnd.api+json",
|
|
123798
|
+
"content-type": "application/vnd.api+json"
|
|
123799
|
+
},
|
|
123800
|
+
test: { method: "GET", path: "/users", query: { "page[size]": "1" } },
|
|
123801
|
+
capabilities: [
|
|
123802
|
+
{
|
|
123803
|
+
name: "prospects.list",
|
|
123804
|
+
class: "read",
|
|
123805
|
+
description: "List or search prospects (contacts). Filter by email, paginate with pageSize/pageAfter, sort, and sideload related resources via include.",
|
|
123806
|
+
parameters: {
|
|
123807
|
+
type: "object",
|
|
123808
|
+
properties: {
|
|
123809
|
+
email: { type: "string", description: "Filter prospects by email address (filter[emails][email])." },
|
|
123810
|
+
pageSize: { type: "number", description: "Results per page (default 50, max 1000)." },
|
|
123811
|
+
pageAfter: { type: "string", description: "Cursor for the next page (cursor-based pagination)." },
|
|
123812
|
+
sort: { type: "string", description: "Attribute to sort by; prefix with - for descending (e.g. -createdAt)." },
|
|
123813
|
+
include: { type: "string", description: "Comma-separated related resources to sideload (e.g. account,owner)." }
|
|
123814
|
+
}
|
|
123815
|
+
},
|
|
123816
|
+
request: {
|
|
123817
|
+
method: "GET",
|
|
123818
|
+
path: "/prospects",
|
|
123819
|
+
query: {
|
|
123820
|
+
"filter[emails][email]": "{email}",
|
|
123821
|
+
"page[size]": "{pageSize}",
|
|
123822
|
+
"page[after]": "{pageAfter}",
|
|
123823
|
+
sort: "{sort}",
|
|
123824
|
+
include: "{include}"
|
|
123825
|
+
}
|
|
123826
|
+
},
|
|
123827
|
+
requiredScopes: ["prospects.read"]
|
|
123828
|
+
},
|
|
123829
|
+
{
|
|
123830
|
+
name: "prospects.create",
|
|
123831
|
+
class: "mutation",
|
|
123832
|
+
description: 'Create a prospect. Pass JSON:API `attributes` (e.g. { firstName, lastName, emails: [{ email, emailType: "work" }], title }) and an optional `relationships` object (e.g. { account: { data: { type: "account", id: 123 } } }).',
|
|
123833
|
+
parameters: {
|
|
123834
|
+
type: "object",
|
|
123835
|
+
properties: {
|
|
123836
|
+
attributes: {
|
|
123837
|
+
type: "object",
|
|
123838
|
+
description: "JSON:API attributes for the prospect resource.",
|
|
123839
|
+
additionalProperties: true
|
|
123840
|
+
},
|
|
123841
|
+
relationships: {
|
|
123842
|
+
type: "object",
|
|
123843
|
+
description: "Optional JSON:API relationships object linking the prospect to an account, owner, etc.",
|
|
123844
|
+
additionalProperties: true
|
|
123845
|
+
}
|
|
123846
|
+
},
|
|
123847
|
+
required: ["attributes"]
|
|
123848
|
+
},
|
|
123849
|
+
request: {
|
|
123850
|
+
method: "POST",
|
|
123851
|
+
path: "/prospects",
|
|
123852
|
+
body: { data: { type: "prospect", attributes: "{attributes}", relationships: "{relationships}" } }
|
|
123853
|
+
},
|
|
123854
|
+
cas: "native-idempotency",
|
|
123855
|
+
externalEffect: true,
|
|
123856
|
+
requiredScopes: ["prospects.write"]
|
|
123857
|
+
},
|
|
123858
|
+
{
|
|
123859
|
+
name: "prospects.update",
|
|
123860
|
+
class: "mutation",
|
|
123861
|
+
description: "Update a prospect by id. Pass the numeric id and a JSON:API `attributes` object; only provided fields change.",
|
|
123862
|
+
parameters: {
|
|
123863
|
+
type: "object",
|
|
123864
|
+
properties: {
|
|
123865
|
+
id: { type: "number", description: "Numeric prospect id." },
|
|
123866
|
+
attributes: { type: "object", description: "JSON:API attributes to update.", additionalProperties: true },
|
|
123867
|
+
relationships: { type: "object", description: "Optional JSON:API relationships to update.", additionalProperties: true }
|
|
123868
|
+
},
|
|
123869
|
+
required: ["id", "attributes"]
|
|
123870
|
+
},
|
|
123871
|
+
request: {
|
|
123872
|
+
method: "PATCH",
|
|
123873
|
+
path: "/prospects/{id}",
|
|
123874
|
+
body: { data: { type: "prospect", id: "{id}", attributes: "{attributes}", relationships: "{relationships}" } }
|
|
123875
|
+
},
|
|
123876
|
+
cas: "native-idempotency",
|
|
123877
|
+
externalEffect: true,
|
|
123878
|
+
requiredScopes: ["prospects.write"]
|
|
123879
|
+
},
|
|
123880
|
+
{
|
|
123881
|
+
name: "sequenceStates.create",
|
|
123882
|
+
class: "mutation",
|
|
123883
|
+
description: "Enroll a prospect into a sequence (start a sequence state). Provide the numeric prospectId and sequenceId.",
|
|
123884
|
+
parameters: {
|
|
123885
|
+
type: "object",
|
|
123886
|
+
properties: {
|
|
123887
|
+
prospectId: { type: "number", description: "Numeric prospect id to enroll." },
|
|
123888
|
+
sequenceId: { type: "number", description: "Numeric sequence id to enroll the prospect into." }
|
|
123889
|
+
},
|
|
123890
|
+
required: ["prospectId", "sequenceId"]
|
|
123891
|
+
},
|
|
123892
|
+
request: {
|
|
123893
|
+
method: "POST",
|
|
123894
|
+
path: "/sequenceStates",
|
|
123895
|
+
body: {
|
|
123896
|
+
data: {
|
|
123897
|
+
type: "sequenceState",
|
|
123898
|
+
relationships: {
|
|
123899
|
+
prospect: { data: { type: "prospect", id: "{prospectId}" } },
|
|
123900
|
+
sequence: { data: { type: "sequence", id: "{sequenceId}" } }
|
|
123901
|
+
}
|
|
123902
|
+
}
|
|
123903
|
+
}
|
|
123904
|
+
},
|
|
123905
|
+
cas: "native-idempotency",
|
|
123906
|
+
externalEffect: true,
|
|
123907
|
+
requiredScopes: ["sequenceStates.write"]
|
|
123908
|
+
},
|
|
123909
|
+
{
|
|
123910
|
+
name: "opportunities.list",
|
|
123911
|
+
class: "read",
|
|
123912
|
+
description: "List opportunities, optionally filtered by account id; paginate and sideload via include.",
|
|
123913
|
+
parameters: {
|
|
123914
|
+
type: "object",
|
|
123915
|
+
properties: {
|
|
123916
|
+
accountId: { type: "number", description: "Filter opportunities by associated account id (filter[account][id])." },
|
|
123917
|
+
pageSize: { type: "number", description: "Results per page." },
|
|
123918
|
+
pageAfter: { type: "string", description: "Cursor for the next page." },
|
|
123919
|
+
include: { type: "string", description: "Comma-separated related resources to sideload (e.g. account,prospects)." }
|
|
123920
|
+
}
|
|
123921
|
+
},
|
|
123922
|
+
request: {
|
|
123923
|
+
method: "GET",
|
|
123924
|
+
path: "/opportunities",
|
|
123925
|
+
query: {
|
|
123926
|
+
"filter[account][id]": "{accountId}",
|
|
123927
|
+
"page[size]": "{pageSize}",
|
|
123928
|
+
"page[after]": "{pageAfter}",
|
|
123929
|
+
include: "{include}"
|
|
123930
|
+
}
|
|
123931
|
+
},
|
|
123932
|
+
requiredScopes: ["opportunities.read"]
|
|
123933
|
+
},
|
|
123934
|
+
{
|
|
123935
|
+
name: "accounts.create",
|
|
123936
|
+
class: "mutation",
|
|
123937
|
+
description: "Create an account (company). Pass JSON:API `attributes` (name is required; domain and industry optional).",
|
|
123938
|
+
parameters: {
|
|
123939
|
+
type: "object",
|
|
123940
|
+
properties: {
|
|
123941
|
+
attributes: {
|
|
123942
|
+
type: "object",
|
|
123943
|
+
description: "JSON:API attributes for the account resource, e.g. { name, domain, industry }.",
|
|
123944
|
+
additionalProperties: true
|
|
123945
|
+
}
|
|
123946
|
+
},
|
|
123947
|
+
required: ["attributes"]
|
|
123948
|
+
},
|
|
123949
|
+
request: {
|
|
123950
|
+
method: "POST",
|
|
123951
|
+
path: "/accounts",
|
|
123952
|
+
body: { data: { type: "account", attributes: "{attributes}" } }
|
|
123953
|
+
},
|
|
123954
|
+
cas: "native-idempotency",
|
|
123955
|
+
externalEffect: true,
|
|
123956
|
+
requiredScopes: ["accounts.write"]
|
|
123957
|
+
}
|
|
123958
|
+
]
|
|
123959
|
+
});
|
|
123960
|
+
|
|
123961
|
+
// src/connectors/adapters/salesloft.ts
|
|
123962
|
+
var salesloftConnector = declarativeRestConnector({
|
|
123963
|
+
kind: "salesloft",
|
|
123964
|
+
displayName: "Salesloft",
|
|
123965
|
+
description: "Manage Salesloft people and accounts and enroll people into cadences through the REST API v2.",
|
|
123966
|
+
auth: {
|
|
123967
|
+
kind: "oauth2",
|
|
123968
|
+
authorizationUrl: "https://accounts.salesloft.com/oauth/authorize",
|
|
123969
|
+
tokenUrl: "https://accounts.salesloft.com/oauth/token",
|
|
123970
|
+
scopes: [],
|
|
123971
|
+
clientIdEnv: "SALESLOFT_OAUTH_CLIENT_ID",
|
|
123972
|
+
clientSecretEnv: "SALESLOFT_OAUTH_CLIENT_SECRET"
|
|
123973
|
+
},
|
|
123974
|
+
category: "crm",
|
|
123975
|
+
defaultConsistencyModel: "authoritative",
|
|
123976
|
+
baseUrl: "https://api.salesloft.com/v2",
|
|
123977
|
+
test: { method: "GET", path: "/me" },
|
|
123978
|
+
capabilities: [
|
|
123979
|
+
{
|
|
123980
|
+
name: "me.get",
|
|
123981
|
+
class: "read",
|
|
123982
|
+
description: "Return the authenticated user and team \u2014 the cheapest grant-validity probe.",
|
|
123983
|
+
parameters: { type: "object", properties: {} },
|
|
123984
|
+
request: { method: "GET", path: "/me" }
|
|
123985
|
+
},
|
|
123986
|
+
{
|
|
123987
|
+
name: "people.list",
|
|
123988
|
+
class: "read",
|
|
123989
|
+
description: "List people (contacts). Paginate with page/per_page.",
|
|
123990
|
+
parameters: {
|
|
123991
|
+
type: "object",
|
|
123992
|
+
properties: {
|
|
123993
|
+
page: { type: "number", description: "Page number (1-based)." },
|
|
123994
|
+
per_page: { type: "number", description: "Records per page (max 100)." }
|
|
123995
|
+
}
|
|
123996
|
+
},
|
|
123997
|
+
request: { method: "GET", path: "/people", query: { page: "{page}", per_page: "{per_page}" } }
|
|
123998
|
+
},
|
|
123999
|
+
{
|
|
124000
|
+
name: "people.create",
|
|
124001
|
+
class: "mutation",
|
|
124002
|
+
description: "Create a person. Provide email_address, OR phone paired with last_name. first_name/last_name optional otherwise.",
|
|
124003
|
+
parameters: {
|
|
124004
|
+
type: "object",
|
|
124005
|
+
properties: {
|
|
124006
|
+
email_address: { type: "string", description: "Email address; required unless phone+last_name are provided." },
|
|
124007
|
+
first_name: { type: "string", description: "Person's first name." },
|
|
124008
|
+
last_name: { type: "string", description: "Person's last name; required when phone is provided instead of email_address." },
|
|
124009
|
+
phone: { type: "string", description: "Phone number; required (with last_name) when email_address is absent." }
|
|
124010
|
+
}
|
|
124011
|
+
},
|
|
124012
|
+
request: { method: "POST", path: "/people", body: "args" },
|
|
124013
|
+
cas: "native-idempotency",
|
|
124014
|
+
externalEffect: true
|
|
124015
|
+
},
|
|
124016
|
+
{
|
|
124017
|
+
name: "accounts.create",
|
|
124018
|
+
class: "mutation",
|
|
124019
|
+
description: "Create an account (company). name is required; domain must be unique on the team.",
|
|
124020
|
+
parameters: {
|
|
124021
|
+
type: "object",
|
|
124022
|
+
properties: {
|
|
124023
|
+
name: { type: "string", description: "Account/company name." },
|
|
124024
|
+
domain: { type: "string", description: "Website domain; must be unique on the team." }
|
|
124025
|
+
},
|
|
124026
|
+
required: ["name"]
|
|
124027
|
+
},
|
|
124028
|
+
request: { method: "POST", path: "/accounts", body: "args" },
|
|
124029
|
+
cas: "native-idempotency",
|
|
124030
|
+
externalEffect: true
|
|
124031
|
+
},
|
|
124032
|
+
{
|
|
124033
|
+
name: "cadences.list",
|
|
124034
|
+
class: "read",
|
|
124035
|
+
description: "List cadences. Paginate with page/per_page.",
|
|
124036
|
+
parameters: {
|
|
124037
|
+
type: "object",
|
|
124038
|
+
properties: {
|
|
124039
|
+
page: { type: "number", description: "Page number (1-based)." },
|
|
124040
|
+
per_page: { type: "number", description: "Records per page (max 100)." }
|
|
124041
|
+
}
|
|
124042
|
+
},
|
|
124043
|
+
request: { method: "GET", path: "/cadences", query: { page: "{page}", per_page: "{per_page}" } }
|
|
124044
|
+
},
|
|
124045
|
+
{
|
|
124046
|
+
name: "cadence_memberships.create",
|
|
124047
|
+
class: "mutation",
|
|
124048
|
+
description: "Add a person to a cadence. Provide person_id and cadence_id; user_id defaults to the authenticated user.",
|
|
124049
|
+
parameters: {
|
|
124050
|
+
type: "object",
|
|
124051
|
+
properties: {
|
|
124052
|
+
person_id: { type: "number", description: "Id of the person to enroll (must be visible to the authenticated user)." },
|
|
124053
|
+
cadence_id: { type: "number", description: "Id of the cadence to enroll the person into." },
|
|
124054
|
+
user_id: { type: "number", description: "Owner of the membership; defaults to the authenticated user." }
|
|
124055
|
+
},
|
|
124056
|
+
required: ["person_id", "cadence_id"]
|
|
124057
|
+
},
|
|
124058
|
+
request: { method: "POST", path: "/cadence_memberships", body: "args" },
|
|
124059
|
+
cas: "native-idempotency",
|
|
124060
|
+
externalEffect: true
|
|
124061
|
+
}
|
|
124062
|
+
]
|
|
124063
|
+
});
|
|
124064
|
+
|
|
124065
|
+
// src/connectors/adapters/gong.ts
|
|
124066
|
+
var gongConnector = declarativeRestConnector({
|
|
124067
|
+
kind: "gong",
|
|
124068
|
+
displayName: "Gong",
|
|
124069
|
+
description: "Read Gong calls, transcripts, and users, ingest external calls, and assign prospects to Engage flows through the v2 API.",
|
|
124070
|
+
auth: {
|
|
124071
|
+
kind: "oauth2",
|
|
124072
|
+
authorizationUrl: "https://app.gong.io/oauth2/authorize",
|
|
124073
|
+
tokenUrl: "https://app.gong.io/oauth2/generate-customer-token",
|
|
124074
|
+
scopes: [
|
|
124075
|
+
"api:calls:read:basic",
|
|
124076
|
+
"api:calls:read:extensive",
|
|
124077
|
+
"api:calls:read:transcript",
|
|
124078
|
+
"api:calls:create",
|
|
124079
|
+
"api:users:read",
|
|
124080
|
+
"api:flows:write"
|
|
124081
|
+
],
|
|
124082
|
+
clientIdEnv: "GONG_OAUTH_CLIENT_ID",
|
|
124083
|
+
clientSecretEnv: "GONG_OAUTH_CLIENT_SECRET"
|
|
124084
|
+
},
|
|
124085
|
+
category: "comms",
|
|
124086
|
+
defaultConsistencyModel: "authoritative",
|
|
124087
|
+
baseUrl: { metadataKey: "apiBaseUrlForCustomer" },
|
|
124088
|
+
test: { method: "GET", path: "/v2/users" },
|
|
124089
|
+
capabilities: [
|
|
124090
|
+
{
|
|
124091
|
+
name: "calls.list",
|
|
124092
|
+
class: "read",
|
|
124093
|
+
description: "List calls in a time window. fromDateTime is required (ISO-8601); paginate with cursor.",
|
|
124094
|
+
parameters: {
|
|
124095
|
+
type: "object",
|
|
124096
|
+
properties: {
|
|
124097
|
+
fromDateTime: { type: "string", description: "ISO-8601 start datetime for calls to retrieve." },
|
|
124098
|
+
toDateTime: { type: "string", description: "ISO-8601 end datetime for calls to retrieve." },
|
|
124099
|
+
workspaceId: { type: "string", description: "Filter calls by a specific workspace id." },
|
|
124100
|
+
cursor: { type: "string", description: "Pagination cursor from a previous response." }
|
|
124101
|
+
},
|
|
124102
|
+
required: ["fromDateTime"]
|
|
124103
|
+
},
|
|
124104
|
+
request: {
|
|
124105
|
+
method: "GET",
|
|
124106
|
+
path: "/v2/calls",
|
|
124107
|
+
query: { fromDateTime: "{fromDateTime}", toDateTime: "{toDateTime}", workspaceId: "{workspaceId}", cursor: "{cursor}" }
|
|
124108
|
+
},
|
|
124109
|
+
requiredScopes: ["api:calls:read:basic"]
|
|
124110
|
+
},
|
|
124111
|
+
{
|
|
124112
|
+
name: "calls.getTranscripts",
|
|
124113
|
+
class: "read",
|
|
124114
|
+
description: "Retrieve call transcripts. Pass a `filter` object (fromDateTime/toDateTime and/or callIds); paginate with cursor.",
|
|
124115
|
+
parameters: {
|
|
124116
|
+
type: "object",
|
|
124117
|
+
properties: {
|
|
124118
|
+
filter: {
|
|
124119
|
+
type: "object",
|
|
124120
|
+
description: 'Filter object, e.g. { fromDateTime, toDateTime, callIds: ["..."] }.',
|
|
124121
|
+
additionalProperties: true
|
|
124122
|
+
},
|
|
124123
|
+
cursor: { type: "string", description: "Pagination cursor for the next page." }
|
|
124124
|
+
},
|
|
124125
|
+
required: ["filter"]
|
|
124126
|
+
},
|
|
124127
|
+
request: { method: "POST", path: "/v2/calls/transcript", body: { filter: "{filter}", cursor: "{cursor}" } },
|
|
124128
|
+
requiredScopes: ["api:calls:read:transcript"]
|
|
124129
|
+
},
|
|
124130
|
+
{
|
|
124131
|
+
name: "calls.getExtensive",
|
|
124132
|
+
class: "read",
|
|
124133
|
+
description: "Retrieve extensive call data. Pass a `filter` object and an optional `contentSelector` controlling which enrichment fields/context to include.",
|
|
124134
|
+
parameters: {
|
|
124135
|
+
type: "object",
|
|
124136
|
+
properties: {
|
|
124137
|
+
filter: {
|
|
124138
|
+
type: "object",
|
|
124139
|
+
description: "Filter object: fromDateTime, toDateTime, callIds, primaryUserIds, or workspaceId.",
|
|
124140
|
+
additionalProperties: true
|
|
124141
|
+
},
|
|
124142
|
+
contentSelector: {
|
|
124143
|
+
type: "object",
|
|
124144
|
+
description: "Controls included enrichment data (exposedFields, context objects).",
|
|
124145
|
+
additionalProperties: true
|
|
124146
|
+
},
|
|
124147
|
+
cursor: { type: "string", description: "Pagination cursor from a prior response." }
|
|
124148
|
+
},
|
|
124149
|
+
required: ["filter"]
|
|
124150
|
+
},
|
|
124151
|
+
request: {
|
|
124152
|
+
method: "POST",
|
|
124153
|
+
path: "/v2/calls/extensive",
|
|
124154
|
+
body: { filter: "{filter}", contentSelector: "{contentSelector}", cursor: "{cursor}" }
|
|
124155
|
+
},
|
|
124156
|
+
requiredScopes: ["api:calls:read:extensive"]
|
|
124157
|
+
},
|
|
124158
|
+
{
|
|
124159
|
+
name: "users.list",
|
|
124160
|
+
class: "read",
|
|
124161
|
+
description: "List Gong users (max 100 per page). Paginate with cursor.",
|
|
124162
|
+
parameters: {
|
|
124163
|
+
type: "object",
|
|
124164
|
+
properties: {
|
|
124165
|
+
cursor: { type: "string", description: "Pagination cursor; omit for the first page." },
|
|
124166
|
+
includeAvatars: { type: "boolean", description: "Include avatar image URLs in the response (default false)." }
|
|
124167
|
+
}
|
|
124168
|
+
},
|
|
124169
|
+
request: { method: "GET", path: "/v2/users", query: { cursor: "{cursor}", includeAvatars: "{includeAvatars}" } },
|
|
124170
|
+
requiredScopes: ["api:users:read"]
|
|
124171
|
+
},
|
|
124172
|
+
{
|
|
124173
|
+
name: "calls.create",
|
|
124174
|
+
class: "mutation",
|
|
124175
|
+
description: "Ingest an external call into Gong. Required: clientUniqueId, actualStart (ISO-8601), direction (Inbound/Outbound/Conference/Unknown), parties (array of participant objects).",
|
|
124176
|
+
parameters: {
|
|
124177
|
+
type: "object",
|
|
124178
|
+
properties: {
|
|
124179
|
+
clientUniqueId: { type: "string", description: "Unique identifier for the call in the source system." },
|
|
124180
|
+
actualStart: { type: "string", description: "ISO-8601 datetime when the call started." },
|
|
124181
|
+
direction: { type: "string", enum: ["Inbound", "Outbound", "Conference", "Unknown"], description: "Call direction." },
|
|
124182
|
+
title: { type: "string", description: "Title or subject of the call." },
|
|
124183
|
+
parties: {
|
|
124184
|
+
type: "array",
|
|
124185
|
+
description: "Participant objects with emailAddress, name, phoneNumber, speakerId.",
|
|
124186
|
+
items: { type: "object", additionalProperties: true }
|
|
124187
|
+
},
|
|
124188
|
+
mediaChannels: { type: "object", description: "Media channel configuration.", additionalProperties: true },
|
|
124189
|
+
workspaceId: { type: "string", description: "Workspace to associate the call with." }
|
|
124190
|
+
},
|
|
124191
|
+
required: ["clientUniqueId", "actualStart", "direction", "parties"]
|
|
124192
|
+
},
|
|
124193
|
+
request: { method: "POST", path: "/v2/calls", body: "args" },
|
|
124194
|
+
cas: "native-idempotency",
|
|
124195
|
+
externalEffect: true,
|
|
124196
|
+
requiredScopes: ["api:calls:create"]
|
|
124197
|
+
},
|
|
124198
|
+
{
|
|
124199
|
+
name: "flows.assignProspects",
|
|
124200
|
+
class: "mutation",
|
|
124201
|
+
description: "Assign prospects to a Gong Engage flow. Provide flowId and a prospects array (up to 100).",
|
|
124202
|
+
parameters: {
|
|
124203
|
+
type: "object",
|
|
124204
|
+
properties: {
|
|
124205
|
+
flowId: { type: "string", description: "Id of the Engage flow to assign prospects to." },
|
|
124206
|
+
prospects: {
|
|
124207
|
+
type: "array",
|
|
124208
|
+
description: "Prospect objects (up to 100); each with crmProspectId and optional fields.",
|
|
124209
|
+
items: { type: "object", additionalProperties: true }
|
|
124210
|
+
},
|
|
124211
|
+
actionSource: { type: "string", description: "Identifier of the integration making the assignment." }
|
|
124212
|
+
},
|
|
124213
|
+
required: ["flowId", "prospects"]
|
|
124214
|
+
},
|
|
124215
|
+
request: {
|
|
124216
|
+
method: "POST",
|
|
124217
|
+
path: "/v2/flows/prospects/assign",
|
|
124218
|
+
body: { flowId: "{flowId}", prospects: "{prospects}", actionSource: "{actionSource}" }
|
|
124219
|
+
},
|
|
124220
|
+
cas: "native-idempotency",
|
|
124221
|
+
externalEffect: true,
|
|
124222
|
+
requiredScopes: ["api:flows:write"]
|
|
124223
|
+
}
|
|
124224
|
+
]
|
|
124225
|
+
});
|
|
124226
|
+
|
|
124227
|
+
// src/connectors/adapters/ringcentral.ts
|
|
124228
|
+
var ringcentralConnector = declarativeRestConnector({
|
|
124229
|
+
kind: "ringcentral",
|
|
124230
|
+
displayName: "RingCentral",
|
|
124231
|
+
description: "Read RingCentral extensions, call logs, and messages, send SMS, and create webhook subscriptions through the REST v1.0 API.",
|
|
124232
|
+
auth: {
|
|
124233
|
+
kind: "oauth2",
|
|
124234
|
+
authorizationUrl: "https://platform.ringcentral.com/restapi/oauth/authorize",
|
|
124235
|
+
tokenUrl: "https://platform.ringcentral.com/restapi/oauth/token",
|
|
124236
|
+
scopes: ["ReadAccounts", "ReadCallLog", "ReadMessages", "SMS", "ReadContacts", "SubscriptionWebhook"],
|
|
124237
|
+
clientIdEnv: "RINGCENTRAL_OAUTH_CLIENT_ID",
|
|
124238
|
+
clientSecretEnv: "RINGCENTRAL_OAUTH_CLIENT_SECRET"
|
|
124239
|
+
},
|
|
124240
|
+
category: "comms",
|
|
124241
|
+
defaultConsistencyModel: "authoritative",
|
|
124242
|
+
baseUrl: "https://platform.ringcentral.com/restapi/v1.0",
|
|
124243
|
+
test: { method: "GET", path: "/account/~/extension/~" },
|
|
124244
|
+
capabilities: [
|
|
124245
|
+
{
|
|
124246
|
+
name: "extension.get",
|
|
124247
|
+
class: "read",
|
|
124248
|
+
description: "Get the authenticated user's extension record.",
|
|
124249
|
+
parameters: { type: "object", properties: {} },
|
|
124250
|
+
request: { method: "GET", path: "/account/~/extension/~" }
|
|
124251
|
+
},
|
|
124252
|
+
{
|
|
124253
|
+
name: "extensions.list",
|
|
124254
|
+
class: "read",
|
|
124255
|
+
description: "List extensions on an account. Pass accountId or ~ for the authenticated account.",
|
|
124256
|
+
parameters: {
|
|
124257
|
+
type: "object",
|
|
124258
|
+
properties: {
|
|
124259
|
+
accountId: { type: "string", description: "Internal account id, or ~ for the authenticated account." },
|
|
124260
|
+
page: { type: "number", description: "Page number for pagination." },
|
|
124261
|
+
perPage: { type: "number", description: "Records per page." },
|
|
124262
|
+
status: { type: "string", description: "Filter by extension status (e.g. Enabled, Disabled)." }
|
|
124263
|
+
},
|
|
124264
|
+
required: ["accountId"]
|
|
124265
|
+
},
|
|
124266
|
+
request: {
|
|
124267
|
+
method: "GET",
|
|
124268
|
+
path: "/account/{accountId}/extension",
|
|
124269
|
+
query: { page: "{page}", perPage: "{perPage}", status: "{status}" }
|
|
124270
|
+
}
|
|
124271
|
+
},
|
|
124272
|
+
{
|
|
124273
|
+
name: "callLog.list",
|
|
124274
|
+
class: "read",
|
|
124275
|
+
description: "List the authenticated extension's call log. Use view=Detailed for full records.",
|
|
124276
|
+
parameters: {
|
|
124277
|
+
type: "object",
|
|
124278
|
+
properties: {
|
|
124279
|
+
dateFrom: { type: "string", description: "Start of range, ISO-8601 UTC." },
|
|
124280
|
+
dateTo: { type: "string", description: "End of range, ISO-8601 UTC." },
|
|
124281
|
+
view: { type: "string", description: "Set to 'Detailed' to fetch detailed call records." },
|
|
124282
|
+
perPage: { type: "number", description: "Records per page." }
|
|
124283
|
+
}
|
|
124284
|
+
},
|
|
124285
|
+
request: {
|
|
124286
|
+
method: "GET",
|
|
124287
|
+
path: "/account/~/extension/~/call-log",
|
|
124288
|
+
query: { dateFrom: "{dateFrom}", dateTo: "{dateTo}", view: "{view}", perPage: "{perPage}" }
|
|
124289
|
+
}
|
|
124290
|
+
},
|
|
124291
|
+
{
|
|
124292
|
+
name: "messages.list",
|
|
124293
|
+
class: "read",
|
|
124294
|
+
description: "List the authenticated extension's message store (SMS, Fax, VoiceMail).",
|
|
124295
|
+
parameters: {
|
|
124296
|
+
type: "object",
|
|
124297
|
+
properties: {
|
|
124298
|
+
messageType: { type: "string", description: "Filter by message type: SMS, Fax, or VoiceMail." },
|
|
124299
|
+
dateFrom: { type: "string", description: "Start of range, ISO-8601." },
|
|
124300
|
+
dateTo: { type: "string", description: "End of range, ISO-8601." },
|
|
124301
|
+
perPage: { type: "number", description: "Records per page (up to 1000)." },
|
|
124302
|
+
readStatus: { type: "string", description: "Filter by read status: Read or Unread." }
|
|
124303
|
+
}
|
|
124304
|
+
},
|
|
124305
|
+
request: {
|
|
124306
|
+
method: "GET",
|
|
124307
|
+
path: "/account/~/extension/~/message-store",
|
|
124308
|
+
query: {
|
|
124309
|
+
messageType: "{messageType}",
|
|
124310
|
+
dateFrom: "{dateFrom}",
|
|
124311
|
+
dateTo: "{dateTo}",
|
|
124312
|
+
perPage: "{perPage}",
|
|
124313
|
+
readStatus: "{readStatus}"
|
|
124314
|
+
}
|
|
124315
|
+
}
|
|
124316
|
+
},
|
|
124317
|
+
{
|
|
124318
|
+
name: "sms.send",
|
|
124319
|
+
class: "mutation",
|
|
124320
|
+
description: "Send an SMS from the authenticated extension. from = { phoneNumber }, to = [{ phoneNumber }] (up to 10), text = body.",
|
|
124321
|
+
parameters: {
|
|
124322
|
+
type: "object",
|
|
124323
|
+
properties: {
|
|
124324
|
+
from: { type: "object", description: "Sender: { phoneNumber } \u2014 must be a number assigned to the user.", additionalProperties: true },
|
|
124325
|
+
to: {
|
|
124326
|
+
type: "array",
|
|
124327
|
+
description: "Recipients: [{ phoneNumber }] \u2014 up to 10.",
|
|
124328
|
+
items: { type: "object", additionalProperties: true }
|
|
124329
|
+
},
|
|
124330
|
+
text: { type: "string", description: "SMS message text." }
|
|
124331
|
+
},
|
|
124332
|
+
required: ["from", "to", "text"]
|
|
124333
|
+
},
|
|
124334
|
+
request: { method: "POST", path: "/account/~/extension/~/sms", body: { from: "{from}", to: "{to}", text: "{text}" } },
|
|
124335
|
+
cas: "native-idempotency",
|
|
124336
|
+
externalEffect: true
|
|
124337
|
+
},
|
|
124338
|
+
{
|
|
124339
|
+
name: "subscriptions.create",
|
|
124340
|
+
class: "mutation",
|
|
124341
|
+
description: 'Create a webhook subscription. eventFilters = array of event URIs, deliveryMode = { transportType: "WebHook", address }.',
|
|
124342
|
+
parameters: {
|
|
124343
|
+
type: "object",
|
|
124344
|
+
properties: {
|
|
124345
|
+
eventFilters: {
|
|
124346
|
+
type: "array",
|
|
124347
|
+
description: "Event filter URI strings, e.g. /restapi/v1.0/account/~/extension/~/message-store.",
|
|
124348
|
+
items: { type: "string" }
|
|
124349
|
+
},
|
|
124350
|
+
deliveryMode: {
|
|
124351
|
+
type: "object",
|
|
124352
|
+
description: 'Delivery config: { transportType: "WebHook", address }.',
|
|
124353
|
+
additionalProperties: true
|
|
124354
|
+
},
|
|
124355
|
+
expiresIn: { type: "number", description: "Subscription lifetime in seconds." }
|
|
124356
|
+
},
|
|
124357
|
+
required: ["eventFilters", "deliveryMode"]
|
|
124358
|
+
},
|
|
124359
|
+
request: {
|
|
124360
|
+
method: "POST",
|
|
124361
|
+
path: "/subscription",
|
|
124362
|
+
body: { eventFilters: "{eventFilters}", deliveryMode: "{deliveryMode}", expiresIn: "{expiresIn}" }
|
|
124363
|
+
},
|
|
124364
|
+
cas: "native-idempotency",
|
|
124365
|
+
externalEffect: true
|
|
124366
|
+
}
|
|
124367
|
+
]
|
|
124368
|
+
});
|
|
124369
|
+
|
|
124370
|
+
// src/connectors/adapters/dialpad.ts
|
|
124371
|
+
var dialpadConnector = declarativeRestConnector({
|
|
124372
|
+
kind: "dialpad",
|
|
124373
|
+
displayName: "Dialpad",
|
|
124374
|
+
description: "Read Dialpad contacts, calls, and users, create contacts, and send SMS through the v2 API.",
|
|
124375
|
+
auth: {
|
|
124376
|
+
kind: "oauth2",
|
|
124377
|
+
authorizationUrl: "https://dialpad.com/oauth2/authorize",
|
|
124378
|
+
tokenUrl: "https://dialpad.com/oauth2/token",
|
|
124379
|
+
scopes: ["calls:list", "offline_access"],
|
|
124380
|
+
clientIdEnv: "DIALPAD_OAUTH_CLIENT_ID",
|
|
124381
|
+
clientSecretEnv: "DIALPAD_OAUTH_CLIENT_SECRET"
|
|
124382
|
+
},
|
|
124383
|
+
category: "comms",
|
|
124384
|
+
defaultConsistencyModel: "authoritative",
|
|
124385
|
+
baseUrl: "https://dialpad.com/api/v2",
|
|
124386
|
+
test: { method: "GET", path: "/users" },
|
|
124387
|
+
capabilities: [
|
|
124388
|
+
{
|
|
124389
|
+
name: "contacts.list",
|
|
124390
|
+
class: "read",
|
|
124391
|
+
description: "List contacts. Set include_local + owner_id to include a user's local contacts; paginate with cursor.",
|
|
124392
|
+
parameters: {
|
|
124393
|
+
type: "object",
|
|
124394
|
+
properties: {
|
|
124395
|
+
cursor: { type: "string", description: "Pagination token from a previous response." },
|
|
124396
|
+
include_local: { type: "boolean", description: "Include company local contacts (default false)." },
|
|
124397
|
+
owner_id: { type: "string", description: "User id whose local contacts should be retrieved." }
|
|
124398
|
+
}
|
|
124399
|
+
},
|
|
124400
|
+
request: {
|
|
124401
|
+
method: "GET",
|
|
124402
|
+
path: "/contacts",
|
|
124403
|
+
query: { cursor: "{cursor}", include_local: "{include_local}", owner_id: "{owner_id}" }
|
|
124404
|
+
}
|
|
124405
|
+
},
|
|
124406
|
+
{
|
|
124407
|
+
name: "contacts.create",
|
|
124408
|
+
class: "mutation",
|
|
124409
|
+
description: "Create a contact. first_name and last_name are required. Omit owner_id for a shared company contact.",
|
|
124410
|
+
parameters: {
|
|
124411
|
+
type: "object",
|
|
124412
|
+
properties: {
|
|
124413
|
+
first_name: { type: "string", description: "Contact's first name." },
|
|
124414
|
+
last_name: { type: "string", description: "Contact's last name." },
|
|
124415
|
+
company_name: { type: "string", description: "Contact's company name." },
|
|
124416
|
+
job_title: { type: "string", description: "Contact's job title." },
|
|
124417
|
+
emails: { type: "array", description: "Email strings; primary first.", items: { type: "string" } },
|
|
124418
|
+
phones: { type: "array", description: "E.164-formatted phone strings; primary first.", items: { type: "string" } },
|
|
124419
|
+
owner_id: { type: "string", description: "User id to create a local contact for; omit for a shared company contact." }
|
|
124420
|
+
},
|
|
124421
|
+
required: ["first_name", "last_name"]
|
|
124422
|
+
},
|
|
124423
|
+
request: { method: "POST", path: "/contacts", body: "args" },
|
|
124424
|
+
cas: "native-idempotency",
|
|
124425
|
+
externalEffect: true
|
|
124426
|
+
},
|
|
124427
|
+
{
|
|
124428
|
+
name: "calls.list",
|
|
124429
|
+
class: "read",
|
|
124430
|
+
description: "List calls. Filter by started_after/started_before (UTC ms) and target; paginate with cursor.",
|
|
124431
|
+
parameters: {
|
|
124432
|
+
type: "object",
|
|
124433
|
+
properties: {
|
|
124434
|
+
cursor: { type: "string", description: "Pagination token from a previous response." },
|
|
124435
|
+
started_after: { type: "number", description: "UTC millisecond timestamp; calls started after this time." },
|
|
124436
|
+
started_before: { type: "number", description: "UTC millisecond timestamp; calls started before this time." },
|
|
124437
|
+
target_id: { type: "number", description: "Filter calls by target entity id." },
|
|
124438
|
+
target_type: { type: "string", description: "Target type: callcenter, callrouter, channel, coaching, team, department, office, user, etc." },
|
|
124439
|
+
include_anonymized: { type: "boolean", description: "Include anonymized call records (default false)." }
|
|
124440
|
+
}
|
|
124441
|
+
},
|
|
124442
|
+
request: {
|
|
124443
|
+
method: "GET",
|
|
124444
|
+
path: "/call",
|
|
124445
|
+
query: {
|
|
124446
|
+
cursor: "{cursor}",
|
|
124447
|
+
started_after: "{started_after}",
|
|
124448
|
+
started_before: "{started_before}",
|
|
124449
|
+
target_id: "{target_id}",
|
|
124450
|
+
target_type: "{target_type}",
|
|
124451
|
+
include_anonymized: "{include_anonymized}"
|
|
124452
|
+
}
|
|
124453
|
+
}
|
|
124454
|
+
},
|
|
124455
|
+
{
|
|
124456
|
+
name: "calls.get",
|
|
124457
|
+
class: "read",
|
|
124458
|
+
description: "Get a single call by id.",
|
|
124459
|
+
parameters: {
|
|
124460
|
+
type: "object",
|
|
124461
|
+
properties: { id: { type: "number", description: "The call's unique identifier (int64)." } },
|
|
124462
|
+
required: ["id"]
|
|
124463
|
+
},
|
|
124464
|
+
request: { method: "GET", path: "/call/{id}" }
|
|
124465
|
+
},
|
|
124466
|
+
{
|
|
124467
|
+
name: "sms.send",
|
|
124468
|
+
class: "mutation",
|
|
124469
|
+
description: "Send an SMS/MMS. to_numbers = up to 10 E.164 destinations, text = body. Provide one sender: user_id, from_number, or sender_group_id(+type).",
|
|
124470
|
+
parameters: {
|
|
124471
|
+
type: "object",
|
|
124472
|
+
properties: {
|
|
124473
|
+
to_numbers: { type: "array", description: "Up to 10 E.164-formatted destination numbers.", items: { type: "string" } },
|
|
124474
|
+
text: { type: "string", description: "Message body text." },
|
|
124475
|
+
user_id: { type: "number", description: "Sender's Dialpad user id." },
|
|
124476
|
+
from_number: { type: "string", description: "Sender's phone number; overrides user_id/sender_group_id." },
|
|
124477
|
+
sender_group_id: { type: "number", description: "Office, department, or call-center id to send from." },
|
|
124478
|
+
sender_group_type: { type: "string", enum: ["callcenter", "department", "office"], description: "Sender group type." },
|
|
124479
|
+
media: { type: "string", description: "Base64-encoded media attachment (max 500 KiB); triggers MMS." },
|
|
124480
|
+
infer_country_code: { type: "boolean", description: "Relax strict E.164 requirement (default false)." }
|
|
124481
|
+
},
|
|
124482
|
+
required: ["to_numbers", "text"]
|
|
124483
|
+
},
|
|
124484
|
+
request: { method: "POST", path: "/sms", body: "args" },
|
|
124485
|
+
cas: "native-idempotency",
|
|
124486
|
+
externalEffect: true
|
|
124487
|
+
},
|
|
124488
|
+
{
|
|
124489
|
+
name: "users.list",
|
|
124490
|
+
class: "read",
|
|
124491
|
+
description: "List users. Filter by email/name/state; paginate with cursor.",
|
|
124492
|
+
parameters: {
|
|
124493
|
+
type: "object",
|
|
124494
|
+
properties: {
|
|
124495
|
+
cursor: { type: "string", description: "Pagination token from a previous response." },
|
|
124496
|
+
email: { type: "string", description: "Filter by user's email address." },
|
|
124497
|
+
first_name: { type: "string", description: "Filter by first-name prefix." },
|
|
124498
|
+
last_name: { type: "string", description: "Filter by last-name prefix." },
|
|
124499
|
+
state: { type: "string", description: "Filter by state: active, all, cancelled, deleted, pending, suspended." },
|
|
124500
|
+
company_admin: { type: "boolean", description: "Return only company admins (true) or non-admins (false)." }
|
|
124501
|
+
}
|
|
124502
|
+
},
|
|
124503
|
+
request: {
|
|
124504
|
+
method: "GET",
|
|
124505
|
+
path: "/users",
|
|
124506
|
+
query: {
|
|
124507
|
+
cursor: "{cursor}",
|
|
124508
|
+
email: "{email}",
|
|
124509
|
+
first_name: "{first_name}",
|
|
124510
|
+
last_name: "{last_name}",
|
|
124511
|
+
state: "{state}",
|
|
124512
|
+
company_admin: "{company_admin}"
|
|
124513
|
+
}
|
|
124514
|
+
}
|
|
124515
|
+
}
|
|
124516
|
+
]
|
|
124517
|
+
});
|
|
124518
|
+
|
|
124519
|
+
// src/connectors/adapters/demandbase.ts
|
|
124520
|
+
var demandbaseConnector = declarativeRestConnector({
|
|
124521
|
+
kind: "demandbase",
|
|
124522
|
+
displayName: "Demandbase",
|
|
124523
|
+
description: "Manage Demandbase platform users (list, get, create) through the Admin API using client-credentials auth.",
|
|
124524
|
+
auth: {
|
|
124525
|
+
kind: "oauth2",
|
|
124526
|
+
grantType: "client_credentials",
|
|
124527
|
+
tokenUrl: "https://uapi.demandbase.com/auth/v1/token",
|
|
124528
|
+
scopes: [],
|
|
124529
|
+
clientIdEnv: "DEMANDBASE_OAUTH_CLIENT_ID",
|
|
124530
|
+
clientSecretEnv: "DEMANDBASE_OAUTH_CLIENT_SECRET"
|
|
124531
|
+
},
|
|
124532
|
+
category: "sales-intelligence",
|
|
124533
|
+
defaultConsistencyModel: "authoritative",
|
|
124534
|
+
baseUrl: "https://uapi.demandbase.com",
|
|
124535
|
+
test: { method: "GET", path: "/admin/v1/users", query: { limit: "1" } },
|
|
124536
|
+
capabilities: [
|
|
124537
|
+
{
|
|
124538
|
+
name: "users.list",
|
|
124539
|
+
class: "read",
|
|
124540
|
+
description: "List platform users. Paginate with limit/offset; filter by status/role.",
|
|
124541
|
+
parameters: {
|
|
124542
|
+
type: "object",
|
|
124543
|
+
properties: {
|
|
124544
|
+
limit: { type: "number", description: "Max records to return (max 100)." },
|
|
124545
|
+
offset: { type: "number", description: "Pagination offset." },
|
|
124546
|
+
status: { type: "string", description: "Filter by user status." },
|
|
124547
|
+
role: { type: "string", description: "Filter by user role." }
|
|
124548
|
+
}
|
|
124549
|
+
},
|
|
124550
|
+
request: {
|
|
124551
|
+
method: "GET",
|
|
124552
|
+
path: "/admin/v1/users",
|
|
124553
|
+
query: { limit: "{limit}", offset: "{offset}", status: "{status}", role: "{role}" }
|
|
124554
|
+
}
|
|
124555
|
+
},
|
|
124556
|
+
{
|
|
124557
|
+
name: "users.get",
|
|
124558
|
+
class: "read",
|
|
124559
|
+
description: "Get a single platform user by id.",
|
|
124560
|
+
parameters: {
|
|
124561
|
+
type: "object",
|
|
124562
|
+
properties: { userId: { type: "string", description: "The user's unique identifier." } },
|
|
124563
|
+
required: ["userId"]
|
|
124564
|
+
},
|
|
124565
|
+
request: { method: "GET", path: "/admin/v1/user/{userId}" }
|
|
124566
|
+
},
|
|
124567
|
+
{
|
|
124568
|
+
name: "users.create",
|
|
124569
|
+
class: "mutation",
|
|
124570
|
+
description: "Create a platform user. email, first_name, last_name, and role are required.",
|
|
124571
|
+
parameters: {
|
|
124572
|
+
type: "object",
|
|
124573
|
+
properties: {
|
|
124574
|
+
email: { type: "string", description: "User email address." },
|
|
124575
|
+
first_name: { type: "string", description: "User first name." },
|
|
124576
|
+
last_name: { type: "string", description: "User last name." },
|
|
124577
|
+
role: { type: "string", description: "User role within the platform." }
|
|
124578
|
+
},
|
|
124579
|
+
required: ["email", "first_name", "last_name", "role"]
|
|
124580
|
+
},
|
|
124581
|
+
request: { method: "POST", path: "/admin/v1/user", body: "args" },
|
|
124582
|
+
cas: "native-idempotency",
|
|
124583
|
+
externalEffect: true
|
|
124584
|
+
}
|
|
124585
|
+
]
|
|
124586
|
+
});
|
|
124587
|
+
|
|
120262
124588
|
export {
|
|
120263
124589
|
InMemoryOAuthFlowStore,
|
|
120264
124590
|
startOAuthFlow,
|
|
@@ -120762,6 +125088,45 @@ export {
|
|
|
120762
125088
|
n8nConnector,
|
|
120763
125089
|
makeConnector,
|
|
120764
125090
|
pipedreamConnector,
|
|
125091
|
+
amplemarketConnector,
|
|
125092
|
+
heyreachConnector,
|
|
125093
|
+
lagrowthmachineConnector,
|
|
125094
|
+
saleshandyConnector,
|
|
125095
|
+
bettercontactConnector,
|
|
125096
|
+
contactoutConnector,
|
|
125097
|
+
findymailConnector,
|
|
125098
|
+
snovIoConnector,
|
|
125099
|
+
wizaConnector,
|
|
125100
|
+
builtwithConnector,
|
|
125101
|
+
commonRoomConnector,
|
|
125102
|
+
leadfeederConnector,
|
|
125103
|
+
serperConnector,
|
|
125104
|
+
warmlyConnector,
|
|
125105
|
+
autoboundConnector,
|
|
125106
|
+
crustdataConnector,
|
|
125107
|
+
fullenrichConnector,
|
|
125108
|
+
leadmagicConnector,
|
|
125109
|
+
brightdataConnector,
|
|
125110
|
+
phantombusterConnector,
|
|
125111
|
+
zenrowsConnector,
|
|
125112
|
+
oceanIoConnector,
|
|
125113
|
+
seamlessAiConnector,
|
|
125114
|
+
theirstackConnector,
|
|
125115
|
+
usergemsConnector,
|
|
125116
|
+
hightouchConnector,
|
|
125117
|
+
polytomicConnector,
|
|
125118
|
+
signwellConnector,
|
|
125119
|
+
justcallConnector,
|
|
125120
|
+
nooksConnector,
|
|
125121
|
+
modjoConnector,
|
|
125122
|
+
factorsAiConnector,
|
|
125123
|
+
getresponseConnector,
|
|
125124
|
+
outreachConnector,
|
|
125125
|
+
salesloftConnector,
|
|
125126
|
+
gongConnector,
|
|
125127
|
+
ringcentralConnector,
|
|
125128
|
+
dialpadConnector,
|
|
125129
|
+
demandbaseConnector,
|
|
120765
125130
|
adapters_exports
|
|
120766
125131
|
};
|
|
120767
|
-
//# sourceMappingURL=chunk-
|
|
125132
|
+
//# sourceMappingURL=chunk-HRPCFEGL.js.map
|