@tangle-network/agent-integrations 0.40.1 → 0.41.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.
Files changed (46) hide show
  1. package/dist/catalog.d.ts +2 -2
  2. package/dist/catalog.js +6 -6
  3. package/dist/{chunk-JXXPAUCX.js → chunk-COKK7BOH.js} +1542 -2
  4. package/dist/chunk-COKK7BOH.js.map +1 -0
  5. package/dist/{chunk-IKCXDQVP.js → chunk-DQADH6DL.js} +2 -2
  6. package/dist/{chunk-OMLQCESJ.js → chunk-EQB46PIG.js} +7 -1
  7. package/dist/chunk-EQB46PIG.js.map +1 -0
  8. package/dist/{chunk-FAFQZJPZ.js → chunk-GA7RAMMB.js} +2 -2
  9. package/dist/{chunk-5QU3YCGR.js → chunk-I3NAY66Z.js} +10 -2
  10. package/dist/chunk-I3NAY66Z.js.map +1 -0
  11. package/dist/{chunk-TC5OMANJ.js → chunk-RFBI7NUC.js} +2 -2
  12. package/dist/connect/index.d.ts +2 -2
  13. package/dist/connect/index.js +2 -2
  14. package/dist/connectors/adapters/index.d.ts +224 -3
  15. package/dist/connectors/adapters/index.js +16 -2
  16. package/dist/connectors/index.d.ts +3 -3
  17. package/dist/connectors/index.js +16 -2
  18. package/dist/{consumer-Cxcpp_bi.d.ts → consumer-DQiAGxQ2.d.ts} +1 -1
  19. package/dist/consumer.d.ts +3 -3
  20. package/dist/consumer.js +2 -2
  21. package/dist/{core-types-DMDmeutI.d.ts → core-types-17jYpwtm.d.ts} +1 -1
  22. package/dist/coverage-catalog.d.ts +2 -2
  23. package/dist/{importers-BAVOQvUf.d.ts → importers-C_mQqIJP.d.ts} +1 -1
  24. package/dist/index.d.ts +9 -9
  25. package/dist/index.js +20 -6
  26. package/dist/mcp.d.ts +3 -3
  27. package/dist/mcp.js +6 -6
  28. package/dist/middleware/index.d.ts +2 -2
  29. package/dist/middleware/index.js +2 -2
  30. package/dist/registry.d.ts +2 -2
  31. package/dist/registry.js +6 -6
  32. package/dist/runtime.d.ts +2 -2
  33. package/dist/runtime.js +6 -6
  34. package/dist/specs.d.ts +2 -2
  35. package/dist/{tangle-id-BMScmNjp.d.ts → tangle-id-CpdEOacl.d.ts} +1 -1
  36. package/dist/{types-eAvAgnKr.d.ts → types-BLOYLnKZ.d.ts} +10 -3
  37. package/dist/webhooks/index.d.ts +11 -1
  38. package/dist/webhooks/index.js +31 -0
  39. package/dist/webhooks/index.js.map +1 -1
  40. package/package.json +1 -1
  41. package/dist/chunk-5QU3YCGR.js.map +0 -1
  42. package/dist/chunk-JXXPAUCX.js.map +0 -1
  43. package/dist/chunk-OMLQCESJ.js.map +0 -1
  44. /package/dist/{chunk-IKCXDQVP.js.map → chunk-DQADH6DL.js.map} +0 -0
  45. /package/dist/{chunk-FAFQZJPZ.js.map → chunk-GA7RAMMB.js.map} +0 -0
  46. /package/dist/{chunk-TC5OMANJ.js.map → chunk-RFBI7NUC.js.map} +0 -0
@@ -12,7 +12,7 @@ import {
12
12
  TangleIdentityUnreachableError,
13
13
  createTangleIdentityClient,
14
14
  tangleIdentity
15
- } from "./chunk-OMLQCESJ.js";
15
+ } from "./chunk-EQB46PIG.js";
16
16
  import {
17
17
  __export
18
18
  } from "./chunk-PZ5AY32C.js";
@@ -28,6 +28,7 @@ __export(adapters_exports, {
28
28
  activecampaignConnector: () => activecampaignConnector,
29
29
  acumbamailConnector: () => acumbamailConnector,
30
30
  adobeCreativeCloudConnector: () => adobeCreativeCloudConnector,
31
+ adpConnector: () => adpConnector,
31
32
  afforaiConnector: () => afforaiConnector,
32
33
  agentxConnector: () => agentxConnector,
33
34
  aidbaseConnector: () => aidbaseConnector,
@@ -106,6 +107,7 @@ __export(adapters_exports, {
106
107
  chatwootConnector: () => chatwootConnector,
107
108
  checkoutConnector: () => checkoutConnector,
108
109
  circleConnector: () => circleConnector,
110
+ clayConnector: () => clayConnector,
109
111
  clearoutConnector: () => clearoutConnector,
110
112
  clicdataConnector: () => clicdataConnector,
111
113
  clickupConnector: () => clickupConnector,
@@ -117,6 +119,7 @@ __export(adapters_exports, {
117
119
  cloudinaryConnector: () => cloudinaryConnector,
118
120
  cloutlyConnector: () => cloutlyConnector,
119
121
  codaConnector: () => codaConnector,
122
+ cognismConnector: () => cognismConnector,
120
123
  cognitoFormsConnector: () => cognitoFormsConnector,
121
124
  cohereConnector: () => cohereConnector,
122
125
  cometapiConnector: () => cometapiConnector,
@@ -363,6 +366,7 @@ __export(adapters_exports, {
363
366
  paperformConnector: () => paperformConnector,
364
367
  parseurConnector: () => parseurConnector,
365
368
  pastefyConnector: () => pastefyConnector,
369
+ paychexConnector: () => paychexConnector,
366
370
  paywhirlConnector: () => paywhirlConnector,
367
371
  pdfmonkeyConnector: () => pdfmonkeyConnector,
368
372
  peekshotConnector: () => peekshotConnector,
@@ -412,6 +416,7 @@ __export(adapters_exports, {
412
416
  scrapegraphaiConnector: () => scrapegraphaiConnector,
413
417
  scrapelessConnector: () => scrapelessConnector,
414
418
  seekTableConnector: () => seekTableConnector,
419
+ semrushConnector: () => semrushConnector,
415
420
  sendgridConnector: () => sendgridConnector,
416
421
  sendinblueConnector: () => sendinblueConnector,
417
422
  sendpulseConnector: () => sendpulseConnector,
@@ -425,6 +430,7 @@ __export(adapters_exports, {
425
430
  shortIoConnector: () => shortIoConnector,
426
431
  signNowConnector: () => signNowConnector,
427
432
  signrequestConnector: () => signrequestConnector,
433
+ similarwebConnector: () => similarwebConnector,
428
434
  simplirouteConnector: () => simplirouteConnector,
429
435
  simplybookmeConnector: () => simplybookmeConnector,
430
436
  skyprepConnector: () => skyprepConnector,
@@ -514,6 +520,7 @@ __export(adapters_exports, {
514
520
  zohoBookingsConnector: () => zohoBookingsConnector,
515
521
  zohoCrmConnector: () => zohoCrmConnector,
516
522
  zohoDeskConnector: () => zohoDeskConnector,
523
+ zoominfoConnector: () => zoominfoConnector,
517
524
  zuoraConnector: () => zuoraConnector
518
525
  });
519
526
 
@@ -48294,6 +48301,1532 @@ var apolloConnector = declarativeRestConnector({
48294
48301
  ]
48295
48302
  });
48296
48303
 
48304
+ // src/connectors/adapters/similarweb.ts
48305
+ var similarwebConnector = declarativeRestConnector({
48306
+ kind: "similarweb",
48307
+ displayName: "Similarweb",
48308
+ description: "Market intelligence on any website: estimated traffic and engagement, global/country/category rank, traffic sources, geography, similar sites, audience interests, and search keywords via the Similarweb Digital Marketing Intelligence API.",
48309
+ auth: {
48310
+ kind: "api-key",
48311
+ hint: "Similarweb API key from Account \u2192 API Management. Sent as the `api_key` query parameter on every request."
48312
+ },
48313
+ category: "market-intelligence",
48314
+ defaultConsistencyModel: "cache",
48315
+ baseUrl: "https://api.similarweb.com",
48316
+ credentialPlacement: { kind: "query", parameter: "api_key" },
48317
+ // `/capabilities` is free (no data-credit cost) and proves the key is valid.
48318
+ test: { method: "GET", path: "/capabilities" },
48319
+ capabilities: [
48320
+ {
48321
+ name: "rank.global",
48322
+ class: "read",
48323
+ description: "Similarweb Global Rank for a domain (estimated monthly unique visitors and pageviews, desktop + mobile). Lower is more popular.",
48324
+ parameters: {
48325
+ type: "object",
48326
+ properties: {
48327
+ domain: { type: "string", description: "Bare host, e.g. cnn.com." },
48328
+ start_date: { type: "string", description: "Inclusive start month, YYYY-MM." },
48329
+ end_date: { type: "string", description: "Inclusive end month, YYYY-MM." },
48330
+ main_domain_only: { type: "boolean", description: "Exclude subdomains (default false)." }
48331
+ },
48332
+ required: ["domain"]
48333
+ },
48334
+ request: {
48335
+ method: "GET",
48336
+ path: "/v1/website/{domain}/global-rank/global-rank",
48337
+ query: { start_date: "{start_date}", end_date: "{end_date}", main_domain_only: "{main_domain_only}" }
48338
+ }
48339
+ },
48340
+ {
48341
+ name: "rank.country",
48342
+ class: "read",
48343
+ description: "Monthly rank of a domain within a single country.",
48344
+ parameters: {
48345
+ type: "object",
48346
+ properties: {
48347
+ domain: { type: "string", description: "Bare host, e.g. cnn.com." },
48348
+ country: { type: "string", description: "Lowercase ISO 3166-1 alpha-2 code, e.g. us." },
48349
+ start_date: { type: "string", description: "Inclusive start month, YYYY-MM." },
48350
+ end_date: { type: "string", description: "Inclusive end month, YYYY-MM." },
48351
+ main_domain_only: { type: "boolean" }
48352
+ },
48353
+ required: ["domain", "country"]
48354
+ },
48355
+ request: {
48356
+ method: "GET",
48357
+ path: "/v1/website/{domain}/country-rank/country-rank",
48358
+ query: {
48359
+ country: "{country}",
48360
+ start_date: "{start_date}",
48361
+ end_date: "{end_date}",
48362
+ main_domain_only: "{main_domain_only}"
48363
+ }
48364
+ }
48365
+ },
48366
+ {
48367
+ name: "rank.category",
48368
+ class: "read",
48369
+ description: "Industry/category rank for a domain relative to its category globally (latest value; no date range).",
48370
+ parameters: {
48371
+ type: "object",
48372
+ properties: { domain: { type: "string", description: "Bare host, e.g. cnn.com." } },
48373
+ required: ["domain"]
48374
+ },
48375
+ request: { method: "GET", path: "/v1/website/{domain}/category-rank/category-rank" }
48376
+ },
48377
+ {
48378
+ name: "total-traffic.visits",
48379
+ class: "read",
48380
+ description: "Estimated total visits (desktop + mobile combined) for a domain over a date range.",
48381
+ parameters: {
48382
+ type: "object",
48383
+ properties: {
48384
+ domain: { type: "string", description: "Bare host, e.g. cnn.com." },
48385
+ country: { type: "string", description: 'Lowercase ISO alpha-2 code or "world".' },
48386
+ granularity: { type: "string", description: "daily | weekly | monthly." },
48387
+ start_date: { type: "string", description: "Inclusive start month, YYYY-MM." },
48388
+ end_date: { type: "string", description: "Inclusive end month, YYYY-MM." },
48389
+ main_domain_only: { type: "boolean" },
48390
+ show_verified: { type: "boolean", description: "Surface shared Google Analytics data when available." }
48391
+ },
48392
+ required: ["domain", "country", "granularity"]
48393
+ },
48394
+ request: {
48395
+ method: "GET",
48396
+ path: "/v1/website/{domain}/total-traffic-and-engagement/visits",
48397
+ query: {
48398
+ country: "{country}",
48399
+ granularity: "{granularity}",
48400
+ start_date: "{start_date}",
48401
+ end_date: "{end_date}",
48402
+ main_domain_only: "{main_domain_only}",
48403
+ show_verified: "{show_verified}"
48404
+ }
48405
+ }
48406
+ },
48407
+ {
48408
+ name: "total-traffic.pages-per-visit",
48409
+ class: "read",
48410
+ description: "Average pages per visit (desktop + mobile combined).",
48411
+ parameters: {
48412
+ type: "object",
48413
+ properties: {
48414
+ domain: { type: "string", description: "Bare host, e.g. cnn.com." },
48415
+ country: { type: "string", description: 'Lowercase ISO alpha-2 code or "world".' },
48416
+ granularity: { type: "string", description: "daily | weekly | monthly." },
48417
+ start_date: { type: "string", description: "YYYY-MM." },
48418
+ end_date: { type: "string", description: "YYYY-MM." },
48419
+ main_domain_only: { type: "boolean" }
48420
+ },
48421
+ required: ["domain", "country", "granularity"]
48422
+ },
48423
+ request: {
48424
+ method: "GET",
48425
+ path: "/v1/website/{domain}/total-traffic-and-engagement/pages-per-visit",
48426
+ query: {
48427
+ country: "{country}",
48428
+ granularity: "{granularity}",
48429
+ start_date: "{start_date}",
48430
+ end_date: "{end_date}",
48431
+ main_domain_only: "{main_domain_only}"
48432
+ }
48433
+ }
48434
+ },
48435
+ {
48436
+ name: "total-traffic.average-visit-duration",
48437
+ class: "read",
48438
+ description: "Average visit duration in seconds (desktop + mobile combined).",
48439
+ parameters: {
48440
+ type: "object",
48441
+ properties: {
48442
+ domain: { type: "string", description: "Bare host, e.g. cnn.com." },
48443
+ country: { type: "string", description: 'Lowercase ISO alpha-2 code or "world".' },
48444
+ granularity: { type: "string", description: "daily | weekly | monthly." },
48445
+ start_date: { type: "string", description: "YYYY-MM." },
48446
+ end_date: { type: "string", description: "YYYY-MM." },
48447
+ main_domain_only: { type: "boolean" }
48448
+ },
48449
+ required: ["domain", "country", "granularity"]
48450
+ },
48451
+ request: {
48452
+ method: "GET",
48453
+ path: "/v1/website/{domain}/total-traffic-and-engagement/average-visit-duration",
48454
+ query: {
48455
+ country: "{country}",
48456
+ granularity: "{granularity}",
48457
+ start_date: "{start_date}",
48458
+ end_date: "{end_date}",
48459
+ main_domain_only: "{main_domain_only}"
48460
+ }
48461
+ }
48462
+ },
48463
+ {
48464
+ name: "total-traffic.bounce-rate",
48465
+ class: "read",
48466
+ description: "Bounce rate (desktop + mobile combined) over a date range.",
48467
+ parameters: {
48468
+ type: "object",
48469
+ properties: {
48470
+ domain: { type: "string", description: "Bare host, e.g. cnn.com." },
48471
+ country: { type: "string", description: 'Lowercase ISO alpha-2 code or "world".' },
48472
+ granularity: { type: "string", description: "daily | weekly | monthly." },
48473
+ start_date: { type: "string", description: "YYYY-MM." },
48474
+ end_date: { type: "string", description: "YYYY-MM." },
48475
+ main_domain_only: { type: "boolean" }
48476
+ },
48477
+ required: ["domain", "country", "granularity"]
48478
+ },
48479
+ request: {
48480
+ method: "GET",
48481
+ path: "/v1/website/{domain}/total-traffic-and-engagement/bounce-rate",
48482
+ query: {
48483
+ country: "{country}",
48484
+ granularity: "{granularity}",
48485
+ start_date: "{start_date}",
48486
+ end_date: "{end_date}",
48487
+ main_domain_only: "{main_domain_only}"
48488
+ }
48489
+ }
48490
+ },
48491
+ {
48492
+ name: "desktop-traffic.visits",
48493
+ class: "read",
48494
+ description: "Estimated desktop-only visits for a domain. Supports a US state filter when country=us.",
48495
+ parameters: {
48496
+ type: "object",
48497
+ properties: {
48498
+ domain: { type: "string", description: "Bare host, e.g. cnn.com." },
48499
+ country: { type: "string", description: 'Lowercase ISO alpha-2 code or "world".' },
48500
+ granularity: { type: "string", description: "daily | weekly | monthly." },
48501
+ start_date: { type: "string", description: "YYYY-MM." },
48502
+ end_date: { type: "string", description: "YYYY-MM." },
48503
+ state: { type: "string", description: "US state filter, valid only when country=us." },
48504
+ main_domain_only: { type: "boolean" }
48505
+ },
48506
+ required: ["domain", "country", "granularity"]
48507
+ },
48508
+ request: {
48509
+ method: "GET",
48510
+ path: "/v1/website/{domain}/traffic-and-engagement/visits",
48511
+ query: {
48512
+ country: "{country}",
48513
+ granularity: "{granularity}",
48514
+ start_date: "{start_date}",
48515
+ end_date: "{end_date}",
48516
+ state: "{state}",
48517
+ main_domain_only: "{main_domain_only}"
48518
+ }
48519
+ }
48520
+ },
48521
+ {
48522
+ name: "traffic-sources.overview-share",
48523
+ class: "read",
48524
+ description: "Share of visits by marketing channel (direct, search, social, referrals, mail, display, paid) over time.",
48525
+ parameters: {
48526
+ type: "object",
48527
+ properties: {
48528
+ domain: { type: "string", description: "Bare host, e.g. cnn.com." },
48529
+ country: { type: "string", description: 'Lowercase ISO alpha-2 code or "world".' },
48530
+ granularity: { type: "string", description: "daily | weekly | monthly." },
48531
+ start_date: { type: "string", description: "YYYY-MM." },
48532
+ end_date: { type: "string", description: "YYYY-MM." },
48533
+ main_domain_only: { type: "boolean" }
48534
+ },
48535
+ required: ["domain", "country", "granularity"]
48536
+ },
48537
+ request: {
48538
+ method: "GET",
48539
+ path: "/v1/website/{domain}/traffic-sources/overview-share",
48540
+ query: {
48541
+ country: "{country}",
48542
+ granularity: "{granularity}",
48543
+ start_date: "{start_date}",
48544
+ end_date: "{end_date}",
48545
+ main_domain_only: "{main_domain_only}"
48546
+ }
48547
+ }
48548
+ },
48549
+ {
48550
+ name: "traffic-sources.referrals",
48551
+ class: "read",
48552
+ description: "Top referring websites sending traffic to a domain: traffic share per referrer and total referral visits.",
48553
+ parameters: {
48554
+ type: "object",
48555
+ properties: {
48556
+ domain: { type: "string", description: "Bare host, e.g. cnn.com." },
48557
+ country: { type: "string", description: 'Lowercase ISO alpha-2 code or "world".' },
48558
+ start_date: { type: "string", description: "YYYY-MM." },
48559
+ end_date: { type: "string", description: "YYYY-MM." },
48560
+ main_domain_only: { type: "boolean" },
48561
+ limit: { type: "integer", description: "Max rows (default 100)." },
48562
+ offset: { type: "integer" }
48563
+ },
48564
+ required: ["domain", "country"]
48565
+ },
48566
+ request: {
48567
+ method: "GET",
48568
+ path: "/v4/website/{domain}/traffic-sources/referrals",
48569
+ query: {
48570
+ country: "{country}",
48571
+ start_date: "{start_date}",
48572
+ end_date: "{end_date}",
48573
+ main_domain_only: "{main_domain_only}",
48574
+ limit: "{limit}",
48575
+ offset: "{offset}"
48576
+ }
48577
+ }
48578
+ },
48579
+ {
48580
+ name: "traffic-sources.social",
48581
+ class: "read",
48582
+ description: "Leading social networks sending traffic to a domain: traffic share per network and social visits.",
48583
+ parameters: {
48584
+ type: "object",
48585
+ properties: {
48586
+ domain: { type: "string", description: "Bare host, e.g. cnn.com." },
48587
+ country: { type: "string", description: 'Lowercase ISO alpha-2 code or "world".' },
48588
+ start_date: { type: "string", description: "YYYY-MM." },
48589
+ end_date: { type: "string", description: "YYYY-MM." },
48590
+ main_domain_only: { type: "boolean" },
48591
+ limit: { type: "integer" },
48592
+ offset: { type: "integer" }
48593
+ },
48594
+ required: ["domain", "country"]
48595
+ },
48596
+ request: {
48597
+ method: "GET",
48598
+ path: "/v4/website/{domain}/traffic-sources/social",
48599
+ query: {
48600
+ country: "{country}",
48601
+ start_date: "{start_date}",
48602
+ end_date: "{end_date}",
48603
+ main_domain_only: "{main_domain_only}",
48604
+ limit: "{limit}",
48605
+ offset: "{offset}"
48606
+ }
48607
+ }
48608
+ },
48609
+ {
48610
+ name: "geo.traffic-by-country",
48611
+ class: "read",
48612
+ description: "Distribution of a domain\u2019s traffic across countries: per-country traffic share, visits, pages/visit, average duration, bounce rate, and rank.",
48613
+ parameters: {
48614
+ type: "object",
48615
+ properties: {
48616
+ domain: { type: "string", description: "Bare host, e.g. cnn.com." },
48617
+ start_date: { type: "string", description: "YYYY-MM." },
48618
+ end_date: { type: "string", description: "YYYY-MM." },
48619
+ main_domain_only: { type: "boolean" },
48620
+ limit: { type: "integer" },
48621
+ offset: { type: "integer" }
48622
+ },
48623
+ required: ["domain"]
48624
+ },
48625
+ request: {
48626
+ method: "GET",
48627
+ path: "/v4/website/{domain}/geo/traffic-by-country",
48628
+ query: {
48629
+ start_date: "{start_date}",
48630
+ end_date: "{end_date}",
48631
+ main_domain_only: "{main_domain_only}",
48632
+ limit: "{limit}",
48633
+ offset: "{offset}"
48634
+ }
48635
+ }
48636
+ },
48637
+ {
48638
+ name: "audience.similar-sites",
48639
+ class: "read",
48640
+ description: "Up to 40 websites most similar to a domain, with a similarity score per site. No date or country params.",
48641
+ parameters: {
48642
+ type: "object",
48643
+ properties: {
48644
+ domain: { type: "string", description: "Bare host, e.g. cnn.com." },
48645
+ limit: { type: "integer", description: "Max similar sites (max 40)." }
48646
+ },
48647
+ required: ["domain"]
48648
+ },
48649
+ request: {
48650
+ method: "GET",
48651
+ path: "/v4/website/{domain}/similar-sites/similarsites",
48652
+ query: { limit: "{limit}" }
48653
+ }
48654
+ },
48655
+ {
48656
+ name: "audience.also-visited",
48657
+ class: "read",
48658
+ description: "Other websites visited by the same audience (desktop + mobile): affinity score and audience overlap. Useful for competitive/adjacency analysis.",
48659
+ parameters: {
48660
+ type: "object",
48661
+ properties: {
48662
+ domain: { type: "string", description: "Bare host, e.g. cnn.com." },
48663
+ country: { type: "string", description: 'Lowercase ISO alpha-2 code or "world".' },
48664
+ start_date: { type: "string", description: "YYYY-MM." },
48665
+ end_date: { type: "string", description: "YYYY-MM." },
48666
+ main_domain_only: { type: "boolean" },
48667
+ limit: { type: "integer" },
48668
+ offset: { type: "integer" }
48669
+ },
48670
+ required: ["domain", "country", "start_date", "end_date"]
48671
+ },
48672
+ request: {
48673
+ method: "GET",
48674
+ path: "/v4/website/{domain}/total-audience-interests/also-visited",
48675
+ query: {
48676
+ country: "{country}",
48677
+ start_date: "{start_date}",
48678
+ end_date: "{end_date}",
48679
+ main_domain_only: "{main_domain_only}",
48680
+ limit: "{limit}",
48681
+ offset: "{offset}"
48682
+ }
48683
+ }
48684
+ },
48685
+ {
48686
+ name: "keywords.website-keywords",
48687
+ class: "read",
48688
+ description: "Search keywords driving clicks to a domain (Similarweb Search 3.0). Filter by traffic_source (Organic/Paid/All) and web_source (Desktop/MobileWeb/Total). The domain is passed as the `URL` query parameter.",
48689
+ parameters: {
48690
+ type: "object",
48691
+ properties: {
48692
+ domain: { type: "string", description: "Bare host, e.g. cnn.com (sent as the URL query param)." },
48693
+ country: { type: "string", description: 'Lowercase ISO alpha-2 code or "world".' },
48694
+ start_date: { type: "string", description: "YYYY-MM (defaults to ~last 28 days if omitted)." },
48695
+ end_date: { type: "string", description: "YYYY-MM." },
48696
+ traffic_source: { type: "string", description: "Organic | Paid | All." },
48697
+ web_source: { type: "string", description: "Desktop | MobileWeb | Total." },
48698
+ limit: { type: "integer" },
48699
+ offset: { type: "integer" }
48700
+ },
48701
+ required: ["domain", "country"]
48702
+ },
48703
+ request: {
48704
+ method: "GET",
48705
+ path: "/v4/website-analysis/keywords",
48706
+ query: {
48707
+ URL: "{domain}",
48708
+ country: "{country}",
48709
+ start_date: "{start_date}",
48710
+ end_date: "{end_date}",
48711
+ traffic_source: "{traffic_source}",
48712
+ web_source: "{web_source}",
48713
+ limit: "{limit}",
48714
+ offset: "{offset}"
48715
+ }
48716
+ }
48717
+ },
48718
+ {
48719
+ name: "lead-enrichment",
48720
+ class: "read",
48721
+ description: "Firmographics plus website traffic and engagement for a domain in one call (Similarweb Lead Enrichment). Up to 12 months of history; set show_verified to surface shared Google Analytics data.",
48722
+ parameters: {
48723
+ type: "object",
48724
+ properties: {
48725
+ domain: { type: "string", description: "Bare host, e.g. cnn.com." },
48726
+ country: { type: "string", description: 'Lowercase ISO alpha-2 code or "world".' },
48727
+ start_date: { type: "string", description: "YYYY-MM." },
48728
+ end_date: { type: "string", description: "YYYY-MM." },
48729
+ main_domain_only: { type: "boolean" },
48730
+ show_verified: { type: "boolean" }
48731
+ },
48732
+ required: ["domain", "country", "start_date", "end_date"]
48733
+ },
48734
+ request: {
48735
+ method: "GET",
48736
+ path: "/v1/website/{domain}/lead-enrichment/all",
48737
+ query: {
48738
+ country: "{country}",
48739
+ start_date: "{start_date}",
48740
+ end_date: "{end_date}",
48741
+ main_domain_only: "{main_domain_only}",
48742
+ show_verified: "{show_verified}"
48743
+ }
48744
+ }
48745
+ }
48746
+ ]
48747
+ });
48748
+
48749
+ // src/connectors/adapters/semrush.ts
48750
+ var semrushConnector = declarativeRestConnector({
48751
+ kind: "semrush",
48752
+ displayName: "Semrush",
48753
+ description: "Competitive SEO market intelligence: backlink profile (overview, links, referring domains/IPs, anchors, pages, authority-score trend) and keyword metrics via the Semrush v4 REST API.",
48754
+ auth: {
48755
+ kind: "api-key",
48756
+ hint: "Semrush API key from Subscription info \u2192 API units. Sent as the `Authorization: Apikey <key>` header."
48757
+ },
48758
+ category: "market-intelligence",
48759
+ defaultConsistencyModel: "cache",
48760
+ baseUrl: "https://api.semrush.com",
48761
+ credentialPlacement: { kind: "header", header: "Authorization", prefix: "Apikey " },
48762
+ capabilities: [
48763
+ {
48764
+ name: "backlinks.overview",
48765
+ class: "read",
48766
+ description: "Aggregated backlink metrics for a target: total backlinks, referring domains, authority score, follow/nofollow split, referring IPs.",
48767
+ parameters: {
48768
+ type: "object",
48769
+ properties: {
48770
+ url: { type: "string", description: "Target host, subdomain, folder, or page, e.g. semrush.com." },
48771
+ scope: {
48772
+ type: "string",
48773
+ description: "Which part of the URL to analyze: ROOT_DOMAIN | SUBDOMAIN | SUBFOLDER | PAGE."
48774
+ },
48775
+ fields: { type: "string", description: "Comma-separated subset of response fields (all by default)." }
48776
+ },
48777
+ required: ["url", "scope"]
48778
+ },
48779
+ request: {
48780
+ method: "GET",
48781
+ path: "/apis/v4/backlinks/v1/overview",
48782
+ query: { url: "{url}", scope: "{scope}", fields: "{fields}" }
48783
+ }
48784
+ },
48785
+ {
48786
+ name: "backlinks.summary",
48787
+ class: "read",
48788
+ description: "Monthly historical trend of authority score, backlinks count, and referring domains. date_from/date_to are YYYY-MM.",
48789
+ parameters: {
48790
+ type: "object",
48791
+ properties: {
48792
+ url: { type: "string", description: "Target host/subdomain/folder/page." },
48793
+ scope: { type: "string", description: "ROOT_DOMAIN | SUBDOMAIN | SUBFOLDER | PAGE." },
48794
+ date_from: { type: "string", description: "Start month, YYYY-MM." },
48795
+ date_to: { type: "string", description: "End month, YYYY-MM." },
48796
+ fields: { type: "string" },
48797
+ limit: { type: "integer" }
48798
+ },
48799
+ required: ["url", "scope"]
48800
+ },
48801
+ request: {
48802
+ method: "GET",
48803
+ path: "/apis/v4/backlinks/v1/summary",
48804
+ query: {
48805
+ url: "{url}",
48806
+ scope: "{scope}",
48807
+ date_from: "{date_from}",
48808
+ date_to: "{date_to}",
48809
+ fields: "{fields}",
48810
+ limit: "{limit}"
48811
+ }
48812
+ }
48813
+ },
48814
+ {
48815
+ name: "backlinks.links",
48816
+ class: "read",
48817
+ description: "Paginated list of individual backlinks: anchor text, source/target URLs, domain & page authority, follow/nofollow, first/last seen.",
48818
+ parameters: {
48819
+ type: "object",
48820
+ properties: {
48821
+ url: { type: "string" },
48822
+ scope: { type: "string", description: "ROOT_DOMAIN | SUBDOMAIN | SUBFOLDER | PAGE." },
48823
+ fields: { type: "string" },
48824
+ order_by: { type: "string", description: "Field to sort by." },
48825
+ direction: { type: "string", description: "ASC | DESC." },
48826
+ limit: { type: "integer" },
48827
+ offset: { type: "integer" },
48828
+ filter: { type: "string", description: "Field-operator-value filter expression, e.g. is_follow=1." }
48829
+ },
48830
+ required: ["url", "scope"]
48831
+ },
48832
+ request: {
48833
+ method: "GET",
48834
+ path: "/apis/v4/backlinks/v1/links",
48835
+ query: {
48836
+ url: "{url}",
48837
+ scope: "{scope}",
48838
+ fields: "{fields}",
48839
+ order_by: "{order_by}",
48840
+ direction: "{direction}",
48841
+ limit: "{limit}",
48842
+ offset: "{offset}",
48843
+ filter: "{filter}"
48844
+ }
48845
+ }
48846
+ },
48847
+ {
48848
+ name: "backlinks.ref_domains",
48849
+ class: "read",
48850
+ description: "Referring domains with per-domain backlink counts, domain authority score, country, IP, and follow/new/lost status.",
48851
+ parameters: {
48852
+ type: "object",
48853
+ properties: {
48854
+ url: { type: "string" },
48855
+ scope: { type: "string", description: "ROOT_DOMAIN | SUBDOMAIN | SUBFOLDER | PAGE." },
48856
+ fields: { type: "string" },
48857
+ order_by: { type: "string" },
48858
+ direction: { type: "string" },
48859
+ limit: { type: "integer" },
48860
+ offset: { type: "integer" },
48861
+ filter: { type: "string" }
48862
+ },
48863
+ required: ["url", "scope"]
48864
+ },
48865
+ request: {
48866
+ method: "GET",
48867
+ path: "/apis/v4/backlinks/v1/ref-domains",
48868
+ query: {
48869
+ url: "{url}",
48870
+ scope: "{scope}",
48871
+ fields: "{fields}",
48872
+ order_by: "{order_by}",
48873
+ direction: "{direction}",
48874
+ limit: "{limit}",
48875
+ offset: "{offset}",
48876
+ filter: "{filter}"
48877
+ }
48878
+ }
48879
+ },
48880
+ {
48881
+ name: "backlinks.ref_ips",
48882
+ class: "read",
48883
+ description: "Referring IP addresses with backlink count, referring-domain count, and country.",
48884
+ parameters: {
48885
+ type: "object",
48886
+ properties: {
48887
+ url: { type: "string" },
48888
+ scope: { type: "string", description: "ROOT_DOMAIN | SUBDOMAIN | SUBFOLDER | PAGE." },
48889
+ fields: { type: "string" },
48890
+ order_by: { type: "string" },
48891
+ direction: { type: "string" },
48892
+ limit: { type: "integer" },
48893
+ offset: { type: "integer" }
48894
+ },
48895
+ required: ["url", "scope"]
48896
+ },
48897
+ request: {
48898
+ method: "GET",
48899
+ path: "/apis/v4/backlinks/v1/ref-ips",
48900
+ query: {
48901
+ url: "{url}",
48902
+ scope: "{scope}",
48903
+ fields: "{fields}",
48904
+ order_by: "{order_by}",
48905
+ direction: "{direction}",
48906
+ limit: "{limit}",
48907
+ offset: "{offset}"
48908
+ }
48909
+ }
48910
+ },
48911
+ {
48912
+ name: "backlinks.anchors",
48913
+ class: "read",
48914
+ description: "Backlink anchor texts with per-anchor backlink count, referring domains, and domain/page authority scores.",
48915
+ parameters: {
48916
+ type: "object",
48917
+ properties: {
48918
+ url: { type: "string" },
48919
+ scope: { type: "string", description: "ROOT_DOMAIN | SUBDOMAIN | SUBFOLDER | PAGE." },
48920
+ fields: { type: "string" },
48921
+ order_by: { type: "string" },
48922
+ direction: { type: "string" },
48923
+ limit: { type: "integer" },
48924
+ offset: { type: "integer" }
48925
+ },
48926
+ required: ["url", "scope"]
48927
+ },
48928
+ request: {
48929
+ method: "GET",
48930
+ path: "/apis/v4/backlinks/v1/anchors",
48931
+ query: {
48932
+ url: "{url}",
48933
+ scope: "{scope}",
48934
+ fields: "{fields}",
48935
+ order_by: "{order_by}",
48936
+ direction: "{direction}",
48937
+ limit: "{limit}",
48938
+ offset: "{offset}"
48939
+ }
48940
+ }
48941
+ },
48942
+ {
48943
+ name: "backlinks.pages",
48944
+ class: "read",
48945
+ description: "Pages on the target domain that receive backlinks, with per-page backlink and referring-domain counts.",
48946
+ parameters: {
48947
+ type: "object",
48948
+ properties: {
48949
+ url: { type: "string" },
48950
+ scope: { type: "string", description: "ROOT_DOMAIN | SUBDOMAIN | SUBFOLDER | PAGE." },
48951
+ fields: { type: "string" },
48952
+ order_by: { type: "string" },
48953
+ direction: { type: "string" },
48954
+ limit: { type: "integer" },
48955
+ offset: { type: "integer" },
48956
+ filter: { type: "string" }
48957
+ },
48958
+ required: ["url", "scope"]
48959
+ },
48960
+ request: {
48961
+ method: "GET",
48962
+ path: "/apis/v4/backlinks/v1/pages",
48963
+ query: {
48964
+ url: "{url}",
48965
+ scope: "{scope}",
48966
+ fields: "{fields}",
48967
+ order_by: "{order_by}",
48968
+ direction: "{direction}",
48969
+ limit: "{limit}",
48970
+ offset: "{offset}",
48971
+ filter: "{filter}"
48972
+ }
48973
+ }
48974
+ },
48975
+ {
48976
+ name: "backlinks.score_profile",
48977
+ class: "read",
48978
+ description: "Authority Score distribution of a target\u2019s backlink profile \u2014 the breakdown of backlink quality scores.",
48979
+ parameters: {
48980
+ type: "object",
48981
+ properties: {
48982
+ url: { type: "string" },
48983
+ scope: { type: "string", description: "ROOT_DOMAIN | SUBDOMAIN | SUBFOLDER | PAGE." },
48984
+ fields: { type: "string" }
48985
+ },
48986
+ required: ["url", "scope"]
48987
+ },
48988
+ request: {
48989
+ method: "GET",
48990
+ path: "/apis/v4/backlinks/v1/score-profile",
48991
+ query: { url: "{url}", scope: "{scope}", fields: "{fields}" }
48992
+ }
48993
+ },
48994
+ {
48995
+ name: "backlinks.comparison",
48996
+ class: "read",
48997
+ description: "Compare the backlink profiles of up to 10 targets side by side. `urls` is comma-separated; scope here supports ROOT_DOMAIN | SUBDOMAIN | PAGE only (no SUBFOLDER).",
48998
+ parameters: {
48999
+ type: "object",
49000
+ properties: {
49001
+ urls: { type: "string", description: "Comma-separated list of up to 10 target URLs." },
49002
+ scope: { type: "string", description: "ROOT_DOMAIN | SUBDOMAIN | PAGE." },
49003
+ fields: { type: "string" }
49004
+ },
49005
+ required: ["urls", "scope"]
49006
+ },
49007
+ request: {
49008
+ method: "GET",
49009
+ path: "/apis/v4/backlinks/v1/comparison",
49010
+ query: { urls: "{urls}", scope: "{scope}", fields: "{fields}" }
49011
+ }
49012
+ },
49013
+ {
49014
+ name: "keyword.metrics",
49015
+ class: "read",
49016
+ description: "Keyword metrics for a single keyword (Semrush v4 keyword surface): search volume, CPC, keyword difficulty, competition, trend, SERP features, and search intent.",
49017
+ parameters: {
49018
+ type: "object",
49019
+ properties: {
49020
+ keyword: { type: "string", description: "The keyword phrase to look up." },
49021
+ country: { type: "string", description: "Database/country code, e.g. us, uk, de." },
49022
+ month: { type: "string", description: "Optional month for the metric snapshot, YYYY-MM." }
49023
+ },
49024
+ required: ["keyword", "country"]
49025
+ },
49026
+ request: {
49027
+ method: "GET",
49028
+ path: "/apis/v4/keywords/v1/metrics",
49029
+ query: { keyword: "{keyword}", country: "{country}", month: "{month}" }
49030
+ }
49031
+ }
49032
+ ]
49033
+ });
49034
+
49035
+ // src/connectors/adapters/cognism.ts
49036
+ var cognismConnector = declarativeRestConnector({
49037
+ kind: "cognism",
49038
+ displayName: "Cognism",
49039
+ description: "B2B sales intelligence: search and enrich contacts and companies against the Cognism database, then redeem records for full contact data (emails, phones, firmographics).",
49040
+ auth: {
49041
+ kind: "api-key",
49042
+ hint: "Cognism API token from Profile Settings \u2192 API. Sent as the `Authorization: Bearer <token>` header."
49043
+ },
49044
+ category: "sales-intelligence",
49045
+ defaultConsistencyModel: "authoritative",
49046
+ baseUrl: "https://app.cognism.com/api/search",
49047
+ credentialPlacement: { kind: "bearer" },
49048
+ capabilities: [
49049
+ {
49050
+ name: "contact.search",
49051
+ class: "read",
49052
+ description: "Search the Cognism contact database by persona/firmographic filters. Returns a preview list with data-presence flags and a redeemId per record (no PII). Free. Follow with contact.redeem to fetch full data.",
49053
+ parameters: {
49054
+ type: "object",
49055
+ properties: {
49056
+ filters: {
49057
+ type: "object",
49058
+ description: 'Search filter body, e.g. { jobTitles: ["CTO"], excludeJobTitles: ["CEO"], regions: ["EMEA"], countries: ["US"], emailQuality: { highPlus: true }, account: { names: ["Acme"] } }. All fields optional; pass {} to match broadly.'
49059
+ },
49060
+ lastReturnedKey: { type: "string", description: "Pagination cursor from a previous page (linear only)." },
49061
+ indexSize: { type: "integer", description: "Page size, 20\u2013100 (default 20)." }
49062
+ },
49063
+ required: ["filters"]
49064
+ },
49065
+ request: {
49066
+ method: "POST",
49067
+ path: "/contact/search",
49068
+ query: { lastReturnedKey: "{lastReturnedKey}", indexSize: "{indexSize}" },
49069
+ body: "{filters}"
49070
+ }
49071
+ },
49072
+ {
49073
+ name: "contact.enrich",
49074
+ class: "read",
49075
+ description: "Match a single contact by known identifiers (email, linkedinUrl, domain, name + company). Returns one best-match preview with matchScore, data-presence flags, and a redeemId (no PII). Free. Follow with contact.redeem.",
49076
+ parameters: {
49077
+ type: "object",
49078
+ properties: {
49079
+ match: {
49080
+ type: "object",
49081
+ description: 'Identifier body, e.g. { email: "jane@acme.com", linkedinUrl: "...", domain: "acme.com", minMatchScore: 30, firstName, lastName, jobTitle, companyName }. At least one identifier recommended.'
49082
+ }
49083
+ },
49084
+ required: ["match"]
49085
+ },
49086
+ request: { method: "POST", path: "/contact/enrich", body: "{match}" }
49087
+ },
49088
+ {
49089
+ name: "contact.redeem",
49090
+ class: "mutation",
49091
+ description: "Fetch full contact profiles (email, mobile, direct dial, LinkedIn, seniority, \u2026) for redeemIds obtained from contact.search/contact.enrich. CONSUMES 1 credit per contact redeemed. 1\u201320 redeemIds per call.",
49092
+ parameters: {
49093
+ type: "object",
49094
+ properties: {
49095
+ redeemIds: {
49096
+ type: "array",
49097
+ items: { type: "string" },
49098
+ description: "redeemId values from contact.search/contact.enrich (1\u201320)."
49099
+ }
49100
+ },
49101
+ required: ["redeemIds"]
49102
+ },
49103
+ request: { method: "POST", path: "/contact/redeem", body: { redeemIds: "{redeemIds}" } },
49104
+ cas: "native-idempotency",
49105
+ externalEffect: true
49106
+ },
49107
+ {
49108
+ name: "account.search",
49109
+ class: "read",
49110
+ description: "Search the Cognism company/account database by name, industry, location, size, revenue. Returns matching accounts with data-presence flags and redeemIds. Free. Follow with account.redeem.",
49111
+ parameters: {
49112
+ type: "object",
49113
+ properties: {
49114
+ filters: {
49115
+ type: "object",
49116
+ description: 'Account filter body, e.g. { names: ["Acme Corp"], industries: ["SaaS"], countries: ["US"], regions: ["EMEA"], employeeCount: {...}, revenue: {...} }. All fields optional.'
49117
+ },
49118
+ lastReturnedKey: { type: "string" },
49119
+ indexSize: { type: "integer", description: "Page size, 20\u2013100." }
49120
+ },
49121
+ required: ["filters"]
49122
+ },
49123
+ request: {
49124
+ method: "POST",
49125
+ path: "/account/search",
49126
+ query: { lastReturnedKey: "{lastReturnedKey}", indexSize: "{indexSize}" },
49127
+ body: "{filters}"
49128
+ }
49129
+ },
49130
+ {
49131
+ name: "account.enrich",
49132
+ class: "read",
49133
+ description: "Match a company/account by domain, website, linkedinUrl, or name. Returns one best-match preview with data-presence flags and a redeemId. Free. Follow with account.redeem.",
49134
+ parameters: {
49135
+ type: "object",
49136
+ properties: {
49137
+ match: {
49138
+ type: "object",
49139
+ description: 'Identifier body, e.g. { domain: "cognism.com" } or { website, linkedinUrl, name }.'
49140
+ }
49141
+ },
49142
+ required: ["match"]
49143
+ },
49144
+ request: { method: "POST", path: "/account/enrich", body: "{match}" }
49145
+ },
49146
+ {
49147
+ name: "account.redeem",
49148
+ class: "read",
49149
+ description: "Fetch full company/account profiles (domain, revenue, employeeCount, industry, \u2026) for redeemIds from account.search/account.enrich. Free (account redeem does not consume credits).",
49150
+ parameters: {
49151
+ type: "object",
49152
+ properties: {
49153
+ redeemIds: {
49154
+ type: "array",
49155
+ items: { type: "string" },
49156
+ description: "redeemId values from account.search/account.enrich."
49157
+ }
49158
+ },
49159
+ required: ["redeemIds"]
49160
+ },
49161
+ request: { method: "POST", path: "/account/redeem", body: { redeemIds: "{redeemIds}" } }
49162
+ }
49163
+ ]
49164
+ });
49165
+
49166
+ // src/connectors/adapters/clay.ts
49167
+ var clayConnector = {
49168
+ manifest: {
49169
+ kind: "clay",
49170
+ displayName: "Clay",
49171
+ description: "Push rows into a Clay table to trigger GTM enrichment workflows. Clay has no general REST API \u2014 this sends a JSON row to your table\u2019s inbound webhook URL; enriched results flow back out via Clay\u2019s HTTP API action (received through the clay webhook provider).",
49172
+ auth: {
49173
+ kind: "api-key",
49174
+ hint: "Optional Clay table webhook token (x-clay-webhook-auth), shown once when you add a webhook source to a table. Leave blank if the table\u2019s webhook has no token. The per-table webhook URL goes in the connection metadata as `webhookUrl`."
49175
+ },
49176
+ category: "crm",
49177
+ defaultConsistencyModel: "advisory",
49178
+ capabilities: [
49179
+ {
49180
+ name: "push_row",
49181
+ class: "mutation",
49182
+ description: "Send a flat JSON object to the configured Clay table webhook URL, creating a new row. Keys map to table columns (no fixed schema). Processing is asynchronous \u2014 the response acknowledges receipt but does not return enriched data.",
49183
+ cas: "native-idempotency",
49184
+ externalEffect: true,
49185
+ parameters: {
49186
+ type: "object",
49187
+ additionalProperties: true,
49188
+ description: 'Flat JSON whose keys become Clay table columns, e.g. { "firstName": "Jane", "email": "jane@acme.com", "company": "Acme" }.'
49189
+ }
49190
+ }
49191
+ ]
49192
+ },
49193
+ async executeMutation(inv) {
49194
+ const url = readWebhookUrl(inv.source.metadata);
49195
+ const body = JSON.stringify(inv.args ?? {});
49196
+ const headers = { "content-type": "application/json" };
49197
+ const token = clayToken(inv.source.credentials);
49198
+ if (token) headers["x-clay-webhook-auth"] = token;
49199
+ const res = await fetch(url, {
49200
+ method: "POST",
49201
+ headers,
49202
+ body,
49203
+ signal: AbortSignal.timeout(15e3)
49204
+ });
49205
+ if (res.status === 401 || res.status === 403) {
49206
+ throw new CredentialsExpired(`Clay rejected the webhook token (${res.status})`, inv.source.id);
49207
+ }
49208
+ if (!res.ok) {
49209
+ throw new Error(`clay push_row ${res.status}: ${(await res.text().catch(() => res.statusText)).slice(0, 200)}`);
49210
+ }
49211
+ const data = await res.json().catch(() => ({}));
49212
+ return {
49213
+ status: "committed",
49214
+ data,
49215
+ committedAt: Date.now(),
49216
+ idempotentReplay: false
49217
+ };
49218
+ },
49219
+ async test(source) {
49220
+ try {
49221
+ readWebhookUrl(source.metadata);
49222
+ return { ok: true };
49223
+ } catch (err) {
49224
+ return { ok: false, reason: err instanceof Error ? err.message : String(err) };
49225
+ }
49226
+ }
49227
+ };
49228
+ function readWebhookUrl(metadata) {
49229
+ const value = metadata.webhookUrl;
49230
+ if (typeof value !== "string" || value.length === 0) {
49231
+ throw new Error("clay DataSource.metadata.webhookUrl is missing");
49232
+ }
49233
+ return new URL(value).toString();
49234
+ }
49235
+ function clayToken(credentials) {
49236
+ if (credentials.kind === "api-key" && credentials.apiKey) return credentials.apiKey;
49237
+ return void 0;
49238
+ }
49239
+
49240
+ // src/connectors/adapters/zoominfo.ts
49241
+ var zoominfoConnector = declarativeRestConnector({
49242
+ kind: "zoominfo",
49243
+ displayName: "ZoomInfo",
49244
+ description: "Search and enrich contacts and companies, plus buyer-intent signals, business Scoops, and company news, via the ZoomInfo GTM Data API. Search is free; enrich consumes bulk-data credits.",
49245
+ auth: {
49246
+ kind: "oauth2",
49247
+ authorizationUrl: "https://api.zoominfo.com/gtm/oauth/v1/authorize",
49248
+ tokenUrl: "https://api.zoominfo.com/gtm/oauth/v1/token",
49249
+ scopes: [
49250
+ "api:data:contact",
49251
+ "api:data:company",
49252
+ "api:data:intent",
49253
+ "api:data:scoops",
49254
+ "api:data:news"
49255
+ ],
49256
+ clientIdEnv: "ZOOMINFO_OAUTH_CLIENT_ID",
49257
+ clientSecretEnv: "ZOOMINFO_OAUTH_CLIENT_SECRET"
49258
+ },
49259
+ category: "sales-intelligence",
49260
+ defaultConsistencyModel: "authoritative",
49261
+ baseUrl: "https://api.zoominfo.com",
49262
+ // `users/usage` is a free GET that proves the access token is valid.
49263
+ test: { method: "GET", path: "/gtm/data/v1/users/usage" },
49264
+ capabilities: [
49265
+ {
49266
+ name: "contact.search",
49267
+ class: "read",
49268
+ description: "Search the contact database by firmographic/persona criteria. Returns ranked matches with stable contactId values and basic info only (no emails/phones). Free. Pass contactId to contact.enrich for full detail.",
49269
+ parameters: {
49270
+ type: "object",
49271
+ properties: {
49272
+ data: {
49273
+ type: "object",
49274
+ description: 'Search criteria wrapped under `data`, e.g. { companyName, jobTitle: ["VP Sales"], managementLevel, zipCode }. Resolve valid field names via lookup.search_fields (entity=contact, fieldType=input).'
49275
+ },
49276
+ pageNumber: { type: "integer", description: "Page number, >= 1 (default 1)." },
49277
+ pageSize: { type: "integer", description: "Page size, 1\u2013100 (default 25)." },
49278
+ sort: { type: "string", description: "Sort field; prefix with - for descending." }
49279
+ },
49280
+ required: ["data"]
49281
+ },
49282
+ request: {
49283
+ method: "POST",
49284
+ path: "/gtm/data/v1/contacts/search",
49285
+ query: { "page[number]": "{pageNumber}", "page[size]": "{pageSize}", sort: "{sort}" },
49286
+ body: { data: "{data}" }
49287
+ }
49288
+ },
49289
+ {
49290
+ name: "company.search",
49291
+ class: "read",
49292
+ description: "Search the company database by firmographic filters (industry, revenue, employee count, geography, tech stack). Returns basic company info and stable companyId values. Free.",
49293
+ parameters: {
49294
+ type: "object",
49295
+ properties: {
49296
+ data: {
49297
+ type: "object",
49298
+ description: "Search criteria under `data`, e.g. { companyName, industry, employeeCount, revenue, location, technologies }. Resolve fields via lookup.search_fields (entity=company, fieldType=input)."
49299
+ },
49300
+ pageNumber: { type: "integer" },
49301
+ pageSize: { type: "integer" },
49302
+ sort: { type: "string" }
49303
+ },
49304
+ required: ["data"]
49305
+ },
49306
+ request: {
49307
+ method: "POST",
49308
+ path: "/gtm/data/v1/companies/search",
49309
+ query: { "page[number]": "{pageNumber}", "page[size]": "{pageSize}", sort: "{sort}" },
49310
+ body: { data: "{data}" }
49311
+ }
49312
+ },
49313
+ {
49314
+ name: "intent.search",
49315
+ class: "read",
49316
+ description: "Search for companies showing buyer-intent signals across 1\u201350 intent topics. Returns ranked companies with intent signal scores. Free.",
49317
+ parameters: {
49318
+ type: "object",
49319
+ properties: {
49320
+ data: {
49321
+ type: "object",
49322
+ description: 'Criteria under `data`, must include topics: ["cybersecurity", "cloud migration"] plus optional filters.'
49323
+ },
49324
+ pageNumber: { type: "integer" },
49325
+ pageSize: { type: "integer" },
49326
+ sort: { type: "string" }
49327
+ },
49328
+ required: ["data"]
49329
+ },
49330
+ request: {
49331
+ method: "POST",
49332
+ path: "/gtm/data/v1/intent/search",
49333
+ query: { "page[number]": "{pageNumber}", "page[size]": "{pageSize}", sort: "{sort}" },
49334
+ body: { data: "{data}" }
49335
+ }
49336
+ },
49337
+ {
49338
+ name: "scoops.search",
49339
+ class: "read",
49340
+ description: "Search real-time business-intelligence signals (Scoops: hiring, expansion, tech changes) across ZoomInfo companies. Free; each scoop counts against the record limit.",
49341
+ parameters: {
49342
+ type: "object",
49343
+ properties: {
49344
+ data: { type: "object", description: "Scoop filter criteria under `data`." },
49345
+ pageNumber: { type: "integer" },
49346
+ pageSize: { type: "integer" },
49347
+ sort: { type: "string", description: "e.g. scoopId | originalPublishedDate; default -originalPublishedDate." }
49348
+ },
49349
+ required: ["data"]
49350
+ },
49351
+ request: {
49352
+ method: "POST",
49353
+ path: "/gtm/data/v1/scoops/search",
49354
+ query: { "page[number]": "{pageNumber}", "page[size]": "{pageSize}", sort: "{sort}" },
49355
+ body: { data: "{data}" }
49356
+ }
49357
+ },
49358
+ {
49359
+ name: "news.search",
49360
+ class: "read",
49361
+ description: "Search news articles across ZoomInfo companies. All filters optional but at least one must be set. Free; each article counts as one record. No sort param.",
49362
+ parameters: {
49363
+ type: "object",
49364
+ properties: {
49365
+ data: { type: "object", description: "News filter criteria under `data`, e.g. { companyId, keywords }." },
49366
+ pageNumber: { type: "integer" },
49367
+ pageSize: { type: "integer" }
49368
+ },
49369
+ required: ["data"]
49370
+ },
49371
+ request: {
49372
+ method: "POST",
49373
+ path: "/gtm/data/v1/news/search",
49374
+ query: { "page[number]": "{pageNumber}", "page[size]": "{pageSize}" },
49375
+ body: { data: "{data}" }
49376
+ }
49377
+ },
49378
+ {
49379
+ name: "contact.enrich",
49380
+ class: "mutation",
49381
+ description: "Enrich up to 25 contacts with full detail (email, phone, jobTitle, 300+ fields). Best practice: contact.search first, then pass contactId. CONSUMES 1 bulk-data credit per matched record returned (waived if under management). `data` carries matchPersonInput + outputFields (+ optional requiredFields).",
49382
+ parameters: {
49383
+ type: "object",
49384
+ properties: {
49385
+ data: {
49386
+ type: "object",
49387
+ description: 'Enrich body under `data`, e.g. { matchPersonInput: [{ contactId } | { firstName, lastName, companyName, emailAddress }], outputFields: ["id","email","phone","jobTitle"], requiredFields: [] }.'
49388
+ }
49389
+ },
49390
+ required: ["data"]
49391
+ },
49392
+ request: { method: "POST", path: "/gtm/data/v1/contacts/enrich", body: { data: "{data}" } },
49393
+ cas: "native-idempotency",
49394
+ externalEffect: true
49395
+ },
49396
+ {
49397
+ name: "company.enrich",
49398
+ class: "mutation",
49399
+ description: "Enrich up to 25 companies with 300+ data points (firmographics, technographics). Best practice: company.search first, then pass companyId. CONSUMES 1 bulk-data credit per matched record. `data` carries matchCompanyInput + outputFields.",
49400
+ parameters: {
49401
+ type: "object",
49402
+ properties: {
49403
+ data: {
49404
+ type: "object",
49405
+ description: 'Enrich body under `data`, e.g. { matchCompanyInput: [{ companyId } | { companyName, website }], outputFields: ["id","name","website","industry","employeeCount","revenue"], requiredFields: [] }.'
49406
+ }
49407
+ },
49408
+ required: ["data"]
49409
+ },
49410
+ request: { method: "POST", path: "/gtm/data/v1/companies/enrich", body: { data: "{data}" } },
49411
+ cas: "native-idempotency",
49412
+ externalEffect: true
49413
+ },
49414
+ {
49415
+ name: "intent.enrich",
49416
+ class: "mutation",
49417
+ description: "Fetch intent signals for a specific known company (companyId, companyName, or companyWebsite) across 1\u201350 topics. CONSUMES bulk-data credits per enriched company.",
49418
+ parameters: {
49419
+ type: "object",
49420
+ properties: {
49421
+ data: { type: "object", description: "Body under `data`, e.g. { companyId, topics: [...] }." },
49422
+ pageNumber: { type: "integer" },
49423
+ pageSize: { type: "integer" }
49424
+ },
49425
+ required: ["data"]
49426
+ },
49427
+ request: {
49428
+ method: "POST",
49429
+ path: "/gtm/data/v1/intent/enrich",
49430
+ query: { "page[number]": "{pageNumber}", "page[size]": "{pageSize}" },
49431
+ body: { data: "{data}" }
49432
+ },
49433
+ cas: "native-idempotency",
49434
+ externalEffect: true
49435
+ },
49436
+ {
49437
+ name: "scoops.enrich",
49438
+ class: "mutation",
49439
+ description: "Fetch Scoops for a specific known company (at least one company identifier). CONSUMES 1 credit per enriched company; each returned scoop counts against the record limit.",
49440
+ parameters: {
49441
+ type: "object",
49442
+ properties: {
49443
+ data: { type: "object", description: "Body under `data`, e.g. { companyId }." },
49444
+ pageNumber: { type: "integer" },
49445
+ pageSize: { type: "integer" }
49446
+ },
49447
+ required: ["data"]
49448
+ },
49449
+ request: {
49450
+ method: "POST",
49451
+ path: "/gtm/data/v1/scoops/enrich",
49452
+ query: { "page[number]": "{pageNumber}", "page[size]": "{pageSize}" },
49453
+ body: { data: "{data}" }
49454
+ },
49455
+ cas: "native-idempotency",
49456
+ externalEffect: true
49457
+ },
49458
+ {
49459
+ name: "news.enrich",
49460
+ class: "mutation",
49461
+ description: "Fetch categorized news coverage for a specific known company (at least one company identifier). CONSUMES bulk-data credits per enriched company.",
49462
+ parameters: {
49463
+ type: "object",
49464
+ properties: {
49465
+ data: { type: "object", description: "Body under `data`, e.g. { companyId }." },
49466
+ pageNumber: { type: "integer" },
49467
+ pageSize: { type: "integer" }
49468
+ },
49469
+ required: ["data"]
49470
+ },
49471
+ request: {
49472
+ method: "POST",
49473
+ path: "/gtm/data/v1/news/enrich",
49474
+ query: { "page[number]": "{pageNumber}", "page[size]": "{pageSize}" },
49475
+ body: { data: "{data}" }
49476
+ },
49477
+ cas: "native-idempotency",
49478
+ externalEffect: true
49479
+ },
49480
+ {
49481
+ name: "lookup.data",
49482
+ class: "read",
49483
+ description: "Retrieve enumerated valid values for a filter field (industries, regions, job functions, management levels, technologies, intent topics). Use to build valid search bodies. Free.",
49484
+ parameters: {
49485
+ type: "object",
49486
+ properties: {
49487
+ fieldName: { type: "string", description: "The filter field to enumerate, e.g. industry, managementLevel." },
49488
+ category: { type: "string" },
49489
+ parentCategory: { type: "string" },
49490
+ subCategory: { type: "string" },
49491
+ vendor: { type: "string" }
49492
+ },
49493
+ required: ["fieldName"]
49494
+ },
49495
+ request: {
49496
+ method: "GET",
49497
+ path: "/gtm/data/v1/lookup/{fieldName}",
49498
+ query: {
49499
+ "filter[category]": "{category}",
49500
+ "filter[parentCategory]": "{parentCategory}",
49501
+ "filter[subCategory]": "{subCategory}",
49502
+ "filter[vendor]": "{vendor}"
49503
+ }
49504
+ }
49505
+ },
49506
+ {
49507
+ name: "lookup.search_fields",
49508
+ class: "read",
49509
+ description: "Discover the valid input and output field names for a search/enrich entity. REQUIRED to build correct search/enrich bodies and enrich outputFields. Free.",
49510
+ parameters: {
49511
+ type: "object",
49512
+ properties: {
49513
+ entity: { type: "string", description: "company | contact | scoop | news | intent." },
49514
+ fieldType: { type: "string", description: "input | output." }
49515
+ },
49516
+ required: ["entity", "fieldType"]
49517
+ },
49518
+ request: {
49519
+ method: "GET",
49520
+ path: "/gtm/data/v1/lookup/search",
49521
+ query: { "filter[entity]": "{entity}", "filter[fieldType]": "{fieldType}" }
49522
+ }
49523
+ },
49524
+ {
49525
+ name: "usage.get",
49526
+ class: "read",
49527
+ description: "Return the current user\u2019s API usage and limits (credits consumed, request counts, entitlements). Free.",
49528
+ parameters: { type: "object", properties: {} },
49529
+ request: { method: "GET", path: "/gtm/data/v1/users/usage" }
49530
+ }
49531
+ ]
49532
+ });
49533
+
49534
+ // src/connectors/adapters/paychex.ts
49535
+ var paychexConnector = declarativeRestConnector({
49536
+ kind: "paychex",
49537
+ displayName: "Paychex",
49538
+ description: "Read HR and payroll data from Paychex: companies, workers, worker profiles, compensation, pay rates, communications, and federal tax setup.",
49539
+ auth: {
49540
+ kind: "oauth2",
49541
+ grantType: "client_credentials",
49542
+ tokenUrl: "https://api.paychex.com/auth/oauth/v2/token",
49543
+ scopes: [],
49544
+ clientIdEnv: "PAYCHEX_OAUTH_CLIENT_ID",
49545
+ clientSecretEnv: "PAYCHEX_OAUTH_CLIENT_SECRET"
49546
+ },
49547
+ category: "hr",
49548
+ defaultConsistencyModel: "authoritative",
49549
+ baseUrl: { metadataKey: "apiBaseUri", fallback: "https://api.paychex.com" },
49550
+ // Listing companies is the cheapest read that proves the client-credentials
49551
+ // token is valid and the app has been granted access.
49552
+ test: { method: "GET", path: "/companies" },
49553
+ capabilities: [
49554
+ {
49555
+ name: "companies.list",
49556
+ class: "read",
49557
+ description: "List all companies the app has been granted access to. Each carries the companyId (UUID) needed for company-scoped calls.",
49558
+ parameters: {
49559
+ type: "object",
49560
+ properties: {
49561
+ limit: { type: "integer", description: "Page size, max 100 (default 25)." },
49562
+ offset: { type: "integer", description: "Zero-based pagination offset." },
49563
+ displayid: { type: "string", description: "Filter by the company display id." }
49564
+ }
49565
+ },
49566
+ request: {
49567
+ method: "GET",
49568
+ path: "/companies",
49569
+ query: { limit: "{limit}", offset: "{offset}", displayid: "{displayid}" }
49570
+ }
49571
+ },
49572
+ {
49573
+ name: "companies.get",
49574
+ class: "read",
49575
+ description: "Read a single company by companyId.",
49576
+ parameters: {
49577
+ type: "object",
49578
+ properties: { companyId: { type: "string" } },
49579
+ required: ["companyId"]
49580
+ },
49581
+ request: { method: "GET", path: "/companies/{companyId}" }
49582
+ },
49583
+ {
49584
+ name: "companies.workers.list",
49585
+ class: "read",
49586
+ description: "List workers (employees + contractors) for a company. Minimal fields per worker (givenName, familyName, legalId, workerId); sub-resources are separate calls. Use statusType=ACTIVE to exclude terminated workers.",
49587
+ parameters: {
49588
+ type: "object",
49589
+ properties: {
49590
+ companyId: { type: "string" },
49591
+ limit: { type: "integer", description: "Page size, max 100." },
49592
+ offset: { type: "integer" },
49593
+ statusType: { type: "string", description: "e.g. ACTIVE to exclude terminated workers." },
49594
+ employeeId: { type: "string", description: "Filter to a specific employee id." }
49595
+ },
49596
+ required: ["companyId"]
49597
+ },
49598
+ request: {
49599
+ method: "GET",
49600
+ path: "/companies/{companyId}/workers",
49601
+ query: {
49602
+ limit: "{limit}",
49603
+ offset: "{offset}",
49604
+ statusType: "{statusType}",
49605
+ employeeId: "{employeeId}"
49606
+ }
49607
+ }
49608
+ },
49609
+ {
49610
+ name: "workers.get",
49611
+ class: "read",
49612
+ description: "Full profile for a single worker: demographics, employment type, hire date, current status, job info.",
49613
+ parameters: {
49614
+ type: "object",
49615
+ properties: { workerId: { type: "string" } },
49616
+ required: ["workerId"]
49617
+ },
49618
+ request: { method: "GET", path: "/workers/{workerId}" }
49619
+ },
49620
+ {
49621
+ name: "workers.compensation.get",
49622
+ class: "read",
49623
+ description: "Compensation overview for a worker: payFrequency, flsaStatus, calculatedAnnualPay, calculatedPayPeriod, defaultOvertimeFactor (with HATEOAS links to payrates and paystandards).",
49624
+ parameters: {
49625
+ type: "object",
49626
+ properties: { workerId: { type: "string" } },
49627
+ required: ["workerId"]
49628
+ },
49629
+ request: { method: "GET", path: "/workers/{workerId}/compensation" }
49630
+ },
49631
+ {
49632
+ name: "workers.compensation.payrates.list",
49633
+ class: "read",
49634
+ description: "All pay rate profiles for a worker (up to 25): rateId, startDate, rateType, amount, standardHours, standardOvertime. `asof` scopes to an effective date.",
49635
+ parameters: {
49636
+ type: "object",
49637
+ properties: {
49638
+ workerId: { type: "string" },
49639
+ asof: { type: "string", description: "Effective date to scope the rates to (YYYY-MM-DD)." }
49640
+ },
49641
+ required: ["workerId"]
49642
+ },
49643
+ request: {
49644
+ method: "GET",
49645
+ path: "/workers/{workerId}/compensation/payrates",
49646
+ query: { asof: "{asof}" }
49647
+ }
49648
+ },
49649
+ {
49650
+ name: "workers.compensation.paystandards.get",
49651
+ class: "read",
49652
+ description: "Pay standards for a worker: payFrequency (WEEKLY/BI_WEEKLY/SEMI_MONTHLY/MONTHLY), defaultOvertimeFactor, calculatedPayPeriod, calculatedAnnualSalary.",
49653
+ parameters: {
49654
+ type: "object",
49655
+ properties: { workerId: { type: "string" } },
49656
+ required: ["workerId"]
49657
+ },
49658
+ request: { method: "GET", path: "/workers/{workerId}/compensation/paystandards" }
49659
+ },
49660
+ {
49661
+ name: "workers.communications.list",
49662
+ class: "read",
49663
+ description: "Worker contact info (email addresses, phone numbers) \u2014 not embedded in the base worker profile.",
49664
+ parameters: {
49665
+ type: "object",
49666
+ properties: { workerId: { type: "string" } },
49667
+ required: ["workerId"]
49668
+ },
49669
+ request: { method: "GET", path: "/workers/{workerId}/communications" }
49670
+ },
49671
+ {
49672
+ name: "workers.federaltax.get",
49673
+ class: "read",
49674
+ description: "W-4 federal tax withholding configuration for a worker.",
49675
+ parameters: {
49676
+ type: "object",
49677
+ properties: { workerId: { type: "string" } },
49678
+ required: ["workerId"]
49679
+ },
49680
+ request: { method: "GET", path: "/workers/{workerId}/federaltax" }
49681
+ }
49682
+ ]
49683
+ });
49684
+
49685
+ // src/connectors/adapters/adp.ts
49686
+ var adpConnector = declarativeRestConnector({
49687
+ kind: "adp",
49688
+ displayName: "ADP",
49689
+ description: "Read HR and payroll data from ADP Workforce Now: workers, worker demographics, pay statements, and pay distributions. Requires mutual-TLS client certificates (see adapter notes) in addition to OAuth2.",
49690
+ auth: {
49691
+ kind: "oauth2",
49692
+ authorizationUrl: "https://accounts.adp.com/auth/oauth/v2/authorize",
49693
+ tokenUrl: "https://accounts.adp.com/auth/oauth/v2/token",
49694
+ scopes: [
49695
+ "hr/workerInformationManagement/read",
49696
+ "payroll/payStatementManagement/read"
49697
+ ],
49698
+ clientIdEnv: "ADP_OAUTH_CLIENT_ID",
49699
+ clientSecretEnv: "ADP_OAUTH_CLIENT_SECRET"
49700
+ },
49701
+ category: "hr",
49702
+ defaultConsistencyModel: "authoritative",
49703
+ baseUrl: "https://api.adp.com",
49704
+ // ADP requires a roleCode on most HR/payroll endpoints; practitioner is the
49705
+ // broadest read role. (PII stays masked unless the caller opts into
49706
+ // `Accept: application/json;masked=false`.)
49707
+ defaultHeaders: { roleCode: "practitioner" },
49708
+ test: { method: "GET", path: "/hr/v2/workers/meta" },
49709
+ capabilities: [
49710
+ {
49711
+ name: "worker.list",
49712
+ class: "read",
49713
+ description: "Collection of all workers for the authenticated client. OData paging via $top/$skip (default 50, max 100); total at meta.totalNumber. The associateOID on each worker is the key for per-worker endpoints. SSN/birth date are masked.",
49714
+ parameters: {
49715
+ type: "object",
49716
+ properties: {
49717
+ top: { type: "integer", description: "OData $top page size (default 50, max 100)." },
49718
+ skip: { type: "integer", description: "OData $skip offset for pagination." },
49719
+ filter: { type: "string", description: "OData $filter expression." },
49720
+ select: { type: "string", description: "OData $select field projection." }
49721
+ }
49722
+ },
49723
+ request: {
49724
+ method: "GET",
49725
+ path: "/hr/v2/workers",
49726
+ query: { $top: "{top}", $skip: "{skip}", $filter: "{filter}", $select: "{select}" }
49727
+ }
49728
+ },
49729
+ {
49730
+ name: "worker.get",
49731
+ class: "read",
49732
+ description: "A single worker by Associate OID (aoid). SSN/birth date are masked unless unmasking is requested.",
49733
+ parameters: {
49734
+ type: "object",
49735
+ properties: {
49736
+ aoid: { type: "string", description: "Associate OID from worker.list." },
49737
+ select: { type: "string", description: "OData $select field projection." }
49738
+ },
49739
+ required: ["aoid"]
49740
+ },
49741
+ request: {
49742
+ method: "GET",
49743
+ path: "/hr/v2/workers/{aoid}",
49744
+ query: { $select: "{select}" }
49745
+ }
49746
+ },
49747
+ {
49748
+ name: "worker.demographics.list",
49749
+ class: "read",
49750
+ description: "Worker collection WITHOUT PII/SPI (no SSN, no full birth date) \u2014 a lighter payload than worker.list. OData paging supported.",
49751
+ parameters: {
49752
+ type: "object",
49753
+ properties: {
49754
+ top: { type: "integer" },
49755
+ skip: { type: "integer" },
49756
+ filter: { type: "string" },
49757
+ select: { type: "string" }
49758
+ }
49759
+ },
49760
+ request: {
49761
+ method: "GET",
49762
+ path: "/hr/v2/worker-demographics",
49763
+ query: { $top: "{top}", $skip: "{skip}", $filter: "{filter}", $select: "{select}" }
49764
+ }
49765
+ },
49766
+ {
49767
+ name: "worker.demographics.get",
49768
+ class: "read",
49769
+ description: "Demographic data for one worker by Associate OID, without PII/SPI.",
49770
+ parameters: {
49771
+ type: "object",
49772
+ properties: {
49773
+ aoid: { type: "string" },
49774
+ select: { type: "string" }
49775
+ },
49776
+ required: ["aoid"]
49777
+ },
49778
+ request: {
49779
+ method: "GET",
49780
+ path: "/hr/v2/worker-demographics/{aoid}",
49781
+ query: { $select: "{select}" }
49782
+ }
49783
+ },
49784
+ {
49785
+ name: "paystatements.list",
49786
+ class: "read",
49787
+ description: "Pay statements for one worker: payDate, net/gross pay amounts, total hours, and a statement image URI. Use numberoflastpaydates to cap results.",
49788
+ parameters: {
49789
+ type: "object",
49790
+ properties: {
49791
+ aoid: { type: "string", description: "Associate OID from worker.list." },
49792
+ numberoflastpaydates: { type: "integer", description: "Limit to the N most recent pay dates." }
49793
+ },
49794
+ required: ["aoid"]
49795
+ },
49796
+ request: {
49797
+ method: "GET",
49798
+ path: "/payroll/v1/workers/{aoid}/pay-statements",
49799
+ query: { numberoflastpaydates: "{numberoflastpaydates}" }
49800
+ }
49801
+ },
49802
+ {
49803
+ name: "paystatements.get",
49804
+ class: "read",
49805
+ description: "Full detail of one pay statement: pay period, net/gross/YTD amounts, earnings, deductions, and memos. The pay-statement id is resolved from paystatements.list.",
49806
+ parameters: {
49807
+ type: "object",
49808
+ properties: {
49809
+ aoid: { type: "string" },
49810
+ payStatementId: { type: "string", description: "Pay statement id from paystatements.list." }
49811
+ },
49812
+ required: ["aoid", "payStatementId"]
49813
+ },
49814
+ request: { method: "GET", path: "/payroll/v1/workers/{aoid}/pay-statements/{payStatementId}" }
49815
+ },
49816
+ {
49817
+ name: "paydistributions.get",
49818
+ class: "read",
49819
+ description: "Direct-deposit distribution setup for one worker: accounts, routing numbers, distribution amounts, and remaining-balance flags.",
49820
+ parameters: {
49821
+ type: "object",
49822
+ properties: { aoid: { type: "string" } },
49823
+ required: ["aoid"]
49824
+ },
49825
+ request: { method: "GET", path: "/payroll/v2/workers/{aoid}/pay-distributions" }
49826
+ }
49827
+ ]
49828
+ });
49829
+
48297
49830
  // src/connectors/adapters/ashby.ts
48298
49831
  var ashbyConnector = declarativeRestConnector({
48299
49832
  kind: "ashby",
@@ -118871,6 +120404,13 @@ export {
118871
120404
  apitableConnector,
118872
120405
  aminosConnector,
118873
120406
  apolloConnector,
120407
+ similarwebConnector,
120408
+ semrushConnector,
120409
+ cognismConnector,
120410
+ clayConnector,
120411
+ zoominfoConnector,
120412
+ paychexConnector,
120413
+ adpConnector,
118874
120414
  ashbyConnector,
118875
120415
  assemblyaiConnector,
118876
120416
  avianConnector,
@@ -119224,4 +120764,4 @@ export {
119224
120764
  pipedreamConnector,
119225
120765
  adapters_exports
119226
120766
  };
119227
- //# sourceMappingURL=chunk-JXXPAUCX.js.map
120767
+ //# sourceMappingURL=chunk-COKK7BOH.js.map