@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,262 @@
1
+ # Firebase Cloud Messaging
2
+
3
+ Import `firebaseCloudMessagingProvider` from
4
+ `@jskit-ai/connectors-catalog/server/firebase-cloud-messaging`.
5
+ The library validates and sends HTTP v1 messages using an explicitly supplied
6
+ service-account credential. Saving configuration does not contact Google.
7
+ Connecting performs a dry-run check; it does not deliver a notification.
8
+
9
+ ## Set up the provider
10
+
11
+ 1. In the [Firebase console](https://console.firebase.google.com/), open the
12
+ project that will own the receiving installations. For a new project, choose
13
+ **Create a project**, supply its name and complete the console's setup.
14
+ 2. Open the gear beside **Project Overview**, then **Project settings**.
15
+ Under **General**, copy **Project ID** into the form. This is the lowercase
16
+ textual identifier, not the display name or numeric project number.
17
+ 3. Open **Cloud Messaging**. Ensure **Firebase Cloud Messaging API (V1)** is
18
+ enabled; use its linked Google Cloud API page to enable it if necessary.
19
+ 4. Open **Service accounts**, then **Generate new private key** and
20
+ **Generate key**. Store the complete downloaded JSON as a private server
21
+ environment value, for example `FIREBASE_SERVICE_ACCOUNT`. The source file
22
+ contains only `env:FIREBASE_SERVICE_ACCOUNT`.
23
+ 5. For a dedicated sender identity, use Google Cloud **IAM & Admin > Service
24
+ Accounts**. Create/select the account, then **Keys > Add key > Create new
25
+ key > JSON > Create**. Give this identity **Firebase Cloud Messaging API
26
+ Admin** on the target project, or an appropriate custom role. Organization
27
+ policy can prevent key creation. Do not substitute an unrelated credential.
28
+ 6. In Vibe64, enter `env:FIREBASE_SERVICE_ACCOUNT` in **Service-account JSON
29
+ reference**, then **Save configuration**. Follow **Set credential in Env**
30
+ and store the complete JSON under `FIREBASE_SERVICE_ACCOUNT`, not a filename
31
+ or path. Return to the integration and connect. CLI applications supply the
32
+ same environment value and call `connectServiceAccount` from their authorized
33
+ server. Verification requests an access token and checks the target project
34
+ with a validate-only topic message; no notification is delivered.
35
+ 7. If verification fails, check the target project ID, enabled API and sender
36
+ IAM grant. Disconnect removes the application's local connection; it does not
37
+ delete the Google key. Rotate or delete keys under Google Cloud **IAM & Admin
38
+ > Service Accounts > your sender > Keys**. Update Env when rotating.
39
+
40
+ Firebase documents the service-account setup, messaging scope and cross-project
41
+ sender permissions in its [HTTP v1 guide](https://firebase.google.com/docs/cloud-messaging/send/v1-api).
42
+ Google documents the console/API key lifecycle and organization restrictions
43
+ in [service-account key management](https://docs.cloud.google.com/iam/docs/keys-create-delete).
44
+
45
+ ## Optional browser setup
46
+
47
+ Select **Include web push** to reveal three additional fields:
48
+
49
+ | Field | Console source | Exposure |
50
+ |---|---|---|
51
+ | Firebase API key | Project settings > General > Your apps > Web app > SDK setup and configuration: `apiKey` | Public |
52
+ | Firebase App ID | Same configuration: `appId` | Public |
53
+ | Web Push VAPID key | Project settings > Cloud Messaging > Web configuration > Web Push certificates | Public key only |
54
+
55
+ If there is no Web app, click the Web icon under **Your apps**, enter a nickname,
56
+ and choose **Register app**. Firebase Hosting is not required for another host.
57
+ Under **Web Push certificates**, choose **Generate Key Pair** when none exists,
58
+ then copy the public key. Keep these values in the same Firebase project.
59
+
60
+ The application still needs HTTPS, a service worker, notification permission and
61
+ browser registration. The current Firebase Web API uses `register` and
62
+ `onRegistered` to obtain installation IDs. Existing registration-token APIs are
63
+ deprecated but remain a supported target in this adapter. Do not mix both client
64
+ registration approaches in one app. See [Firebase Web setup](https://firebase.google.com/docs/cloud-messaging/web/get-started).
65
+
66
+ `firebaseCloudMessagingWebConfiguration(settings)` from
67
+ `@jskit-ai/connectors-catalog/client/firebase-cloud-messaging` returns
68
+ `{ firebaseConfig, vapidKey }`. It validates web mode, projects only public
69
+ fields and derives `messagingSenderId` as text from `appId`. It neither asks for
70
+ notification permission nor loads credentials. Use it with the Firebase SDK
71
+ version installed by the application, whose registration APIs must be verified.
72
+ Switching back to **Server or native only** removes the three web-only settings.
73
+
74
+ ## Portable configuration
75
+
76
+ ```json
77
+ {
78
+ "schemaVersion": 1,
79
+ "registrations": {},
80
+ "integrations": {
81
+ "push": {
82
+ "provider": "firebase-cloud-messaging",
83
+ "displayName": "Application notifications",
84
+ "accountMode": "shared",
85
+ "scopes": ["https://www.googleapis.com/auth/firebase.messaging"],
86
+ "authentication": {
87
+ "method": "service-account",
88
+ "secretRef": "env:FIREBASE_SERVICE_ACCOUNT"
89
+ },
90
+ "settings": {
91
+ "projectId": "my-notifications-app",
92
+ "clientMode": "server"
93
+ }
94
+ }
95
+ }
96
+ }
97
+ ```
98
+
99
+ For web push, use `clientMode: "web"` and add `apiKey`, `appId` and `vapidKey`.
100
+ The same schema validates files edited by hand, AI or Vibe64. It accepts
101
+ `shared` and explicitly authorized `assistant` ownership. This service account
102
+ does not represent a separate Google identity for every app user.
103
+
104
+ The target project setting is explicit even though the credential also contains
105
+ `project_id`: Google supports a sender service account in a different project.
106
+ IAM must grant that sender access to this target. Changing the target, settings,
107
+ scopes or secret reference requires verification again.
108
+
109
+ ## Runtime and useful operations
110
+
111
+ The provider accepts JSON of type `service_account` with `project_id`,
112
+ `client_email`, `private_key`, `private_key_id`, and Google's fixed `token_uri`.
113
+ An optional `universe_domain` must be `googleapis.com`. It does not load external
114
+ account files, application-default credentials, metadata servers or delegated
115
+ user identities. `jose` signs an RS256 assertion with a one-hour lifetime; the
116
+ fixed Google token endpoint exchanges it for a short-lived access token.
117
+ [Google's service-account protocol](https://developers.google.com/identity/protocols/oauth2/service-account)
118
+
119
+ The shared core caches the token in the encrypted file store, renews under its
120
+ existing connection lock, resolves credential rotation before the next request,
121
+ and exposes only safe connection metadata. Raw service-account JSON is not
122
+ stored in the connection or sent to the FCM message endpoint.
123
+
124
+ | Operation | Input | Effect |
125
+ |---|---|---|
126
+ | `connection.check` | `{}` | Fixed topic/data payload with `validate_only: true` |
127
+ | `messages.validate` | `{ message }` | Validates the supplied message without delivery |
128
+ | `messages.send` | `{ message }` | Explicitly submits the supplied message for delivery |
129
+
130
+ `message` requires exactly one of `fid`, `token`, `topic`, or `condition`, plus
131
+ `notification` and/or `data`. Common notification fields are `title`, `body` and
132
+ an HTTPS `image` URL. Data values must be strings and keys cannot use Firebase's
133
+ reserved prefixes. The adapter bounds the serialized message to 4,096 UTF-8
134
+ bytes for individual targets or 2,048 for topics/conditions. It returns a
135
+ validated `{ name: "projects/.../messages/..." }` receipt; a receipt confirms
136
+ acceptance, not device delivery. No automatic retry or batch fan-out occurs.
137
+ [Message fields](https://firebase.google.com/docs/reference/fcm/rest/v1/projects.messages),
138
+ [send and validate-only API](https://firebase.google.com/docs/reference/fcm/rest/v1/projects.messages/send)
139
+
140
+ Example authorized call:
141
+
142
+ ```js
143
+ await connections.invoke({
144
+ context: trustedContext,
145
+ integrationId: "push",
146
+ operation: "messages.validate",
147
+ input: { message: {
148
+ fid: installationOwnedByTheRecipient,
149
+ notification: { title: "Order ready", body: "Your order is ready." },
150
+ data: { orderId: "42" }
151
+ } }
152
+ });
153
+ ```
154
+
155
+ The application's policy must authorize the audience and payload before a
156
+ `messages.send` action. A shared service credential grants no user permission
157
+ to send to arbitrary installations or topics. No login functionality is implied.
158
+
159
+ ## Public, Online and custom domains
160
+
161
+ **Universal OAuth callback URL: not applicable.** Service-account authorization
162
+ is a server-to-server exchange, with no browser redirect to register. A VPS
163
+ address or custom domain does not change the target project or that exchange.
164
+ Browser notification permission, service workers and registrations belong to
165
+ the origin, so register the app on each new custom domain and update its stored
166
+ installation association. Existing cookies or browser permissions do not move
167
+ between unrelated domains.
168
+
169
+ The application owner supplies the Firebase project and sender credentials.
170
+ Online and installed-editor projects use the same configuration and runtime;
171
+ Vibe64 supplies no shared Firebase project or platform sender key. Two service
172
+ accounts or Web apps inside one project do not split its project quota.
173
+ [FCM quota ownership](https://firebase.google.com/docs/cloud-messaging/throttling-and-quotas)
174
+
175
+ Keep sender private keys in the application's private Env or credential store.
176
+ The application backend authorizes notification requests and owns installation
177
+ associations. The same source schema remains available to CLI applications;
178
+ editing configuration does not provision a Firebase project or grant IAM access.
179
+
180
+ ## Can AI automate the setup?
181
+
182
+ | Work | Feasibility and required authority |
183
+ |---|---|
184
+ | Create the application’s Cloud project | Resource Manager `projects.create`; organization policy, project limits and any required billing association still apply |
185
+ | Add Firebase and Web apps | Management API `projects.addFirebase`, `projects.webApps.create` and `projects.webApps.getConfig`; use an authorized management identity and inspect operation completion |
186
+ | Create a sender and key | IAM service-account creation and `projects.serviceAccounts.keys.create`; requires explicit administrative permission, and key creation may be prohibited |
187
+ | Configure target-project IAM | An administrator can grant the sender the required messaging permission; preserve unrelated IAM policy bindings |
188
+ | Web VAPID pair | Console workflow above; this implementation does not claim a verified automation API for it |
189
+ | Device/browser enrollment | Application SDK wiring and the user's notification permission remain necessary |
190
+
191
+ An AI can prepare calls and configuration when given authorized management
192
+ access; an FCM-only sending credential is insufficient for provisioning.
193
+ No provisioning calls run when saving or connecting this integration.
194
+ [Management API workflow](https://firebase.google.com/docs/projects/api/workflow_set-up-and-manage-project)
195
+
196
+ ## Proof and remaining work
197
+
198
+ Controlled tests verify real JWT signatures with generated fixture keys, fixed
199
+ destinations, dry-run flags, target/input validation, malformed and denied
200
+ responses, file restart, renewal, rotation, ownership and interruption.
201
+ The browser form checks exercise source persistence and validation, not Google.
202
+ No live project, IAM setup, notification, browser subscription or generated app
203
+ has been exercised. The initial message fragment does not yet expose Android,
204
+ APNs or Webpush override objects, topic subscription administration, delivery
205
+ tracking or retry scheduling. Data-only iOS delivery can require APNs options
206
+ outside this initial fragment. These are explicit limits, not proven workflows.
207
+
208
+ ## Client enrollment and expired recipients
209
+
210
+ The app owns the registration endpoint and storage. It may use ordinary files or
211
+ its own selected storage; this connector does not add a database to Vibe64. The
212
+ backend authenticates the current user, binds each FID/token to that user and
213
+ device, and updates a server timestamp. Do not accept an arbitrary user ID as
214
+ proof of ownership. Support multiple devices and remove the association on
215
+ logout/unsubscribe as appropriate. Store registrations privately.
216
+
217
+ For a Firebase Web SDK supporting the current FID APIs, compose your public
218
+ configuration helper with native SDK calls:
219
+
220
+ ```js
221
+ // Application frontend: its installed Firebase SDK owns registration.
222
+ import { initializeApp } from "firebase/app";
223
+ import { getMessaging, onRegistered, register } from "firebase/messaging";
224
+ const messaging = getMessaging(initializeApp(firebaseConfig));
225
+ onRegistered(messaging, installationId => saveRegistrationForCurrentUser(installationId));
226
+ // Call from an explicit user action; create firebase-messaging-sw.js at the origin root.
227
+ if (await Notification.requestPermission() === "granted") {
228
+ await register(messaging, { vapidKey });
229
+ }
230
+ ```
231
+
232
+ `saveRegistrationForCurrentUser` is an authenticated application endpoint, not a
233
+ JSKIT export. Wire foreground `onMessage` and service-worker background handling
234
+ using the installed Firebase SDK; avoid duplicate notifications if the SDK
235
+ already displays a notification payload. Use HTTPS and feature detection, and
236
+ show permission-denied/unsupported states. Do not mix FID APIs with older
237
+ getToken-based registration in one app. Verify the SDK version exposes the
238
+ selected API. [Web enrollment](https://firebase.google.com/docs/cloud-messaging/web/get-started).
239
+
240
+ Native Android/Apple apps use their native Firebase SDK and registration-change
241
+ callbacks to upload the current identifier through the same app-owned endpoint.
242
+ Apple apps also need their APNs credential/configuration in Firebase and platform
243
+ notification entitlements; web VAPID does not configure Apple native delivery.
244
+ This provider's common notification/data fields do not expose platform-specific
245
+ APNs/Android overrides; use the native admin client for those advanced payloads.
246
+
247
+ `connector_recipient_unregistered` means a targeted FID/token received typed FCM
248
+ UNREGISTERED (404). Remove that recipient association; the sender connection
249
+ remains usable. A plain 404 is not enough to remove registrations.
250
+ `connector_message_invalid` means HTTP 400: fix/validate the payload before
251
+ concluding the target is invalid. Never clear all devices or revoke the service
252
+ account for one stale recipient. Other failures keep the existing denied/rate
253
+ limit/provider error behavior, with no automatic send retries.
254
+ [Registration lifecycle](https://firebase.google.com/docs/cloud-messaging/manage-tokens).
255
+
256
+ **LIMITATIONS:** Configuring the connector does not create a push opt-in UI,
257
+ service worker, device registry or coding-assistant attachment. For example, an
258
+ app can send an order-ready message after enrolling the customer's browser;
259
+ saving the Firebase fields alone does not enroll that browser. The application
260
+ owns those native SDK/UI pieces, delivery observation and any retry scheduling.
261
+ Other frameworks consume the same config/Env using native Google/Firebase tools;
262
+ JSKIT remains optional. No live browser subscription or notification was tested.
@@ -0,0 +1,137 @@
1
+ # Firecrawl setup and implementation
2
+
3
+ Documentation checked: 13 September 2026. Signed-in console steps and live
4
+ provider requests have not been exercised. Automated tests simulate the
5
+ provider and do not scrape a real site.
6
+
7
+ ## Capability and input ownership
8
+
9
+ `credits.read` verifies the team key without starting paid work. The application
10
+ explicitly authorizes each operation below; the runtime never automatically
11
+ replays paid work or polls jobs in the background.
12
+
13
+ | Operation | Inputs and result |
14
+ |---|---|
15
+ | `pages.scrape` | HTTP(S) URL, optional `onlyMainContent`; Markdown and metadata |
16
+ | `pages.search` | `query`, optional `limit` (1–100, default 5), `includeContent`; web results, optionally scraped Markdown |
17
+ | `sites.map` | URL, required `limit` (1–1000), optional `search`; discovered links |
18
+ | `pages.extract` | URL, required JSON `schema`, optional `prompt`; `data.json` |
19
+ | `crawls.start` | URL, required page `limit` (1–1000), optional `maxDiscoveryDepth` (0–10, default 2); job ID |
20
+ | `crawls.get` | Job `id`, optional returned `next` URL; status, counts, content and next page |
21
+ | `crawls.errors` | Job ID; failed pages and blocked URLs |
22
+ | `crawls.cancel` | Job ID; cancellation acknowledgement |
23
+
24
+ Crawls exclude external links and subdomains. Store each result page and follow
25
+ `next` until absent: a completed job does not mean the first response contains
26
+ all content. Only next URLs on the exact same Firecrawl job path are accepted.
27
+ Inspect errors before describing an import as complete; cancellation does not
28
+ refund work already performed. The app owns job IDs, its users' authorization,
29
+ recurring schedules, result retention and search/index storage.
30
+
31
+ | Input | Destination | Rule |
32
+ |---|---|---|
33
+ | Display name | integration `displayName` | Optional, 1–200 characters when present |
34
+ | Own API key | Server environment/secret store | Value never goes into `integrations.json` |
35
+ | API key reference | `authentication.secretRef` | For example `env:FIRECRAWL_API_KEY` |
36
+ | Shared account / assistant | `accountMode` | Caller authorized by application policy |
37
+ | People with access | Host membership/connection grants | Not granted merely by editing application source |
38
+
39
+ ## Manual setup
40
+
41
+ 1. Open [Firecrawl](https://www.firecrawl.dev/) and sign in. Choose the team that
42
+ should pay for the application's requests. Check its available credits and
43
+ plan before enabling application operations.
44
+ 2. Open [API Keys](https://www.firecrawl.dev/app/api-keys), the direct destination
45
+ linked from the official introduction, and create or copy a team key. The
46
+ [introduction](https://docs.firecrawl.dev/introduction) and
47
+ [authentication guide](https://docs.firecrawl.dev/api-reference/v2-introduction)
48
+ identify the dashboard as the source of the API key. Exact signed-in menu
49
+ labels may differ; these have not been inspected for this implementation.
50
+ 3. Store the value in the private environment or secret store as
51
+ `FIRECRAWL_API_KEY`. In the form enter the reference
52
+ `env:FIRECRAWL_API_KEY`, click **Save configuration**, then follow **Set
53
+ credential in Env** to store the real key. Return and connect. This saves
54
+ the same file a CLI user would author, with
55
+ `authentication.method: "api-key"`, empty scopes and no OAuth registration.
56
+ 4. Wire the runtime using the shared API-key pattern. Invoke `connectApiKey`;
57
+ its [credit-usage read](https://docs.firecrawl.dev/api-reference/endpoint/credit-usage)
58
+ succeeds when `success` is true and `data.remainingCredits` is numeric. Zero
59
+ credits still identifies a valid account; it does not promise that a scrape
60
+ can proceed.
61
+ 5. For an explicitly authorized operation call `pages.scrape` with a page URL.
62
+ The [scrape API](https://docs.firecrawl.dev/api-reference/endpoint/scrape)
63
+ returns `data.markdown` and metadata. The connector sends the URL as JSON to
64
+ Firecrawl, not as the destination of the authenticated HTTP request. It
65
+ rejects non-HTTP URLs and embedded URL credentials locally.
66
+ 6. A 401 means the key must be corrected and reconnected; a 403 means denied
67
+ permissions. Rate limits, exhausted credits, scrape failures and unexpected
68
+ bodies must remain visible failures. Do not report Connected for an invalid
69
+ verification result or automatically repeat a paid scrape.
70
+ 7. To rotate, create another team key if supported or use the dashboard's key
71
+ rotation facility; update the secret binding and verify the replacement
72
+ before removing the old key. Revocation can affect other apps sharing that
73
+ key. Local disconnect only removes this application's connection state.
74
+ OAuth consent, redirect URLs, refresh tokens and client IDs do not apply.
75
+
76
+ ## Automation and application credentials
77
+
78
+ Classification: **console-assisted own-key setup; API provisioning for approved
79
+ partners**. Additional public documentation checked on 9 September 2026:
80
+ [Partner Integration API](https://docs.firecrawl.dev/partner-integration).
81
+ Firecrawl must approve the platform and supply a distinct server-only partner
82
+ key. After the user accepts Firecrawl's terms, an authorized backend can call
83
+ `POST https://integrations.firecrawl.dev/partner/v1/accounts` with their email.
84
+ It returns `apiKey` and `alreadyExisted`; an existing partner team is reused.
85
+ Store the returned key privately, never in chat, source or browser config.
86
+ The same partner API documents key validation and destructive key rotation.
87
+ None of these partner operations is implemented or exercised by this fragment.
88
+
89
+ An AI can prepare the JSON/environment reference, validate it, compose the
90
+ library calls and check the key through the documented credit endpoint after
91
+ an operator supplies it. Account/team selection, billing and key issuance are
92
+ operator steps for own-key setup. Online can implement partner provisioning
93
+ after approval; a standard API key cannot substitute for the partner key.
94
+
95
+ The application owner supplies its Firecrawl key through private Env. Keys for
96
+ one team use its shared credits; creating two keys does not split that balance.
97
+ The application owner arranges the required subscription and usage limits.
98
+ This adapter does not sell credits or provision a subscription.
99
+
100
+ OAuth callback: **not applicable** to these API-key modes. Normal server API
101
+ requests do not use the customer's browser origin. A custom web domain does
102
+ not change the team/key binding; VPS changes must preserve the authorized
103
+ application identity. Follow the [Online setup contract](../../connectors-core/docs/online-setup.md)
104
+ for application-owned readiness and failure states. This fragment does not configure
105
+ crawl/job webhooks; those would require their own verified receiving endpoint.
106
+
107
+ ## CLI and other frameworks
108
+
109
+ Use the shared API-key runtime pattern with `firecrawlProvider`, the same
110
+ `integrations.json` and private `FIRECRAWL_API_KEY`; Vibe64 is not required.
111
+ After the application has connected and authorized the caller:
112
+
113
+ ```js
114
+ const job = await connections.invoke({ context, integrationId: "firecrawl",
115
+ operation: "crawls.start", input: { url: "https://example.com", limit: 20 } });
116
+ // Persist job.id with its owner; a later application request checks progress.
117
+ const page = await connections.invoke({ context, integrationId: "firecrawl",
118
+ operation: "crawls.get", input: { id: job.id } });
119
+ // Persist page.data; if page.next exists, request it with the same job.id.
120
+ ```
121
+
122
+ Other frameworks use their native HTTP client with the same private bearer key
123
+ and [Search](https://docs.firecrawl.dev/api-reference/endpoint/search),
124
+ [Map](https://docs.firecrawl.dev/api-reference/endpoint/map),
125
+ [Scrape](https://docs.firecrawl.dev/api-reference/endpoint/scrape),
126
+ [Crawl](https://docs.firecrawl.dev/api-reference/endpoint/crawl-post),
127
+ [results](https://docs.firecrawl.dev/api-reference/endpoint/crawl-get),
128
+ [errors](https://docs.firecrawl.dev/api-reference/endpoint/crawl-get-errors) and
129
+ [cancel](https://docs.firecrawl.dev/api-reference/endpoint/crawl-delete) endpoints.
130
+ No JSKIT or Vibe64 execution service is required.
131
+
132
+ **LIMITATIONS:** no managed Firecrawl account/credits provisioning, browser
133
+ sessions, monitor service or editor coding-assistant attachment. For example,
134
+ your app can import twenty documentation pages and display their Markdown;
135
+ automatically refreshing that import every night requires its own scheduler.
136
+ Selecting this connector does not give the editor assistant those documents.
137
+ Own-key setup deliberately requires a Firecrawl account and available credits.
@@ -0,0 +1,95 @@
1
+ # Fireflies
2
+
3
+ Import `firefliesProvider` from `@jskit-ai/connectors-catalog/server/fireflies`.
4
+ The provider reads the key owner profile, meeting lists, transcript content and summaries, and searches titles/spoken words.
5
+
6
+ ## Configure access
7
+
8
+ 1. Sign into the intended Fireflies account and open **Integrations**, then
9
+ **Fireflies API**.
10
+ 2. Copy the displayed API key into backend Env as `FIREFLIES_API_KEY`. The key
11
+ follows the user's access and team permissions; admin access may include
12
+ team data. [Authorization](https://docs.fireflies.ai/fundamentals/authorization).
13
+ 3. Save provider `fireflies`, mode `shared` or `assistant`, `scopes: []`, and
14
+ authentication
15
+ `{ "method": "api-key", "secretRef": "env:FIREFLIES_API_KEY" }`.
16
+ 4. In Vibe64, enter `env:FIREFLIES_API_KEY` as **API key reference**, click
17
+ **Save configuration**, then **Set credential in Env**. Store the real key
18
+ as `FIREFLIES_API_KEY` and return to connect. CLI applications invoke
19
+ `connectApiKey` to verify the profile. Token replacement belongs in Env.
20
+ Disconnect clears local state; it does not revoke the provider key.
21
+
22
+ ## Runtime and AI composition
23
+
24
+ All operations POST fixed GraphQL queries to
25
+ `https://api.fireflies.ai/graphql` using Bearer authorization.
26
+ `profile.read` requests `user { user_id name email }` without an ID, so the
27
+ provider returns the key owner's profile.
28
+ [User query](https://docs.fireflies.ai/graphql-api/query/user).
29
+
30
+ `transcripts.list` requests only `id` and `title`. Inputs are `limit` (1–50,
31
+ default 25), `skip` (nonnegative GraphQL integer, default 0) and `mine`
32
+ (default true). `mine` restricts results to meetings organized by the key owner;
33
+ it does not mean every meeting they attended. Explicit false requests the
34
+ broader set the account is authorized to see. Advance `skip` for another page.
35
+ No transcript audio, recording request or meeting-join mutation is performed.
36
+ [Transcript query](https://docs.fireflies.ai/graphql-api/query/transcripts).
37
+
38
+ The runtime rejects GraphQL errors even with HTTP 200 and partial data. Queries
39
+ are fixed source; application inputs are variables. Compose the
40
+ [API-key pattern](../patterns/api-key-connection/PATTERN.md) with the private
41
+ JSON store. The application must authorize who may use this shared account.
42
+
43
+ ## Automation and application ownership
44
+
45
+ An AI can prepare the configuration and query wiring once the owner supplies a
46
+ key. The established bootstrap is the Integrations screen; no API for issuing
47
+ the initial user key was verified. Account and team membership remain provider
48
+ administration tasks.
49
+
50
+ This credential represents a particular user, not a universal registration for
51
+ every app visitor. The application owner supplies that user's authorized key
52
+ and checks account/team capacity. Two labels do not create independent provider
53
+ budgets. Per-user OAuth remains additional work.
54
+
55
+ Tests verify query variables, default meeting ownership, integer limits,
56
+ partial errors, HTTP failures, credential rotation, private persistence and
57
+ application isolation. They do not access real meetings.
58
+
59
+ Setup rechecked against the official authorization and quickstart guides on
60
+ 12 September 2026. The captured Lovable form was an empty shell; exact input
61
+ parity remains unproven. No signed-in Fireflies console was inspected.
62
+
63
+ ## Transcript content and search
64
+
65
+ `transcripts.get({id})` returns sentence text, speaker attribution, timestamps,
66
+ participants, title/date/duration, calendar/meeting links and summary keywords,
67
+ action items, outline and overview. Missing/inaccessible transcripts fail;
68
+ null sentences or summaries remain unavailable content, not a completed
69
+ summary. Fireflies processing and plan permissions determine availability.
70
+
71
+ `transcripts.search({keyword, scope, limit, skip, mine})` searches `all` by
72
+ default, or `title`/`sentences`. Keyword length is 1–255. Pagination and `mine`
73
+ use the same limits as listing. Retrieve selected IDs with `transcripts.get`.
74
+ The app must restrict which callers can read team meetings even with a valid
75
+ shared key. Do not render returned Markdown as untrusted raw HTML.
76
+
77
+ CLI apps use the same file and private Env with the API-key pattern. Other
78
+ frameworks use their native HTTP client to POST the fixed query/variables to
79
+ Fireflies; JSKIT and Vibe64 are optional. The app owns its digest schedules,
80
+ cache, task tracking and CRM writes through their respective APIs.
81
+
82
+ **LIMITATIONS:** editor assistant attachment remains deferred. Example: a
83
+ published app can show a sales call's action items; the Vibe64 coding assistant
84
+ does not gain meeting access from this configuration. Recording, transcript
85
+ mutation, incoming webhooks and per-user OAuth are not supplied (the Lovable
86
+ reference also describes these as excluded). Exact signed-in screen placement
87
+ was not captured; current official instructions establish API-key setup.
88
+
89
+ Rechecked 13 September 2026 against [transcript detail](https://docs.fireflies.ai/graphql-api/query/transcript),
90
+ [search](https://docs.fireflies.ai/graphql-api/query/transcripts),
91
+ [authorization](https://docs.fireflies.ai/fundamentals/authorization) and
92
+ [Lovable's current fields/capabilities](https://docs.lovable.dev/integrations/fireflies).
93
+ The latter resolves the empty original form: display name and an API key are
94
+ required inputs for its shared connection. Vibe64 stores a private Env reference
95
+ instead of putting the key in the source file. No live meetings were read.
@@ -0,0 +1,53 @@
1
+ # Fireworks AI
2
+
3
+ Import `fireworksAiProvider` from
4
+ `@jskit-ai/connectors-catalog/server/fireworks-ai`.
5
+ The initial operation lists accessible accounts using a Fireworks API key.
6
+
7
+ ## Configure access
8
+
9
+ 1. Sign into the intended Fireworks account and open [API Keys](https://app.fireworks.ai/settings/users/api-keys).
10
+ Choose **Create API key** and copy the generated value. The official
11
+ [quickstart](https://docs.fireworks.ai/getting-started/quickstart) links to this
12
+ page. Follow any required prompts on that page before copying the issued key.
13
+ These steps follow the official guide; they have not been tested with a live
14
+ account. The API's optional expiry field below does not establish a console control.
15
+ 2. Store it in backend Env as `FIREWORKS_API_KEY`. The owning user or service
16
+ account must be allowed to list accounts; an inference-only role may lack
17
+ that access. This fragment deliberately verifies a management read and does
18
+ not submit an inference request as a connection test.
19
+ 3. Save provider `fireworks-ai`, mode `shared` or `assistant`, `scopes: []`, and
20
+ authentication `{ "method": "api-key", "secretRef": "env:FIREWORKS_API_KEY" }`.
21
+ Calls use Bearer authentication and JSON content type at
22
+ `https://api.fireworks.ai`. [API authentication](https://docs.fireworks.ai/api-reference/introduction).
23
+ 4. Call `connectApiKey`. On rotation, replace the Env value. Local disconnect
24
+ removes connection state; delete the obsolete key in Fireworks to revoke it.
25
+
26
+ ## Runtime and AI composition
27
+
28
+ `accounts.list` reads `GET /v1/accounts`. It accepts `pageSize` (1–200, default
29
+ 50), `pageToken`, and an optional provider filter expression. Results preserve
30
+ `accounts`, `nextPageToken` and `totalSize`. Pass the next token as `pageToken`
31
+ while keeping the filter unchanged. The query uses the documented HTTP field
32
+ names, not the snake_case names sometimes used in SDK descriptions.
33
+ [Account listing](https://docs.fireworks.ai/api-reference/list-accounts).
34
+
35
+ Use the [API-key pattern](../patterns/api-key-connection/PATTERN.md) and encrypted
36
+ file store. An AI can use the returned account names for subsequent app-owned
37
+ deployment or billing workflows. Inference, streaming and deployment creation
38
+ are not operations in this fragment. Automated tests simulate provider reads,
39
+ paging, failures, key rotation and persistence across a new service instance.
40
+
41
+ ## Automation and application ownership
42
+
43
+ After initial authorized access, key creation can be automated with
44
+ `POST /v1/accounts/{account_id}/users/{user_id}/apiKeys`. Its JSON body contains
45
+ `apiKey`, with `displayName` and optional `expireTime`; save the returned `key`
46
+ directly into secret storage. Fireworks also documents `firectl api-key create`.
47
+ These require an existing authorized identity and do not bypass account setup.
48
+ [Key creation API](https://docs.fireworks.ai/api-reference/create-api-key).
49
+
50
+ The application owner supplies the account and keys, and sets capacity/billing
51
+ controls with Fireworks. Two key names in one account do not establish independent
52
+ quotas. AI can prepare configuration and provision permitted keys after bootstrap;
53
+ the editor does not supply or allocate inference capacity. This fragment makes no live requests during its tests.