@arbium/enterprise-agent-connect 0.0.0-stage → 0.1.2-dev.9022f22

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 (322) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +269 -2
  3. package/dist/connectors/dell-techdirect/connector.json +39 -0
  4. package/dist/connectors/dell-techdirect/index.d.ts +8 -0
  5. package/dist/connectors/dell-techdirect/index.js +7 -0
  6. package/dist/connectors/dell-techdirect/index.js.map +1 -0
  7. package/dist/connectors/dell-techdirect/tools.d.ts +2 -0
  8. package/dist/connectors/dell-techdirect/tools.js +49 -0
  9. package/dist/connectors/dell-techdirect/tools.js.map +1 -0
  10. package/dist/connectors/dell-techdirect/vendor.d.ts +6 -0
  11. package/dist/connectors/dell-techdirect/vendor.js +57 -0
  12. package/dist/connectors/dell-techdirect/vendor.js.map +1 -0
  13. package/dist/connectors/dynamics-365/connector.json +228 -0
  14. package/dist/connectors/dynamics-365/index.d.ts +8 -0
  15. package/dist/connectors/dynamics-365/index.js +10 -0
  16. package/dist/connectors/dynamics-365/index.js.map +1 -0
  17. package/dist/connectors/dynamics-365/tools.d.ts +35 -0
  18. package/dist/connectors/dynamics-365/tools.js +806 -0
  19. package/dist/connectors/dynamics-365/tools.js.map +1 -0
  20. package/dist/connectors/dynamics-365/vendor.d.ts +9 -0
  21. package/dist/connectors/dynamics-365/vendor.js +110 -0
  22. package/dist/connectors/dynamics-365/vendor.js.map +1 -0
  23. package/dist/connectors/entra/connector.json +85 -0
  24. package/dist/connectors/entra/index.d.ts +2 -0
  25. package/dist/connectors/entra/index.js +4 -0
  26. package/dist/connectors/entra/index.js.map +1 -0
  27. package/dist/connectors/entra/tools.d.ts +14 -0
  28. package/dist/connectors/entra/tools.js +262 -0
  29. package/dist/connectors/entra/tools.js.map +1 -0
  30. package/dist/connectors/fedex/connector.json +118 -0
  31. package/dist/connectors/fedex/index.d.ts +8 -0
  32. package/dist/connectors/fedex/index.js +7 -0
  33. package/dist/connectors/fedex/index.js.map +1 -0
  34. package/dist/connectors/fedex/tools.d.ts +3 -0
  35. package/dist/connectors/fedex/tools.js +152 -0
  36. package/dist/connectors/fedex/tools.js.map +1 -0
  37. package/dist/connectors/fedex/vendor.d.ts +7 -0
  38. package/dist/connectors/fedex/vendor.js +98 -0
  39. package/dist/connectors/fedex/vendor.js.map +1 -0
  40. package/dist/connectors/gong/connector.json +127 -0
  41. package/dist/connectors/gong/index.d.ts +8 -0
  42. package/dist/connectors/gong/index.js +7 -0
  43. package/dist/connectors/gong/index.js.map +1 -0
  44. package/dist/connectors/gong/tools.d.ts +8 -0
  45. package/dist/connectors/gong/tools.js +424 -0
  46. package/dist/connectors/gong/tools.js.map +1 -0
  47. package/dist/connectors/gong/vendor.d.ts +4 -0
  48. package/dist/connectors/gong/vendor.js +89 -0
  49. package/dist/connectors/gong/vendor.js.map +1 -0
  50. package/dist/connectors/http/index.d.ts +34 -0
  51. package/dist/connectors/http/index.js +325 -0
  52. package/dist/connectors/http/index.js.map +1 -0
  53. package/dist/connectors/intune/connector.json +106 -0
  54. package/dist/connectors/intune/index.d.ts +2 -0
  55. package/dist/connectors/intune/index.js +4 -0
  56. package/dist/connectors/intune/index.js.map +1 -0
  57. package/dist/connectors/intune/tools.d.ts +12 -0
  58. package/dist/connectors/intune/tools.js +416 -0
  59. package/dist/connectors/intune/tools.js.map +1 -0
  60. package/dist/connectors/jamf/connector.json +182 -0
  61. package/dist/connectors/jamf/index.d.ts +8 -0
  62. package/dist/connectors/jamf/index.js +7 -0
  63. package/dist/connectors/jamf/index.js.map +1 -0
  64. package/dist/connectors/jamf/tools.d.ts +7 -0
  65. package/dist/connectors/jamf/tools.js +659 -0
  66. package/dist/connectors/jamf/tools.js.map +1 -0
  67. package/dist/connectors/jamf/vendor.d.ts +5 -0
  68. package/dist/connectors/jamf/vendor.js +70 -0
  69. package/dist/connectors/jamf/vendor.js.map +1 -0
  70. package/dist/connectors/jira/connector.json +272 -0
  71. package/dist/connectors/jira/index.d.ts +8 -0
  72. package/dist/connectors/jira/index.js +7 -0
  73. package/dist/connectors/jira/index.js.map +1 -0
  74. package/dist/connectors/jira/jql.d.ts +4 -0
  75. package/dist/connectors/jira/jql.js +67 -0
  76. package/dist/connectors/jira/jql.js.map +1 -0
  77. package/dist/connectors/jira/tools.d.ts +3 -0
  78. package/dist/connectors/jira/tools.js +464 -0
  79. package/dist/connectors/jira/tools.js.map +1 -0
  80. package/dist/connectors/jira/vendor.d.ts +3 -0
  81. package/dist/connectors/jira/vendor.js +100 -0
  82. package/dist/connectors/jira/vendor.js.map +1 -0
  83. package/dist/connectors/microsoft/client.d.ts +66 -0
  84. package/dist/connectors/microsoft/client.js +452 -0
  85. package/dist/connectors/microsoft/client.js.map +1 -0
  86. package/dist/connectors/microsoft/provider.json +118 -0
  87. package/dist/connectors/netsuite/connector.json +317 -0
  88. package/dist/connectors/netsuite/index.d.ts +8 -0
  89. package/dist/connectors/netsuite/index.js +7 -0
  90. package/dist/connectors/netsuite/index.js.map +1 -0
  91. package/dist/connectors/netsuite/tools.d.ts +24 -0
  92. package/dist/connectors/netsuite/tools.js +447 -0
  93. package/dist/connectors/netsuite/tools.js.map +1 -0
  94. package/dist/connectors/netsuite/vendor.d.ts +26 -0
  95. package/dist/connectors/netsuite/vendor.js +247 -0
  96. package/dist/connectors/netsuite/vendor.js.map +1 -0
  97. package/dist/connectors/odata/index.d.ts +33 -0
  98. package/dist/connectors/odata/index.js +460 -0
  99. package/dist/connectors/odata/index.js.map +1 -0
  100. package/dist/connectors/okta/connector.json +194 -0
  101. package/dist/connectors/okta/index.d.ts +8 -0
  102. package/dist/connectors/okta/index.js +7 -0
  103. package/dist/connectors/okta/index.js.map +1 -0
  104. package/dist/connectors/okta/tools.d.ts +6 -0
  105. package/dist/connectors/okta/tools.js +429 -0
  106. package/dist/connectors/okta/tools.js.map +1 -0
  107. package/dist/connectors/okta/vendor.d.ts +14 -0
  108. package/dist/connectors/okta/vendor.js +204 -0
  109. package/dist/connectors/okta/vendor.js.map +1 -0
  110. package/dist/connectors/outlook-calendar/connector.json +136 -0
  111. package/dist/connectors/outlook-calendar/index.d.ts +2 -0
  112. package/dist/connectors/outlook-calendar/index.js +4 -0
  113. package/dist/connectors/outlook-calendar/index.js.map +1 -0
  114. package/dist/connectors/outlook-calendar/tools.d.ts +65 -0
  115. package/dist/connectors/outlook-calendar/tools.js +398 -0
  116. package/dist/connectors/outlook-calendar/tools.js.map +1 -0
  117. package/dist/connectors/outlook-mail/connector.json +154 -0
  118. package/dist/connectors/outlook-mail/index.d.ts +2 -0
  119. package/dist/connectors/outlook-mail/index.js +4 -0
  120. package/dist/connectors/outlook-mail/index.js.map +1 -0
  121. package/dist/connectors/outlook-mail/tools.d.ts +8 -0
  122. package/dist/connectors/outlook-mail/tools.js +236 -0
  123. package/dist/connectors/outlook-mail/tools.js.map +1 -0
  124. package/dist/connectors/salesforce/connector.json +122 -0
  125. package/dist/connectors/salesforce/index.d.ts +8 -0
  126. package/dist/connectors/salesforce/index.js +7 -0
  127. package/dist/connectors/salesforce/index.js.map +1 -0
  128. package/dist/connectors/salesforce/soql.d.ts +3 -0
  129. package/dist/connectors/salesforce/soql.js +60 -0
  130. package/dist/connectors/salesforce/soql.js.map +1 -0
  131. package/dist/connectors/salesforce/tools.d.ts +9 -0
  132. package/dist/connectors/salesforce/tools.js +234 -0
  133. package/dist/connectors/salesforce/tools.js.map +1 -0
  134. package/dist/connectors/salesforce/vendor.d.ts +3 -0
  135. package/dist/connectors/salesforce/vendor.js +113 -0
  136. package/dist/connectors/salesforce/vendor.js.map +1 -0
  137. package/dist/connectors/sap-s4hana/connector.json +264 -0
  138. package/dist/connectors/sap-s4hana/index.d.ts +8 -0
  139. package/dist/connectors/sap-s4hana/index.js +7 -0
  140. package/dist/connectors/sap-s4hana/index.js.map +1 -0
  141. package/dist/connectors/sap-s4hana/tools.d.ts +4 -0
  142. package/dist/connectors/sap-s4hana/tools.js +761 -0
  143. package/dist/connectors/sap-s4hana/tools.js.map +1 -0
  144. package/dist/connectors/sap-s4hana/vendor.d.ts +5 -0
  145. package/dist/connectors/sap-s4hana/vendor.js +176 -0
  146. package/dist/connectors/sap-s4hana/vendor.js.map +1 -0
  147. package/dist/connectors/servicenow/connector.json +228 -0
  148. package/dist/connectors/servicenow/index.d.ts +8 -0
  149. package/dist/connectors/servicenow/index.js +7 -0
  150. package/dist/connectors/servicenow/index.js.map +1 -0
  151. package/dist/connectors/servicenow/tools.d.ts +4 -0
  152. package/dist/connectors/servicenow/tools.js +884 -0
  153. package/dist/connectors/servicenow/tools.js.map +1 -0
  154. package/dist/connectors/servicenow/vendor.d.ts +3 -0
  155. package/dist/connectors/servicenow/vendor.js +106 -0
  156. package/dist/connectors/servicenow/vendor.js.map +1 -0
  157. package/dist/connectors/sharepoint-files/connector.json +194 -0
  158. package/dist/connectors/sharepoint-files/excel.d.ts +16 -0
  159. package/dist/connectors/sharepoint-files/excel.js +300 -0
  160. package/dist/connectors/sharepoint-files/excel.js.map +1 -0
  161. package/dist/connectors/sharepoint-files/index.d.ts +8 -0
  162. package/dist/connectors/sharepoint-files/index.js +12 -0
  163. package/dist/connectors/sharepoint-files/index.js.map +1 -0
  164. package/dist/connectors/sharepoint-files/tools.d.ts +52 -0
  165. package/dist/connectors/sharepoint-files/tools.js +365 -0
  166. package/dist/connectors/sharepoint-files/tools.js.map +1 -0
  167. package/dist/connectors/sharepoint-files/vendor.d.ts +11 -0
  168. package/dist/connectors/sharepoint-files/vendor.js +167 -0
  169. package/dist/connectors/sharepoint-files/vendor.js.map +1 -0
  170. package/dist/connectors/slack/connector.json +148 -0
  171. package/dist/connectors/slack/index.d.ts +8 -0
  172. package/dist/connectors/slack/index.js +7 -0
  173. package/dist/connectors/slack/index.js.map +1 -0
  174. package/dist/connectors/slack/tools.d.ts +3 -0
  175. package/dist/connectors/slack/tools.js +355 -0
  176. package/dist/connectors/slack/tools.js.map +1 -0
  177. package/dist/connectors/slack/vendor.d.ts +17 -0
  178. package/dist/connectors/slack/vendor.js +189 -0
  179. package/dist/connectors/slack/vendor.js.map +1 -0
  180. package/dist/connectors/soap/index.d.ts +16 -0
  181. package/dist/connectors/soap/index.js +248 -0
  182. package/dist/connectors/soap/index.js.map +1 -0
  183. package/dist/connectors/soap/xml.d.ts +12 -0
  184. package/dist/connectors/soap/xml.js +126 -0
  185. package/dist/connectors/soap/xml.js.map +1 -0
  186. package/dist/connectors/sql/engines.d.ts +58 -0
  187. package/dist/connectors/sql/engines.js +292 -0
  188. package/dist/connectors/sql/engines.js.map +1 -0
  189. package/dist/connectors/sql/index.d.ts +16 -0
  190. package/dist/connectors/sql/index.js +214 -0
  191. package/dist/connectors/sql/index.js.map +1 -0
  192. package/dist/connectors/teams/connector.json +298 -0
  193. package/dist/connectors/teams/index.d.ts +2 -0
  194. package/dist/connectors/teams/index.js +5 -0
  195. package/dist/connectors/teams/index.js.map +1 -0
  196. package/dist/connectors/teams/tools.d.ts +7 -0
  197. package/dist/connectors/teams/tools.js +392 -0
  198. package/dist/connectors/teams/tools.js.map +1 -0
  199. package/dist/connectors/workday/connector.json +188 -0
  200. package/dist/connectors/workday/index.d.ts +8 -0
  201. package/dist/connectors/workday/index.js +7 -0
  202. package/dist/connectors/workday/index.js.map +1 -0
  203. package/dist/connectors/workday/tools.d.ts +33 -0
  204. package/dist/connectors/workday/tools.js +410 -0
  205. package/dist/connectors/workday/tools.js.map +1 -0
  206. package/dist/connectors/workday/vendor.d.ts +18 -0
  207. package/dist/connectors/workday/vendor.js +199 -0
  208. package/dist/connectors/workday/vendor.js.map +1 -0
  209. package/dist/packages/connector-kit/src/branding.d.ts +57 -0
  210. package/dist/packages/connector-kit/src/branding.js +102 -0
  211. package/dist/packages/connector-kit/src/branding.js.map +1 -0
  212. package/dist/packages/connector-kit/src/certificate.d.ts +19 -0
  213. package/dist/packages/connector-kit/src/certificate.js +84 -0
  214. package/dist/packages/connector-kit/src/certificate.js.map +1 -0
  215. package/dist/packages/connector-kit/src/common.d.ts +36 -0
  216. package/dist/packages/connector-kit/src/common.js +110 -0
  217. package/dist/packages/connector-kit/src/common.js.map +1 -0
  218. package/dist/packages/connector-kit/src/connector.d.ts +1356 -0
  219. package/dist/packages/connector-kit/src/connector.js +1073 -0
  220. package/dist/packages/connector-kit/src/connector.js.map +1 -0
  221. package/dist/packages/connector-kit/src/fetch.d.ts +6 -0
  222. package/dist/packages/connector-kit/src/fetch.js +44 -0
  223. package/dist/packages/connector-kit/src/fetch.js.map +1 -0
  224. package/dist/packages/connector-kit/src/index.d.ts +5 -0
  225. package/dist/packages/connector-kit/src/index.js +6 -0
  226. package/dist/packages/connector-kit/src/index.js.map +1 -0
  227. package/dist/packages/connector-kit/src/oauth.d.ts +15 -0
  228. package/dist/packages/connector-kit/src/oauth.js +98 -0
  229. package/dist/packages/connector-kit/src/oauth.js.map +1 -0
  230. package/dist/packages/connector-kit/src/types.d.ts +87 -0
  231. package/dist/packages/connector-kit/src/types.js +20 -0
  232. package/dist/packages/connector-kit/src/types.js.map +1 -0
  233. package/dist/packages/server/migrations/0001_tables.sql +268 -0
  234. package/dist/packages/server/migrations/0002_organizations.sql +72 -0
  235. package/dist/packages/server/migrations/0003_drop_unused.sql +3 -0
  236. package/dist/packages/server/migrations/0004_trigger_runners.sql +15 -0
  237. package/dist/packages/server/migrations/0005_run_runner.sql +3 -0
  238. package/dist/packages/server/migrations/0006_approvals.sql +36 -0
  239. package/dist/packages/server/migrations/0007_app_events.sql +110 -0
  240. package/dist/packages/server/migrations/rollback/to-legacy.sql +90 -0
  241. package/dist/packages/server/src/api.d.ts +3730 -0
  242. package/dist/packages/server/src/api.js +820 -0
  243. package/dist/packages/server/src/api.js.map +1 -0
  244. package/dist/packages/server/src/app.d.ts +23 -0
  245. package/dist/packages/server/src/app.js +467 -0
  246. package/dist/packages/server/src/app.js.map +1 -0
  247. package/dist/packages/server/src/builtin.d.ts +5 -0
  248. package/dist/packages/server/src/builtin.js +42 -0
  249. package/dist/packages/server/src/builtin.js.map +1 -0
  250. package/dist/packages/server/src/consent.d.ts +27 -0
  251. package/dist/packages/server/src/consent.js +36 -0
  252. package/dist/packages/server/src/consent.js.map +1 -0
  253. package/dist/packages/server/src/events/admin.d.ts +156 -0
  254. package/dist/packages/server/src/events/admin.js +255 -0
  255. package/dist/packages/server/src/events/admin.js.map +1 -0
  256. package/dist/packages/server/src/events/deliver.d.ts +43 -0
  257. package/dist/packages/server/src/events/deliver.js +129 -0
  258. package/dist/packages/server/src/events/deliver.js.map +1 -0
  259. package/dist/packages/server/src/events/runtime.d.ts +28 -0
  260. package/dist/packages/server/src/events/runtime.js +400 -0
  261. package/dist/packages/server/src/events/runtime.js.map +1 -0
  262. package/dist/packages/server/src/events/store.d.ts +172 -0
  263. package/dist/packages/server/src/events/store.js +275 -0
  264. package/dist/packages/server/src/events/store.js.map +1 -0
  265. package/dist/packages/server/src/index.d.ts +40 -0
  266. package/dist/packages/server/src/index.js +186 -0
  267. package/dist/packages/server/src/index.js.map +1 -0
  268. package/dist/packages/server/src/migrate.d.ts +11 -0
  269. package/dist/packages/server/src/migrate.js +134 -0
  270. package/dist/packages/server/src/migrate.js.map +1 -0
  271. package/dist/packages/server/src/openapi.d.ts +4 -0
  272. package/dist/packages/server/src/openapi.js +101 -0
  273. package/dist/packages/server/src/openapi.js.map +1 -0
  274. package/dist/packages/server/src/queue.d.ts +10 -0
  275. package/dist/packages/server/src/queue.js +45 -0
  276. package/dist/packages/server/src/queue.js.map +1 -0
  277. package/dist/packages/server/src/secrets.d.ts +19 -0
  278. package/dist/packages/server/src/secrets.js +76 -0
  279. package/dist/packages/server/src/secrets.js.map +1 -0
  280. package/dist/packages/server/src/server.d.ts +1 -0
  281. package/dist/packages/server/src/server.js +82 -0
  282. package/dist/packages/server/src/server.js.map +1 -0
  283. package/dist/packages/server/src/service.d.ts +767 -0
  284. package/dist/packages/server/src/service.js +924 -0
  285. package/dist/packages/server/src/service.js.map +1 -0
  286. package/dist/packages/server/src/store.d.ts +157 -0
  287. package/dist/packages/server/src/store.js +415 -0
  288. package/dist/packages/server/src/store.js.map +1 -0
  289. package/dist/packages/server/src/teams/activity.d.ts +123 -0
  290. package/dist/packages/server/src/teams/activity.js +188 -0
  291. package/dist/packages/server/src/teams/activity.js.map +1 -0
  292. package/dist/packages/server/src/teams/admin.d.ts +335 -0
  293. package/dist/packages/server/src/teams/admin.js +699 -0
  294. package/dist/packages/server/src/teams/admin.js.map +1 -0
  295. package/dist/packages/server/src/teams/approval.d.ts +57 -0
  296. package/dist/packages/server/src/teams/approval.js +118 -0
  297. package/dist/packages/server/src/teams/approval.js.map +1 -0
  298. package/dist/packages/server/src/teams/bot.d.ts +25 -0
  299. package/dist/packages/server/src/teams/bot.js +124 -0
  300. package/dist/packages/server/src/teams/bot.js.map +1 -0
  301. package/dist/packages/server/src/teams/claude.d.ts +46 -0
  302. package/dist/packages/server/src/teams/claude.js +165 -0
  303. package/dist/packages/server/src/teams/claude.js.map +1 -0
  304. package/dist/packages/server/src/teams/jwt.d.ts +17 -0
  305. package/dist/packages/server/src/teams/jwt.js +121 -0
  306. package/dist/packages/server/src/teams/jwt.js.map +1 -0
  307. package/dist/packages/server/src/teams/package.d.ts +79 -0
  308. package/dist/packages/server/src/teams/package.js +319 -0
  309. package/dist/packages/server/src/teams/package.js.map +1 -0
  310. package/dist/packages/server/src/teams/provision.d.ts +84 -0
  311. package/dist/packages/server/src/teams/provision.js +505 -0
  312. package/dist/packages/server/src/teams/provision.js.map +1 -0
  313. package/dist/packages/server/src/teams/runner.d.ts +80 -0
  314. package/dist/packages/server/src/teams/runner.js +187 -0
  315. package/dist/packages/server/src/teams/runner.js.map +1 -0
  316. package/dist/packages/server/src/teams/runtime.d.ts +91 -0
  317. package/dist/packages/server/src/teams/runtime.js +679 -0
  318. package/dist/packages/server/src/teams/runtime.js.map +1 -0
  319. package/dist/packages/server/src/teams/store.d.ts +233 -0
  320. package/dist/packages/server/src/teams/store.js +507 -0
  321. package/dist/packages/server/src/teams/store.js.map +1 -0
  322. package/package.json +68 -4
@@ -0,0 +1,57 @@
1
+ import { createHash } from "node:crypto";
2
+ import { clientCredentials, vendorError } from "../../packages/connector-kit/src/oauth.js";
3
+ import { ConnectError, } from "../../packages/connector-kit/src/types.js";
4
+ // Dell TechDirect Warranty API (v5): a client ID and secret Dell issues once it approves the
5
+ // company's API request, OAuth client credentials at apigtwb2c.us.dell.com/auth/oauth/v2/token
6
+ // (form-encoded, tokens last 3600 seconds), then asset-entitlements by service tag. Dell's
7
+ // reference sits behind a TechDirect sign-in; these addresses are the ones Dell's community
8
+ // threads and integrators document (see the connector's notes). Not yet tried with real keys.
9
+ export const DELL_API = "https://apigtwb2c.us.dell.com";
10
+ export const DELL_TOKEN_URL = `${DELL_API}/auth/oauth/v2/token`;
11
+ export const ENTITLEMENTS_PATH = "/PROD/sbil/eapi/v5/asset-entitlements";
12
+ // A tag no machine has: Dell answers it as invalid, which proves the Warranty API is granted
13
+ // without looking up anyone's asset.
14
+ export const PROBE_SERVICE_TAG = "0000000";
15
+ const MISSING_KEYS = "Enter the client ID and client secret from Dell TechDirect (APIs, then API Key Management). Dell issues them only after it approves your Warranty API request, so this app cannot connect until then.";
16
+ export function dellVendor(fetchImpl = fetch) {
17
+ const oauth = clientCredentials("Dell TechDirect", fetchImpl);
18
+ const creds = (c) => {
19
+ if (!c.secret.client_id || !c.secret.client_secret)
20
+ throw new ConnectError(MISSING_KEYS);
21
+ return {
22
+ tokenUrl: DELL_TOKEN_URL,
23
+ clientId: c.secret.client_id,
24
+ clientSecret: c.secret.client_secret,
25
+ };
26
+ };
27
+ const call = (c, request) => oauth.call(creds(c), DELL_API, request);
28
+ return {
29
+ async connect(fields) {
30
+ const clientId = fields.client_id?.trim() ?? "";
31
+ const clientSecret = fields.client_secret?.trim() ?? "";
32
+ const conn = {
33
+ config: {
34
+ keyId: createHash("sha256").update(clientId).digest("hex").slice(0, 12),
35
+ },
36
+ secret: { client_id: clientId, client_secret: clientSecret },
37
+ };
38
+ await oauth.signIn(creds(conn));
39
+ return { ...conn, accountLabel: `Client ID ending ${clientId.slice(-4)}` };
40
+ },
41
+ call,
42
+ checks: {
43
+ async warranty(connection) {
44
+ const res = await call(connection, {
45
+ method: "GET",
46
+ path: `${ENTITLEMENTS_PATH}?servicetags=${PROBE_SERVICE_TAG}`,
47
+ });
48
+ if (res.status === 401 || res.status === 403)
49
+ throw new ConnectError(`Dell TechDirect refused the Warranty API for these keys. Check in TechDirect that the key is approved for the Warranty API. (${vendorError(res.data) || res.status})`);
50
+ if (res.status < 200 || res.status >= 300 || !Array.isArray(res.data))
51
+ throw new ConnectError(`Dell TechDirect Warranty API answered ${res.status}: ${vendorError(res.data) || "an unexpected answer"}`);
52
+ return { values: ["Warranty lookup"] };
53
+ },
54
+ },
55
+ };
56
+ }
57
+ //# sourceMappingURL=vendor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vendor.js","sourceRoot":"","sources":["../../../connectors/dell-techdirect/vendor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,228 @@
1
+ {
2
+ "id": "dynamics-365",
3
+ "name": "Dynamics 365",
4
+ "description": "Let agents work with your Dynamics 365 customers, opportunities and cases: find and update accounts and contacts, close opportunities, resolve cases, add notes, tasks and phone calls, and read other tables you list.",
5
+ "logo": "/brand/registry/dynamics-365.svg",
6
+ "identity": "Your Microsoft app registration, through the Microsoft connection, added to one Dynamics 365 environment as an application user. It reaches only what its security role allows. Each API key can be kept to records of chosen business units or teams.",
7
+ "provider": "microsoft",
8
+ "order": 8,
9
+ "accountKey": "environment",
10
+ "connectionKind": "guided",
11
+ "scopes": ["prvReadUser"],
12
+ "setup": [
13
+ {
14
+ "title": "Create a security role for agents",
15
+ "body": "In your Dynamics 365 environment, create a role that gives only what agents need: {scopes}. Each is a privilege on a table, for example prvReadAccount is Read on Account and prvCreateActivity is Create on Activity. Choose Organization access to let agents reach every record, or Business Unit to keep them to one business unit. You can keep each agent to some business units or teams here later.",
16
+ "link": {
17
+ "label": "Open Power Platform admin center",
18
+ "href": "https://admin.powerplatform.microsoft.com/environments"
19
+ },
20
+ "click": [
21
+ "In the Power Platform admin center, go to Manage, then Environments, and open your environment.",
22
+ "Select Settings, then Users + permissions, then Security roles, and select New role.",
23
+ "Name it {brand.microsoft.appName} agents, keep the root business unit and select Save.",
24
+ "For each privilege above, find its table (Account, Contact, Opportunity, Case, Activity, Note, User) and set that privilege's access level. Leave everything else at None and select Save."
25
+ ],
26
+ "copy": [
27
+ "# Needs the Azure CLI, signed in as a Dynamics 365 system administrator. Replace the address with your environment URL.",
28
+ "$environment = 'https://your-org.crm.dynamics.com'",
29
+ "$api = \"$environment/api/data/v9.2\"",
30
+ "$headers = @{ Authorization = \"Bearer $(az account get-access-token --resource $environment --query accessToken -o tsv)\"; 'Content-Type' = 'application/json' }",
31
+ "$root = (Invoke-RestMethod -Headers $headers \"$api/businessunits?`$filter=_parentbusinessunitid_value eq null&`$select=businessunitid\").value[0].businessunitid",
32
+ "$role = Invoke-RestMethod -Method Post -Headers ($headers + @{ Prefer = 'return=representation' }) \"$api/roles\" -Body (@{ name = '{brand.microsoft.appName} agents'; 'businessunitid@odata.bind' = \"/businessunits($root)\" } | ConvertTo-Json)",
33
+ "# Global is Organization access; use Local to keep agents to the business unit.",
34
+ "$names = @(",
35
+ " '{scope}'",
36
+ ")",
37
+ "$privileges = foreach ($name in $names) { @{ PrivilegeId = (Invoke-RestMethod -Headers $headers \"$api/privileges?`$filter=name eq '$name'&`$select=privilegeid\").value[0].privilegeid; Depth = 'Global'; BusinessUnitId = $root } }",
38
+ "Invoke-RestMethod -Method Post -Headers $headers \"$api/roles($($role.roleid))/Microsoft.Dynamics.CRM.AddPrivilegesRole\" -Body (@{ Privileges = @($privileges) } | ConvertTo-Json -Depth 4)"
39
+ ],
40
+ "shell": "powershell"
41
+ },
42
+ {
43
+ "title": "Add the app as an application user",
44
+ "body": "Agents act as this application user. It needs no license, and the app needs no API permission in Microsoft Entra for this: what agents can reach is what the security role allows. Use the Application (client) ID {clientId}. With Commands, the application user goes to your own business unit.",
45
+ "click": [
46
+ "In the environment, select Settings, then Users + permissions, then Application users.",
47
+ "Select New app user, then Add an app, search for {clientId} and select Add.",
48
+ "Choose the business unit agents work in (the root one reaches every unit the role allows).",
49
+ "Under Security roles select the pencil, choose {brand.microsoft.appName} agents, then select Save and Create."
50
+ ],
51
+ "copy": [
52
+ "# Needs the Power Platform CLI (pac). Replace the address with your environment URL.",
53
+ "$environment = 'https://your-org.crm.dynamics.com'",
54
+ "pac auth create --environment $environment",
55
+ "pac admin assign-user --environment $environment --user '{clientId}' --role '{brand.microsoft.appName} agents' --application-user"
56
+ ],
57
+ "shell": "powershell"
58
+ },
59
+ {
60
+ "title": "Copy the environment URL",
61
+ "body": "The address of the environment agents will use, such as https://your-org.crm.dynamics.com. Enter it below.",
62
+ "click": [
63
+ "In the Power Platform admin center, go to Manage, then Environments, and open your environment.",
64
+ "Copy the Environment URL from its Details."
65
+ ],
66
+ "copy": ["pac admin list"],
67
+ "shell": "powershell"
68
+ }
69
+ ],
70
+ "afterConnect": [],
71
+ "fields": [
72
+ {
73
+ "id": "environment",
74
+ "label": "Environment URL",
75
+ "help": "From the environment's Details in the Power Platform admin center.",
76
+ "placeholder": "https://your-org.crm.dynamics.com",
77
+ "secret": false
78
+ }
79
+ ],
80
+ "capabilities": [
81
+ {
82
+ "id": "read_customers",
83
+ "label": "Read accounts and contacts",
84
+ "description": "Find accounts and contacts and read their details.",
85
+ "scopes": ["prvReadAccount", "prvReadContact"],
86
+ "permissions": [],
87
+ "tools": ["dynamics_search_customers", "dynamics_get_customer"],
88
+ "forbidden": "Dynamics 365 refused this. The agents' security role needs {scopes}."
89
+ },
90
+ {
91
+ "id": "write_customers",
92
+ "label": "Create and update accounts and contacts",
93
+ "description": "Add accounts and contacts and change their details, such as phone numbers and addresses.",
94
+ "scopes": [
95
+ "prvReadAccount",
96
+ "prvCreateAccount",
97
+ "prvWriteAccount",
98
+ "prvAppendToAccount",
99
+ "prvReadContact",
100
+ "prvCreateContact",
101
+ "prvWriteContact",
102
+ "prvAppendContact"
103
+ ],
104
+ "permissions": [],
105
+ "tools": ["dynamics_create_customer", "dynamics_update_customer"],
106
+ "forbidden": "Dynamics 365 refused this. The agents' security role needs {scopes}."
107
+ },
108
+ {
109
+ "id": "read_opportunities",
110
+ "label": "Read opportunities",
111
+ "description": "Find opportunities and read their value, stage, close date and status.",
112
+ "scopes": ["prvReadOpportunity"],
113
+ "permissions": [],
114
+ "tools": ["dynamics_search_opportunities", "dynamics_get_opportunity"],
115
+ "forbidden": "Dynamics 365 refused this. The agents' security role needs {scopes}."
116
+ },
117
+ {
118
+ "id": "close_opportunities",
119
+ "label": "Close opportunities as won or lost",
120
+ "description": "Close open opportunities, with a reason and, for a win, the actual revenue.",
121
+ "scopes": ["prvReadOpportunity", "prvWriteOpportunity", "prvCreateActivity"],
122
+ "permissions": [],
123
+ "tools": ["dynamics_close_opportunity"],
124
+ "forbidden": "Dynamics 365 refused this. The agents' security role needs {scopes}."
125
+ },
126
+ {
127
+ "id": "read_cases",
128
+ "label": "Read cases",
129
+ "description": "Find customer service cases and read their status, priority and description.",
130
+ "scopes": ["prvReadIncident"],
131
+ "permissions": [],
132
+ "tools": ["dynamics_search_cases", "dynamics_get_case"],
133
+ "forbidden": "Dynamics 365 refused this. The agents' security role needs {scopes}."
134
+ },
135
+ {
136
+ "id": "close_cases",
137
+ "label": "Resolve and cancel cases",
138
+ "description": "Resolve cases with a resolution, or cancel them.",
139
+ "scopes": ["prvReadIncident", "prvWriteIncident", "prvCreateActivity"],
140
+ "permissions": [],
141
+ "tools": ["dynamics_close_case"],
142
+ "forbidden": "Dynamics 365 refused this. The agents' security role needs {scopes}."
143
+ },
144
+ {
145
+ "id": "read_activities",
146
+ "label": "Read activities and notes",
147
+ "description": "List the tasks, phone calls, emails, appointments and notes of the accounts, contacts, opportunities and cases an agent may use.",
148
+ "scopes": ["prvReadActivity", "prvReadNote"],
149
+ "permissions": [],
150
+ "tools": ["dynamics_list_activities"],
151
+ "forbidden": "Dynamics 365 refused this. The agents' security role needs {scopes}, and Read on the record's own table."
152
+ },
153
+ {
154
+ "id": "add_activities",
155
+ "label": "Add notes, tasks and phone calls",
156
+ "description": "Add notes, tasks and logged phone calls to the accounts, contacts, opportunities and cases an agent may use.",
157
+ "scopes": [
158
+ "prvCreateActivity",
159
+ "prvWriteActivity",
160
+ "prvAppendActivity",
161
+ "prvCreateNote",
162
+ "prvAppendNote"
163
+ ],
164
+ "permissions": [],
165
+ "tools": ["dynamics_add_activity"],
166
+ "forbidden": "Dynamics 365 refused this. The agents' security role needs {scopes}, plus Read and Append To on the record's own table."
167
+ },
168
+ {
169
+ "id": "read_tables",
170
+ "label": "Read other tables",
171
+ "description": "Read rows of the tables you list on each API key, such as products or your own tables, with simple conditions. Nothing is read from a table you do not list.",
172
+ "note": "Give the security role Read on each table you list.",
173
+ "scopes": [],
174
+ "permissions": [],
175
+ "tools": ["dynamics_list_rows", "dynamics_get_row"],
176
+ "forbidden": "Dynamics 365 refused this. The agents' security role needs Read on this table."
177
+ },
178
+ {
179
+ "id": "delete",
180
+ "label": "Delete records",
181
+ "description": "Delete accounts, contacts, opportunities, cases, tasks, phone calls and notes. Dynamics also deletes what belongs to a record, such as its activities and notes. An agent kept to business units or teams can delete only tasks, phone calls and notes.",
182
+ "destructive": true,
183
+ "scopes": [
184
+ "prvDeleteAccount",
185
+ "prvDeleteContact",
186
+ "prvDeleteOpportunity",
187
+ "prvDeleteIncident",
188
+ "prvDeleteActivity",
189
+ "prvDeleteNote"
190
+ ],
191
+ "permissions": [],
192
+ "tools": ["dynamics_delete_record"],
193
+ "forbidden": "Dynamics 365 refused this. The agents' security role needs {scopes}."
194
+ }
195
+ ],
196
+ "limits": [
197
+ {
198
+ "id": "business_units",
199
+ "label": "Business units",
200
+ "help": "Optional: only records owned in these business units (their ids). To see them, open https://your-org.crm.dynamics.com/api/data/v9.2/businessunits?$select=name in your browser while signed in. With teams set too, a record of either is allowed. Leave both empty for every record the security role reaches.",
201
+ "kind": "list",
202
+ "required": false,
203
+ "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"
204
+ },
205
+ {
206
+ "id": "teams",
207
+ "label": "Owning teams",
208
+ "help": "Optional: only records owned by these teams (their ids). To see them, open https://your-org.crm.dynamics.com/api/data/v9.2/teams?$select=name in your browser while signed in. Records this agent creates go to its team (name one when there are several).",
209
+ "kind": "list",
210
+ "required": false,
211
+ "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"
212
+ },
213
+ {
214
+ "id": "tables",
215
+ "label": "Other tables",
216
+ "help": "For Read other tables: the tables this key may read, by logical name, such as product or new_project (in Power Apps, under Tables, then the table's Properties). Under business units or teams, only tables whose records have an owner.",
217
+ "kind": "list",
218
+ "required": false,
219
+ "pattern": "^[a-z][a-z0-9_]{0,63}$"
220
+ }
221
+ ],
222
+ "verify": {
223
+ "label": "Security roles of the application user",
224
+ "check": "access",
225
+ "ifEmpty": "The application user has no security role yet. Give it the agents' role, then check again."
226
+ },
227
+ "revoke": "In the Power Platform admin center, open the environment's Application users and deactivate {brand.microsoft.appName}'s application user, or remove its security role. Agents lose access at once. To stop every Microsoft app at once, remove the app registration (see the Microsoft connection)."
228
+ }
@@ -0,0 +1,8 @@
1
+ declare const _default: {
2
+ id: string;
3
+ create: ({ microsoft }: import("../microsoft/client.js").BuiltinContext) => {
4
+ vendor: import("../../packages/connector-kit/src/types.js").Vendor;
5
+ toolset: import("../../packages/connector-kit/src/common.js").Toolset;
6
+ };
7
+ };
8
+ export default _default;
@@ -0,0 +1,10 @@
1
+ import { dynamicsTools } from "./tools.js";
2
+ import { dynamicsVendor } from "./vendor.js";
3
+ export default {
4
+ id: "dynamics-365",
5
+ create: ({ microsoft }) => ({
6
+ vendor: dynamicsVendor(microsoft),
7
+ toolset: dynamicsTools,
8
+ }),
9
+ };
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../connectors/dynamics-365/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,eAAe;IACb,EAAE,EAAE,cAAc;IAClB,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,cAAc,CAAC,SAAS,CAAC;QACjC,OAAO,EAAE,aAAa;KACvB,CAAC;CACqB,CAAC"}
@@ -0,0 +1,35 @@
1
+ import { z } from "zod";
2
+ import { type Toolset } from "../../packages/connector-kit/src/common.js";
3
+ type Row = Record<string, unknown>;
4
+ type Scope = {
5
+ units: string[];
6
+ teams: string[];
7
+ } | null;
8
+ export declare function scopeFilter(scope: NonNullable<Scope>): string;
9
+ export declare function inScope(scope: Scope, row: Row): boolean;
10
+ /** One answer value as an OData literal: GUIDs, dates, numbers and booleans as they are, any
11
+ * other text quoted. */
12
+ export declare function literal(value: string | number | boolean): string;
13
+ declare const filterSchema: z.ZodObject<{
14
+ column: z.ZodString;
15
+ op: z.ZodEnum<{
16
+ null: "null";
17
+ eq: "eq";
18
+ ne: "ne";
19
+ gt: "gt";
20
+ ge: "ge";
21
+ lt: "lt";
22
+ le: "le";
23
+ contains: "contains";
24
+ startswith: "startswith";
25
+ not_null: "not_null";
26
+ }>;
27
+ value: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>;
28
+ }, z.core.$strip>;
29
+ type Filter = z.infer<typeof filterSchema>;
30
+ export declare function filterExpression(filters: Filter[]): string[];
31
+ /** A row as agents get it: lookups as {id, name, table}, option sets and money as their
32
+ * labels, text and dates as they are (long text shortened). */
33
+ export declare function trimRow(row: Row, idColumn: string): Row;
34
+ export declare const dynamicsTools: Toolset;
35
+ export {};