Skip to main content

Developer Documentation – Liman

Language: Deutsch | English


App store and Teams widgets​

Liman 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 Liman Azure client ID.

ScenarioEffort / note
Your own widgets (self-hosted)Low — TeamsJS as in Teams; same-origin in Liman
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 Liman as an authorized client; otherwise limited token support

User help: Add Tab dialog, Custom Tabs.


Adapting MS Teams Widgets for Liman​

Liman 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 Liman 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 Liman

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

Key Adaptations​

AspectNote
Teams JavaScript SDKLiman 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 – Liman supports these contexts.
iframe sandboxTabs run in iframes; no native plugins.
SSO (getAuthToken)Without webApplicationInfo, Liman returns a generic MSAL token. With webApplicationInfo, it requests the app-specific scope — your Azure app must authorize the Liman 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 Liman client ID.
  2. Set webApplicationInfo.id and resource correctly in the manifest.
  3. Import the manifest in Liman; 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.