Skip to main content

Developer Documentation – Sparks for Teams

Language: Deutsch | English


App store and Teams widgets

Sparks provides its own app store in chats and channels (search, categories, built-in apps, website URL). You can also import a Microsoft Teams manifest.json. There is no full Microsoft Teams App Store parity — professional SSO apps need the partner to authorize the Sparks Azure client ID.

ScenarioEffort / note
Your own widgets (self-hosted)Low — TeamsJS as in Teams; same-origin in Sparks
Tabs already pinned in TeamsShown via Graph in MS chat/channels (and linked Matrix rooms) when signed in with Microsoft and optional TeamsTab.Read.All
Simple third-party tabsImport the manifest; works well without strict token-audience checks
Professional SSO store appsApp must whitelist Sparks as an authorized client; otherwise limited token support

User help: Add Tab dialog, Custom Tabs.


Adapting MS Teams Widgets for Sparks for Teams

Sparks supports tabs and widgets that follow the Microsoft Teams App Manifest schema. Many Teams tab apps can be embedded with little or no change.

Prerequisites

  • Manifest: A valid Teams App Manifest (JSON) — import in the app store (“Import Teams manifest”)
  • Tabs: Static tabs (staticTabs) or configurable tabs (configurableTabs)
  • Domains: All URLs used must be listed in validDomains (HTTPS)

Manifest Structure (Excerpt)

{
"id": "your-app-id",
"version": "1.0.0",
"manifestVersion": "1.16",
"name": { "short": "App Name", "full": "Full App Name" },
"description": { "short": "...", "full": "..." },
"developer": {
"name": "Your Company",
"websiteUrl": "https://example.com",
"privacyUrl": "https://example.com/privacy",
"termsOfUseUrl": "https://example.com/terms"
},
"icons": { "outline": "outline.png", "color": "color.png" },
"staticTabs": [
{
"entityId": "tab1",
"name": "Tab Name",
"contentUrl": "https://your-domain.com/tab",
"websiteUrl": "https://your-domain.com/tab",
"scopes": ["personal", "groupchat", "team"]
}
],
"validDomains": ["your-domain.com"]
}

Package and hosting overview

The figures below summarize how the manifest, tab URLs, and the Sparks shell fit together.

Teams app package and manifest overview

Package contents: manifest.json, icons, and HTTPS tab web content; the manifest ties staticTabs / configurableTabs to validDomains.

Tab hosting in Sparks

Sparks loads the tab in a sandboxed iframe; call microsoftTeams.app.initialize() in that context, as in Teams.

Key Adaptations

AspectNote
Teams JavaScript SDKSparks injects a compatible polyfill (initialize, getContext, getAuthToken, theme, pages.config, notify). Call microsoftTeams.app.initialize() after load.
contentUrl / websiteUrlMust use HTTPS and be listed in validDomains.
Scopespersonal, groupchat, team – Sparks supports these contexts.
iframe sandboxTabs run in iframes; no native plugins.
SSO (getAuthToken)Without webApplicationInfo, Sparks returns a generic MSAL token. With webApplicationInfo, it requests the app-specific scope — your Azure app must authorize the Sparks client ID.
ImportIn a room: Add tab / Apps → “Import Teams manifest” (JSON file).

Partner SSO (Azure)

  1. In the tab app’s app registration: Expose an API → Authorized client applications → add the Sparks client ID.
  2. Set webApplicationInfo.id and resource correctly in the manifest.
  3. Import the manifest in Sparks; sign in with Microsoft.

Microsoft Documentation (Original)


Meeting video and background effects (Vistameet-Teams)

For work on the Vistameet-Teams client repository:

TopicNote
@livekit/track-processorsBlur and virtual background. In-repo: ^0.7.2; npm latest checked 0.7.2 (before bumps run npm view @livekit/track-processors version). Exact pins: root package.json (also livekit-client, etc.).
Stopping the processorRemove background effects cleanly: LocalVideoTrack.stopProcessor() (LiveKit). Without it, the camera preview may stay frozen after turning blur/virtual background off.

User-facing docs: Join Meeting.


n8n and automation

Comprehensive developer guide (API keys, REST /api/v1/automation, incoming/outgoing webhooks, custom nodes, operations):

Short technical reference and OpenAPI live in the Vistameet-Teams app repo under docs/N8N.md and docs/openapi/sparks-automation-v1.yaml.