@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
package/docs/mapbox.md
ADDED
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
# Mapbox
|
|
2
|
+
|
|
3
|
+
Import `mapboxProvider` from `@jskit-ai/connectors-catalog/server/mapbox`.
|
|
4
|
+
This fragment verifies a backend token and performs forward/reverse geocoding.
|
|
5
|
+
Browser maps may use a separate public-token reference in the same configuration.
|
|
6
|
+
|
|
7
|
+
## Manual provider setup
|
|
8
|
+
|
|
9
|
+
1. Sign into Mapbox and open **Access Tokens** in Developer Console.
|
|
10
|
+
2. Choose **Create a token** and name it for the application/environment.
|
|
11
|
+
Copy a secret token immediately: Mapbox shows it only once.
|
|
12
|
+
Select only the scopes needed by the intended APIs. Geocoding accepts a
|
|
13
|
+
public token; secret scopes produce a private token that stays on the server.
|
|
14
|
+
3. Store the backend token as `MAPBOX_BACKEND_TOKEN`. In Vibe64, enter
|
|
15
|
+
`env:MAPBOX_BACKEND_TOKEN` in **Backend access token reference**.
|
|
16
|
+
4. For browser maps, create a separate public token with the map scopes the
|
|
17
|
+
chosen SDK requires, including `styles:read` and `fonts:read` for styled maps. Add its allowed application URLs and store it as
|
|
18
|
+
`MAPBOX_PUBLIC_TOKEN`; enter `env:MAPBOX_PUBLIC_TOKEN` in the optional field.
|
|
19
|
+
5. **Save configuration**, then use **Set credential in Env** for
|
|
20
|
+
`MAPBOX_BACKEND_TOKEN`. Use **Open Env** to store `MAPBOX_PUBLIC_TOKEN` if
|
|
21
|
+
supplied. Token values belong in Env, not the reference fields.
|
|
22
|
+
6. **Connect account** verifies the backend token through the application runtime.
|
|
23
|
+
It does not render a map, test geocoding entitlement or validate the optional
|
|
24
|
+
browser token. No OAuth registration or callback is involved.
|
|
25
|
+
7. To rotate, create a replacement token, update Env and verify again before
|
|
26
|
+
deleting the old token in Mapbox. Redeploy browser configuration when its
|
|
27
|
+
public token changes. Local disconnect does not delete provider tokens.
|
|
28
|
+
|
|
29
|
+
URL-restricted tokens can return 403 for backend or CLI requests with no
|
|
30
|
+
matching referrer. Use a backend token appropriate for server calls; the runtime
|
|
31
|
+
does not fabricate a browser referrer. The default public token cannot have URL
|
|
32
|
+
restrictions added. Create a separate token for a restricted browser deployment.
|
|
33
|
+
[Token management](https://docs.mapbox.com/accounts/guides/tokens/).
|
|
34
|
+
|
|
35
|
+
## Portable configuration and runtime
|
|
36
|
+
|
|
37
|
+
```json
|
|
38
|
+
{
|
|
39
|
+
"schemaVersion": 1,
|
|
40
|
+
"registrations": {},
|
|
41
|
+
"integrations": {
|
|
42
|
+
"maps": {
|
|
43
|
+
"provider": "mapbox",
|
|
44
|
+
"displayName": "Places",
|
|
45
|
+
"accountMode": "shared",
|
|
46
|
+
"scopes": [],
|
|
47
|
+
"authentication": { "method": "api-key", "secretRef": "env:MAPBOX_BACKEND_TOKEN" },
|
|
48
|
+
"settings": { "publicTokenRef": "env:MAPBOX_PUBLIC_TOKEN" }
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Compose the [API-key pattern](../patterns/api-key-connection/PATTERN.md) with
|
|
55
|
+
this provider and an application authorization policy. The file store uses
|
|
56
|
+
private text files outside source; the CLI does not need an editor or database.
|
|
57
|
+
|
|
58
|
+
```js
|
|
59
|
+
await connections.connectApiKey({ context, integrationId: "maps" });
|
|
60
|
+
const places = await connections.invoke({
|
|
61
|
+
context, integrationId: "maps", operation: "geocoding.forward",
|
|
62
|
+
input: { q: "Perth", limit: 5 }
|
|
63
|
+
});
|
|
64
|
+
const address = await connections.invoke({
|
|
65
|
+
context, integrationId: "maps", operation: "geocoding.reverse",
|
|
66
|
+
input: { longitude: 115.86, latitude: -31.95 }
|
|
67
|
+
});
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
`token.read` calls `GET /tokens/v2?access_token=...`. Mapbox returns a parsed
|
|
71
|
+
token and a validity code. Invalid, expired or revoked tokens can arrive with
|
|
72
|
+
HTTP 200; the adapter rejects those codes and records reconnection when an
|
|
73
|
+
existing connection becomes invalid. Token validity does not establish access
|
|
74
|
+
to every Mapbox API. The returned token description is not an application login.
|
|
75
|
+
[Token verification](https://docs.mapbox.com/api/accounts/tokens/).
|
|
76
|
+
|
|
77
|
+
Geocoding uses `/search/geocode/v6/forward` and `/reverse`, preserving the
|
|
78
|
+
GeoJSON feature collection and attribution. Forward queries have a 256-character,
|
|
79
|
+
20-word/number limit and cannot contain semicolons. The result limit is 1–10.
|
|
80
|
+
Reverse queries require longitude and latitude. `permanent: true` declares an
|
|
81
|
+
intent to retain results and requires the appropriate provider account terms;
|
|
82
|
+
temporary results must not be stored as permanent application data.
|
|
83
|
+
[Geocoding API](https://docs.mapbox.com/api/search/geocoding/).
|
|
84
|
+
|
|
85
|
+
Local defaults are limit 5, autocomplete off and permanent off. Reverse inputs
|
|
86
|
+
are bounded to longitude ±180 and latitude ±90. Empty feature collections are
|
|
87
|
+
valid. This fragment omits batch requests, structured addresses, routing,
|
|
88
|
+
map rendering and advanced filters. It performs no geocoding during token
|
|
89
|
+
verification and does not automatically store query results.
|
|
90
|
+
|
|
91
|
+
Only the primary backend reference is resolved by connection verification and
|
|
92
|
+
operations. The optional browser reference is preserved in source and never
|
|
93
|
+
silently resolved, checked or substituted by this service. A public token can
|
|
94
|
+
be the primary backend token if its restrictions permit server calls, so a
|
|
95
|
+
secret token is not mandatory. An application that renders maps deliberately
|
|
96
|
+
resolves and publishes its separate browser token; it must never publish a
|
|
97
|
+
secret token. Clearing the optional reference removes it from saved JSON.
|
|
98
|
+
|
|
99
|
+
The runtime retains references, not token values. Rotation updates the binding;
|
|
100
|
+
a configuration change requires verification again. Failures use safe connector
|
|
101
|
+
errors and do not expose credential query strings. Disconnect is local and does
|
|
102
|
+
not delete Mapbox tokens. Redact authenticated URLs in HTTP logs.
|
|
103
|
+
|
|
104
|
+
## API provisioning and application ownership
|
|
105
|
+
|
|
106
|
+
The Tokens API supports creating tokens with `POST /tokens/v2/{username}`,
|
|
107
|
+
using an existing token with `tokens:write`. Supply a descriptive `note`, the
|
|
108
|
+
needed `scopes` and, for browser tokens, `allowedUrls`. The creating credential
|
|
109
|
+
cannot grant scopes it does not hold. An AI can prepare creation/update/rotation
|
|
110
|
+
requests after an authorized operator supplies bootstrap access. Account signup
|
|
111
|
+
and billing are separate; the normal geocoding adapter exposes no token-writing
|
|
112
|
+
operation. [Token creation](https://docs.mapbox.com/api/accounts/tokens/).
|
|
113
|
+
|
|
114
|
+
Use separate browser and backend tokens owned by the application. Mapbox's API guide
|
|
115
|
+
describes rate limits per access token; account billing and contractual capacity
|
|
116
|
+
are still separate concerns. Application budgets and the desired account-level
|
|
117
|
+
isolation must be explicit. Two token names do not create two billing accounts.
|
|
118
|
+
[API limits](https://docs.mapbox.com/api/guides/).
|
|
119
|
+
|
|
120
|
+
For browser restrictions, allow the actual deployed application and preview
|
|
121
|
+
origins. A per-user editor VM domain is not necessarily the origin of the app
|
|
122
|
+
that loads the map. Mapbox does not accept wildcard characters in these
|
|
123
|
+
restrictions; consult its matching rules when adding subdomains or custom
|
|
124
|
+
domains. No OAuth callback is involved in these token operations.
|
|
125
|
+
|
|
126
|
+
## Focused evidence
|
|
127
|
+
|
|
128
|
+
Six fixture tests cover file restart, rotation, ownership, optional references,
|
|
129
|
+
HTTP-200 validity failures, coordinates, query bounds, attribution, permanent
|
|
130
|
+
intent and permission/quota failures. The editor test covers both reference
|
|
131
|
+
fields, invalid raw values, save/reload and removing the optional value.
|
|
132
|
+
No live Mapbox account, geocoding use or generated application is exercised.
|
|
133
|
+
|
|
134
|
+
## Browser-only maps and native SDK composition
|
|
135
|
+
|
|
136
|
+
Select **Browser maps only** for `settings.usage: "browser"`, authentication
|
|
137
|
+
`{ "method": "none" }` and required `settings.publicTokenRef`. This means no
|
|
138
|
+
server account grant: the public token still comes from that project Env reference.
|
|
139
|
+
Backend mode uses `settings.usage: "backend"` and its normal API-key reference.
|
|
140
|
+
The editor omits connection commands in browser-only mode. Resolve only the
|
|
141
|
+
selected public reference, reject a value that does not start with `pk.`, and
|
|
142
|
+
expose it as deliberate browser configuration. Do not copy all Env values.
|
|
143
|
+
|
|
144
|
+
The app installs Mapbox GL JS using its framework package workflow, imports
|
|
145
|
+
`mapbox-gl/dist/mapbox-gl.css`, and supplies a visible container with a height.
|
|
146
|
+
The following goes in its existing mount/unmount lifecycle, not in Vibe64:
|
|
147
|
+
|
|
148
|
+
```js
|
|
149
|
+
const map = new mapboxgl.Map({ container: mapElement,
|
|
150
|
+
accessToken: publicConfiguration.mapboxToken,
|
|
151
|
+
center: [115.86, -31.95], zoom: 12 });
|
|
152
|
+
map.on("error", showMapError);
|
|
153
|
+
// On view teardown: map.remove();
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
The app supplies the SDK import, element, public configuration and error handler.
|
|
157
|
+
Preserve SDK attribution. JSKIT CLI apps and other frameworks use the same source
|
|
158
|
+
contract with native frontend composition; neither requires an editor runtime.
|
|
159
|
+
[Map composition](https://docs.mapbox.com/mapbox-gl-js/example/simple-map/).
|
|
160
|
+
|
|
161
|
+
## Routes
|
|
162
|
+
|
|
163
|
+
Backend `directions.get` accepts `profile` (driving, driving-traffic, walking or
|
|
164
|
+
cycling), 2–25 `coordinates` objects with longitude/latitude, and optional `steps`.
|
|
165
|
+
It returns GeoJSON route geometry, distance in metres and duration in seconds.
|
|
166
|
+
Treat `NoRoute` and `NoSegment` as unavailable routes, not successful directions.
|
|
167
|
+
Draw successful geometry with the app's existing GeoJSON line layer; the app
|
|
168
|
+
controls destination input, location permission and route refresh frequency.
|
|
169
|
+
[Directions API](https://docs.mapbox.com/api/navigation/directions/).
|
|
170
|
+
|
|
171
|
+
**LIMITATIONS:** No map editor, navigation UI, offline tiles, automatic SDK install
|
|
172
|
+
or editor-tool attachment. Example: calculate a walking route and draw it in an
|
|
173
|
+
app-owned map, but not run a turn-by-turn navigation product from this connector.
|
|
174
|
+
Native map mounting is documented, not executed as a generated app.
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
# Microsoft Excel
|
|
2
|
+
|
|
3
|
+
Provider ID `microsoft-excel`; export `microsoftExcelProvider` from
|
|
4
|
+
`@jskit-ai/connectors-catalog/server/microsoft-excel`.
|
|
5
|
+
|
|
6
|
+
Follow all [Microsoft registration steps](microsoft-oauth.md). Choose the
|
|
7
|
+
organizational + personal account audience. In **API permissions → Microsoft
|
|
8
|
+
Graph → Delegated permissions**, add **`Files.Read`** and `offline_access` for file browsing and verification.
|
|
9
|
+
Add **`Files.ReadWrite`** for worksheet access.
|
|
10
|
+
Microsoft's worksheet-list reference currently requires this permission even
|
|
11
|
+
for a GET, and lists delegated organizational and personal accounts as supported.
|
|
12
|
+
Application-only permission is unsupported for this operation. The form makes
|
|
13
|
+
the broader permission explicit. [Worksheet API](https://learn.microsoft.com/en-us/graph/api/workbook-list-worksheets?view=graph-rest-1.0).
|
|
14
|
+
|
|
15
|
+
Use an existing accessible Excel workbook in the signed-in user's drive. Obtain
|
|
16
|
+
its drive item ID from your app's file picker or drive listing; this is not a
|
|
17
|
+
share URL or the worksheet ID. Connection verification lists the drive root and needs no workbook ID.
|
|
18
|
+
`items.list` accepts an optional `folderId` and bounded `pageSize` (default 25,
|
|
19
|
+
maximum 100). Its returned `id` supplies `worksheets.list`'s `itemId`; do not use
|
|
20
|
+
a sharing URL or worksheet ID. Missing or malformed worksheet IDs fail before
|
|
21
|
+
transport. Files.Read-only connections can browse but cannot list worksheets.
|
|
22
|
+
The form includes the captured optional Files.Read.All and Files.ReadWrite.All
|
|
23
|
+
permissions; the runtime requires the operation's explicit Files.Read or
|
|
24
|
+
Files.ReadWrite grant and does not infer one permission from another.
|
|
25
|
+
|
|
26
|
+
`worksheets.list` calls
|
|
27
|
+
`/v1.0/me/drive/items/{itemId}/workbook/worksheets`. Its required `itemId` and
|
|
28
|
+
optional `nextLink` are validated. It returns the worksheet `value` collection.
|
|
29
|
+
The adapter also exposes bounded range reads/updates and explicit workbook sessions, described below.
|
|
30
|
+
|
|
31
|
+
AI provisioning is **API-capable after operator authorization**: create the
|
|
32
|
+
registration and secret using the common guide, with the permission above.
|
|
33
|
+
The AI can prepare the resource input and JSON, but cannot grant access to a
|
|
34
|
+
workbook the user does not own or cannot open. The application owner supplies
|
|
35
|
+
its registration and private Env bindings; shared tenant limits still apply.
|
|
36
|
+
|
|
37
|
+
The common guide gives console navigation, ownership and file-store composition.
|
|
38
|
+
Automated tests cover ID validation, delegated scope, verification read,
|
|
39
|
+
pagination resource binding, cancellation, refresh and encrypted restart.
|
|
40
|
+
Live workbook use and application generation are outside this delivery.
|
|
41
|
+
|
|
42
|
+
## Editor and CLI handoff
|
|
43
|
+
|
|
44
|
+
The screen includes app-registration navigation, audience/tenant selection,
|
|
45
|
+
Web callback registration, delegated permissions and one-time secret **Value**.
|
|
46
|
+
Save the references `env:MICROSOFT_EXCEL_CLIENT_SECRET` and
|
|
47
|
+
`env:MICROSOFT_EXCEL_CALLBACK_URL`; use **Set credential in Env** and **Open Env**
|
|
48
|
+
to supply their values. The callback must exactly match the app's registered Web
|
|
49
|
+
redirect URI and its implemented backend route. Shared/assistant mode connects
|
|
50
|
+
one project account; per-user mode requires each app user to authorize separately.
|
|
51
|
+
Microsoft connection does not establish application login.
|
|
52
|
+
|
|
53
|
+
After connection, the same JSKIT service can browse and read worksheet metadata:
|
|
54
|
+
|
|
55
|
+
```js
|
|
56
|
+
const files = await connections.invoke({ context, integrationId: "excel",
|
|
57
|
+
operation: "items.list", input: { pageSize: 25 } });
|
|
58
|
+
// Select an accessible Excel workbook's id from the result (or browse folderId).
|
|
59
|
+
const sheets = await connections.invoke({ context, integrationId: "excel",
|
|
60
|
+
operation: "worksheets.list", input: { itemId: selectedWorkbookId } });
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
File browsing returns folders and other file types too. The framework owns the
|
|
64
|
+
picker and decides which workbook to open. No file ID is requested before OAuth.
|
|
65
|
+
Connection success proves drive-list access, not worksheet support or access to
|
|
66
|
+
every workbook. The worksheet API still requires Files.ReadWrite; range updates explicitly edit cells. Laravel implements its own Graph integration and reads
|
|
67
|
+
its own environment; it does not depend on the JavaScript runtime.
|
|
68
|
+
|
|
69
|
+
## Cell operations and sessions
|
|
70
|
+
|
|
71
|
+
Use `ranges.get` with `{ itemId, worksheetId, address: "A1:B1" }`.
|
|
72
|
+
Use `ranges.update` with the same inputs plus exactly one of
|
|
73
|
+
`values: [[2, 3]]` or `formulas: [["=SUM(C1:C3)", null]]`.
|
|
74
|
+
Matrices must exactly match the address, with at most 10,000 cells. Null leaves
|
|
75
|
+
the corresponding cell unchanged. Files.ReadWrite is required even for reading.
|
|
76
|
+
The application owns workbook/worksheet selection, cell-edit authorization and
|
|
77
|
+
presentation; Vibe64 only configures credentials. CLI applications use the same
|
|
78
|
+
connection service without Vibe64; another framework calls Graph itself.
|
|
79
|
+
|
|
80
|
+
For a work/school account, call `sessions.create` with
|
|
81
|
+
`{ itemId, persistChanges: true }` and pass returned `id` as `sessionId` to range
|
|
82
|
+
calls. Use false for a temporary analysis copy. Close using `sessions.close`
|
|
83
|
+
with `{ itemId, sessionId }` in cleanup. Calls without a session persist edits.
|
|
84
|
+
Never silently create a persistent replacement for an expired temporary session.
|
|
85
|
+
Do not blindly retry uncertain writes; read the affected cells and let the app
|
|
86
|
+
resolve uncertainty. Formula text is app-approved content, not trusted instructions.
|
|
87
|
+
|
|
88
|
+
**LIMITATIONS:** Synchronous session creation only; asynchronous 202 responses
|
|
89
|
+
are not claimed as sessions. No workbook creation, formatting editor, charts,
|
|
90
|
+
pivot tables or editor assistant attachment. Example: update a budget and formula,
|
|
91
|
+
but no spreadsheet designer appears. Microsoft documents personal-account range
|
|
92
|
+
permissions but excludes personal accounts from session close; use work/school
|
|
93
|
+
for the session workflow. No live workbook or generated-app proof.
|
|
94
|
+
|
|
95
|
+
References: [range updates](https://learn.microsoft.com/en-us/graph/api/range-update?view=graph-rest-1.0),
|
|
96
|
+
[create session](https://learn.microsoft.com/en-us/graph/api/workbook-createsession?view=graph-rest-1.0),
|
|
97
|
+
[close session](https://learn.microsoft.com/en-us/graph/api/workbook-closesession?view=graph-rest-1.0).
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
# Microsoft Fabric
|
|
2
|
+
|
|
3
|
+
This fragment connects one existing **API for GraphQL** in the global Microsoft
|
|
4
|
+
Fabric service. It supports a confidential user-consent registration and a service
|
|
5
|
+
principal. It does not create a workspace, lakehouse, database, data pipeline or
|
|
6
|
+
application login. Both CLI and editor use the configurations below.
|
|
7
|
+
|
|
8
|
+
## Choose the identity
|
|
9
|
+
|
|
10
|
+
| Choice | Token request | Permission and ownership |
|
|
11
|
+
| --- | --- | --- |
|
|
12
|
+
| User consent | Authorization code with PKCE; client secret sent by the backend | `https://analysis.windows.net/powerbi/api/GraphQLApi.Execute.All`, optional `offline_access`; shared, assistant or per-user connection |
|
|
13
|
+
| Service account | Client credentials; no browser or refresh token | `https://api.fabric.microsoft.com/.default`; shared or assistant connection |
|
|
14
|
+
|
|
15
|
+
The two resource scopes are deliberately different. Microsoft documents the
|
|
16
|
+
[delegated scope](https://learn.microsoft.com/en-us/fabric/data-engineering/connect-apps-api-graphql)
|
|
17
|
+
and [service principal scope](https://learn.microsoft.com/en-us/fabric/data-engineering/api-graphql-service-principal)
|
|
18
|
+
separately. Neither is a Microsoft Graph permission. Acquiring a token does not
|
|
19
|
+
establish access to the API or its underlying data.
|
|
20
|
+
|
|
21
|
+
## Register the application
|
|
22
|
+
|
|
23
|
+
1. Open [Microsoft Entra admin center](https://entra.microsoft.com/) in the
|
|
24
|
+
resource-owning directory. Go to **Entra ID → App registrations → New registration**.
|
|
25
|
+
2. Enter an application name. For a customer-owned setup, select accounts in this
|
|
26
|
+
directory only and register it. Copy **Application (client) ID** and
|
|
27
|
+
**Directory (tenant) ID** from its overview. This fragment requires the directory
|
|
28
|
+
GUID; it does not use `common`, personal Microsoft accounts or tenant aliases.
|
|
29
|
+
3. Under **Certificates & secrets → Client secrets → New client secret**, supply
|
|
30
|
+
a description and expiry. Copy the secret **Value**, not its identifier, into
|
|
31
|
+
the backend's secret binding. Record when it needs rotation.
|
|
32
|
+
4. For **User consent**, open **Authentication → Redirect URI configuration → Add Redirect URI → Web** and enter
|
|
33
|
+
the exact callback implemented by your backend. Add **Power BI Service →
|
|
34
|
+
Delegated permissions → GraphQLApi.Execute.All** under API permissions.
|
|
35
|
+
Complete any consent required by the tenant's policy. Request `offline_access`
|
|
36
|
+
when ongoing access is needed. This server library uses a confidential Web
|
|
37
|
+
client; do not copy the SPA/public-client settings from Microsoft's React demo.
|
|
38
|
+
5. For **Service account**, omit the callback and delegated permission. Use the
|
|
39
|
+
app's client ID and secret to authenticate its service principal.
|
|
40
|
+
|
|
41
|
+
See Microsoft's [registration procedure](https://learn.microsoft.com/en-us/entra/identity-platform/quickstart-register-app)
|
|
42
|
+
and [client credentials protocol](https://learn.microsoft.com/en-us/entra/identity-platform/v2-oauth2-client-creds-grant-flow).
|
|
43
|
+
Never bundle a confidential client secret into a distributed editor or frontend.
|
|
44
|
+
|
|
45
|
+
## Allow access to the existing API
|
|
46
|
+
|
|
47
|
+
1. Open the Fabric workspace and the existing GraphQL API. In its toolbar select
|
|
48
|
+
**Copy endpoint**, then copy the complete link. Keep the workspace and API IDs.
|
|
49
|
+
The accepted address has this form:
|
|
50
|
+
`https://api.fabric.microsoft.com/v1/workspaces/<workspace-id>/graphqlapis/<api-id>/graphql`.
|
|
51
|
+
It must not contain credentials, an added port, query parameters or a fragment.
|
|
52
|
+
Custom gateways and sovereign clouds need a separate provider contract.
|
|
53
|
+
2. For service principals, a tenant administrator opens **Admin portal → Tenant
|
|
54
|
+
settings → Developer settings**, enables **Service principals can use Fabric
|
|
55
|
+
APIs**, and applies the setting for the intended principals or group.
|
|
56
|
+
3. From the API item's **… → Manage permissions → Add user**, select the user or
|
|
57
|
+
service principal and grant **Run Queries and Mutations**. Prefer item access
|
|
58
|
+
when it meets the requirement rather than automatically assigning a broad
|
|
59
|
+
workspace role.
|
|
60
|
+
4. Confirm access to the source as well. With single sign-on, the calling identity
|
|
61
|
+
needs the applicable source permissions. With a saved connection, its saved
|
|
62
|
+
credential needs them. Permission to an API is not permission to every table.
|
|
63
|
+
5. Schema discovery is optional. If needed, a workspace administrator opens the
|
|
64
|
+
API settings, selects **Introspection**, enables it and confirms. It is disabled
|
|
65
|
+
by default. Alternatively, export the SDL schema from the toolbar and give
|
|
66
|
+
that file to the app author or AI.
|
|
67
|
+
|
|
68
|
+
The [access guide](https://learn.microsoft.com/en-us/fabric/data-engineering/api-graphql-service-principal)
|
|
69
|
+
explains the service-principal setup; the
|
|
70
|
+
[schema guide](https://learn.microsoft.com/en-us/fabric/data-engineering/api-graphql-introspection-schema-export)
|
|
71
|
+
explains introspection and export. The connection check requests only `__typename`;
|
|
72
|
+
it does not enable introspection or query a business table. Actual access to each
|
|
73
|
+
document still needs verification against the customer's schema and permissions.
|
|
74
|
+
|
|
75
|
+
## Portable user configuration
|
|
76
|
+
|
|
77
|
+
Store this as the same integration JSON that the editor reads and writes. Resolve
|
|
78
|
+
the `env:` references on the backend. Example IDs are placeholders.
|
|
79
|
+
|
|
80
|
+
```json
|
|
81
|
+
{
|
|
82
|
+
"schemaVersion": 1,
|
|
83
|
+
"registrations": {
|
|
84
|
+
"fabric": {
|
|
85
|
+
"source": "own",
|
|
86
|
+
"grantType": "authorization_code",
|
|
87
|
+
"clientId": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
|
|
88
|
+
"clientSecretRef": "env:FABRIC_SECRET",
|
|
89
|
+
"callbackUrlRef": "env:FABRIC_CALLBACK"
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
"integrations": {
|
|
93
|
+
"fabric": {
|
|
94
|
+
"provider": "microsoft-fabric",
|
|
95
|
+
"accountMode": "per-user",
|
|
96
|
+
"settings": {
|
|
97
|
+
"tenantId": "11111111-2222-3333-4444-555555555555",
|
|
98
|
+
"graphqlEndpoint": "https://api.fabric.microsoft.com/v1/workspaces/11111111-2222-3333-4444-555555555555/graphqlapis/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/graphql"
|
|
99
|
+
},
|
|
100
|
+
"scopes": ["https://analysis.windows.net/powerbi/api/GraphQLApi.Execute.All", "offline_access"],
|
|
101
|
+
"authentication": { "method": "oauth2", "registrationRef": "fabric" }
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
## Portable service configuration
|
|
108
|
+
|
|
109
|
+
```json
|
|
110
|
+
{
|
|
111
|
+
"schemaVersion": 1,
|
|
112
|
+
"registrations": {
|
|
113
|
+
"fabric": {
|
|
114
|
+
"source": "own",
|
|
115
|
+
"grantType": "client_credentials",
|
|
116
|
+
"clientId": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
|
|
117
|
+
"clientSecretRef": "env:FABRIC_SECRET"
|
|
118
|
+
}
|
|
119
|
+
},
|
|
120
|
+
"integrations": {
|
|
121
|
+
"fabric": {
|
|
122
|
+
"provider": "microsoft-fabric",
|
|
123
|
+
"accountMode": "shared",
|
|
124
|
+
"settings": {
|
|
125
|
+
"tenantId": "11111111-2222-3333-4444-555555555555",
|
|
126
|
+
"graphqlEndpoint": "https://api.fabric.microsoft.com/v1/workspaces/11111111-2222-3333-4444-555555555555/graphqlapis/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/graphql"
|
|
127
|
+
},
|
|
128
|
+
"scopes": ["https://api.fabric.microsoft.com/.default"],
|
|
129
|
+
"authentication": { "method": "oauth2", "registrationRef": "fabric" }
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
## Runtime and AI wiring
|
|
136
|
+
|
|
137
|
+
Import `microsoftFabricProvider` from
|
|
138
|
+
`@jskit-ai/connectors-catalog/server/microsoft-fabric`. Compose the normal
|
|
139
|
+
`createConnectionService` or `ConnectorsFeature` with trusted application
|
|
140
|
+
authorization, reference resolution and the file store. The library already owns
|
|
141
|
+
PKCE/state, confidential token exchange, encrypted token persistence, locking,
|
|
142
|
+
refresh or service-token renewal, permission checks and disconnect. Do not generate
|
|
143
|
+
a second token manager. User consent uses `beginAuthorization` and
|
|
144
|
+
`completeAuthorization`; service accounts use `connectClientCredentials` or
|
|
145
|
+
`connectors.verifyClientCredentials`.
|
|
146
|
+
|
|
147
|
+
| Operation | Input | Result |
|
|
148
|
+
| --- | --- | --- |
|
|
149
|
+
| `connection.check` | None | `data.__typename` from a fixed document |
|
|
150
|
+
| `schema.types` | None; introspection must be enabled | Type names/kinds and root query/mutation type names |
|
|
151
|
+
| `graphql.execute` | `query`, optional JSON `variables` and `operationName` | One GraphQL response with object `data` |
|
|
152
|
+
|
|
153
|
+
Documents and encoded variables each have a 65,536-character library bound;
|
|
154
|
+
operation names have a 256-character bound. Only JSON variables are accepted.
|
|
155
|
+
There is no schema-specific generated client, automatic pagination or subscription
|
|
156
|
+
transport. Use fields and cursor arguments defined by the actual API. For example,
|
|
157
|
+
an app with an `inventory` field might execute the following *app-owned* document:
|
|
158
|
+
|
|
159
|
+
```js
|
|
160
|
+
const result = await connections.invoke({
|
|
161
|
+
context: authenticatedAppContext,
|
|
162
|
+
integrationId: "fabric",
|
|
163
|
+
operation: "graphql.execute",
|
|
164
|
+
input: {
|
|
165
|
+
query: "query Stock($after: String) { inventory(first: 10, after: $after) { items { id } endCursor hasNextPage } }",
|
|
166
|
+
operationName: "Stock",
|
|
167
|
+
variables: { after: null }
|
|
168
|
+
}
|
|
169
|
+
});
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
This is a wiring fragment, not a claim that every API has an inventory table.
|
|
173
|
+
`graphql.execute` accepts mutations too. Keep allowed documents in server code,
|
|
174
|
+
validate their variables in the app's action, and authorize each invocation.
|
|
175
|
+
Do not expose this operation as an unrestricted browser proxy or call it read-only.
|
|
176
|
+
GraphQL errors fail the operation even when partial data accompanies them. A
|
|
177
|
+
mutation may already have taken effect, so the library never automatically retries
|
|
178
|
+
it. Provider error bodies are not exposed. See the
|
|
179
|
+
[Fabric query editor](https://learn.microsoft.com/en-us/fabric/data-engineering/api-graphql-editor)
|
|
180
|
+
for variables and supported documents.
|
|
181
|
+
|
|
182
|
+
## What an AI can automate
|
|
183
|
+
|
|
184
|
+
With explicitly authorized administrative credentials, provisioning can create an
|
|
185
|
+
[Entra application](https://learn.microsoft.com/en-us/graph/api/application-post-applications?view=graph-rest-1.0),
|
|
186
|
+
configure its Web redirect URIs and delegated resource access, create its
|
|
187
|
+
[service principal](https://learn.microsoft.com/en-us/graph/api/serviceprincipal-post-serviceprincipals?view=graph-rest-1.0),
|
|
188
|
+
and [generate an application secret](https://learn.microsoft.com/en-us/graph/api/application-addpassword?view=graph-rest-1.0).
|
|
189
|
+
The application object ID and client ID are different; return secret values go
|
|
190
|
+
directly to the secret store. Check for an existing owned registration first to
|
|
191
|
+
avoid duplicates and record the secret expiry.
|
|
192
|
+
|
|
193
|
+
Fabric also has [GraphQL item management APIs](https://learn.microsoft.com/en-us/rest/api/fabric/graphqlapi/items).
|
|
194
|
+
Those are provisioning APIs, not this GraphQL execution adapter. Tenant enablement,
|
|
195
|
+
consent policy, resource access, capacity entitlement and data-source configuration
|
|
196
|
+
still need an authorized administrator. These setup actions are documented here;
|
|
197
|
+
the runtime does not perform them automatically or request admin rights.
|
|
198
|
+
|
|
199
|
+
## Application ownership, callbacks and capacity
|
|
200
|
+
|
|
201
|
+
The application owner creates the provider registration and stores its secret
|
|
202
|
+
in the application's private Env. Public Vibe64, Vibe64 Online and CLI users use
|
|
203
|
+
this same ownership model. The configuration file holds the client ID and Env
|
|
204
|
+
references; the editor does not own the application's grants.
|
|
205
|
+
|
|
206
|
+
Register the exact callback implemented by the application. For a hosted project,
|
|
207
|
+
start with its assigned application URL and append the implemented callback path.
|
|
208
|
+
Save that same URL through the application's callback Env reference. On a domain
|
|
209
|
+
or host change, update both the provider registration and callback Env if the URL
|
|
210
|
+
changes. Preserve the application's identity and persistent grant store when
|
|
211
|
+
moving it; neither a new editor URL nor a new hosting address creates a new owner.
|
|
212
|
+
See the [callback guide](../../connectors-core/docs/oauth-callbacks.md) and
|
|
213
|
+
[application setup command](../../connectors-core/docs/setup-command.md).
|
|
214
|
+
|
|
215
|
+
The callback applies to user-consent connections. Service accounts have no OAuth
|
|
216
|
+
callback. The application's Entra registration does not by itself grant access to
|
|
217
|
+
a customer's Fabric workspace: each directory needs its service principal,
|
|
218
|
+
consent where applicable, and Fabric/resource permissions. Multitenant access
|
|
219
|
+
still requires the relevant approval and configuration.
|
|
220
|
+
|
|
221
|
+
Separate registrations support different credentials and policies. They do not
|
|
222
|
+
partition a customer's shared Fabric capacity or guarantee separate quotas.
|
|
223
|
+
|
|
224
|
+
## Verification boundary
|
|
225
|
+
|
|
226
|
+
Local automated tests use controlled HTTP responses and encrypted temporary files.
|
|
227
|
+
They cover both grants, endpoint/tenant binding, variables, partial errors,
|
|
228
|
+
renewal, authorization, malformed responses, cancellation and configuration.
|
|
229
|
+
They create no Entra applications, service principals, Fabric resources or sample
|
|
230
|
+
apps and execute no live documents. Real tenant policy, consent, capacity, API
|
|
231
|
+
endpoint reachability, root-type verification and customer schemas remain live
|
|
232
|
+
acceptance checks requiring the owner's credentials.
|
|
233
|
+
|
|
234
|
+
## Editor credential handoff
|
|
235
|
+
|
|
236
|
+
Save the Application ID, tenant GUID, endpoint and reference fields first. The
|
|
237
|
+
screen's **Set credential in Env** link supplies the client secret value; the
|
|
238
|
+
default reference is `env:MICROSOFT_FABRIC_CLIENT_SECRET`. For **User consent**,
|
|
239
|
+
use **Open Env** to save the exact registered Web callback as
|
|
240
|
+
`MICROSOFT_FABRIC_CALLBACK_URL`. Custom reference names remain supported.
|
|
241
|
+
**Service account** omits the callback and delegates no user permission.
|
|
242
|
+
|
|
243
|
+
Once the generated application's runtime is prepared, **Connect account** starts
|
|
244
|
+
its configured shared/assistant connection. User consent opens authorization;
|
|
245
|
+
service credentials connect without a browser. Per-user mode requires individual
|
|
246
|
+
connections inside the application. Saving alone grants neither API nor source
|
|
247
|
+
access. Both methods use app-owned credentials and persistent grants.
|
|
248
|
+
|
|
249
|
+
**LIMITATIONS (acceptance review):** No automatic table browser, schema-specific client, subscriptions, automatic pagination or Vibe64 assistant attachment. Example: the app can execute an inventory query using its real schema; this does not provide an inventory dashboard. Both authentication modes and operation/error handling have fixture proof, not live Fabric resource proof.
|