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.