@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.
- package/README.md +192 -0
- package/docs/ai-upstream-notices.md +51 -0
- package/docs/ai.md +191 -0
- package/docs/airtable.md +130 -0
- package/docs/algolia.md +190 -0
- package/docs/amazon-redshift.md +229 -0
- package/docs/amplitude.md +210 -0
- package/docs/apify.md +162 -0
- package/docs/apollo-io.md +200 -0
- package/docs/asana.md +126 -0
- package/docs/ashby.md +188 -0
- package/docs/atlassian.md +224 -0
- package/docs/attention.md +162 -0
- package/docs/aws-athena.md +150 -0
- package/docs/aws-credentials.md +75 -0
- package/docs/aws-s3.md +193 -0
- package/docs/bigquery.md +146 -0
- package/docs/brevo.md +122 -0
- package/docs/calendly.md +158 -0
- package/docs/canva.md +191 -0
- package/docs/chargebee.md +192 -0
- package/docs/clay.md +194 -0
- package/docs/clickhouse.md +242 -0
- package/docs/confidence-exp.md +74 -0
- package/docs/confidence-flags.md +75 -0
- package/docs/confidence-oauth.md +137 -0
- package/docs/contentful.md +123 -0
- package/docs/databricks.md +180 -0
- package/docs/dbt-semantic-layer.md +175 -0
- package/docs/elevenlabs.md +102 -0
- package/docs/figma.md +132 -0
- package/docs/firebase-cloud-messaging.md +262 -0
- package/docs/firecrawl.md +137 -0
- package/docs/fireflies.md +95 -0
- package/docs/fireworks-ai.md +53 -0
- package/docs/gatewayapi.md +113 -0
- package/docs/gemini-enterprise.md +224 -0
- package/docs/github-api.md +133 -0
- package/docs/gitlab-api.md +138 -0
- package/docs/gmail.md +133 -0
- package/docs/gong.md +205 -0
- package/docs/google-ads.md +156 -0
- package/docs/google-analytics.md +202 -0
- package/docs/google-docs.md +105 -0
- package/docs/google-drive.md +108 -0
- package/docs/google-maps-platform.md +208 -0
- package/docs/google-oauth.md +123 -0
- package/docs/google-search-console.md +124 -0
- package/docs/google-sheets.md +94 -0
- package/docs/google-slides.md +95 -0
- package/docs/granola.md +178 -0
- package/docs/hex.md +161 -0
- package/docs/heygen.md +124 -0
- package/docs/hubspot.md +142 -0
- package/docs/incident-io.md +118 -0
- package/docs/inngest.md +178 -0
- package/docs/klipy.md +149 -0
- package/docs/lexware.md +144 -0
- package/docs/lightspeed.md +193 -0
- package/docs/linear.md +137 -0
- package/docs/linkedin.md +196 -0
- package/docs/logo-dev.md +152 -0
- package/docs/mailgun.md +153 -0
- package/docs/mapbox.md +174 -0
- package/docs/microsoft-excel.md +97 -0
- package/docs/microsoft-fabric.md +249 -0
- package/docs/microsoft-oauth.md +143 -0
- package/docs/microsoft-onedrive.md +76 -0
- package/docs/microsoft-onenote.md +75 -0
- package/docs/microsoft-outlook.md +90 -0
- package/docs/microsoft-powerpoint.md +119 -0
- package/docs/microsoft-sharepoint.md +75 -0
- package/docs/microsoft-teams.md +72 -0
- package/docs/microsoft-word.md +119 -0
- package/docs/miro.md +117 -0
- package/docs/n8n.md +169 -0
- package/docs/notion.md +137 -0
- package/docs/oura.md +161 -0
- package/docs/paddle.md +168 -0
- package/docs/perplexity.md +85 -0
- package/docs/pipedrive.md +120 -0
- package/docs/polar.md +63 -0
- package/docs/posthog.md +227 -0
- package/docs/prestashop.md +151 -0
- package/docs/replicate.md +60 -0
- package/docs/resend.md +153 -0
- package/docs/salesforce.md +234 -0
- package/docs/sanity.md +122 -0
- package/docs/semrush.md +276 -0
- package/docs/sentry.md +112 -0
- package/docs/sevdesk.md +107 -0
- package/docs/shopify.md +206 -0
- package/docs/slack.md +257 -0
- package/docs/snowflake.md +271 -0
- package/docs/storyblok.md +130 -0
- package/docs/stripe.md +77 -0
- package/docs/supabase.md +51 -0
- package/docs/tally.md +105 -0
- package/docs/telegram.md +165 -0
- package/docs/tiktok.md +201 -0
- package/docs/twilio.md +284 -0
- package/docs/twitch.md +428 -0
- package/docs/wave.md +440 -0
- package/docs/wix.md +1249 -0
- package/docs/wiz.md +177 -0
- package/docs/woocommerce.md +400 -0
- package/docs/wordpress-com.md +358 -0
- package/docs/wordpress-self-hosted.md +252 -0
- package/docs/workday.md +292 -0
- package/docs/x-twitter.md +188 -0
- package/docs/xero.md +429 -0
- package/docs/zoho-books.md +214 -0
- package/docs/zoho-crm.md +192 -0
- package/package.json +153 -0
- package/patterns/ai-connections/PATTERN.md +84 -0
- package/patterns/ai-connections/example/ai-model.js +11 -0
- package/patterns/ai-connections/example/perplexity-answer.js +29 -0
- package/patterns/api-key-connection/PATTERN.md +368 -0
- package/patterns/api-key-connection/example/connections.js +18 -0
- package/patterns/api-key-connection/example/integrations.json +19 -0
- package/patterns/assistant-mcp/PATTERN.md +110 -0
- package/patterns/assistant-mcp/example/integrations.json +13 -0
- package/patterns/assistant-mcp-oauth/PATTERN.md +235 -0
- package/patterns/assistant-mcp-oauth/example/integrations.json +102 -0
- package/patterns/aws-storage-queries/PATTERN.md +169 -0
- package/patterns/aws-storage-queries/example/formats/data-formats.js +35 -0
- package/patterns/aws-storage-queries/example/formats/package-lock.json +49 -0
- package/patterns/aws-storage-queries/example/formats/package.json +12 -0
- package/patterns/aws-storage-queries/example/formats/verify-formats.mjs +37 -0
- package/patterns/aws-storage-queries/example/integrations.json +38 -0
- package/patterns/aws-storage-queries/example/s3-transfer.js +34 -0
- package/patterns/event-delivery/PATTERN.md +151 -0
- package/patterns/event-delivery/example/integrations.json +17 -0
- package/patterns/firebase-messaging/PATTERN.md +156 -0
- package/patterns/firebase-messaging/example/server/notifications.js +23 -0
- package/patterns/google-ads-search/PATTERN.md +92 -0
- package/patterns/google-ads-search/example/ads-setup.js +25 -0
- package/patterns/oauth-connection/PATTERN.md +724 -0
- package/patterns/oauth-connection/example/integrations.json +20 -0
- package/patterns/paddle-catalogue/PATTERN.md +78 -0
- package/patterns/paddle-catalogue/example/create-products.js +38 -0
- package/patterns/public-image/PATTERN.md +84 -0
- package/patterns/public-image/example/integrations.json +13 -0
- package/patterns/public-image/example/logo-url.js +16 -0
- package/patterns/redshift-queries/PATTERN.md +150 -0
- package/patterns/redshift-queries/example/integrations.json +33 -0
- package/patterns/source-scanning/PATTERN.md +83 -0
- package/patterns/source-scanning/example/source-scanner.js +13 -0
- package/src/client/firebase-cloud-messaging.js +10 -0
- package/src/client/google-analytics.js +72 -0
- package/src/client/google-maps-platform.js +39 -0
- package/src/client/logo-dev.js +36 -0
- package/src/server/ai.js +46 -0
- package/src/server/airtable.js +67 -0
- package/src/server/algolia.js +63 -0
- package/src/server/amazon-redshift.js +96 -0
- package/src/server/amplitude.js +31 -0
- package/src/server/apify.js +68 -0
- package/src/server/apollo-io.js +85 -0
- package/src/server/asana.js +64 -0
- package/src/server/ashby.js +61 -0
- package/src/server/atlassian.js +32 -0
- package/src/server/attention.js +93 -0
- package/src/server/aws-athena.js +82 -0
- package/src/server/aws-s3.js +49 -0
- package/src/server/awsTransport.js +75 -0
- package/src/server/bigquery.js +97 -0
- package/src/server/brevo.js +97 -0
- package/src/server/calendly.js +77 -0
- package/src/server/canva.js +13 -0
- package/src/server/chargebee.js +88 -0
- package/src/server/clay.js +78 -0
- package/src/server/clickhouse.js +66 -0
- package/src/server/confidence.js +29 -0
- package/src/server/contentful.js +40 -0
- package/src/server/databricks.js +55 -0
- package/src/server/dbt-semantic-layer.js +95 -0
- package/src/server/elevenlabs.js +81 -0
- package/src/server/figma.js +24 -0
- package/src/server/firebase-cloud-messaging.js +111 -0
- package/src/server/firecrawl.js +70 -0
- package/src/server/fireflies.js +31 -0
- package/src/server/fireworks-ai.js +16 -0
- package/src/server/gatewayapi.js +48 -0
- package/src/server/gemini-enterprise.js +47 -0
- package/src/server/github-api.js +90 -0
- package/src/server/gitlab-api.js +67 -0
- package/src/server/gmail.js +60 -0
- package/src/server/gong.js +52 -0
- package/src/server/google-ads-search.js +134 -0
- package/src/server/google-ads.js +80 -0
- package/src/server/google-docs.js +36 -0
- package/src/server/google-drive.js +71 -0
- package/src/server/google-maps-platform.js +90 -0
- package/src/server/google-search-console.js +31 -0
- package/src/server/google-sheets.js +60 -0
- package/src/server/google-slides.js +36 -0
- package/src/server/google.js +61 -0
- package/src/server/granola.js +115 -0
- package/src/server/graphqlOperation.js +15 -0
- package/src/server/hex.js +29 -0
- package/src/server/heygen.js +54 -0
- package/src/server/hubspot.js +85 -0
- package/src/server/incident-io.js +68 -0
- package/src/server/inngest.js +86 -0
- package/src/server/jsonOperation.js +34 -0
- package/src/server/klipy.js +34 -0
- package/src/server/lexware.js +59 -0
- package/src/server/lightspeed.js +82 -0
- package/src/server/linear.js +52 -0
- package/src/server/linkedin.js +74 -0
- package/src/server/mailgun.js +76 -0
- package/src/server/mapbox.js +46 -0
- package/src/server/mcpRegistration.js +41 -0
- package/src/server/mcpTransport.js +60 -0
- package/src/server/microsoft-excel.js +67 -0
- package/src/server/microsoft-fabric.js +81 -0
- package/src/server/microsoft-onedrive.js +58 -0
- package/src/server/microsoft-onenote.js +52 -0
- package/src/server/microsoft-outlook.js +58 -0
- package/src/server/microsoft-powerpoint.js +5 -0
- package/src/server/microsoft-sharepoint.js +46 -0
- package/src/server/microsoft-teams.js +29 -0
- package/src/server/microsoft-word.js +5 -0
- package/src/server/microsoft.js +88 -0
- package/src/server/miro.js +29 -0
- package/src/server/n8n.js +78 -0
- package/src/server/notion.js +76 -0
- package/src/server/oura.js +48 -0
- package/src/server/paddle.js +83 -0
- package/src/server/perplexity.js +15 -0
- package/src/server/pipedrive.js +95 -0
- package/src/server/polar.js +20 -0
- package/src/server/posthog.js +44 -0
- package/src/server/prestashop.js +42 -0
- package/src/server/replicate.js +42 -0
- package/src/server/resend.js +93 -0
- package/src/server/salesforce.js +84 -0
- package/src/server/sanity.js +31 -0
- package/src/server/semrush.js +359 -0
- package/src/server/sentry.js +30 -0
- package/src/server/sevdesk.js +20 -0
- package/src/server/shopify.js +99 -0
- package/src/server/slack.js +143 -0
- package/src/server/snowflake.js +139 -0
- package/src/server/storyblok.js +49 -0
- package/src/server/stripe.js +13 -0
- package/src/server/supabase.js +13 -0
- package/src/server/tally.js +78 -0
- package/src/server/telegram.js +55 -0
- package/src/server/tiktok.js +86 -0
- package/src/server/twilio.js +90 -0
- package/src/server/twitch.js +409 -0
- package/src/server/wave.js +520 -0
- package/src/server/wix.js +1048 -0
- package/src/server/wiz.js +117 -0
- package/src/server/woocommerce.js +412 -0
- package/src/server/wordpress-com.js +236 -0
- package/src/server/wordpress-self-hosted.js +134 -0
- package/src/server/workday.js +136 -0
- package/src/server/x-twitter.js +110 -0
- package/src/server/xero.js +397 -0
- package/src/server/zoho-books.js +90 -0
- package/src/server/zoho-crm.js +89 -0
- package/src/server/zohoOAuth.js +21 -0
- package/src/shared/ai-models.json +8049 -0
- package/src/shared/ai.js +63 -0
- package/src/shared/algolia.js +29 -0
- package/src/shared/amazon-redshift.js +51 -0
- package/src/shared/amplitude.js +28 -0
- package/src/shared/atlassian.js +43 -0
- package/src/shared/aws.js +72 -0
- package/src/shared/canva.js +66 -0
- package/src/shared/chargebee.js +26 -0
- package/src/shared/clickhouse.js +38 -0
- package/src/shared/confidence.js +28 -0
- package/src/shared/databricks.js +33 -0
- package/src/shared/dbt-semantic-layer.js +32 -0
- package/src/shared/definitions.js +140 -0
- package/src/shared/figma.js +21 -0
- package/src/shared/firebase-cloud-messaging.js +45 -0
- package/src/shared/gemini-enterprise.js +33 -0
- package/src/shared/gong.js +33 -0
- package/src/shared/google-ads-search.js +31 -0
- package/src/shared/google-ads.js +28 -0
- package/src/shared/google-maps-platform.js +28 -0
- package/src/shared/google.js +133 -0
- package/src/shared/granola.js +25 -0
- package/src/shared/hex.js +28 -0
- package/src/shared/inngest.js +35 -0
- package/src/shared/lightspeed.js +75 -0
- package/src/shared/linkedin.js +27 -0
- package/src/shared/logo-dev.js +21 -0
- package/src/shared/mapbox.js +38 -0
- package/src/shared/mcp.js +92 -0
- package/src/shared/microsoft-fabric.js +47 -0
- package/src/shared/microsoft.js +231 -0
- package/src/shared/miro.js +27 -0
- package/src/shared/oura.js +23 -0
- package/src/shared/posthog.js +33 -0
- package/src/shared/prestashop.js +23 -0
- package/src/shared/salesforce.js +36 -0
- package/src/shared/semrush.js +24 -0
- package/src/shared/shopify.js +51 -0
- package/src/shared/siteUrl.js +12 -0
- package/src/shared/slack.js +88 -0
- package/src/shared/snowflake.js +55 -0
- package/src/shared/tiktok.js +22 -0
- package/src/shared/tokens.js +747 -0
- package/src/shared/twilio.js +41 -0
- package/src/shared/twitch.js +49 -0
- package/src/shared/wave.js +52 -0
- package/src/shared/wix.js +40 -0
- package/src/shared/wiz.js +41 -0
- package/src/shared/wordpress-com.js +30 -0
- package/src/shared/wordpress.js +69 -0
- package/src/shared/workday.js +50 -0
- package/src/shared/x-twitter.js +19 -0
- package/src/shared/xero.js +46 -0
- package/src/shared/zoho-books.js +39 -0
- package/src/shared/zoho-crm.js +43 -0
- package/src/shared/zoho-regions.js +12 -0
- package/test/ai.test.js +136 -0
- package/test/airtable.test.js +125 -0
- package/test/algolia.test.js +207 -0
- package/test/amazon-redshift.test.js +272 -0
- package/test/amplitude.test.js +239 -0
- package/test/apify.test.js +93 -0
- package/test/apollo-io.test.js +125 -0
- package/test/asana.test.js +99 -0
- package/test/ashby.test.js +97 -0
- package/test/atlassian.test.js +249 -0
- package/test/attention.test.js +79 -0
- package/test/aws.test.js +405 -0
- package/test/brevo.test.js +71 -0
- package/test/calendly.test.js +136 -0
- package/test/canva.test.js +258 -0
- package/test/chargebee.test.js +195 -0
- package/test/clickhouse.test.js +278 -0
- package/test/confidence.test.js +205 -0
- package/test/databricks.test.js +253 -0
- package/test/dbt-semantic-layer.test.js +221 -0
- package/test/designMcp.test.js +336 -0
- package/test/elevenlabs.test.js +52 -0
- package/test/firebase-cloud-messaging.test.js +242 -0
- package/test/firecrawl.test.js +66 -0
- package/test/gemini-enterprise.test.js +218 -0
- package/test/github-api.test.js +167 -0
- package/test/gitlab-api.test.js +160 -0
- package/test/gong.test.js +192 -0
- package/test/google-ads.test.js +350 -0
- package/test/google-maps-platform.test.js +191 -0
- package/test/google.test.js +710 -0
- package/test/granola.test.js +240 -0
- package/test/hex.test.js +253 -0
- package/test/heygen.test.js +121 -0
- package/test/hubspot.test.js +103 -0
- package/test/inngest.test.js +219 -0
- package/test/lightspeed.test.js +250 -0
- package/test/linear.test.js +146 -0
- package/test/linkedin.test.js +243 -0
- package/test/logo-dev.test.js +79 -0
- package/test/mailgun.test.js +107 -0
- package/test/mapbox.test.js +181 -0
- package/test/mcp.test.js +227 -0
- package/test/microsoft-fabric.test.js +258 -0
- package/test/microsoft.test.js +554 -0
- package/test/n8nOAuth.test.js +188 -0
- package/test/notionOAuth.test.js +183 -0
- package/test/oura.test.js +211 -0
- package/test/paddleCatalogue.test.js +51 -0
- package/test/paddlePermissions.test.js +101 -0
- package/test/perplexityComposition.test.js +39 -0
- package/test/pipedriveOAuth.test.js +140 -0
- package/test/posthog.test.js +200 -0
- package/test/prestashop.test.js +207 -0
- package/test/resend.test.js +163 -0
- package/test/salesforce.test.js +276 -0
- package/test/semrush.test.js +479 -0
- package/test/sentry.test.js +35 -0
- package/test/shopify.test.js +247 -0
- package/test/slack.test.js +320 -0
- package/test/snowflake.test.js +391 -0
- package/test/tally.test.js +75 -0
- package/test/telegram.test.js +58 -0
- package/test/tiktok.test.js +243 -0
- package/test/tokens.test.js +1079 -0
- package/test/twilio.test.js +221 -0
- package/test/twitch.test.js +573 -0
- package/test/wave.test.js +678 -0
- package/test/wix.test.js +1099 -0
- package/test/wiz.test.js +185 -0
- package/test/wordpress-com.test.js +469 -0
- package/test/wordpress.test.js +660 -0
- package/test/workday.test.js +314 -0
- package/test/x-twitter.test.js +256 -0
- package/test/xero.test.js +700 -0
- package/test/zoho-books.test.js +253 -0
- 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.
|