@jskit-ai/connectors-catalog 0.1.1

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 (399) hide show
  1. package/README.md +192 -0
  2. package/docs/ai-upstream-notices.md +51 -0
  3. package/docs/ai.md +191 -0
  4. package/docs/airtable.md +130 -0
  5. package/docs/algolia.md +190 -0
  6. package/docs/amazon-redshift.md +229 -0
  7. package/docs/amplitude.md +210 -0
  8. package/docs/apify.md +162 -0
  9. package/docs/apollo-io.md +200 -0
  10. package/docs/asana.md +126 -0
  11. package/docs/ashby.md +188 -0
  12. package/docs/atlassian.md +224 -0
  13. package/docs/attention.md +162 -0
  14. package/docs/aws-athena.md +150 -0
  15. package/docs/aws-credentials.md +75 -0
  16. package/docs/aws-s3.md +193 -0
  17. package/docs/bigquery.md +146 -0
  18. package/docs/brevo.md +122 -0
  19. package/docs/calendly.md +158 -0
  20. package/docs/canva.md +191 -0
  21. package/docs/chargebee.md +192 -0
  22. package/docs/clay.md +194 -0
  23. package/docs/clickhouse.md +242 -0
  24. package/docs/confidence-exp.md +74 -0
  25. package/docs/confidence-flags.md +75 -0
  26. package/docs/confidence-oauth.md +137 -0
  27. package/docs/contentful.md +123 -0
  28. package/docs/databricks.md +180 -0
  29. package/docs/dbt-semantic-layer.md +175 -0
  30. package/docs/elevenlabs.md +102 -0
  31. package/docs/figma.md +132 -0
  32. package/docs/firebase-cloud-messaging.md +262 -0
  33. package/docs/firecrawl.md +137 -0
  34. package/docs/fireflies.md +95 -0
  35. package/docs/fireworks-ai.md +53 -0
  36. package/docs/gatewayapi.md +113 -0
  37. package/docs/gemini-enterprise.md +224 -0
  38. package/docs/github-api.md +133 -0
  39. package/docs/gitlab-api.md +138 -0
  40. package/docs/gmail.md +133 -0
  41. package/docs/gong.md +205 -0
  42. package/docs/google-ads.md +156 -0
  43. package/docs/google-analytics.md +202 -0
  44. package/docs/google-docs.md +105 -0
  45. package/docs/google-drive.md +108 -0
  46. package/docs/google-maps-platform.md +208 -0
  47. package/docs/google-oauth.md +123 -0
  48. package/docs/google-search-console.md +124 -0
  49. package/docs/google-sheets.md +94 -0
  50. package/docs/google-slides.md +95 -0
  51. package/docs/granola.md +178 -0
  52. package/docs/hex.md +161 -0
  53. package/docs/heygen.md +124 -0
  54. package/docs/hubspot.md +142 -0
  55. package/docs/incident-io.md +118 -0
  56. package/docs/inngest.md +178 -0
  57. package/docs/klipy.md +149 -0
  58. package/docs/lexware.md +144 -0
  59. package/docs/lightspeed.md +193 -0
  60. package/docs/linear.md +137 -0
  61. package/docs/linkedin.md +196 -0
  62. package/docs/logo-dev.md +152 -0
  63. package/docs/mailgun.md +153 -0
  64. package/docs/mapbox.md +174 -0
  65. package/docs/microsoft-excel.md +97 -0
  66. package/docs/microsoft-fabric.md +249 -0
  67. package/docs/microsoft-oauth.md +143 -0
  68. package/docs/microsoft-onedrive.md +76 -0
  69. package/docs/microsoft-onenote.md +75 -0
  70. package/docs/microsoft-outlook.md +90 -0
  71. package/docs/microsoft-powerpoint.md +119 -0
  72. package/docs/microsoft-sharepoint.md +75 -0
  73. package/docs/microsoft-teams.md +72 -0
  74. package/docs/microsoft-word.md +119 -0
  75. package/docs/miro.md +117 -0
  76. package/docs/n8n.md +169 -0
  77. package/docs/notion.md +137 -0
  78. package/docs/oura.md +161 -0
  79. package/docs/paddle.md +168 -0
  80. package/docs/perplexity.md +85 -0
  81. package/docs/pipedrive.md +120 -0
  82. package/docs/polar.md +63 -0
  83. package/docs/posthog.md +227 -0
  84. package/docs/prestashop.md +151 -0
  85. package/docs/replicate.md +60 -0
  86. package/docs/resend.md +153 -0
  87. package/docs/salesforce.md +234 -0
  88. package/docs/sanity.md +122 -0
  89. package/docs/semrush.md +276 -0
  90. package/docs/sentry.md +112 -0
  91. package/docs/sevdesk.md +107 -0
  92. package/docs/shopify.md +206 -0
  93. package/docs/slack.md +257 -0
  94. package/docs/snowflake.md +271 -0
  95. package/docs/storyblok.md +130 -0
  96. package/docs/stripe.md +77 -0
  97. package/docs/supabase.md +51 -0
  98. package/docs/tally.md +105 -0
  99. package/docs/telegram.md +165 -0
  100. package/docs/tiktok.md +201 -0
  101. package/docs/twilio.md +284 -0
  102. package/docs/twitch.md +428 -0
  103. package/docs/wave.md +440 -0
  104. package/docs/wix.md +1249 -0
  105. package/docs/wiz.md +177 -0
  106. package/docs/woocommerce.md +400 -0
  107. package/docs/wordpress-com.md +358 -0
  108. package/docs/wordpress-self-hosted.md +252 -0
  109. package/docs/workday.md +292 -0
  110. package/docs/x-twitter.md +188 -0
  111. package/docs/xero.md +429 -0
  112. package/docs/zoho-books.md +214 -0
  113. package/docs/zoho-crm.md +192 -0
  114. package/package.json +153 -0
  115. package/patterns/ai-connections/PATTERN.md +84 -0
  116. package/patterns/ai-connections/example/ai-model.js +11 -0
  117. package/patterns/ai-connections/example/perplexity-answer.js +29 -0
  118. package/patterns/api-key-connection/PATTERN.md +368 -0
  119. package/patterns/api-key-connection/example/connections.js +18 -0
  120. package/patterns/api-key-connection/example/integrations.json +19 -0
  121. package/patterns/assistant-mcp/PATTERN.md +110 -0
  122. package/patterns/assistant-mcp/example/integrations.json +13 -0
  123. package/patterns/assistant-mcp-oauth/PATTERN.md +235 -0
  124. package/patterns/assistant-mcp-oauth/example/integrations.json +102 -0
  125. package/patterns/aws-storage-queries/PATTERN.md +169 -0
  126. package/patterns/aws-storage-queries/example/formats/data-formats.js +35 -0
  127. package/patterns/aws-storage-queries/example/formats/package-lock.json +49 -0
  128. package/patterns/aws-storage-queries/example/formats/package.json +12 -0
  129. package/patterns/aws-storage-queries/example/formats/verify-formats.mjs +37 -0
  130. package/patterns/aws-storage-queries/example/integrations.json +38 -0
  131. package/patterns/aws-storage-queries/example/s3-transfer.js +34 -0
  132. package/patterns/event-delivery/PATTERN.md +151 -0
  133. package/patterns/event-delivery/example/integrations.json +17 -0
  134. package/patterns/firebase-messaging/PATTERN.md +156 -0
  135. package/patterns/firebase-messaging/example/server/notifications.js +23 -0
  136. package/patterns/google-ads-search/PATTERN.md +92 -0
  137. package/patterns/google-ads-search/example/ads-setup.js +25 -0
  138. package/patterns/oauth-connection/PATTERN.md +724 -0
  139. package/patterns/oauth-connection/example/integrations.json +20 -0
  140. package/patterns/paddle-catalogue/PATTERN.md +78 -0
  141. package/patterns/paddle-catalogue/example/create-products.js +38 -0
  142. package/patterns/public-image/PATTERN.md +84 -0
  143. package/patterns/public-image/example/integrations.json +13 -0
  144. package/patterns/public-image/example/logo-url.js +16 -0
  145. package/patterns/redshift-queries/PATTERN.md +150 -0
  146. package/patterns/redshift-queries/example/integrations.json +33 -0
  147. package/patterns/source-scanning/PATTERN.md +83 -0
  148. package/patterns/source-scanning/example/source-scanner.js +13 -0
  149. package/src/client/firebase-cloud-messaging.js +10 -0
  150. package/src/client/google-analytics.js +72 -0
  151. package/src/client/google-maps-platform.js +39 -0
  152. package/src/client/logo-dev.js +36 -0
  153. package/src/server/ai.js +46 -0
  154. package/src/server/airtable.js +67 -0
  155. package/src/server/algolia.js +63 -0
  156. package/src/server/amazon-redshift.js +96 -0
  157. package/src/server/amplitude.js +31 -0
  158. package/src/server/apify.js +68 -0
  159. package/src/server/apollo-io.js +85 -0
  160. package/src/server/asana.js +64 -0
  161. package/src/server/ashby.js +61 -0
  162. package/src/server/atlassian.js +32 -0
  163. package/src/server/attention.js +93 -0
  164. package/src/server/aws-athena.js +82 -0
  165. package/src/server/aws-s3.js +49 -0
  166. package/src/server/awsTransport.js +75 -0
  167. package/src/server/bigquery.js +97 -0
  168. package/src/server/brevo.js +97 -0
  169. package/src/server/calendly.js +77 -0
  170. package/src/server/canva.js +13 -0
  171. package/src/server/chargebee.js +88 -0
  172. package/src/server/clay.js +78 -0
  173. package/src/server/clickhouse.js +66 -0
  174. package/src/server/confidence.js +29 -0
  175. package/src/server/contentful.js +40 -0
  176. package/src/server/databricks.js +55 -0
  177. package/src/server/dbt-semantic-layer.js +95 -0
  178. package/src/server/elevenlabs.js +81 -0
  179. package/src/server/figma.js +24 -0
  180. package/src/server/firebase-cloud-messaging.js +111 -0
  181. package/src/server/firecrawl.js +70 -0
  182. package/src/server/fireflies.js +31 -0
  183. package/src/server/fireworks-ai.js +16 -0
  184. package/src/server/gatewayapi.js +48 -0
  185. package/src/server/gemini-enterprise.js +47 -0
  186. package/src/server/github-api.js +90 -0
  187. package/src/server/gitlab-api.js +67 -0
  188. package/src/server/gmail.js +60 -0
  189. package/src/server/gong.js +52 -0
  190. package/src/server/google-ads-search.js +134 -0
  191. package/src/server/google-ads.js +80 -0
  192. package/src/server/google-docs.js +36 -0
  193. package/src/server/google-drive.js +71 -0
  194. package/src/server/google-maps-platform.js +90 -0
  195. package/src/server/google-search-console.js +31 -0
  196. package/src/server/google-sheets.js +60 -0
  197. package/src/server/google-slides.js +36 -0
  198. package/src/server/google.js +61 -0
  199. package/src/server/granola.js +115 -0
  200. package/src/server/graphqlOperation.js +15 -0
  201. package/src/server/hex.js +29 -0
  202. package/src/server/heygen.js +54 -0
  203. package/src/server/hubspot.js +85 -0
  204. package/src/server/incident-io.js +68 -0
  205. package/src/server/inngest.js +86 -0
  206. package/src/server/jsonOperation.js +34 -0
  207. package/src/server/klipy.js +34 -0
  208. package/src/server/lexware.js +59 -0
  209. package/src/server/lightspeed.js +82 -0
  210. package/src/server/linear.js +52 -0
  211. package/src/server/linkedin.js +74 -0
  212. package/src/server/mailgun.js +76 -0
  213. package/src/server/mapbox.js +46 -0
  214. package/src/server/mcpRegistration.js +41 -0
  215. package/src/server/mcpTransport.js +60 -0
  216. package/src/server/microsoft-excel.js +67 -0
  217. package/src/server/microsoft-fabric.js +81 -0
  218. package/src/server/microsoft-onedrive.js +58 -0
  219. package/src/server/microsoft-onenote.js +52 -0
  220. package/src/server/microsoft-outlook.js +58 -0
  221. package/src/server/microsoft-powerpoint.js +5 -0
  222. package/src/server/microsoft-sharepoint.js +46 -0
  223. package/src/server/microsoft-teams.js +29 -0
  224. package/src/server/microsoft-word.js +5 -0
  225. package/src/server/microsoft.js +88 -0
  226. package/src/server/miro.js +29 -0
  227. package/src/server/n8n.js +78 -0
  228. package/src/server/notion.js +76 -0
  229. package/src/server/oura.js +48 -0
  230. package/src/server/paddle.js +83 -0
  231. package/src/server/perplexity.js +15 -0
  232. package/src/server/pipedrive.js +95 -0
  233. package/src/server/polar.js +20 -0
  234. package/src/server/posthog.js +44 -0
  235. package/src/server/prestashop.js +42 -0
  236. package/src/server/replicate.js +42 -0
  237. package/src/server/resend.js +93 -0
  238. package/src/server/salesforce.js +84 -0
  239. package/src/server/sanity.js +31 -0
  240. package/src/server/semrush.js +359 -0
  241. package/src/server/sentry.js +30 -0
  242. package/src/server/sevdesk.js +20 -0
  243. package/src/server/shopify.js +99 -0
  244. package/src/server/slack.js +143 -0
  245. package/src/server/snowflake.js +139 -0
  246. package/src/server/storyblok.js +49 -0
  247. package/src/server/stripe.js +13 -0
  248. package/src/server/supabase.js +13 -0
  249. package/src/server/tally.js +78 -0
  250. package/src/server/telegram.js +55 -0
  251. package/src/server/tiktok.js +86 -0
  252. package/src/server/twilio.js +90 -0
  253. package/src/server/twitch.js +409 -0
  254. package/src/server/wave.js +520 -0
  255. package/src/server/wix.js +1048 -0
  256. package/src/server/wiz.js +117 -0
  257. package/src/server/woocommerce.js +412 -0
  258. package/src/server/wordpress-com.js +236 -0
  259. package/src/server/wordpress-self-hosted.js +134 -0
  260. package/src/server/workday.js +136 -0
  261. package/src/server/x-twitter.js +110 -0
  262. package/src/server/xero.js +397 -0
  263. package/src/server/zoho-books.js +90 -0
  264. package/src/server/zoho-crm.js +89 -0
  265. package/src/server/zohoOAuth.js +21 -0
  266. package/src/shared/ai-models.json +8049 -0
  267. package/src/shared/ai.js +63 -0
  268. package/src/shared/algolia.js +29 -0
  269. package/src/shared/amazon-redshift.js +51 -0
  270. package/src/shared/amplitude.js +28 -0
  271. package/src/shared/atlassian.js +43 -0
  272. package/src/shared/aws.js +72 -0
  273. package/src/shared/canva.js +66 -0
  274. package/src/shared/chargebee.js +26 -0
  275. package/src/shared/clickhouse.js +38 -0
  276. package/src/shared/confidence.js +28 -0
  277. package/src/shared/databricks.js +33 -0
  278. package/src/shared/dbt-semantic-layer.js +32 -0
  279. package/src/shared/definitions.js +140 -0
  280. package/src/shared/figma.js +21 -0
  281. package/src/shared/firebase-cloud-messaging.js +45 -0
  282. package/src/shared/gemini-enterprise.js +33 -0
  283. package/src/shared/gong.js +33 -0
  284. package/src/shared/google-ads-search.js +31 -0
  285. package/src/shared/google-ads.js +28 -0
  286. package/src/shared/google-maps-platform.js +28 -0
  287. package/src/shared/google.js +133 -0
  288. package/src/shared/granola.js +25 -0
  289. package/src/shared/hex.js +28 -0
  290. package/src/shared/inngest.js +35 -0
  291. package/src/shared/lightspeed.js +75 -0
  292. package/src/shared/linkedin.js +27 -0
  293. package/src/shared/logo-dev.js +21 -0
  294. package/src/shared/mapbox.js +38 -0
  295. package/src/shared/mcp.js +92 -0
  296. package/src/shared/microsoft-fabric.js +47 -0
  297. package/src/shared/microsoft.js +231 -0
  298. package/src/shared/miro.js +27 -0
  299. package/src/shared/oura.js +23 -0
  300. package/src/shared/posthog.js +33 -0
  301. package/src/shared/prestashop.js +23 -0
  302. package/src/shared/salesforce.js +36 -0
  303. package/src/shared/semrush.js +24 -0
  304. package/src/shared/shopify.js +51 -0
  305. package/src/shared/siteUrl.js +12 -0
  306. package/src/shared/slack.js +88 -0
  307. package/src/shared/snowflake.js +55 -0
  308. package/src/shared/tiktok.js +22 -0
  309. package/src/shared/tokens.js +747 -0
  310. package/src/shared/twilio.js +41 -0
  311. package/src/shared/twitch.js +49 -0
  312. package/src/shared/wave.js +52 -0
  313. package/src/shared/wix.js +40 -0
  314. package/src/shared/wiz.js +41 -0
  315. package/src/shared/wordpress-com.js +30 -0
  316. package/src/shared/wordpress.js +69 -0
  317. package/src/shared/workday.js +50 -0
  318. package/src/shared/x-twitter.js +19 -0
  319. package/src/shared/xero.js +46 -0
  320. package/src/shared/zoho-books.js +39 -0
  321. package/src/shared/zoho-crm.js +43 -0
  322. package/src/shared/zoho-regions.js +12 -0
  323. package/test/ai.test.js +136 -0
  324. package/test/airtable.test.js +125 -0
  325. package/test/algolia.test.js +207 -0
  326. package/test/amazon-redshift.test.js +272 -0
  327. package/test/amplitude.test.js +239 -0
  328. package/test/apify.test.js +93 -0
  329. package/test/apollo-io.test.js +125 -0
  330. package/test/asana.test.js +99 -0
  331. package/test/ashby.test.js +97 -0
  332. package/test/atlassian.test.js +249 -0
  333. package/test/attention.test.js +79 -0
  334. package/test/aws.test.js +405 -0
  335. package/test/brevo.test.js +71 -0
  336. package/test/calendly.test.js +136 -0
  337. package/test/canva.test.js +258 -0
  338. package/test/chargebee.test.js +195 -0
  339. package/test/clickhouse.test.js +278 -0
  340. package/test/confidence.test.js +205 -0
  341. package/test/databricks.test.js +253 -0
  342. package/test/dbt-semantic-layer.test.js +221 -0
  343. package/test/designMcp.test.js +336 -0
  344. package/test/elevenlabs.test.js +52 -0
  345. package/test/firebase-cloud-messaging.test.js +242 -0
  346. package/test/firecrawl.test.js +66 -0
  347. package/test/gemini-enterprise.test.js +218 -0
  348. package/test/github-api.test.js +167 -0
  349. package/test/gitlab-api.test.js +160 -0
  350. package/test/gong.test.js +192 -0
  351. package/test/google-ads.test.js +350 -0
  352. package/test/google-maps-platform.test.js +191 -0
  353. package/test/google.test.js +710 -0
  354. package/test/granola.test.js +240 -0
  355. package/test/hex.test.js +253 -0
  356. package/test/heygen.test.js +121 -0
  357. package/test/hubspot.test.js +103 -0
  358. package/test/inngest.test.js +219 -0
  359. package/test/lightspeed.test.js +250 -0
  360. package/test/linear.test.js +146 -0
  361. package/test/linkedin.test.js +243 -0
  362. package/test/logo-dev.test.js +79 -0
  363. package/test/mailgun.test.js +107 -0
  364. package/test/mapbox.test.js +181 -0
  365. package/test/mcp.test.js +227 -0
  366. package/test/microsoft-fabric.test.js +258 -0
  367. package/test/microsoft.test.js +554 -0
  368. package/test/n8nOAuth.test.js +188 -0
  369. package/test/notionOAuth.test.js +183 -0
  370. package/test/oura.test.js +211 -0
  371. package/test/paddleCatalogue.test.js +51 -0
  372. package/test/paddlePermissions.test.js +101 -0
  373. package/test/perplexityComposition.test.js +39 -0
  374. package/test/pipedriveOAuth.test.js +140 -0
  375. package/test/posthog.test.js +200 -0
  376. package/test/prestashop.test.js +207 -0
  377. package/test/resend.test.js +163 -0
  378. package/test/salesforce.test.js +276 -0
  379. package/test/semrush.test.js +479 -0
  380. package/test/sentry.test.js +35 -0
  381. package/test/shopify.test.js +247 -0
  382. package/test/slack.test.js +320 -0
  383. package/test/snowflake.test.js +391 -0
  384. package/test/tally.test.js +75 -0
  385. package/test/telegram.test.js +58 -0
  386. package/test/tiktok.test.js +243 -0
  387. package/test/tokens.test.js +1079 -0
  388. package/test/twilio.test.js +221 -0
  389. package/test/twitch.test.js +573 -0
  390. package/test/wave.test.js +678 -0
  391. package/test/wix.test.js +1099 -0
  392. package/test/wiz.test.js +185 -0
  393. package/test/wordpress-com.test.js +469 -0
  394. package/test/wordpress.test.js +660 -0
  395. package/test/workday.test.js +314 -0
  396. package/test/x-twitter.test.js +256 -0
  397. package/test/xero.test.js +700 -0
  398. package/test/zoho-books.test.js +253 -0
  399. package/test/zoho-crm.test.js +223 -0
@@ -0,0 +1,143 @@
1
+ # Microsoft Graph registration and connection wiring
2
+
3
+ Registration, tenant selection and document APIs checked: 9 September 2026. These fragments use delegated OAuth
4
+ authorization codes with PKCE and a confidential backend registration. Provider
5
+ HTTP is simulated in automated tests; no live Microsoft account is used.
6
+
7
+ ## Manual registration
8
+
9
+ 1. Sign in to Microsoft Entra admin center and select the directory that will
10
+ own the registration. Open **Entra ID → App registrations → New registration**.
11
+ 2. Name the app. For Outlook, OneDrive, Excel, OneNote, Word and PowerPoint select **Any Entra ID
12
+ Tenant + Personal Microsoft accounts**. For Teams and SharePoint select
13
+ **Multiple Entra ID tenants**. These correspond to the implemented `common`
14
+ and `organizations` defaults. For one directory choose **Single tenant only**
15
+ and copy its **Directory (tenant) ID** from the registration Overview. For a
16
+ personal-only registration choose **Personal accounts only** and configure
17
+ `consumers` (not supported by Teams/SharePoint). Select **Register** and
18
+ record **Application (client) ID**. [Registration instructions](https://learn.microsoft.com/en-us/entra/identity-platform/quickstart-register-app).
19
+ 3. Open **Authentication → Redirect URI configuration → Add Redirect URI**.
20
+ Choose **Web**, enter the exact backend callback address, then **Configure**.
21
+ For local development use a registered localhost callback served by the
22
+ operator's backend. Hosted and installed editors use the same application-owned callback;
23
+ neither provides a central redirect service.
24
+ [Redirect configuration](https://learn.microsoft.com/en-us/entra/identity-platform/how-to-add-redirect-uri).
25
+ 4. Open **API permissions → Add a permission → Microsoft Graph → Delegated
26
+ permissions**. Add the permission in the provider guide plus `offline_access`.
27
+ Consent remains subject to directory policy. The fragment does not need
28
+ `openid`, profile login or an application-permission service account.
29
+ [Delegated authorization flow](https://learn.microsoft.com/en-us/entra/identity-platform/v2-oauth2-auth-code-flow).
30
+ 5. Open **Certificates & secrets → Client secrets → New client secret**. Add a
31
+ description and expiration, then **Add**. Store **Value**, not Secret ID, in
32
+ private Env. Copy it before leaving the page. Microsoft recommends certificate
33
+ or federated credentials for production; this initial library implements
34
+ client-secret POST authentication only. [Credentials](https://learn.microsoft.com/en-us/entra/identity-platform/how-to-add-credentials).
35
+ 6. In the CLI JSON or shared editor form set Client ID, **Directory (tenant) ID**,
36
+ the secret reference and callback reference. The tenant setting accepts the
37
+ applicable audience keyword above or a directory GUID. It is not a URL or
38
+ the Application ID. Tenant domain names and sovereign clouds are not supported. Save the configuration; run the separate OAuth flow
39
+ below to establish a connection. After saving, use **Set credential in Env** for the client secret and
40
+ **Open Env** for the exact registered callback. Shared/assistant connections
41
+ can use **Connect account** once the application runtime is prepared. For
42
+ per-user mode, each user authorizes inside that application.
43
+
44
+ ## AI automation and application registrations
45
+
46
+ Classification: **API-capable after operator authorization**. An authorized
47
+ provisioner can create application objects through `POST /v1.0/applications`,
48
+ setting `displayName`, `signInAudience`, `web.redirectUris` and the required
49
+ resource permissions. Current create permissions include `AppRegistration.Create`;
50
+ tenant policy and caller roles still apply. [Create application](https://learn.microsoft.com/en-us/graph/api/application-post-applications?view=graph-rest-1.0).
51
+
52
+ It can create/rotate a secret with `POST /v1.0/applications/{object-id}/addPassword`.
53
+ That operation requires separate authorization: delegated `Application.ReadWrite.All`
54
+ or an appropriate application permission such as `Application.ReadWrite.OwnedBy`.
55
+ Capture the one-time `secretText` directly into private storage. Creating an
56
+ object does not bypass customer consent, tenant restrictions or publisher review.
57
+ [Add password](https://learn.microsoft.com/en-us/graph/api/application-addpassword?view=graph-rest-1.0).
58
+
59
+ Create the registration for the application being configured. Its backend owns
60
+ its callback route and resolves its secret from the application environment.
61
+ Keep development and production bindings explicit. When the callback domain
62
+ changes, update its Web redirect URI and environment binding before reconnecting.
63
+ See the [callback guide](../../connectors-core/docs/oauth-callbacks.md).
64
+
65
+ The selected tenant and audience remain provider requirements. Editor hosting
66
+ does not change them or grant a shared registration. App IDs do not isolate all
67
+ user, tenant and service limits; see [Graph throttling](https://learn.microsoft.com/en-us/graph/throttling-limits).
68
+ The automation guidance above requires operator authorization and does not
69
+ claim a provisioning script or live registration has been tested.
70
+
71
+ ## CLI and application composition
72
+
73
+ Use the imports and file-store composition from the
74
+ [connection pattern](../patterns/api-key-connection/PATTERN.md), replacing the
75
+ provider and authentication configuration. For an Outlook slot:
76
+
77
+ ```json
78
+ {
79
+ "schemaVersion": 1,
80
+ "integrations": {
81
+ "inbox": {
82
+ "provider": "microsoft-outlook",
83
+ "accountMode": "per-user",
84
+ "scopes": ["Mail.Read", "offline_access"],
85
+ "settings": { "tenantId": "common" },
86
+ "authentication": { "method": "oauth2", "registrationRef": "microsoft" }
87
+ }
88
+ },
89
+ "registrations": {
90
+ "microsoft": {
91
+ "source": "own",
92
+ "clientId": "YOUR_APPLICATION_CLIENT_ID",
93
+ "clientSecretRef": "env:MICROSOFT_CLIENT_SECRET",
94
+ "callbackUrlRef": "env:MICROSOFT_CALLBACK_URL"
95
+ }
96
+ }
97
+ }
98
+ ```
99
+
100
+ Import `microsoftOutlookProvider` from
101
+ `@jskit-ai/connectors-catalog/server/microsoft-outlook`. Pass it to
102
+ `createConnectionService` along with parsed configuration, the environment
103
+ resolver, a private encrypted file store and the application's authorization
104
+ policy. The policy establishes a trusted application/subject; request body
105
+ IDs do not establish ownership. Use a stable shared subject only after checking
106
+ membership for a shared connection.
107
+
108
+ Call `beginAuthorization({ context, integrationId, verificationInput })`. Present
109
+ its authorization URL to that user in their browser. The existing application
110
+ serves the configured callback and invokes
111
+ `completeAuthorization({ context, integrationId, callbackUrl })`. It returns
112
+ Connected only after the provider's verification read succeeds. The CLI can
113
+ compose the same calls through an operator-owned callback server. No application
114
+ generator or copied OAuth implementation is needed.
115
+
116
+ Use `invoke` with the provider's named operation and validated inputs. Store
117
+ returned tokens only through the private runtime store, outside application
118
+ source. Reuse its stable encryption key across restarts. Keep bare Graph scope
119
+ names in configuration; `offline_access` requests refresh capability and is not
120
+ a permission to read Graph resources. These connectors do not establish an
121
+ application login session. The selected tenant controls authorization, code
122
+ exchange and refresh endpoints. Changing it invalidates pending attempts and
123
+ requires reconnecting existing grants before further API access; editing the
124
+ configuration cannot move a grant between tenants. Registrations must support
125
+ the selected audience; schema validation cannot establish a remote client's
126
+ registration policy.
127
+
128
+ ## Paging, failures and recovery
129
+
130
+ List results retain `@odata.nextLink`. Supply it as `nextLink` with the original
131
+ resource input on the next call. The fragment sends its opaque query intact
132
+ and rejects other origins, paths, users, credentials or URL fragments. It does
133
+ not fetch every page automatically. Endpoint path rewrites in provider paging
134
+ URLs are currently rejected and would need separately verified support.
135
+ [Graph paging contract](https://learn.microsoft.com/en-us/graph/paging).
136
+
137
+ Cancel a pending attempt with `cancelAuthorization`; disconnect removes local
138
+ tokens and pending attempts. It does not revoke provider-wide consent. Provider
139
+ 401/invalid grants require reconnection; 403 and 429 are controlled errors.
140
+ Rotate expiring registration secrets in Env before removing old credentials.
141
+ Do not log token exchange bodies. Tests cover code/state consumption, PKCE,
142
+ permission failures, request boundaries, encrypted file restart and refresh
143
+ rotation for all eight providers.
@@ -0,0 +1,76 @@
1
+ # Microsoft OneDrive
2
+
3
+ Provider ID `microsoft-onedrive`; export `microsoftOneDriveProvider` from
4
+ `@jskit-ai/connectors-catalog/server/microsoft-onedrive`.
5
+
6
+ Follow all [Microsoft registration steps](microsoft-oauth.md). Choose the
7
+ organizational + personal account audience. In **API permissions → Microsoft
8
+ Graph → Delegated permissions**, add `Files.Read` and `offline_access`. Use an
9
+ account with a provisioned drive; this fragment does not provision OneDrive.
10
+
11
+ The verification and useful operation is `items.list`, reading
12
+ `/v1.0/me/drive/root/children`. Inputs: optional `pageSize` (1–100, default 25;
13
+ this fragment's bound) and `nextLink`. Initial selection includes ID, name, size,
14
+ web URL, file/folder facets and parent reference. Results retain `value` and the
15
+ opaque `@odata.nextLink`. Verification input is `{}`. Nested browsing uses folderId. File downloads and small uploads are described below; sharing changes remain outside this adapter.
16
+ [Children API](https://learn.microsoft.com/en-us/graph/api/driveitem-list-children?view=graph-rest-1.0).
17
+
18
+ AI provisioning is **API-capable after operator authorization** through the
19
+ application and credential endpoints documented in the common guide. Use these
20
+ delegated permissions and the same callback/secret fields as the CLI. The
21
+ application owner supplies its registration and private Env bindings; tenant/user
22
+ limits can overlap. Account consent and organizational policy remain provider
23
+ and administrator decisions.
24
+
25
+ Use the common guide's file-based library composition and ownership policy.
26
+ Automated fixtures cover OAuth permissions, API requests, paging, cancellation,
27
+ encrypted restart, rotation and denied access. No live account or generated app
28
+ is used. Saving the configuration is separate from establishing a connection.
29
+
30
+ ## Permission choices and editor setup
31
+
32
+ The form matches the captured choices: required Files.Read; initially selected
33
+ Files.Read.All and Files.ReadWrite; optional Files.ReadWrite.All and
34
+ Files.ReadWrite.AppFolder. offline_access requests refresh capability. For read-only use, clear optional read-all/write selections. Add the same
35
+ selected delegated permissions to your Entra registration. The runtime retains
36
+ explicit Files.Read for its root listing and does not infer permission equivalence.
37
+ Selecting extra permissions does not implement new library operations.
38
+
39
+ AppFolder is a distinct Microsoft permission; its API creates the folder on first
40
+ access. This fragment never requests that endpoint during verification and does
41
+ not implement app-folder operations. See Microsoft's
42
+ [app-folder guide](https://learn.microsoft.com/en-us/graph/onedrive-sharepoint-appfolder).
43
+
44
+ The screen supplies full Entra registration, audience/tenant, Web callback and
45
+ secret-Value instructions. Save `env:MICROSOFT_ONEDRIVE_CLIENT_SECRET` and
46
+ `env:MICROSOFT_ONEDRIVE_CALLBACK_URL`, then use **Set credential in Env** and
47
+ **Open Env** for the actual values. Shared/assistant **Connect account** uses
48
+ this application's runtime; per-user consent takes place inside the application.
49
+ The callback and grant store remain application-owned when hosting changes.
50
+
51
+ ## File operations in CLI and generated apps
52
+
53
+ `items.list({folderId})` navigates children; retain the returned nextLink for the
54
+ same folder. `items.get({itemId})` returns metadata and, for downloadable files,
55
+ `@microsoft.graph.downloadUrl`. This temporary URL itself authorizes content
56
+ access: give it only to the authorized app user, do not log/cache it, and never
57
+ forward the Microsoft bearer token to it. Download immediately using the browser
58
+ or the framework's native transfer client. Treat folders as navigation, not files.
59
+
60
+ `files.upload({parentId, name, bodyBase64, conflictBehavior: "fail"})` sends bytes
61
+ up to 5 MB. Optional replace/rename must be an explicit application choice;
62
+ Files.ReadWrite is required. CLI apps call the same connections.invoke operation.
63
+ The editor stores only configuration and Env references. Other frameworks use
64
+ Graph's binary PUT and their own authorization and file UI.
65
+
66
+ **LIMITATIONS:** No native transfer client execution in these tests. Large files
67
+ and resumable upload sessions are framework-owned: createUploadSession, transfer
68
+ ordered byte ranges to its uploadUrl without the Graph bearer token, track returned
69
+ nextExpectedRanges/expiry, and confirm the final driveItem. Keep upload URLs private.
70
+ This adapter does not provide that resumable loop, sharing UI, app-folder automation
71
+ or editor attachment. Example: a small report works; multi-gigabyte video needs
72
+ native transfer wiring. No live account or generated-app proof.
73
+
74
+ [Download content](https://learn.microsoft.com/en-us/graph/api/driveitem-get-content?view=graph-rest-1.0),
75
+ [upload content](https://learn.microsoft.com/en-us/graph/api/driveitem-put-content?view=graph-rest-1.0),
76
+ [upload sessions](https://learn.microsoft.com/en-us/graph/api/driveitem-createuploadsession?view=graph-rest-1.0).
@@ -0,0 +1,75 @@
1
+ # Microsoft OneNote
2
+
3
+ Provider ID `microsoft-onenote`; export `microsoftOneNoteProvider` from
4
+ `@jskit-ai/connectors-catalog/server/microsoft-onenote`.
5
+
6
+ Follow every [Microsoft registration step](microsoft-oauth.md), choosing the
7
+ organizational + personal account audience. Under **API permissions → Microsoft
8
+ Graph → Delegated permissions**, add `Notes.Read` and `offline_access`.
9
+ Microsoft also documents `Notes.Create` as a least-privileged option for listing
10
+ notebooks; this read fragment deliberately requests the supported `Notes.Read`
11
+ permission for its operation. To avoid authorizing creation, clear Notes.Create and the
12
+ optional write permissions in the editor.
13
+ [Notebook API](https://learn.microsoft.com/en-us/graph/api/onenote-list-notebooks?view=graph-rest-1.0).
14
+
15
+ `notebooks.list` verifies and lists `/v1.0/me/onenote/notebooks`. Initial input
16
+ is `{}`; optional `nextLink` follows the provider's same-resource continuation.
17
+ The response retains the `value` collection and paging metadata. The module
18
+ also provides section/page traversal, content reads and text create/append below; notebook creation remains unsupported.
19
+
20
+ AI provisioning is **API-capable after operator authorization** through the
21
+ application and credential APIs in the common guide. Use this connector's
22
+ audience and delegated permission. The AI can prepare the shared configuration
23
+ and callback references; tenant consent remains separate. The application owns its
24
+ registration, callback and private bindings, independently of its editor.
25
+ Tenant and resource limits still apply.
26
+
27
+ The common guide provides exact console steps, credential rotation and CLI
28
+ composition using installed library functions and private text-file state.
29
+ Automated tests cover permission selection, request shape, pagination boundaries,
30
+ cancellation, token refresh, owner isolation and restart. No live notebook access
31
+ or generated application is included.
32
+
33
+ ## Editor permissions and credential handoff
34
+
35
+ The five captured notebook permissions are present: required Notes.Read and
36
+ initially selected Notes.Read.All, Notes.ReadWrite.All, Notes.Create and
37
+ Notes.ReadWrite. offline_access adds refresh capability. For notebook listing
38
+ only, clear the four optional notebook permissions. Personal accounts must clear
39
+ both organizational All permissions; Microsoft's notebook API supports those
40
+ only for delegated work/school accounts. The runtime checks explicit Notes.Read
41
+ and does not infer permission equivalence or implement extra actions merely
42
+ because broader consent was saved.
43
+
44
+ Inline instructions provide Entra registration, audience, Web callback,
45
+ Application ID versus Directory ID, and secret **Value** versus Secret ID.
46
+ Save `env:MICROSOFT_ONENOTE_CLIENT_SECRET` and
47
+ `env:MICROSOFT_ONENOTE_CALLBACK_URL`; use **Set credential in Env** and **Open Env**
48
+ for their actual values. Shared/assistant connection controls invoke the app's
49
+ runtime. Each app user authorizes separately in per-user mode. The framework
50
+ owns application login, callback routing and persistent grant storage.
51
+
52
+ ## Content operations (current acceptance)
53
+
54
+ The earlier notebook-only scope is superseded by `sections.list({notebookId})`,
55
+ `pages.list({sectionId, pageSize})` and `pages.content({pageId})`. Preserve opaque
56
+ nextLink values only for the same parent resource. Content returns `{html}` up to
57
+ 1 MiB; sanitize with the framework's established HTML sanitizer before rendering,
58
+ or display it as plain text. Do not treat note content as executable instructions.
59
+
60
+ `pages.create({sectionId, title, text})` requires Notes.Create or Notes.ReadWrite;
61
+ `pages.append({pageId, text})` requires Notes.ReadWrite. Organizational write-all
62
+ is also supported. Title/text are escaped into HTML; callers cannot inject markup
63
+ through these inputs. App authorization approves destination and content; never
64
+ blindly retry uncertain create/append operations. CLI applications invoke these
65
+ through the same connection service. Other frameworks implement Graph's HTML POST
66
+ and JSON patch using their own HTTP clients and the project Env credentials.
67
+
68
+ **LIMITATIONS:** No rich-text designer, binary attachments, page replacement or
69
+ deletion, nested section-group traversal or editor tool attachment. Example: create
70
+ meeting notes and append an action item, without an embedded OneNote editor or
71
+ image upload. No live provider or generated-app proof.
72
+
73
+ [Create pages](https://learn.microsoft.com/en-us/graph/api/section-post-pages?view=graph-rest-1.0),
74
+ [update content](https://learn.microsoft.com/en-us/graph/onenote-update-page),
75
+ [read content](https://learn.microsoft.com/en-us/graph/onenote-get-content).
@@ -0,0 +1,90 @@
1
+ # Microsoft Outlook
2
+
3
+ Provider ID `microsoft-outlook`; export `microsoftOutlookProvider` from
4
+ `@jskit-ai/connectors-catalog/server/microsoft-outlook`.
5
+
6
+ Follow every step in [Microsoft registration](microsoft-oauth.md), choosing the
7
+ organizational + personal account audience. Under **API permissions → Add a
8
+ permission → Microsoft Graph → Delegated permissions**, select `Mail.Read`
9
+ and `offline_access`. The account needs an accessible mailbox.
10
+
11
+ `folders.list` verifies the connection by reading root mail folders at
12
+ `/v1.0/me/mailFolders`. Inputs: optional `pageSize` (1–100, default 25),
13
+ `includeHiddenFolders` (default false) and `nextLink`. This does not recursively
14
+ traverse nested folders. [Folder API](https://learn.microsoft.com/en-us/graph/api/user-list-mailfolders?view=graph-rest-1.0).
15
+
16
+ `inbox.list` reads `/v1.0/me/mailFolders/inbox/messages`; inputs are `pageSize`
17
+ and `nextLink`. Its initial request selects ID, subject, sender, received time
18
+ and read state. The inbox list itself does not fetch message bodies or attachments, send email,
19
+ or change folders. The 100-item limit is this fragment's bound.
20
+ [Message API](https://learn.microsoft.com/en-us/graph/api/mailfolder-list-messages?view=graph-rest-1.0).
21
+
22
+ Verification input is `{}`. Both operations preserve the `value` collection and
23
+ paging link. In an application, choose a per-user connection for each person's
24
+ inbox, or an explicitly authorized shared mailbox owner. Connecting the builder
25
+ does not connect the application's other users.
26
+
27
+ AI provisioning is **API-capable after authorization**: create the application
28
+ and credentials with the Graph operations in the common guide, using these
29
+ delegated permissions. The application owner supplies its registration and
30
+ private Env bindings. Directory consent and mailbox policy remain human/provider
31
+ decisions. The common guide contains exact console steps, portable JSON,
32
+ library wiring and the limitations of app-ID quota separation.
33
+
34
+ Automated fixtures verify this endpoint, scopes, refresh, encrypted restart,
35
+ isolation, invalid paging destinations and controlled failures. Live mailbox use
36
+ is excluded. Saving configuration is separate from the editor Connect action, which invokes
37
+ the prepared application runtime’s own-registration OAuth lifecycle.
38
+
39
+ ## Captured permission choices and credential handoff
40
+
41
+ The form includes required Mail.Read, initially selected Mail.ReadWrite, Mail.Send
42
+ and Calendars.ReadWrite, and optional Mail.ReadBasic and Calendars.Read.
43
+ offline_access requests refresh capability. For reading only, clear optional
44
+ write/send/calendar permissions. Microsoft supports narrower Mail.ReadBasic for
45
+ these list endpoints, but this form follows the captured required Mail.Read and
46
+ the runtime explicitly checks that grant. No permission equivalence is inferred.
47
+ Current inbox requests still select basic metadata only; broader permission does
48
+ not itself execute the separate body, send and calendar operations described below.
49
+
50
+ Inline instructions cover Entra registration, audience/tenant, Web callback,
51
+ secret Value versus Secret ID and exact Env handoff. Save
52
+ `env:MICROSOFT_OUTLOOK_CLIENT_SECRET` and
53
+ `env:MICROSOFT_OUTLOOK_CALLBACK_URL`, then use **Set credential in Env** and
54
+ **Open Env** for the values. Shared/assistant Connect uses the application's
55
+ account; per-user mode requires each application user to connect separately.
56
+ The app owns callbacks and grants. This fragment addresses the signed-in account's
57
+ mailbox via /me; accessing a different Exchange shared mailbox is not implemented.
58
+
59
+ ## Current mailbox and calendar operations
60
+
61
+ The original metadata-only scope is superseded. `messages.get({messageId})`
62
+ requests text body content. `attachments.list({messageId})` lists attachments;
63
+ `attachments.get({messageId, attachmentId})` reads file attachments with bounded
64
+ Base64 content (about 5 MB). Treat returned content as untrusted; sanitize any
65
+ HTML before rendering and never execute attachments automatically.
66
+
67
+ `messages.setRead({messageId,isRead})` and `messages.move({messageId,destinationId})`
68
+ require Mail.ReadWrite. Keep the new ID returned after moving. `messages.send`
69
+ requires Mail.Send and `{subject,text,to:["recipient@example.com"]}` (1–20 recipients).
70
+ It sends as the connected account and saves Sent Items. `{accepted:true}` means
71
+ HTTP202, not successful delivery. App authorization must approve recipients and
72
+ content; no automatic send retry after uncertainty.
73
+
74
+ `calendars.list({})` and `events.list({calendarId,pageSize})` support Calendars.Read
75
+ or Calendars.ReadWrite. `events.create({calendarId,subject,start,end})` requires
76
+ Calendars.ReadWrite; start/end are UTC ISO strings ending in Z, with end after start.
77
+ It creates an appointment with no attendees/invitations. The app owns time-zone
78
+ presentation and event selection, not Vibe64.
79
+
80
+ CLI uses the same connections.invoke operations; other frameworks call these
81
+ Graph endpoints with their own HTTP client and project-owned Env/grant store.
82
+ **LIMITATIONS:** No email-client UI, outgoing attachments, draft/reply flows,
83
+ shared-mailbox delegation, recurrence, meeting invitations or editor attachment.
84
+ Embedded-item/large attachments need native Graph wiring. Example: send a receipt
85
+ and create an appointment, but no Outlook replacement. No live/generated-app proof.
86
+
87
+ [Send mail](https://learn.microsoft.com/en-us/graph/api/user-sendmail?view=graph-rest-1.0),
88
+ [move](https://learn.microsoft.com/en-us/graph/api/message-move?view=graph-rest-1.0),
89
+ [attachments](https://learn.microsoft.com/en-us/graph/api/attachment-get?view=graph-rest-1.0),
90
+ [events](https://learn.microsoft.com/en-us/graph/api/user-post-events?view=graph-rest-1.0).
@@ -0,0 +1,119 @@
1
+ # Microsoft PowerPoint
2
+
3
+ Provider ID `microsoft-powerpoint`; export `microsoftPowerPointProvider` from
4
+ `@jskit-ai/connectors-catalog/server/microsoft-powerpoint`. This initial adapter browses
5
+ presentation files and folders in the connected account's default drive, and reads
6
+ file metadata. It does not read or edit presentation contents, download files,
7
+ execute macros, create files or change sharing. A filename extension identifies
8
+ a candidate file; it is not a check of the file's actual format.
9
+
10
+ ## Registration and configuration
11
+
12
+ Follow the complete [Microsoft registration steps](microsoft-oauth.md).
13
+ Use **Any Entra ID Tenant + Personal Microsoft accounts** with `common`, or the
14
+ matching organizational, personal-only or single-directory option in that guide.
15
+ For one directory, copy **Directory (tenant) ID** into `settings.tenantId`.
16
+ Under **API permissions → Add a permission → Microsoft Graph → Delegated
17
+ permissions**, select `Files.Read` and `offline_access`. Then configure the
18
+ Web callback, create a client secret and store its Value through the referenced
19
+ Env variable. Use an account with an existing drive; JSKIT does not provision it.
20
+
21
+ ```json
22
+ {
23
+ "schemaVersion": 1,
24
+ "integrations": {
25
+ "files": {
26
+ "provider": "microsoft-powerpoint",
27
+ "accountMode": "per-user",
28
+ "scopes": [
29
+ "Files.Read",
30
+ "offline_access"
31
+ ],
32
+ "settings": {
33
+ "tenantId": "common"
34
+ },
35
+ "authentication": {
36
+ "method": "oauth2",
37
+ "registrationRef": "microsoft"
38
+ }
39
+ }
40
+ },
41
+ "registrations": {
42
+ "microsoft": {
43
+ "source": "own",
44
+ "clientId": "YOUR_APPLICATION_CLIENT_ID",
45
+ "clientSecretRef": "env:MICROSOFT_CLIENT_SECRET",
46
+ "callbackUrlRef": "env:MICROSOFT_CALLBACK_URL"
47
+ }
48
+ }
49
+ }
50
+ ```
51
+
52
+ The same values are editable in Vibe64: display name, account ownership, tenant,
53
+ Client ID, secret/callback references and the two permission choices. Saving the
54
+ file does not open provider consent. The [OAuth composition pattern](../patterns/oauth-connection/PATTERN.md)
55
+ uses the library for consent, private encrypted text storage and runtime access.
56
+ A per-user slot uses the app's authenticated subject. A shared slot uses the
57
+ host's membership policy and stable shared subject; it is a shared account.
58
+
59
+ ## Runtime operations
60
+
61
+ - `items.list`: optional `folderId`, `pageSize` (1–100, default 25) and `nextLink`.
62
+ Without `folderId`, reads `/v1.0/me/drive/root/children`; otherwise reads
63
+ `/v1.0/me/drive/items/{folderId}/children`. Keeps folders and files whose
64
+ extensions are ppt, pptx, pptm, pot, potx, potm, pps, ppsx, ppsm, case-insensitively.
65
+ - `items.get`: required `itemId`, reading `/v1.0/me/drive/items/{itemId}`.
66
+ Returns a matching file's metadata. Other file types and folders produce
67
+ `connector_document_type_invalid`.
68
+
69
+ Both operations require `Files.Read`. IDs must be opaque item IDs, not paths or
70
+ URLs. Selected metadata includes ID, name, size, web URL, file/folder facets,
71
+ parent reference, last modification time and ETag. The adapter does not follow
72
+ returned URLs. [Graph children API](https://learn.microsoft.com/en-us/graph/api/driveitem-list-children?view=graph-rest-1.0),
73
+ [Graph item API](https://learn.microsoft.com/en-us/graph/api/driveitem-get?view=graph-rest-1.0).
74
+
75
+ `items.list` verifies a new connection with input `{}`. Its page size bounds the
76
+ upstream page before local file filtering. A filtered page can be empty and
77
+ still have `@odata.nextLink`: retain that link and pass it with the same folder
78
+ input to continue. It is not a recursive search or an automatic full-drive scan.
79
+ Next links cannot change Graph origin or the selected resource path.
80
+
81
+ ## Application registration and AI provisioning
82
+
83
+ AI provisioning is **API-capable after operator authorization** using the
84
+ application and credential endpoints in the common guide. Registration remains
85
+ separate from account consent and tenant administrator policy.
86
+
87
+ Register the callback served by this application's backend. Store its exact URL
88
+ and client secret in application environment bindings. The same setup works with
89
+ a CLI, installed editor or hosted editor; none supplies a shared registration.
90
+ See the [callback guide](../../connectors-core/docs/oauth-callbacks.md) for domain
91
+ changes and reconnect behavior. Keep the selected Microsoft tenant/audience
92
+ consistent with the provider registration.
93
+
94
+ ## Evidence and limits
95
+
96
+ Focused fixtures cover consent, cancellation, encrypted restart, refresh,
97
+ reduced permissions, owner isolation, tenant changes, folder paging, empty
98
+ filtered pages, metadata validation and controlled provider failures. Provider
99
+ HTTP is simulated. No live account, provider registration or generated app is
100
+ used. Provider-console administration and live account acceptance remain
101
+ outside this fixture evidence.
102
+
103
+ ## Editor credential handoff
104
+
105
+ The inline guide supplies Entra registration, account audience, Web callback,
106
+ delegated permissions, secret Value and expiry steps. Save
107
+ `env:MICROSOFT_POWERPOINT_CLIENT_SECRET` and
108
+ `env:MICROSOFT_POWERPOINT_CALLBACK_URL`; use **Set credential in Env** and
109
+ **Open Env** to store the values. Shared/assistant **Connect account** invokes
110
+ the prepared application runtime. Per-user connections belong to individual
111
+ users inside that application. No Vibe64 gateway or shared registration is used.
112
+
113
+ ## Existing-scope closeout — 13 September 2026
114
+
115
+ Delegated project-owned OAuth browses default-drive folders and PowerPoint candidate filenames and fetches selected file metadata, with bounded paging, tenant/audience configuration and refreshed private grants.
116
+
117
+ No slide/presentation content reading, creation/editing, upload/download, conversion, macros, sharing, recursive search, arbitrary drive/site selection or file format validation. Filename extension filtering is not content inspection; filtered empty pages can still have a continuation. No app-only/client-credentials or device-code grant, application login or automatic remote consent revocation. The app owns callback routes, account connection UI, authorization and file-picker/pagination behavior. Exact Lovable shared-form fields/scopes remain unverified because the saved shared-form reference is a loading placeholder. To extend: use supported native presentation tooling and file transfer, proving actual slide changes, conflict handling and format preservation; no invented Graph slide-editing endpoint. No live provider account, provider registration, paid request or generated-application execution was tested. No new editor coding-assistant tool attachment is claimed. Other frameworks use the same project configuration and their own native tools; JSKIT is optional.
118
+
119
+ 7 provider-specific source and 7 installed-package cases passed, plus 2 shared Microsoft tenant checks in each 16-test Word/PowerPoint run on September 13. September 12 rendered guidance/form/lifecycle evidence at 496px is retained; no new phone or browser run.
@@ -0,0 +1,75 @@
1
+ # Microsoft SharePoint
2
+
3
+ Provider ID `microsoft-sharepoint`; export `microsoftSharePointProvider` from
4
+ `@jskit-ai/connectors-catalog/server/microsoft-sharepoint`.
5
+
6
+ Follow all [Microsoft registration steps](microsoft-oauth.md), choosing
7
+ **Multiple Entra ID tenants**. The module uses the `organizations` authority;
8
+ personal Microsoft accounts are unsupported. Under **API permissions → Microsoft
9
+ Graph → Delegated permissions**, add `Sites.Read.All`, `User.Read` and `offline_access`.
10
+ The form requires site read and profile read; site search itself uses only
11
+ `Sites.Read.All`. Optional site write and file read start selected. Clear them
12
+ for a search-only application. Site manage, full control and file write are
13
+ also available, but selecting permissions does not implement those operations.
14
+ Site access remains limited by the signed-in user's rights and tenant policy.
15
+
16
+ `sites.search` calls `/v1.0/sites?search={query}`. Pass
17
+ `{ "search": "your site search text" }` as verification input before consent.
18
+ The required nonempty search has a 1024-character fragment bound. Results retain
19
+ the site `value` collection and any paging metadata; use optional `nextLink`
20
+ for same-resource continuation with the original search input. Empty results
21
+ are a successful authorized search, not proof of a particular site's existence.
22
+ This fragment does not edit sites, crawl documents or implement selected-site
23
+ application permissions. [Site search API](https://learn.microsoft.com/en-us/graph/api/site-search?view=graph-rest-1.0).
24
+
25
+ AI provisioning is **API-capable after operator authorization**, using the
26
+ application/credential APIs and these delegated permissions. The common guide
27
+ details console navigation, application-owned client ID and private secret/callback
28
+ references, and limitations of quota separation. Creating an app does not grant
29
+ the user access to additional sites.
30
+
31
+ Compose the same library operations and private file store from a CLI or an
32
+ application backend, using an authenticated application/subject policy.
33
+ Automated fixtures verify required search input, query encoding, organizational
34
+ OAuth, permission failure, paging boundaries, cancellation, refresh and restart.
35
+ No live tenant access or generated application is used.
36
+
37
+ ## Editor credential handoff
38
+
39
+ The inline guide covers Entra registration, organizational audience, exact Web
40
+ callback, delegated permissions and secret Value. Save the configuration with
41
+ `env:MICROSOFT_SHAREPOINT_CLIENT_SECRET` and
42
+ `env:MICROSOFT_SHAREPOINT_CALLBACK_URL`. Use **Set credential in Env** and
43
+ **Open Env** to store their values, then enter **Site search** and connect.
44
+ Shared/assistant connections belong to this project; per-user connections belong
45
+ to authenticated users of the generated app. No editor-owned registration or
46
+ gateway is involved. Rotate secrets before expiry and reconnect after consent
47
+ changes. Local disconnect does not revoke Microsoft consent.
48
+
49
+ ## Current document and list operations
50
+
51
+ From `sites.search`, pass the returned siteId to `libraries.list` or `lists.list`.
52
+ `files.list({driveId,folderId?,pageSize?})` browses libraries. `files.get({driveId,itemId})`
53
+ returns metadata and a private temporary download URL. Download through the native
54
+ browser/client without the Microsoft Authorization header; do not log/cache the URL.
55
+ `files.upload({driveId,parentId,name,bodyBase64,conflictBehavior?})` reuses the OneDrive
56
+ binary-transfer implementation, capped at 5 MB, default conflict fail. Replacing
57
+ existing files requires explicit app approval. Sites.ReadWrite.All is required.
58
+
59
+ `listItems.list({siteId,listId,pageSize?})` expands fields; retain the item ETag.
60
+ `listItems.create({siteId,listId,fields})` and
61
+ `listItems.update({siteId,listId,itemId,fields,eTag})` use Sites.ReadWrite.All.
62
+ Fields use internal column names, up to 100 scalar values/64 KiB. Update sends
63
+ If-Match; on 412 reload and review the competing change. Do not automatically
64
+ repeat uncertain writes. CLI uses the same connection service; other frameworks
65
+ call Graph with their own HTTP clients and the same project Env ownership.
66
+
67
+ **LIMITATIONS:** No site-collection creation, admin UI, complex field editors,
68
+ sharing/permission editor or editor tool attachment. Native downloads and large
69
+ resumable transfers are documented composition, not executed here. Example: update
70
+ a status list/upload a report, without a SharePoint site builder. No live/generated-app proof.
71
+
72
+ [Libraries](https://learn.microsoft.com/en-us/graph/api/drive-list?view=graph-rest-1.0),
73
+ [list items](https://learn.microsoft.com/en-us/graph/api/listitem-list?view=graph-rest-1.0),
74
+ [create](https://learn.microsoft.com/en-us/graph/api/listitem-create?view=graph-rest-1.0),
75
+ [update](https://learn.microsoft.com/en-us/graph/api/listitem-update?view=graph-rest-1.0).