@tangle-network/agent-integrations 0.42.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.
@@ -149,9 +149,11 @@ __export(adapters_exports, {
149
149
  datocmsConnector: () => datocmsConnector,
150
150
  declarativeRestConnector: () => declarativeRestConnector,
151
151
  deepseekConnector: () => deepseekConnector,
152
+ demandbaseConnector: () => demandbaseConnector,
152
153
  denserAiConnector: () => denserAiConnector,
153
154
  descriptConnector: () => descriptConnector,
154
155
  devinConnector: () => devinConnector,
156
+ dialpadConnector: () => dialpadConnector,
155
157
  discordConnector: () => discordConnector,
156
158
  dittofeedConnector: () => dittofeedConnector,
157
159
  doctlyConnector: () => doctlyConnector,
@@ -211,6 +213,7 @@ __export(adapters_exports, {
211
213
  gitlabConnector: () => gitlabConnector,
212
214
  glideConnector: () => glideConnector,
213
215
  gmail: () => gmail,
216
+ gongConnector: () => gongConnector,
214
217
  googleAnalyticsConnector: () => googleAnalyticsConnector,
215
218
  googleBigqueryConnector: () => googleBigqueryConnector,
216
219
  googleCalendar: () => googleCalendar,
@@ -381,6 +384,7 @@ __export(adapters_exports, {
381
384
  oracleDatabaseConnector: () => oracleDatabaseConnector,
382
385
  orimonConnector: () => orimonConnector,
383
386
  outlookMail: () => outlookMail,
387
+ outreachConnector: () => outreachConnector,
384
388
  paddleConnector: () => paddleConnector,
385
389
  pagerdutyConnector: () => pagerdutyConnector,
386
390
  pandadoc: () => pandadoc,
@@ -427,6 +431,7 @@ __export(adapters_exports, {
427
431
  replyIoConnector: () => replyIoConnector,
428
432
  retableConnector: () => retableConnector,
429
433
  retellAiConnector: () => retellAiConnector,
434
+ ringcentralConnector: () => ringcentralConnector,
430
435
  ripplingConnector: () => ripplingConnector,
431
436
  robollyConnector: () => robollyConnector,
432
437
  runwareConnector: () => runwareConnector,
@@ -434,6 +439,7 @@ __export(adapters_exports, {
434
439
  saleorConnector: () => saleorConnector,
435
440
  salesforceConnector: () => salesforceConnector,
436
441
  saleshandyConnector: () => saleshandyConnector,
442
+ salesloftConnector: () => salesloftConnector,
437
443
  sanityConnector: () => sanityConnector,
438
444
  sardisConnector: () => sardisConnector,
439
445
  savvycalConnector: () => savvycalConnector,
@@ -123757,6 +123763,828 @@ var getresponseConnector = declarativeRestConnector({
123757
123763
  ]
123758
123764
  });
123759
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
+
123760
124588
  export {
123761
124589
  InMemoryOAuthFlowStore,
123762
124590
  startOAuthFlow,
@@ -124293,6 +125121,12 @@ export {
124293
125121
  modjoConnector,
124294
125122
  factorsAiConnector,
124295
125123
  getresponseConnector,
125124
+ outreachConnector,
125125
+ salesloftConnector,
125126
+ gongConnector,
125127
+ ringcentralConnector,
125128
+ dialpadConnector,
125129
+ demandbaseConnector,
124296
125130
  adapters_exports
124297
125131
  };
124298
- //# sourceMappingURL=chunk-JKYPEVMS.js.map
125132
+ //# sourceMappingURL=chunk-HRPCFEGL.js.map